multi-agent-rlenv 3.6.0__py3-none-any.whl → 3.6.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,25 +1,25 @@
1
1
  from importlib.util import find_spec
2
2
  from .pymarl_adapter import PymarlAdapter
3
- from marlenv.utils import DummyClass, dummy_function
3
+ from marlenv.utils import dummy_type, dummy_function
4
4
 
5
5
  HAS_GYM = find_spec("gymnasium") is not None
6
6
  if HAS_GYM:
7
7
  from .gym_adapter import Gym, make
8
8
  else:
9
- Gym = DummyClass("gymnasium")
9
+ Gym = dummy_type("gymnasium")
10
10
  make = dummy_function("gymnasium")
11
11
 
12
12
  HAS_PETTINGZOO = find_spec("pettingzoo") is not None
13
13
  if HAS_PETTINGZOO:
14
14
  from .pettingzoo_adapter import PettingZoo
15
15
  else:
16
- PettingZoo = DummyClass("pettingzoo")
16
+ PettingZoo = dummy_type("pettingzoo")
17
17
 
18
18
  HAS_SMAC = find_spec("smac") is not None
19
19
  if HAS_SMAC:
20
20
  from .smac_adapter import SMAC
21
21
  else:
22
- SMAC = DummyClass("smac", "https://github.com/oxwhirl/smac.git")
22
+ SMAC = dummy_type("smac", "https://github.com/oxwhirl/smac.git")
23
23
 
