diff --git a/docs/environments.md b/docs/environments.md index 031e6628c99..bd9f683c670 100644 --- a/docs/environments.md +++ b/docs/environments.md @@ -28,7 +28,6 @@ and are namespaced with `ALE`. For example, the `v5` environments can be include ```python import gym -import ale_py env = gym.make('ALE/SpaceInvaders-v5') ``` diff --git a/gym/envs/__init__.py b/gym/envs/__init__.py index f1329a7aaf3..a6b48bdc147 100644 --- a/gym/envs/__init__.py +++ b/gym/envs/__init__.py @@ -620,167 +620,6 @@ def _merge(a, b): max_episode_steps=100, ) -# Atari -# ---------------------------------------- - -for game in [ - "adventure", - "air_raid", - "alien", - "amidar", - "assault", - "asterix", - "asteroids", - "atlantis", - "bank_heist", - "battle_zone", - "beam_rider", - "berzerk", - "bowling", - "boxing", - "breakout", - "carnival", - "centipede", - "chopper_command", - "crazy_climber", - "defender", - "demon_attack", - "double_dunk", - "elevator_action", - "enduro", - "fishing_derby", - "freeway", - "frostbite", - "gopher", - "gravitar", - "hero", - "ice_hockey", - "jamesbond", - "journey_escape", - "kangaroo", - "krull", - "kung_fu_master", - "montezuma_revenge", - "ms_pacman", - "name_this_game", - "phoenix", - "pitfall", - "pong", - "pooyan", - "private_eye", - "qbert", - "riverraid", - "road_runner", - "robotank", - "seaquest", - "skiing", - "solaris", - "space_invaders", - "star_gunner", - "tennis", - "time_pilot", - "tutankham", - "up_n_down", - "venture", - "video_pinball", - "wizard_of_wor", - "yars_revenge", - "zaxxon", -]: - for obs_type in ["rgb", "ram"]: - # space_invaders should yield SpaceInvaders-v0 and SpaceInvaders-ram-v0 - name = "".join([g.capitalize() for g in game.split("_")]) - if obs_type == "ram": - name = "{}-ram".format(name) - - nondeterministic = False - if game == "elevator_action" and obs_type == "ram": - # ElevatorAction-ram-v0 seems to yield slightly - # non-deterministic observations about 10% of the time. We - # should track this down eventually, but for now we just - # mark it as nondeterministic. - nondeterministic = True - - default_kwargs = { - "game": game, - "obs_type": obs_type, - "repeat_action_probability": 0.0, - "full_action_space": False, - "frameskip": (2, 5), - } - - register( - id="{}-v0".format(name), - entry_point="ale_py.gym:ALGymEnv", - kwargs={ - **default_kwargs, - "repeat_action_probability": 0.25, - }, - max_episode_steps=10000, - nondeterministic=nondeterministic, - ) - - register( - id="{}-v4".format(name), - entry_point="ale_py.gym:ALGymEnv", - kwargs={**default_kwargs}, - max_episode_steps=100000, - nondeterministic=nondeterministic, - ) - - # Standard Deterministic (as in the original DeepMind paper) - if game == "space_invaders": - frameskip = 3 - else: - frameskip = 4 - - # Use a deterministic frame skip. - register( - id="{}Deterministic-v0".format(name), - entry_point="ale_py.gym:ALGymEnv", - kwargs={ - **default_kwargs, - "frameskip": frameskip, - "repeat_action_probability": 0.25, - }, - max_episode_steps=100000, - nondeterministic=nondeterministic, - ) - - register( - id="{}Deterministic-v4".format(name), - entry_point="ale_py.gym:ALGymEnv", - kwargs={**default_kwargs, "frameskip": frameskip}, - max_episode_steps=100000, - nondeterministic=nondeterministic, - ) - - register( - id="{}NoFrameskip-v0".format(name), - entry_point="ale_py.gym:ALGymEnv", - kwargs={ - **default_kwargs, - "frameskip": 1, - "repeat_action_probability": 0.25, - }, # A frameskip of 1 means we get every frame - max_episode_steps=frameskip * 100000, - nondeterministic=nondeterministic, - ) - - # No frameskip. (Atari has no entropy source, so these are - # deterministic environments.) - register( - id="{}NoFrameskip-v4".format(name), - entry_point="ale_py.gym:ALGymEnv", - kwargs={ - **default_kwargs, - "frameskip": 1, - }, # A frameskip of 1 means we get every frame - max_episode_steps=frameskip * 100000, - nondeterministic=nondeterministic, - ) - - # Unit test # --------- diff --git a/gym/envs/tests/spec_list.py b/gym/envs/tests/spec_list.py index e81f4a1c02b..50dabf4733b 100644 --- a/gym/envs/tests/spec_list.py +++ b/gym/envs/tests/spec_list.py @@ -26,9 +26,9 @@ def should_skip_env_spec_for_tests(spec): ): return True try: - import ale_py + import gym.envs.atari except ImportError: - if ep.startswith("ale_py.gym"): + if ep.startswith("gym.envs.atari"): return True try: import Box2D @@ -40,7 +40,7 @@ def should_skip_env_spec_for_tests(spec): "GoEnv" in ep or "HexEnv" in ep or ( - ep.startswith("ale_py.gym") + ep.startswith("gym.envs.atari") and not spec.id.startswith("Pong") and not spec.id.startswith("Seaquest") ) diff --git a/gym/envs/tests/test_atari_env_specs.py b/gym/envs/tests/test_atari_legacy_env_specs.py similarity index 98% rename from gym/envs/tests/test_atari_env_specs.py rename to gym/envs/tests/test_atari_legacy_env_specs.py index a830e79848b..ae41082a780 100644 --- a/gym/envs/tests/test_atari_env_specs.py +++ b/gym/envs/tests/test_atari_legacy_env_specs.py @@ -1,3 +1,7 @@ +import pytest + +pytest.importorskip("gym.envs.atari") + from gym.envs.registration import registry from itertools import product diff --git a/gym/wrappers/test_atari_preprocessing.py b/gym/wrappers/test_atari_preprocessing.py index 401d2dd57e5..744867dbb46 100644 --- a/gym/wrappers/test_atari_preprocessing.py +++ b/gym/wrappers/test_atari_preprocessing.py @@ -3,7 +3,7 @@ from gym.wrappers import AtariPreprocessing import pytest -pytest.importorskip("ale_py") +pytest.importorskip("gym.envs.atari") @pytest.fixture(scope="module") diff --git a/gym/wrappers/test_frame_stack.py b/gym/wrappers/test_frame_stack.py index 8df1f1d22c3..59eac35d959 100644 --- a/gym/wrappers/test_frame_stack.py +++ b/gym/wrappers/test_frame_stack.py @@ -1,6 +1,6 @@ import pytest -pytest.importorskip("ale_py") +pytest.importorskip("gym.envs.atari") import numpy as np import gym diff --git a/gym/wrappers/test_gray_scale_observation.py b/gym/wrappers/test_gray_scale_observation.py index 27ab8bc0249..2f17a94d3c0 100644 --- a/gym/wrappers/test_gray_scale_observation.py +++ b/gym/wrappers/test_gray_scale_observation.py @@ -6,7 +6,7 @@ from gym.wrappers import GrayScaleObservation from gym.wrappers import AtariPreprocessing -pytest.importorskip("ale_py") +pytest.importorskip("gym.envs.atari") pytest.importorskip("cv2") diff --git a/gym/wrappers/test_resize_observation.py b/gym/wrappers/test_resize_observation.py index 14c7a6efa33..688b47269ec 100644 --- a/gym/wrappers/test_resize_observation.py +++ b/gym/wrappers/test_resize_observation.py @@ -3,15 +3,9 @@ import gym from gym.wrappers import ResizeObservation -try: - import ale_py -except ImportError: - ale_py = None +pytest.importorskip("gym.envs.atari") -@pytest.mark.skipif( - ale_py is None, reason="Only run this test when ale_py is installed" -) @pytest.mark.parametrize( "env_id", ["PongNoFrameskip-v0", "SpaceInvadersNoFrameskip-v0"] )