Revert make error when render mode is used without metadata render modes (#216)

This commit is contained in:
Mark Towers
2022-12-13 18:45:54 +00:00
committed by GitHub
parent a11f8efef8
commit 410557d708
3 changed files with 29 additions and 2 deletions

View File

@@ -624,8 +624,8 @@ def make(
_kwargs["render_mode"] = mode[: -len("_list")]
apply_render_collection = True
else:
raise error.UnsupportedMode(
f"The environment is being initialised with render_mode={mode} "
logger.warn(
f"The environment is being initialised with render_mode={mode!r} "
f"that is not in the possible render_modes ({render_modes})."
)

View File

@@ -54,10 +54,16 @@ def register_make_testing_envs():
entry_point="tests.envs.utils_envs:NoHumanNoRGB",
)
gym.register(
id="test/NoRenderModesMetadata-v0",
entry_point="tests.envs.utils_envs:NoRenderModesMetadata",
)
yield
del gym.envs.registration.registry["RegisterDuringMakeEnv-v0"]
del gym.envs.registration.registry["test.ArgumentEnv-v0"]
del gym.envs.registration.registry["test/NoRenderModesMetadata-v0"]
del gym.envs.registration.registry["test/NoHuman-v0"]
del gym.envs.registration.registry["test/NoHumanOldAPI-v0"]
del gym.envs.registration.registry["test/NoHumanNoRGB-v0"]
@@ -304,6 +310,15 @@ def test_make_render_mode(register_make_testing_envs):
):
gym.make("CarRacing-v2", render="human")
# This test checks that a user can create an environment without the metadata including the render mode
with pytest.warns(
UserWarning,
match=re.escape(
"\x1b[33mWARN: The environment is being initialised with render_mode='rgb_array' that is not in the possible render_modes ([]).\x1b[0m"
),
):
gym.make("test/NoRenderModesMetadata-v0", render_mode="rgb_array")
def test_make_kwargs(register_make_testing_envs):
env = gym.make(

View File

@@ -47,3 +47,15 @@ class NoHumanNoRGB(gym.Env):
def __init__(self, render_mode=None):
assert render_mode in self.metadata["render_modes"]
self.render_mode = render_mode
class NoRenderModesMetadata(gym.Env):
"""An environment that has rendering but has not updated the metadata."""
# metadata: dict[str, Any] = {"render_modes": []}
def __init__(self, render_mode):
self.render_mode = render_mode
self.observation_space = gym.spaces.Box(low=0, high=1)
self.action_space = gym.spaces.Box(low=0, high=1)