24
24
  __all__ = [
25
25
  "PymarlAdapter",
@@ -1,5 +1,5 @@
1
1
  from importlib.util import find_spec
2
- from ..utils.import_placeholders import DummyClass
2
+ from ..utils.import_placeholders import dummy_type
3
3
  from marlenv.adapters import SMAC
4
4
  from .deepsea import DeepSea
5
5
 
@@ -8,13 +8,13 @@ HAS_LLE = find_spec("lle") is not None
8
8
  if HAS_LLE:
9
9
  from lle import LLE # pyright: ignore[reportMissingImports]
10
10
  else:
11
- LLE = DummyClass("lle", "laser-learning-environment")
11
+ LLE = dummy_type("lle", "laser-learning-environment")
12
12
 
13
13
  HAS_OVERCOOKED = find_spec("overcooked") is not None
14
14
  if HAS_OVERCOOKED:
15
15
  from overcooked import Overcooked # pyright: ignore[reportMissingImports]
16
16
  else:
17
- Overcooked = DummyClass("overcooked", "overcooked")
17
+ Overcooked = dummy_type("overcooked", "overcooked")
18
18
 
19
19
  __all__ = [
20
20
  "Overcooked",
marlenv/utils/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  from .cached_property_collector import CachedPropertyCollector, CachedPropertyInvalidator
2
2
  from .schedule import ExpSchedule, LinearSchedule, MultiSchedule, RoundedSchedule, Schedule
3
- from .import_placeholders import DummyClass, dummy_function
3
+ from .import_placeholders import dummy_function, dummy_type
4
4
 
5
5
  __all__ = [
6
6
  "Schedule",
@@ -10,6 +10,6 @@ __all__ = [
10
10
  "RoundedSchedule",
11
11
  "CachedPropertyCollector",
12
12
  "CachedPropertyInvalidator",
13
- "DummyClass",
14
13
  "dummy_function",
14
+ "dummy_type",
15
15
  ]
@@ -1,30 +1,30 @@
1
1
  from typing import Optional, Any
2
+ from types import SimpleNamespace
2
3
 
3
4
 
4
- class DummyClass:
5
- def __init__(self, module_name: str, package_name: Optional[str] = None):
6
- self.module_name = module_name
7
- if package_name is None:
8
- self.package_name = module_name
9
- else:
10
- self.package_name = package_name
5
+ def _raise_error(module_name: str, package_name: Optional[str] = None):
6
+ raise ImportError(
7
+ f"The optional dependency `{module_name}` is not installed.\nInstall the `{package_name}` package (e.g. pip install {package_name})."
8
+ )
11
9
 
12
- def _raise_error(self):
13
- raise ImportError(
14
- f"The optional dependency `{self.module_name}` is not installed.\nInstall the `{self.package_name}` package (e.g. pip install {self.package_name})."
15
- )
16
10
 
17
- def __getattr__(self, _):
18
- self._raise_error()
11
+ def dummy_type(module_name: str, package_name: Optional[str] = None):
12
+ class DummyType(type):
13
+ def __getattr__(cls, _) -> Any:
14
+ _raise_error(module_name, package_name)
19
15
 
20
- def __call__(self, *args, **kwargs):
21
- self._raise_error()
16
+ def __call__(self, *args: Any, **kwds: Any) -> Any:
17
+ _raise_error(module_name, package_name)
22
18
 
19
+ class DummyClass(SimpleNamespace, metaclass=DummyType):
20
+ def __getattr__(self, _) -> Any:
21
+ _raise_error(module_name, package_name)
22
+
23
+ return DummyClass
23
24
 
24
- def dummy_function(module_name: str, package_name: Optional[str] = None):
25
- dummy = DummyClass(module_name, package_name)
26
25
 
26
+ def dummy_function(module_name: str, package_name: Optional[str] = None):
27
27
  def fail(*args, **kwargs) -> Any:
28
- dummy()
28
+ _raise_error(module_name, package_name)
29
29
 
30
30
  return fail
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: multi-agent-rlenv
3
- Version: 3.6.0
3
+ Version: 3.6.1
4
4
  Summary: A strongly typed Multi-Agent Reinforcement Learning framework
5
5
  Project-URL: repository, https://github.com/yamoling/multi-agent-rlenv
6
6
  Author-email: Yannick Molinghen <yannick.molinghen@ulb.be>
@@ -4,12 +4,12 @@ marlenv/env_pool.py,sha256=nCEBkGQU62fcvCAANyAqY8gCFjYlVnSCg-V3Fhx00yc,933
4
4
  marlenv/exceptions.py,sha256=gJUC_2rVAvOfK_ypVFc7Myh-pIfSU3To38VBVS_0rZA,1179
5
5
  marlenv/mock_env.py,sha256=kKvTdZl4_xSTTI9V6otZ1P709sfPYrqZSbbZaTip9iI,4684
6
6
  marlenv/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- marlenv/adapters/__init__.py,sha256=wJzd94WfNNFX-yojr2M1dExVAGkFqwM2fieQ-v7uH4s,783
7
+ marlenv/adapters/__init__.py,sha256=JsKWaeXvUjWEg3JC9TOtyjtZlTI9AAkLyab-jDa5yzM,783
8
8
  marlenv/adapters/gym_adapter.py,sha256=5HZF3g0QD4n7K4GQoMis4q0zj97uFTLdzdxMYHzM_UE,3041
9
9
  marlenv/adapters/pettingzoo_adapter.py,sha256=w9Ta-X4L_6ZXdDGmREOdcU0vpLR8lGP__s49DyK3dk8,2852
10
10
  marlenv/adapters/pymarl_adapter.py,sha256=2s7EY31s1hrml3q-BBaXo_eDMXTjkebozZPvzsgrb9c,3353
11
11
  marlenv/adapters/smac_adapter.py,sha256=8uWC7YKsaSXeTS8AUhpGOKvrWMbVEQT2-pml5BaFUB0,8343
12
- marlenv/catalog/__init__.py,sha256=r5iAuIqM5UZkTNNu4cMc0hmjlgZ74OXcxL3aM15dnHw,655
12
+ marlenv/catalog/__init__.py,sha256=VMAlot7aHjCXJPH6iycDHuYIEUyK_giOIO8qWTN8H_Q,655
13
13
  marlenv/catalog/deepsea.py,sha256=VPRV6tjPIkj-TMqp2L8U9COUK3FBlodoRW6gpsnwZ9Y,2332
14
14
  marlenv/models/__init__.py,sha256=uihmRs71Gg5z7Bvau_xtaQVg7xEtX8sTzi74bIHL5P0,443
15
15
  marlenv/models/env.py,sha256=BG1iVHxGD_p827mF0ewyOBn6wU2gtFsHLW1b4UtW-V0,7841
@@ -19,9 +19,9 @@ marlenv/models/spaces.py,sha256=1aPmTcoOTU9nlwlcN7aswNrORwghOYAGqCLAMpk39SA,7793
19
19
  marlenv/models/state.py,sha256=LbP--JxBzRwMFpEAaZyxCX13xKQ27xPE2fabohaq9YI,2058
20
20
  marlenv/models/step.py,sha256=00PhD_ccdCIYAY1SVJdJU91weU0Y_tNIJwK16TN_53I,3056
21
21
  marlenv/models/transition.py,sha256=UkJVRNxZoyRkjE7YmKtUf_4xA7cOEh20O60dTldbvys,5070
22
- marlenv/utils/__init__.py,sha256=udb1AhuX6cdcIEaGpE3E1U4Xlo7DtY6f8KCnFgdgfz0,462
22
+ marlenv/utils/__init__.py,sha256=ky5mz_T7EF65YNaEN1UDCUYZVlz7hFyKResgIJlE_1Q,462
23
23
  marlenv/utils/cached_property_collector.py,sha256=IOjbr61f0DqLhcidXKrl7MhN1BOEGiTzCANIKQCxaF0,600
24
- marlenv/utils/import_placeholders.py,sha256=qKp-4YZFGcqoEAdblroify_lfX8iuH_ot4AOJkfpvPg,860
24
+ marlenv/utils/import_placeholders.py,sha256=QN7gsfbFgSP2Lh-7YBC1RH-SNjbFacvRFmBgNs4Eb90,972
25
25
  marlenv/utils/schedule.py,sha256=BdjefYgAtGlh1wWGHENid4WNnPOU78kkNiRvR5A9GEA,9308
26
26
  marlenv/wrappers/__init__.py,sha256=Z4_M-mxRNKQeu52tkmQ4B2m3-zrsmjfXXL5NsWQ4vu4,952
27
27
  marlenv/wrappers/action_randomizer.py,sha256=A1kejqGOTA0sc_RQL0EOd6sMSbcIdiV5zlscjKUlzdY,474
@@ -38,7 +38,7 @@ marlenv/wrappers/potential_shaping.py,sha256=T_QvnmWReCgpyoInxRw2UXbmdvcBD5U-vV1
38
38
  marlenv/wrappers/rlenv_wrapper.py,sha256=S6G1VjFklTEzU6bj0AXrTDXnsTQJARq8VB4uUH6AXe4,2993
39
39
  marlenv/wrappers/time_limit.py,sha256=GxbxcbfFyuVg14ylQU2C_cjmV9q4uDAt5wepfgX_PyM,3976
40
40
  marlenv/wrappers/video_recorder.py,sha256=ucBQSNRPqDr-2mYxrTCqlrWcxSWtSJ7XlRC9-LdukBM,2535
41
- multi_agent_rlenv-3.6.0.dist-info/METADATA,sha256=J9gFMccQ88-4Xh-DP80wOGehHc19l-i3BLI2zabFG9A,5751
42
- multi_agent_rlenv-3.6.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
43
- multi_agent_rlenv-3.6.0.dist-info/licenses/LICENSE,sha256=_eeiGVoIJ7kYt6l1zbIvSBQppTnw0mjnYk1lQ4FxEjE,1074
44
- multi_agent_rlenv-3.6.0.dist-info/RECORD,,
41
+ multi_agent_rlenv-3.6.1.dist-info/METADATA,sha256=FS_Hq7KmVDmZTHze01jijOSlEUf_QTA0CsZMcO1pzkY,5751
42
+ multi_agent_rlenv-3.6.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
43
+ multi_agent_rlenv-3.6.1.dist-info/licenses/LICENSE,sha256=_eeiGVoIJ7kYt6l1zbIvSBQppTnw0mjnYk1lQ4FxEjE,1074
44
+ multi_agent_rlenv-3.6.1.dist-info/RECORD,,