Skip to content

Commit e2a518c

Browse files
authored
[Cleanup] Removing gym-retro interface (#444)
1 parent ff5f78d commit e2a518c

File tree

3 files changed

+17
-38
lines changed

3 files changed

+17
-38
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ pip3 install moviepy
457457
pip3 install dm_control
458458
459459
# gym, atari games
460-
pip3 install gym[atari] "gym[accept-rom-license]" pygame gym_retro
460+
pip3 install gym[atari] "gym[accept-rom-license]" pygame
461461
462462
# tests
463463
pip3 install pytest pyyaml pytest-instafail

torchrl/envs/libs/gym.py

Lines changed: 15 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# LICENSE file in the root directory of this source tree.
55
import warnings
66
from types import ModuleType
7-
from typing import List, Optional, Sequence, Dict
7+
from typing import List, Dict
88

99
import torch
1010
from packaging import version
@@ -50,14 +50,8 @@
5050
gym_version = version.parse(gym.__version__)
5151
if gym_version >= version.parse("0.26.0"):
5252
from gym.wrappers.compatibility import EnvCompatibility
53-
try:
54-
import retro
55-
56-
_has_retro = True
57-
except ImportError:
58-
_has_retro = False
5953

60-
__all__ = ["GymWrapper", "GymEnv", "RetroEnv"]
54+
__all__ = ["GymWrapper", "GymEnv"]
6155

6256

6357
def _gym_to_torchrl_spec_transform(spec, dtype=None, device="cpu") -> TensorSpec:
@@ -79,12 +73,15 @@ def _gym_to_torchrl_spec_transform(spec, dtype=None, device="cpu") -> TensorSpec
7973
dtype=dtype,
8074
device=device,
8175
)
82-
elif isinstance(spec, (dict, gym.spaces.dict.Dict)):
83-
spec = {
84-
"next_" + k: _gym_to_torchrl_spec_transform(spec[k], device=device)
85-
for k in spec
86-
}
87-
return CompositeSpec(**spec)
76+
elif isinstance(spec, (Dict,)):
77+
spec_out = {}
78+
for k in spec.keys():
79+
spec_out["next_" + k] = _gym_to_torchrl_spec_transform(
80+
spec[k], device=device
81+
)
82+
return CompositeSpec(**spec_out)
83+
elif isinstance(spec, gym.spaces.dict.Dict):
84+
return _gym_to_torchrl_spec_transform(spec.spaces, device=device)
8885
else:
8986
raise NotImplementedError(
9087
f"spec of type {type(spec).__name__} is currently unaccounted for"
@@ -111,9 +108,12 @@ def _get_gym():
111108

112109
def _is_from_pixels(env):
113110
observation_spec = env.observation_space
114-
if isinstance(observation_spec, (Dict, gym.spaces.dict.Dict)):
111+
if isinstance(observation_spec, (Dict,)):
115112
if "pixels" in set(observation_spec.keys()):
116113
return True
114+
if isinstance(observation_spec, (gym.spaces.dict.Dict,)):
115+
if "pixels" in set(observation_spec.spaces.keys()):
116+
return True
117117
elif (
118118
isinstance(observation_spec, gym.spaces.Box)
119119
and (observation_spec.low == 0).all()
@@ -337,23 +337,3 @@ def _check_kwargs(self, kwargs: Dict):
337337

338338
def __repr__(self) -> str:
339339
return f"{self.__class__.__name__}(env={self.env_name}, batch_size={self.batch_size}, device={self.device})"
340-
341-
342-
def _get_retro_envs() -> Sequence:
343-
if not _has_retro:
344-
return tuple()
345-
else:
346-
return retro.data.list_games()
347-
348-
349-
def _get_retro() -> Optional[ModuleType]:
350-
if _has_retro:
351-
return retro
352-
else:
353-
return None
354-
355-
356-
class RetroEnv(GymEnv):
357-
available_envs = _get_retro_envs()
358-
lib = "retro"
359-
lib = _get_retro()

torchrl/trainers/helpers/envs.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from torchrl.envs.common import EnvBase
1414
from torchrl.envs.env_creator import env_creator, EnvCreator
1515
from torchrl.envs.libs.dm_control import DMControlEnv
16-
from torchrl.envs.libs.gym import GymEnv, RetroEnv
16+
from torchrl.envs.libs.gym import GymEnv
1717
from torchrl.envs.transforms import (
1818
CatFrames,
1919
CatTensors,
@@ -42,7 +42,6 @@
4242

4343
LIBS = {
4444
"gym": GymEnv,
45-
"retro": RetroEnv,
4645
"dm_control": DMControlEnv,
4746
}
4847

0 commit comments

Comments
 (0)