Skip to content

Commit 9ff3ab7

Browse files
authored
Make Mujoco optional to generate documentation. (#137)
* Remove mandatory import for Mujoco envs. (docs) * Fix linting and import errors. * Update changelog.
1 parent 7336018 commit 9ff3ab7

8 files changed

Lines changed: 73 additions & 5 deletions

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1414

1515
### Changed
1616

17+
* Mujoco imports optional for docs: the import error is postponed to first method call.
18+
1719
### Fixed
1820

1921

learn2learn/gym/envs/mujoco/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/usr/bin/env python3
22

3+
from .dummy_mujoco_env import MujocoEnv
34
from .ant_direction import AntDirectionEnv
45
from .ant_forward_backward import AntForwardBackwardEnv
56
from .halfcheetah_forward_backward import HalfCheetahForwardBackwardEnv

learn2learn/gym/envs/mujoco/ant_direction.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@
22

33
import gym
44
import numpy as np
5-
from gym.envs.mujoco.mujoco_env import MujocoEnv
5+
6+
from gym.error import DependencyNotInstalled
7+
try:
8+
from gym.envs.mujoco.mujoco_env import MujocoEnv
9+
except DependencyNotInstalled:
10+
from learn2learn.gym.envs.mujoco.dummy_mujoco_env import MujocoEnv
611

712
from learn2learn.gym.envs.meta_env import MetaEnv
813

learn2learn/gym/envs/mujoco/ant_forward_backward.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,13 @@
22

33
import gym
44
import numpy as np
5-
from gym.envs.mujoco.mujoco_env import MujocoEnv
5+
6+
from gym.error import DependencyNotInstalled
7+
try:
8+
from gym.envs.mujoco.mujoco_env import MujocoEnv
9+
except DependencyNotInstalled:
10+
from learn2learn.gym.envs.mujoco.dummy_mujoco_env import MujocoEnv
11+
612

713
from learn2learn.gym.envs.meta_env import MetaEnv
814

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/usr/bin/env python3
2+
3+
from gym.error import DependencyNotInstalled
4+
5+
6+
class MujocoEnv(object):
7+
"""Dummy class to avoid Mujoco import errors"""
8+
9+
def __init__(self, model_path=None, frame_skip=None):
10+
self.model_path = model_path
11+
self.frame_skip = frame_skip
12+
13+
def _error(self):
14+
"""docstring for _print_error"""
15+
msg = 'Importing MujocoEnv failed. Please run: \n' + \
16+
'\n`pip install mujoco-py` \n\n' + \
17+
'and visit: ' + \
18+
'https://github.com/openai/mujoco-py/'
19+
raise DependencyNotInstalled(msg)
20+
21+
def __hasattr__(self, *args, **kwargs):
22+
"""docstring for __hasattr__"""
23+
self._error()
24+
25+
def __getattr__(self, *args, **kwargs):
26+
"""docstring for __getattr__"""
27+
self._error()
28+
29+
def reset(self, *args, **kwargs):
30+
"""docstring for reset"""
31+
self._error()
32+
33+
def step(self, *args, **kwargs):
34+
"""docstring for reset"""
35+
self._error()
36+
37+
def seed(self, *args, **kwargs):
38+
"""docstring for reset"""
39+
self._error()

learn2learn/gym/envs/mujoco/halfcheetah_forward_backward.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@
22

33
import gym
44
import numpy as np
5-
from gym.envs.mujoco.mujoco_env import MujocoEnv
5+
6+
from gym.error import DependencyNotInstalled
7+
try:
8+
from gym.envs.mujoco.mujoco_env import MujocoEnv
9+
except DependencyNotInstalled:
10+
from learn2learn.gym.envs.mujoco.dummy_mujoco_env import MujocoEnv
611

712
from learn2learn.gym.envs.meta_env import MetaEnv
813

learn2learn/gym/envs/mujoco/humanoid_direction.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@
22

33
import gym
44
import numpy as np
5-
from gym.envs.mujoco.mujoco_env import MujocoEnv
5+
6+
from gym.error import DependencyNotInstalled
7+
try:
8+
from gym.envs.mujoco.mujoco_env import MujocoEnv
9+
except DependencyNotInstalled:
10+
from learn2learn.gym.envs.mujoco.dummy_mujoco_env import MujocoEnv
611

712
from learn2learn.gym.envs.meta_env import MetaEnv
813

learn2learn/gym/envs/mujoco/humanoid_forward_backward.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@
22

33
import gym
44
import numpy as np
5-
from gym.envs.mujoco.mujoco_env import MujocoEnv
5+
6+
from gym.error import DependencyNotInstalled
7+
try:
8+
from gym.envs.mujoco.mujoco_env import MujocoEnv
9+
except DependencyNotInstalled:
10+
from learn2learn.gym.envs.mujoco.dummy_mujoco_env import MujocoEnv
611

712
from learn2learn.gym.envs.meta_env import MetaEnv
813

0 commit comments

Comments
 (0)