mirror of
https://github.com/Farama-Foundation/Gymnasium.git
synced 2025-08-23 23:12:46 +00:00
Revert make
error when render mode is used without metadata render modes (#216)
This commit is contained in:
@@ -624,8 +624,8 @@ def make(
|
|||||||
_kwargs["render_mode"] = mode[: -len("_list")]
|
_kwargs["render_mode"] = mode[: -len("_list")]
|
||||||
apply_render_collection = True
|
apply_render_collection = True
|
||||||
else:
|
else:
|
||||||
raise error.UnsupportedMode(
|
logger.warn(
|
||||||
f"The environment is being initialised with render_mode={mode} "
|
f"The environment is being initialised with render_mode={mode!r} "
|
||||||
f"that is not in the possible render_modes ({render_modes})."
|
f"that is not in the possible render_modes ({render_modes})."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@@ -54,10 +54,16 @@ def register_make_testing_envs():
|
|||||||
entry_point="tests.envs.utils_envs:NoHumanNoRGB",
|
entry_point="tests.envs.utils_envs:NoHumanNoRGB",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
gym.register(
|
||||||
|
id="test/NoRenderModesMetadata-v0",
|
||||||
|
entry_point="tests.envs.utils_envs:NoRenderModesMetadata",
|
||||||
|
)
|
||||||
|
|
||||||
yield
|
yield
|
||||||
|
|
||||||
del gym.envs.registration.registry["RegisterDuringMakeEnv-v0"]
|
del gym.envs.registration.registry["RegisterDuringMakeEnv-v0"]
|
||||||
del gym.envs.registration.registry["test.ArgumentEnv-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/NoHuman-v0"]
|
||||||
del gym.envs.registration.registry["test/NoHumanOldAPI-v0"]
|
del gym.envs.registration.registry["test/NoHumanOldAPI-v0"]
|
||||||
del gym.envs.registration.registry["test/NoHumanNoRGB-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")
|
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):
|
def test_make_kwargs(register_make_testing_envs):
|
||||||
env = gym.make(
|
env = gym.make(
|
||||||
|
@@ -47,3 +47,15 @@ class NoHumanNoRGB(gym.Env):
|
|||||||
def __init__(self, render_mode=None):
|
def __init__(self, render_mode=None):
|
||||||
assert render_mode in self.metadata["render_modes"]
|
assert render_mode in self.metadata["render_modes"]
|
||||||
self.render_mode = render_mode
|
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)
|
||||||
|
Reference in New Issue
Block a user