naming Functions

This commit is contained in:
Steffen Illium 2023-10-30 10:08:40 +01:00
parent 115a79e930
commit fbbf8d6f6e
3 changed files with 27 additions and 4 deletions

View File

@ -2,6 +2,7 @@ from collections import defaultdict
from typing import Union from typing import Union
from marl_factory_grid.environment import constants as c from marl_factory_grid.environment import constants as c
import marl_factory_grid.utils.helpers as h
class _Object: class _Object:
@ -30,8 +31,14 @@ class _Object:
@property @property
def name(self): def name(self):
if self._str_ident is not None: if self._str_ident is not None:
return f'{self.__class__.__name__}[{self._str_ident}]' name = f'{self.__class__.__name__}[{self._str_ident}]'
return f'{self.__class__.__name__}#{self.u_int}' else:
name = f'{self.__class__.__name__}#{self.u_int}'
if self.bound_entity:
name = h.add_bound_name(name, self.bound_entity)
if self.var_has_position:
name = h.add_pos_name(name, self)
return name
# @property # @property
# def name(self): # def name(self):

View File

@ -232,3 +232,15 @@ def locate_and_import_class(class_name, folder_path: Union[str, PurePath] = ''):
except AttributeError: except AttributeError:
continue continue
raise AttributeError(f'Class "{class_name}" was not found in "{folder_path.name}"', list(set(all_found_modules))) raise AttributeError(f'Class "{class_name}" was not found in "{folder_path.name}"', list(set(all_found_modules)))
def add_bound_name(name_str, bound_e):
return f'{name_str}({bound_e.identifier})'
def add_pos_name(name_str, bound_e):
if bound_e.var_has_pos:
return f'{name_str}({bound_e.pos})'
return name_str

View File

@ -8,6 +8,7 @@ from numba import njit
from marl_factory_grid.environment import constants as c from marl_factory_grid.environment import constants as c
from marl_factory_grid.environment.groups.utils import Combined from marl_factory_grid.environment.groups.utils import Combined
import marl_factory_grid.utils.helpers as h
from marl_factory_grid.utils.states import Gamestate from marl_factory_grid.utils.states import Gamestate
from marl_factory_grid.utils.utility_classes import Floor from marl_factory_grid.utils.utility_classes import Floor
@ -118,13 +119,16 @@ class OBSBuilder(object):
e = self.all_obs[l_name] e = self.all_obs[l_name]
except KeyError: except KeyError:
try: try:
e = self.all_obs[f'{l_name}({agent.name})'] # Look for bound entity names!
e = self.all_obs[h.add_bound_name(l_name, agent)]
except KeyError: except KeyError:
try: try:
e = next(x for x in self.all_obs if l_name in x and agent.name in x) e = next(x for x in self.all_obs if l_name in x and agent.name in x)
except StopIteration: except StopIteration:
raise KeyError( raise KeyError(
f'Check typing! {l_name} could not be found in: {list(dict(self.all_obs).keys())}') f'Check for spelling errors! \n '
f'No combination of "{l_name} and {agent.name}" could not be found in:\n '
f'{list(dict(self.all_obs).keys())}')
try: try:
positional = e.var_has_position positional = e.var_has_position