Skip to content

Commit

Permalink
ENH: add render warn for None (#3112)
Browse files Browse the repository at this point in the history
* add render warn for None

* restore _render (car racing)

* improve warn message

* reformat
  • Loading branch information
younik committed Oct 4, 2022
1 parent 1486d33 commit 780e884
Show file tree
Hide file tree
Showing 13 changed files with 112 additions and 7 deletions.
8 changes: 8 additions & 0 deletions gym/envs/box2d/bipedal_walker.py
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,14 @@ def step(self, action: np.ndarray):
return np.array(state, dtype=np.float32), reward, terminated, False, {}

def render(self):
if self.render_mode is None:
gym.logger.warn(
"You are calling render method without specifying any render mode. "

This comment has been minimized.

Copy link
@pzhokhov

pzhokhov Oct 4, 2022

Collaborator

nit: this string is repeated everywhere, you could make it a global constant, something like

RENDER_WARN_MSG = 'You are calling render method ... e.g. gym("{}", render_mode="rgb_array")'
gym.logger.warn(RENDER_WARN_MSG.format(self.spec.id))

This comment has been minimized.

Copy link
@pzhokhov

pzhokhov Oct 4, 2022

Collaborator

or even make printing this warning into a dedicated method

"You can specify the render_mode at initialization, "
f'e.g. gym("{self.spec.id}", render_mode="rgb_array")'
)
return

try:
import pygame
from pygame import gfxdraw
Expand Down
9 changes: 8 additions & 1 deletion gym/envs/box2d/car_racing.py
Original file line number Diff line number Diff line change
Expand Up @@ -565,7 +565,14 @@ def step(self, action: Union[np.ndarray, int]):
return self.state, step_reward, terminated, truncated, {}

def render(self):
return self._render(self.render_mode)
if self.render_mode is None:
gym.logger.warn(
"You are calling render method without specifying any render mode. "
"You can specify the render_mode at initialization, "
f'e.g. gym("{self.spec.id}", render_mode="rgb_array")'
)
else:
return self._render(self.render_mode)

def _render(self, mode: str):
assert mode in self.metadata["render_modes"]
Expand Down
8 changes: 8 additions & 0 deletions gym/envs/box2d/lunar_lander.py
Original file line number Diff line number Diff line change
Expand Up @@ -600,6 +600,14 @@ def step(self, action):
return np.array(state, dtype=np.float32), reward, terminated, False, {}

def render(self):
if self.render_mode is None:
gym.logger.warn(
"You are calling render method without specifying any render mode. "
"You can specify the render_mode at initialization, "
f'e.g. gym("{self.spec.id}", render_mode="rgb_array")'
)
return

try:
import pygame
from pygame import gfxdraw
Expand Down
10 changes: 9 additions & 1 deletion gym/envs/classic_control/acrobot.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import numpy as np
from numpy import cos, pi, sin

from gym import core, spaces
from gym import core, logger, spaces
from gym.error import DependencyNotInstalled

__copyright__ = "Copyright 2013, RLPy http://acl.mit.edu/RLPy"
Expand Down Expand Up @@ -277,6 +277,14 @@ def _dsdt(self, s_augmented):
return dtheta1, dtheta2, ddtheta1, ddtheta2, 0.0

def render(self):
if self.render_mode is None:
logger.warn(
"You are calling render method without specifying any render mode. "
"You can specify the render_mode at initialization, "
f'e.g. gym("{self.spec.id}", render_mode="rgb_array")'
)
return

try:
import pygame
from pygame import gfxdraw
Expand Down
8 changes: 8 additions & 0 deletions gym/envs/classic_control/cartpole.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,14 @@ def reset(
return np.array(self.state, dtype=np.float32), {}

def render(self):
if self.render_mode is None:
gym.logger.warn(
"You are calling render method without specifying any render mode. "
"You can specify the render_mode at initialization, "
f'e.g. gym("{self.spec.id}", render_mode="rgb_array")'
)
return

try:
import pygame
from pygame import gfxdraw
Expand Down
8 changes: 8 additions & 0 deletions gym/envs/classic_control/continuous_mountain_car.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,14 @@ def _height(self, xs):
return np.sin(3 * xs) * 0.45 + 0.55

def render(self):
if self.render_mode is None:
gym.logger.warn(
"You are calling render method without specifying any render mode. "
"You can specify the render_mode at initialization, "
f'e.g. gym("{self.spec.id}", render_mode="rgb_array")'
)
return

try:
import pygame
from pygame import gfxdraw
Expand Down
8 changes: 8 additions & 0 deletions gym/envs/classic_control/mountain_car.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,14 @@ def _height(self, xs):
return np.sin(3 * xs) * 0.45 + 0.55

def render(self):
if self.render_mode is None:
gym.logger.warn(
"You are calling render method without specifying any render mode. "
"You can specify the render_mode at initialization, "
f'e.g. gym("{self.spec.id}", render_mode="rgb_array")'
)
return

try:
import pygame
from pygame import gfxdraw
Expand Down
8 changes: 8 additions & 0 deletions gym/envs/classic_control/pendulum.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,14 @@ def _get_obs(self):
return np.array([np.cos(theta), np.sin(theta), thetadot], dtype=np.float32)

def render(self):
if self.render_mode is None:
gym.logger.warn(
"You are calling render method without specifying any render mode. "
"You can specify the render_mode at initialization, "
f'e.g. gym("{self.spec.id}", render_mode="rgb_array")'
)
return

try:
import pygame
from pygame import gfxdraw
Expand Down
16 changes: 16 additions & 0 deletions gym/envs/mujoco/mujoco_env.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,14 @@ def _step_mujoco_simulation(self, ctrl, n_frames):
self.sim.step()

def render(self):
if self.render_mode is None:
gym.logger.warn(
"You are calling render method without specifying any render mode. "
"You can specify the render_mode at initialization, "
f'e.g. gym("{self.spec.id}", render_mode="rgb_array")'
)
return

width, height = self.width, self.height
camera_name, camera_id = self.camera_name, self.camera_id
if self.render_mode in {"rgb_array", "depth_array"}:
Expand Down Expand Up @@ -348,6 +356,14 @@ def _step_mujoco_simulation(self, ctrl, n_frames):
mujoco.mj_rnePostConstraint(self.model, self.data)

def render(self):
if self.render_mode is None:
gym.logger.warn(
"You are calling render method without specifying any render mode. "
"You can specify the render_mode at initialization, "
f'e.g. gym("{self.spec.id}", render_mode="rgb_array")'
)
return

if self.render_mode in {
"rgb_array",
"depth_array",
Expand Down
8 changes: 8 additions & 0 deletions gym/envs/toy_text/blackjack.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,14 @@ def reset(
return self._get_obs(), {}

def render(self):
if self.render_mode is None:
gym.logger.warn(
"You are calling render method without specifying any render mode. "
"You can specify the render_mode at initialization, "
f'e.g. gym("{self.spec.id}", render_mode="rgb_array")'
)
return

try:
import pygame
except ImportError:
Expand Down
10 changes: 8 additions & 2 deletions gym/envs/toy_text/cliffwalking.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import numpy as np

from gym import Env, spaces
from gym import Env, logger, spaces
from gym.envs.toy_text.utils import categorical_sample
from gym.error import DependencyNotInstalled

Expand Down Expand Up @@ -163,7 +163,13 @@ def reset(self, *, seed: Optional[int] = None, options: Optional[dict] = None):
return int(self.s), {"prob": 1}

def render(self):
if self.render_mode == "ansi":
if self.render_mode is None:
logger.warn(
"You are calling render method without specifying any render mode. "
"You can specify the render_mode at initialization, "
f'e.g. gym("{self.spec.id}", render_mode="rgb_array")'
)
elif self.render_mode == "ansi":
return self._render_text()
else:
return self._render_gui(self.render_mode)
Expand Down
10 changes: 8 additions & 2 deletions gym/envs/toy_text/frozen_lake.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import numpy as np

from gym import Env, spaces, utils
from gym import Env, logger, spaces, utils
from gym.envs.toy_text.utils import categorical_sample
from gym.error import DependencyNotInstalled

Expand Down Expand Up @@ -267,7 +267,13 @@ def reset(
return int(self.s), {"prob": 1}

def render(self):
if self.render_mode == "ansi":
if self.render_mode is None:
logger.warn(
"You are calling render method without specifying any render mode. "
"You can specify the render_mode at initialization, "
f'e.g. gym("{self.spec.id}", render_mode="rgb_array")'
)
elif self.render_mode == "ansi":
return self._render_text()
else: # self.render_mode in {"human", "rgb_array"}:
return self._render_gui(self.render_mode)
Expand Down
8 changes: 7 additions & 1 deletion gym/envs/toy_text/taxi.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import numpy as np

from gym import Env, spaces, utils
from gym import Env, logger, spaces, utils
from gym.envs.toy_text.utils import categorical_sample
from gym.error import DependencyNotInstalled

Expand Down Expand Up @@ -278,6 +278,12 @@ def reset(
return int(self.s), {"prob": 1.0, "action_mask": self.action_mask(self.s)}

def render(self):
if self.render_mode is None:
logger.warn(
"You are calling render method without specifying any render mode. "
"You can specify the render_mode at initialization, "
f'e.g. gym("{self.spec.id}", render_mode="rgb_array")'
)
if self.render_mode == "ansi":
return self._render_text()
else: # self.render_mode in {"human", "rgb_array"}:
Expand Down

0 comments on commit 780e884

Please sign in to comment.