diff --git a/gym/envs/box2d/bipedal_walker.py b/gym/envs/box2d/bipedal_walker.py index 48c3a16fb..532061d17 100644 --- a/gym/envs/box2d/bipedal_walker.py +++ b/gym/envs/box2d/bipedal_walker.py @@ -254,7 +254,6 @@ class BipedalWalker(gym.Env, EzPickle): # ] # state += [l.fraction for l in self.lidar] - assert render_mode is None or render_mode in self.metadata["render_modes"] self.render_mode = render_mode self.renderer = Renderer(self.render_mode, self._render) self.screen = None diff --git a/gym/envs/box2d/car_racing.py b/gym/envs/box2d/car_racing.py index 1537c5a36..12e6e0fd9 100644 --- a/gym/envs/box2d/car_racing.py +++ b/gym/envs/box2d/car_racing.py @@ -208,7 +208,6 @@ class CarRacing(gym.Env, EzPickle): low=0, high=255, shape=(STATE_H, STATE_W, 3), dtype=np.uint8 ) - assert render_mode is None or render_mode in self.metadata["render_modes"] self.render_mode = render_mode self.renderer = Renderer(self.render_mode, self._render) diff --git a/gym/envs/box2d/lunar_lander.py b/gym/envs/box2d/lunar_lander.py index 68710ddbe..ff6d556dc 100644 --- a/gym/envs/box2d/lunar_lander.py +++ b/gym/envs/box2d/lunar_lander.py @@ -272,7 +272,6 @@ class LunarLander(gym.Env, EzPickle): # Nop, fire left engine, main engine, right engine self.action_space = spaces.Discrete(4) - assert render_mode is None or render_mode in self.metadata["render_modes"] self.render_mode = render_mode self.renderer = Renderer(self.render_mode, self._render) diff --git a/gym/envs/classic_control/acrobot.py b/gym/envs/classic_control/acrobot.py index 1cd4b5d83..39c935706 100644 --- a/gym/envs/classic_control/acrobot.py +++ b/gym/envs/classic_control/acrobot.py @@ -166,7 +166,6 @@ class AcrobotEnv(core.Env): actions_num = 3 def __init__(self, render_mode: Optional[str] = None): - assert render_mode is None or render_mode in self.metadata["render_modes"] self.render_mode = render_mode self.renderer = Renderer(self.render_mode, self._render) self.screen = None diff --git a/gym/envs/classic_control/cartpole.py b/gym/envs/classic_control/cartpole.py index 2bbdd0142..0cf969c33 100644 --- a/gym/envs/classic_control/cartpole.py +++ b/gym/envs/classic_control/cartpole.py @@ -115,7 +115,6 @@ class CartPoleEnv(gym.Env[np.ndarray, Union[int, np.ndarray]]): self.action_space = spaces.Discrete(2) self.observation_space = spaces.Box(-high, high, dtype=np.float32) - assert render_mode is None or render_mode in self.metadata["render_modes"] self.render_mode = render_mode self.renderer = Renderer(self.render_mode, self._render) diff --git a/gym/envs/classic_control/continuous_mountain_car.py b/gym/envs/classic_control/continuous_mountain_car.py index f2e24a693..2f8298cf9 100644 --- a/gym/envs/classic_control/continuous_mountain_car.py +++ b/gym/envs/classic_control/continuous_mountain_car.py @@ -124,7 +124,6 @@ class Continuous_MountainCarEnv(gym.Env): [self.max_position, self.max_speed], dtype=np.float32 ) - assert render_mode is None or render_mode in self.metadata["render_modes"] self.render_mode = render_mode self.renderer = Renderer(self.render_mode, self._render) diff --git a/gym/envs/classic_control/mountain_car.py b/gym/envs/classic_control/mountain_car.py index 61ea23e42..a2e3f52a0 100644 --- a/gym/envs/classic_control/mountain_car.py +++ b/gym/envs/classic_control/mountain_car.py @@ -113,7 +113,6 @@ class MountainCarEnv(gym.Env): self.low = np.array([self.min_position, -self.max_speed], dtype=np.float32) self.high = np.array([self.max_position, self.max_speed], dtype=np.float32) - assert render_mode is None or render_mode in self.metadata["render_modes"] self.render_mode = render_mode self.renderer = Renderer(self.render_mode, self._render) diff --git a/gym/envs/classic_control/pendulum.py b/gym/envs/classic_control/pendulum.py index 828ad8bbb..33547bb2d 100644 --- a/gym/envs/classic_control/pendulum.py +++ b/gym/envs/classic_control/pendulum.py @@ -97,7 +97,6 @@ class PendulumEnv(gym.Env): self.m = 1.0 self.l = 1.0 - assert render_mode is None or render_mode in self.metadata["render_modes"] self.render_mode = render_mode self.renderer = Renderer(self.render_mode, self._render) diff --git a/gym/envs/mujoco/mujoco_env.py b/gym/envs/mujoco/mujoco_env.py index 713b29fa7..4a92b05a8 100644 --- a/gym/envs/mujoco/mujoco_env.py +++ b/gym/envs/mujoco/mujoco_env.py @@ -105,7 +105,6 @@ class MujocoEnv(gym.Env): self._set_action_space() - assert render_mode is None or render_mode in self.metadata["render_modes"] self.render_mode = render_mode self.renderer = Renderer(self.render_mode, self._render) diff --git a/gym/envs/registration.py b/gym/envs/registration.py index 1e4bbb5d7..875cefb07 100644 --- a/gym/envs/registration.py +++ b/gym/envs/registration.py @@ -589,6 +589,14 @@ def make( # Assume it's a string env_creator = load(spec_.entry_point) + # check render_mode is valid + render_modes = env_creator.metadata["render_modes"] + mode = kwargs.get("render_mode") + if mode is not None and mode not in render_modes: + raise error.Error( + f"Invalid render_mode provided: {mode}. Valid render_modes: None, {', '.join(render_modes)}" + ) + env = env_creator(**_kwargs) # Copies the environment creation specification and kwargs to add to the environment specification details diff --git a/gym/envs/toy_text/blackjack.py b/gym/envs/toy_text/blackjack.py index 60fed098d..be5e39a71 100644 --- a/gym/envs/toy_text/blackjack.py +++ b/gym/envs/toy_text/blackjack.py @@ -129,7 +129,6 @@ class BlackjackEnv(gym.Env): # Flag for full agreement with the (Sutton and Barto, 2018) definition. Overrides self.natural self.sab = sab - assert render_mode is None or render_mode in self.metadata["render_modes"] self.render_mode = render_mode self.renderer = Renderer(self.render_mode, self._render) diff --git a/gym/envs/toy_text/cliffwalking.py b/gym/envs/toy_text/cliffwalking.py index fc77f291a..24300a9ac 100644 --- a/gym/envs/toy_text/cliffwalking.py +++ b/gym/envs/toy_text/cliffwalking.py @@ -92,7 +92,6 @@ class CliffWalkingEnv(Env): self.observation_space = spaces.Discrete(self.nS) self.action_space = spaces.Discrete(self.nA) - assert render_mode is None or render_mode in self.metadata["render_modes"] self.render_mode = render_mode self.renderer = Renderer(self.render_mode, self._render) diff --git a/gym/envs/toy_text/frozen_lake.py b/gym/envs/toy_text/frozen_lake.py index 4574edf48..3b21bcdf6 100644 --- a/gym/envs/toy_text/frozen_lake.py +++ b/gym/envs/toy_text/frozen_lake.py @@ -223,7 +223,6 @@ class FrozenLakeEnv(Env): self.observation_space = spaces.Discrete(nS) self.action_space = spaces.Discrete(nA) - assert render_mode is None or render_mode in self.metadata["render_modes"] self.render_mode = render_mode self.renderer = Renderer(self.render_mode, self._render) diff --git a/gym/envs/toy_text/taxi.py b/gym/envs/toy_text/taxi.py index acb9dafab..abdccd8ca 100644 --- a/gym/envs/toy_text/taxi.py +++ b/gym/envs/toy_text/taxi.py @@ -173,7 +173,6 @@ class TaxiEnv(Env): self.action_space = spaces.Discrete(num_actions) self.observation_space = spaces.Discrete(num_states) - assert render_mode is None or render_mode in self.metadata["render_modes"] self.render_mode = render_mode self.renderer = Renderer(self.render_mode, self._render)