Fix importlib-metadata on Python 3.8 + bump ale-py (#2428)

* Bump ale-py -> 0.7.1

* env-plugins: parse module,attr for Python 3.8
This commit is contained in:
Jesse Farebrother
2021-09-28 17:45:01 -06:00
committed by GitHub
parent 8cc7f975dd
commit ca42b05243
2 changed files with 17 additions and 7 deletions

View File

@@ -248,18 +248,28 @@ def namespace(ns):
def load_env_plugins(entry_point="gym.envs"):
# Load third-party environments
for plugin in metadata.entry_points().get(entry_point, []):
if plugin.attr is None:
raise error.Error(
f"Gym environment plugin `{plugin.module}` must specify a function to execute, not a root module"
)
# Python 3.8 doesn't support plugin.module, plugin.attr
# So we'll have to try and parse this ourselves
try:
module, attr = plugin.module, plugin.attr
except AttributeError:
if ":" in plugin.value:
module, attr = plugin.value.split(":", maxsplit=1)
else:
module, attr = plugin.value, None
finally:
if attr is None:
raise error.Error(
f"Gym environment plugin `{module}` must specify a function to execute, not a root module"
)
context = namespace(plugin.name)
if plugin.name == "__internal__":
if plugin.module in plugin_internal_whitelist:
if module in plugin_internal_whitelist:
context = contextlib.nullcontext()
else:
logger.warn(
f"Trying to register an internal environment when `{plugin.module}` is not in the whitelist"
f"Trying to register an internal environment when `{module}` is not in the whitelist"
)
with context:

View File

@@ -10,7 +10,7 @@ from version import VERSION
# Environment-specific dependencies.
extras = {
"atari": ["ale-py~=0.7"],
"atari": ["ale-py~=0.7.1"],
"accept-rom-license": ["autorom[accept-rom-license]~=0.4.2"],
"box2d": ["box2d-py==2.3.5", "pyglet>=1.4.0"],
"classic_control": ["pyglet>=1.4.0"],