Explorar o código

Merge pull request #205 from rodrigodelazcano/entrypoint

Register environments with entrypoint in setup.py
Mark Towers %!s(int64=2) %!d(string=hai) anos
pai
achega
f4cd77e3b4

+ 505 - 3
gym_minigrid/__init__.py

@@ -1,3 +1,505 @@
-# Import the envs module so that envs register themselves
-# Import wrappers so it's accessible when installing with pip
-from gym_minigrid import envs, wrappers
+from gym.envs.registration import register
+
+from gym_minigrid.minigrid import Wall
+
+
+def register_minigrid_envs():
+    # BlockedUnlockPickup
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-BlockedUnlockPickup-v0",
+        entry_point="gym_minigrid.envs:BlockedUnlockPickupEnv",
+    )
+
+    # LavaCrossing
+    # ----------------------------------------
+    register(
+        id="MiniGrid-LavaCrossingS9N1-v0",
+        entry_point="gym_minigrid.envs:CrossingEnv",
+        kwargs={"size": 9, "num_crossings": 1},
+    )
+
+    register(
+        id="MiniGrid-LavaCrossingS9N2-v0",
+        entry_point="gym_minigrid.envs:CrossingEnv",
+        kwargs={"size": 9, "num_crossings": 2},
+    )
+
+    register(
+        id="MiniGrid-LavaCrossingS9N3-v0",
+        entry_point="gym_minigrid.envs:CrossingEnv",
+        kwargs={"size": 9, "num_crossings": 3},
+    )
+
+    register(
+        id="MiniGrid-LavaCrossingS11N5-v0",
+        entry_point="gym_minigrid.envs:CrossingEnv",
+        kwargs={"size": 11, "num_crossings": 5},
+    )
+
+    # SimpleCrossing
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-SimpleCrossingS9N1-v0",
+        entry_point="gym_minigrid.envs:CrossingEnv",
+        kwargs={"size": 9, "num_crossings": 1, "obstacle_type": Wall},
+    )
+
+    register(
+        id="MiniGrid-SimpleCrossingS9N2-v0",
+        entry_point="gym_minigrid.envs:CrossingEnv",
+        kwargs={"size": 9, "num_crossings": 2, "obstacle_type": Wall},
+    )
+
+    register(
+        id="MiniGrid-SimpleCrossingS9N3-v0",
+        entry_point="gym_minigrid.envs:CrossingEnv",
+        kwargs={"size": 9, "num_crossings": 3, "obstacle_type": Wall},
+    )
+
+    register(
+        id="MiniGrid-SimpleCrossingS11N5-v0",
+        entry_point="gym_minigrid.envs:CrossingEnv",
+        kwargs={"size": 11, "num_crossings": 5, "obstacle_type": Wall},
+    )
+
+    # DistShift
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-DistShift1-v0",
+        entry_point="gym_minigrid.envs:DistShiftEnv",
+        kwargs={"strip2_row": 2},
+    )
+
+    register(
+        id="MiniGrid-DistShift2-v0",
+        entry_point="gym_minigrid.envs:DistShiftEnv",
+        kwargs={"strip2_row": 5},
+    )
+
+    # DoorKey
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-DoorKey-5x5-v0",
+        entry_point="gym_minigrid.envs:DoorKeyEnv",
+        kwargs={"size": 5},
+    )
+
+    register(
+        id="MiniGrid-DoorKey-6x6-v0",
+        entry_point="gym_minigrid.envs:DoorKeyEnv",
+        kwargs={"size": 5},
+    )
+
+    register(
+        id="MiniGrid-DoorKey-8x8-v0",
+        entry_point="gym_minigrid.envs:DoorKeyEnv",
+        kwargs={"size": 8},
+    )
+
+    register(
+        id="MiniGrid-DoorKey-16x16-v0",
+        entry_point="gym_minigrid.envs:DoorKeyEnv",
+        kwargs={"size": 16},
+    )
+
+    # Dynamic-Obstacles
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-Dynamic-Obstacles-5x5-v0",
+        entry_point="gym_minigrid.envs:DynamicObstaclesEnv",
+        kwargs={"size": 5, "n_obstacles": 2},
+    )
+
+    register(
+        id="MiniGrid-Dynamic-Obstacles-Random-5x5-v0",
+        entry_point="gym_minigrid.envs:DynamicObstaclesEnv",
+        kwargs={"size": 5, "agent_start_pos": None, "n_obstacles": 2},
+    )
+
+    register(
+        id="MiniGrid-Dynamic-Obstacles-6x6-v0",
+        entry_point="gym_minigrid.envs:DynamicObstaclesEnv",
+        kwargs={"size": 6, "n_obstacles": 3},
+    )
+
+    register(
+        id="MiniGrid-Dynamic-Obstacles-Random-6x6-v0",
+        entry_point="gym_minigrid.envs:DynamicObstaclesEnv",
+        kwargs={"size": 6, "agent_start_pos": None, "n_obstacles": 3},
+    )
+
+    register(
+        id="MiniGrid-Dynamic-Obstacles-8x8-v0",
+        entry_point="gym_minigrid.envs:DynamicObstaclesEnv",
+    )
+
+    register(
+        id="MiniGrid-Dynamic-Obstacles-16x16-v0",
+        entry_point="gym_minigrid.envs:DynamicObstaclesEnv",
+        kwargs={"size": 16, "n_obstacles": 8},
+    )
+
+    # Empty
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-Empty-5x5-v0",
+        entry_point="gym_minigrid.envs:EmptyEnv",
+        kwargs={"size": 5},
+    )
+
+    register(
+        id="MiniGrid-Empty-Random-5x5-v0",
+        entry_point="gym_minigrid.envs:EmptyEnv",
+        kwargs={"size": 5, "agent_start_pos": None},
+    )
+
+    register(
+        id="MiniGrid-Empty-6x6-v0",
+        entry_point="gym_minigrid.envs:EmptyEnv",
+        kwargs={"size": 6},
+    )
+
+    register(
+        id="MiniGrid-Empty-Random-6x6-v0",
+        entry_point="gym_minigrid.envs:EmptyEnv",
+        kwargs={"size": 6, "agent_start_pos": None},
+    )
+
+    register(
+        id="MiniGrid-Empty-8x8-v0",
+        entry_point="gym_minigrid.envs:EmptyEnv",
+    )
+
+    register(
+        id="MiniGrid-Empty-16x16-v0",
+        entry_point="gym_minigrid.envs:EmptyEnv",
+        kwargs={"size": 16},
+    )
+
+    # Fetch
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-Fetch-5x5-N2-v0",
+        entry_point="gym_minigrid.envs:FetchEnv",
+        kwargs={"size": 5, "numObjs": 2},
+    )
+
+    register(
+        id="MiniGrid-Fetch-6x6-N2-v0",
+        entry_point="gym_minigrid.envs:FetchEnv",
+        kwargs={"size": 6, "numObjs": 2},
+    )
+
+    register(id="MiniGrid-Fetch-8x8-N3-v0", entry_point="gym_minigrid.envs:FetchEnv")
+
+    # FourRooms
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-FourRooms-v0",
+        entry_point="gym_minigrid.envs:FourRoomsEnv",
+    )
+
+    # GoToDoor
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-GoToDoor-5x5-v0",
+        entry_point="gym_minigrid.envs:GoToDoorEnv",
+    )
+
+    register(
+        id="MiniGrid-GoToDoor-6x6-v0",
+        entry_point="gym_minigrid.envs:GoToDoorEnv",
+        kwargs={"size": 6},
+    )
+
+    register(
+        id="MiniGrid-GoToDoor-8x8-v0",
+        entry_point="gym_minigrid.envs:GoToDoorEnv",
+        kwargs={"size": 8},
+    )
+
+    # GoToObject
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-GoToObject-6x6-N2-v0",
+        entry_point="gym_minigrid.envs:GoToObjectEnv",
+    )
+
+    register(
+        id="MiniGrid-GoToObject-8x8-N2-v0",
+        entry_point="gym_minigrid.envs:GoToObjectEnv",
+        kwargs={"size": 8, "numObjs": 2},
+    )
+
+    # KeyCorridor
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-KeyCorridorS3R1-v0",
+        entry_point="gym_minigrid.envs:KeyCorridorEnv",
+        kwargs={"room_size": 3, "num_rows": 1},
+    )
+
+    register(
+        id="MiniGrid-KeyCorridorS3R2-v0",
+        entry_point="gym_minigrid.envs:KeyCorridorEnv",
+        kwargs={"room_size": 3, "num_rows": 2},
+    )
+
+    register(
+        id="MiniGrid-KeyCorridorS3R3-v0",
+        entry_point="gym_minigrid.envs:KeyCorridorEnv",
+        kwargs={"room_size": 3, "num_rows": 3},
+    )
+
+    register(
+        id="MiniGrid-KeyCorridorS4R3-v0",
+        entry_point="gym_minigrid.envs:KeyCorridorEnv",
+        kwargs={"room_size": 4, "num_rows": 3},
+    )
+
+    register(
+        id="MiniGrid-KeyCorridorS5R3-v0",
+        entry_point="gym_minigrid.envs:KeyCorridorEnv",
+        kwargs={"room_size": 5, "num_rows": 3},
+    )
+
+    register(
+        id="MiniGrid-KeyCorridorS6R3-v0",
+        entry_point="gym_minigrid.envs:KeyCorridorEnv",
+        kwargs={"room_size": 6, "num_rows": 3},
+    )
+
+    # LavaGap
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-LavaGapS5-v0",
+        entry_point="gym_minigrid.envs:LavaGapEnv",
+        kwargs={"size": 5},
+    )
+
+    register(
+        id="MiniGrid-LavaGapS6-v0",
+        entry_point="gym_minigrid.envs:LavaGapEnv",
+        kwargs={"size": 6},
+    )
+
+    register(
+        id="MiniGrid-LavaGapS7-v0",
+        entry_point="gym_minigrid.envs:LavaGapEnv",
+        kwargs={"size": 7},
+    )
+
+    # LockedRoom
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-LockedRoom-v0",
+        entry_point="gym_minigrid.envs:LockedRoomEnv",
+    )
+
+    # Memory
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-MemoryS17Random-v0",
+        entry_point="gym_minigrid.envs:MemoryEnv",
+        kwargs={"size": 17, "random_length": True},
+    )
+
+    register(
+        id="MiniGrid-MemoryS13Random-v0",
+        entry_point="gym_minigrid.envs:MemoryEnv",
+        kwargs={"size": 13, "random_length": True},
+    )
+
+    register(
+        id="MiniGrid-MemoryS13-v0",
+        entry_point="gym_minigrid.envs:MemoryEnv",
+        kwargs={"size": 13},
+    )
+
+    register(
+        id="MiniGrid-MemoryS11-v0",
+        entry_point="gym_minigrid.envs:MemoryEnv",
+        kwargs={"size": 11},
+    )
+
+    register(
+        id="MiniGrid-MemoryS9-v0",
+        entry_point="gym_minigrid.envs:MemoryEnv",
+        kwargs={"size": 9},
+    )
+
+    register(
+        id="MiniGrid-MemoryS7-v0",
+        entry_point="gym_minigrid.envs:MemoryEnv",
+        kwargs={"size": 7},
+    )
+
+    # MultiRoom
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-MultiRoom-N2-S4-v0",
+        entry_point="gym_minigrid.envs:MultiRoomEnv",
+        kwargs={"minNumRooms": 2, "maxNumRooms": 2, "maxRoomSize": 4},
+    )
+
+    register(
+        id="MiniGrid-MultiRoom-N4-S5-v0",
+        entry_point="gym_minigrid.envs:MultiRoomEnv",
+        kwargs={"minNumRooms": 6, "maxNumRooms": 6, "maxRoomSize": 5},
+    )
+
+    register(
+        id="MiniGrid-MultiRoom-N6-v0",
+        entry_point="gym_minigrid.envs:MultiRoomEnv",
+        kwargs={"minNumRooms": 6, "maxNumRooms": 6},
+    )
+
+    # ObstructedMaze
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-ObstructedMaze-1Dl-v0",
+        entry_point="gym_minigrid.envs:ObstructedMaze_1Dlhb",
+        kwargs={"key_in_box": False, "blocked": False},
+    )
+
+    register(
+        id="MiniGrid-ObstructedMaze-1Dlh-v0",
+        entry_point="gym_minigrid.envs:ObstructedMaze_1Dlhb",
+        kwargs={"key_in_box": True, "blocked": False},
+    )
+
+    register(
+        id="MiniGrid-ObstructedMaze-1Dlhb-v0",
+        entry_point="gym_minigrid.envs:ObstructedMaze_1Dlhb",
+    )
+
+    register(
+        id="MiniGrid-ObstructedMaze-2Dl-v0",
+        entry_point="gym_minigrid.envs:ObstructedMaze_Full",
+        kwargs={
+            "agent_room": (2, 1),
+            "key_in_box": False,
+            "blocked": False,
+            "num_quarters": 1,
+            "num_rooms_visited": 4,
+        },
+    )
+
+    register(
+        id="MiniGrid-ObstructedMaze-2Dlh-v0",
+        entry_point="gym_minigrid.envs:ObstructedMaze_Full",
+        kwargs={
+            "agent_room": (2, 1),
+            "key_in_box": True,
+            "blocked": False,
+            "num_quarters": 1,
+            "num_rooms_visited": 4,
+        },
+    )
+
+    register(
+        id="MiniGrid-ObstructedMaze-2Dlhb-v0",
+        entry_point="gym_minigrid.envs:ObstructedMaze_Full",
+        kwargs={
+            "agent_room": (2, 1),
+            "key_in_box": True,
+            "blocked": True,
+            "num_quarters": 1,
+            "num_rooms_visited": 4,
+        },
+    )
+
+    register(
+        id="MiniGrid-ObstructedMaze-1Q-v0",
+        entry_point="gym_minigrid.envs:ObstructedMaze_Full",
+        kwargs={
+            "agent_room": (1, 1),
+            "key_in_box": True,
+            "blocked": True,
+            "num_quarters": 1,
+            "num_rooms_visited": 5,
+        },
+    )
+
+    register(
+        id="MiniGrid-ObstructedMaze-2Q-v0",
+        entry_point="gym_minigrid.envs:ObstructedMaze_Full",
+        kwargs={
+            "agent_room": (2, 1),
+            "key_in_box": True,
+            "blocked": True,
+            "num_quarters": 2,
+            "num_rooms_visited": 11,
+        },
+    )
+
+    register(
+        id="MiniGrid-ObstructedMaze-Full-v0",
+        entry_point="gym_minigrid.envs:ObstructedMaze_Full",
+    )
+
+    # Playground
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-Playground-v0",
+        entry_point="gym_minigrid.envs:PlaygroundEnv",
+    )
+
+    # PutNear
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-PutNear-6x6-N2-v0",
+        entry_point="gym_minigrid.envs:PutNearEnv",
+    )
+
+    register(
+        id="MiniGrid-PutNear-8x8-N3-v0",
+        entry_point="gym_minigrid.envs:PutNearEnv",
+        kwargs={"size": 8, "numObjs": 3},
+    )
+
+    # RedBlueDoors
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-RedBlueDoors-6x6-v0",
+        entry_point="gym_minigrid.envs:RedBlueDoorEnv",
+        kwargs={"size": 6},
+    )
+
+    register(
+        id="MiniGrid-RedBlueDoors-8x8-v0",
+        entry_point="gym_minigrid.envs:RedBlueDoorEnv",
+    )
+
+    # Unlock
+    # ----------------------------------------
+
+    register(id="MiniGrid-Unlock-v0", entry_point="gym_minigrid.envs:UnlockEnv")
+
+    # UnlockPickup
+    # ----------------------------------------
+
+    register(
+        id="MiniGrid-UnlockPickup-v0",
+        entry_point="gym_minigrid.envs:UnlockPickupEnv",
+    )

+ 0 - 7
gym_minigrid/envs/blockedunlockpickup.py

@@ -1,5 +1,4 @@
 from gym_minigrid.minigrid import Ball
-from gym_minigrid.register import register
 from gym_minigrid.roomgrid import RoomGrid
 
 
@@ -46,9 +45,3 @@ class BlockedUnlockPickupEnv(RoomGrid):
                 done = True
 
         return obs, reward, done, info
-
-
-register(
-    id="MiniGrid-BlockedUnlockPickup-v0",
-    entry_point="gym_minigrid.envs.blockedunlockpickup:BlockedUnlockPickupEnv",
-)

+ 1 - 63
gym_minigrid/envs/crossing.py

@@ -2,8 +2,7 @@ import itertools as itt
 
 import numpy as np
 
-from gym_minigrid.minigrid import Goal, Grid, Lava, MiniGridEnv, Wall
-from gym_minigrid.register import register
+from gym_minigrid.minigrid import Goal, Grid, Lava, MiniGridEnv
 
 
 class CrossingEnv(MiniGridEnv):
@@ -85,64 +84,3 @@ class CrossingEnv(MiniGridEnv):
             if self.obstacle_type == Lava
             else "find the opening and get to the green goal square"
         )
-
-
-register(
-    id="MiniGrid-LavaCrossingS9N1-v0",
-    entry_point="gym_minigrid.envs.crossing:CrossingEnv",
-    size=9,
-    num_crossings=1,
-)
-
-register(
-    id="MiniGrid-LavaCrossingS9N2-v0",
-    entry_point="gym_minigrid.envs.crossing:CrossingEnv",
-    size=9,
-    num_crossings=2,
-)
-
-register(
-    id="MiniGrid-LavaCrossingS9N3-v0",
-    entry_point="gym_minigrid.envs.crossing:CrossingEnv",
-    size=9,
-    num_crossings=3,
-)
-
-register(
-    id="MiniGrid-LavaCrossingS11N5-v0",
-    entry_point="gym_minigrid.envs.crossing:CrossingEnv",
-    size=11,
-    num_crossings=5,
-)
-
-register(
-    id="MiniGrid-SimpleCrossingS9N1-v0",
-    entry_point="gym_minigrid.envs.crossing:CrossingEnv",
-    size=9,
-    num_crossings=1,
-    obstacle_type=Wall,
-)
-
-register(
-    id="MiniGrid-SimpleCrossingS9N2-v0",
-    entry_point="gym_minigrid.envs.crossing:CrossingEnv",
-    size=9,
-    num_crossings=2,
-    obstacle_type=Wall,
-)
-
-register(
-    id="MiniGrid-SimpleCrossingS9N3-v0",
-    entry_point="gym_minigrid.envs.crossing:CrossingEnv",
-    size=9,
-    num_crossings=3,
-    obstacle_type=Wall,
-)
-
-register(
-    id="MiniGrid-SimpleCrossingS11N5-v0",
-    entry_point="gym_minigrid.envs.crossing:CrossingEnv",
-    size=11,
-    num_crossings=5,
-    obstacle_type=Wall,
-)

+ 0 - 14
gym_minigrid/envs/distshift.py

@@ -1,5 +1,4 @@
 from gym_minigrid.minigrid import Goal, Grid, Lava, MiniGridEnv
-from gym_minigrid.register import register
 
 
 class DistShiftEnv(MiniGridEnv):
@@ -53,16 +52,3 @@ class DistShiftEnv(MiniGridEnv):
             self.place_agent()
 
         self.mission = "get to the green goal square"
-
-
-register(
-    id="MiniGrid-DistShift1-v0",
-    entry_point="gym_minigrid.envs.distshift:DistShiftEnv",
-    strip2_row=2,
-)
-
-register(
-    id="MiniGrid-DistShift2-v0",
-    entry_point="gym_minigrid.envs.distshift:DistShiftEnv",
-    strip2_row=5,
-)

+ 0 - 26
gym_minigrid/envs/doorkey.py

@@ -1,5 +1,4 @@
 from gym_minigrid.minigrid import Door, Goal, Grid, Key, MiniGridEnv
-from gym_minigrid.register import register
 
 
 class DoorKeyEnv(MiniGridEnv):
@@ -38,28 +37,3 @@ class DoorKeyEnv(MiniGridEnv):
         self.place_obj(obj=Key("yellow"), top=(0, 0), size=(splitIdx, height))
 
         self.mission = "use the key to open the door and then get to the goal"
-
-
-register(
-    id="MiniGrid-DoorKey-5x5-v0",
-    entry_point="gym_minigrid.envs.doorkey:DoorKeyEnv",
-    size=5,
-)
-
-register(
-    id="MiniGrid-DoorKey-6x6-v0",
-    entry_point="gym_minigrid.envs.doorkey:DoorKeyEnv",
-    size=6,
-)
-
-register(
-    id="MiniGrid-DoorKey-8x8-v0",
-    entry_point="gym_minigrid.envs.doorkey:DoorKeyEnv",
-    size=8,
-)
-
-register(
-    id="MiniGrid-DoorKey-16x16-v0",
-    entry_point="gym_minigrid.envs.doorkey:DoorKeyEnv",
-    size=16,
-)

+ 0 - 44
gym_minigrid/envs/dynamicobstacles.py

@@ -3,7 +3,6 @@ from operator import add
 import gym
 
 from gym_minigrid.minigrid import Ball, Goal, Grid, MiniGridEnv
-from gym_minigrid.register import register
 
 
 class DynamicObstaclesEnv(MiniGridEnv):
@@ -90,46 +89,3 @@ class DynamicObstaclesEnv(MiniGridEnv):
             return obs, reward, done, info
 
         return obs, reward, done, info
-
-
-register(
-    id="MiniGrid-Dynamic-Obstacles-5x5-v0",
-    entry_point="gym_minigrid.envs.dynamicobstacles:DynamicObstaclesEnv",
-    size=5,
-    n_obstacles=2,
-)
-
-register(
-    id="MiniGrid-Dynamic-Obstacles-Random-5x5-v0",
-    entry_point="gym_minigrid.envs.dynamicobstacles:DynamicObstaclesEnv",
-    size=5,
-    agent_start_pos=None,
-    n_obstacles=2,
-)
-
-register(
-    id="MiniGrid-Dynamic-Obstacles-6x6-v0",
-    entry_point="gym_minigrid.envs.dynamicobstacles:DynamicObstaclesEnv",
-    size=6,
-    n_obstacles=3,
-)
-
-register(
-    id="MiniGrid-Dynamic-Obstacles-Random-6x6-v0",
-    entry_point="gym_minigrid.envs.dynamicobstacles:DynamicObstaclesEnv",
-    size=6,
-    agent_start_pos=None,
-    n_obstacles=3,
-)
-
-register(
-    id="MiniGrid-Dynamic-Obstacles-8x8-v0",
-    entry_point="gym_minigrid.envs.dynamicobstacles:DynamicObstaclesEnv",
-)
-
-register(
-    id="MiniGrid-Dynamic-Obstacles-16x16-v0",
-    entry_point="gym_minigrid.envs.dynamicobstacles:DynamicObstaclesEnv",
-    size=16,
-    n_obstacles=8,
-)

+ 0 - 37
gym_minigrid/envs/empty.py

@@ -1,5 +1,4 @@
 from gym_minigrid.minigrid import Goal, Grid, MiniGridEnv
-from gym_minigrid.register import register
 
 
 class EmptyEnv(MiniGridEnv):
@@ -37,39 +36,3 @@ class EmptyEnv(MiniGridEnv):
             self.place_agent()
 
         self.mission = "get to the green goal square"
-
-
-register(
-    id="MiniGrid-Empty-5x5-v0", entry_point="gym_minigrid.envs.empty:EmptyEnv", size=5
-)
-
-register(
-    id="MiniGrid-Empty-Random-5x5-v0",
-    entry_point="gym_minigrid.envs.empty:EmptyEnv",
-    size=5,
-    agent_start_pos=None,
-)
-
-register(
-    id="MiniGrid-Empty-6x6-v0",
-    entry_point="gym_minigrid.envs.empty:EmptyEnv",
-    size=6,
-)
-
-register(
-    id="MiniGrid-Empty-Random-6x6-v0",
-    entry_point="gym_minigrid.envs.empty:EmptyEnv",
-    size=6,
-    agent_start_pos=None,
-)
-
-register(
-    id="MiniGrid-Empty-8x8-v0",
-    entry_point="gym_minigrid.envs.empty:EmptyEnv",
-)
-
-register(
-    id="MiniGrid-Empty-16x16-v0",
-    entry_point="gym_minigrid.envs.empty:EmptyEnv",
-    size=16,
-)

+ 0 - 18
gym_minigrid/envs/fetch.py

@@ -1,5 +1,4 @@
 from gym_minigrid.minigrid import COLOR_NAMES, Ball, Grid, Key, MiniGridEnv
-from gym_minigrid.register import register
 
 
 class FetchEnv(MiniGridEnv):
@@ -90,20 +89,3 @@ class FetchEnv(MiniGridEnv):
                 done = True
 
         return obs, reward, done, info
-
-
-register(
-    id="MiniGrid-Fetch-5x5-N2-v0",
-    entry_point="gym_minigrid.envs.fetch:FetchEnv",
-    size=5,
-    numObjs=2,
-)
-
-register(
-    id="MiniGrid-Fetch-6x6-N2-v0",
-    entry_point="gym_minigrid.envs.fetch:FetchEnv",
-    size=6,
-    numObjs=2,
-)
-
-register(id="MiniGrid-Fetch-8x8-N3-v0", entry_point="gym_minigrid.envs.fetch:FetchEnv")

+ 0 - 7
gym_minigrid/envs/fourrooms.py

@@ -1,6 +1,4 @@
-#!/usr/bin/env python
 from gym_minigrid.minigrid import Goal, Grid, MiniGridEnv
-from gym_minigrid.register import register
 
 
 class FourRoomsEnv(MiniGridEnv):
@@ -69,8 +67,3 @@ class FourRoomsEnv(MiniGridEnv):
     def step(self, action):
         obs, reward, done, info = MiniGridEnv.step(self, action)
         return obs, reward, done, info
-
-
-register(
-    id="MiniGrid-FourRooms-v0", entry_point="gym_minigrid.envs.fourrooms:FourRoomsEnv"
-)

+ 0 - 18
gym_minigrid/envs/gotodoor.py

@@ -1,5 +1,4 @@
 from gym_minigrid.minigrid import COLOR_NAMES, Door, Grid, MiniGridEnv
-from gym_minigrid.register import register
 
 
 class GoToDoorEnv(MiniGridEnv):
@@ -78,20 +77,3 @@ class GoToDoorEnv(MiniGridEnv):
             done = True
 
         return obs, reward, done, info
-
-
-register(
-    id="MiniGrid-GoToDoor-5x5-v0", entry_point="gym_minigrid.envs.gotodoor:GoToDoorEnv"
-)
-
-register(
-    id="MiniGrid-GoToDoor-6x6-v0",
-    entry_point="gym_minigrid.envs.gotodoor:GoToDoorEnv",
-    size=6,
-)
-
-register(
-    id="MiniGrid-GoToDoor-8x8-v0",
-    entry_point="gym_minigrid.envs.gotodoor:GoToDoorEnv",
-    size=8,
-)

+ 0 - 14
gym_minigrid/envs/gotoobject.py

@@ -1,5 +1,4 @@
 from gym_minigrid.minigrid import COLOR_NAMES, Ball, Box, Grid, Key, MiniGridEnv
-from gym_minigrid.register import register
 
 
 class GoToObjectEnv(MiniGridEnv):
@@ -86,16 +85,3 @@ class GoToObjectEnv(MiniGridEnv):
             done = True
 
         return obs, reward, done, info
-
-
-register(
-    id="MiniGrid-GoToObject-6x6-N2-v0",
-    entry_point="gym_minigrid.envs.gotoobject:GoToObjectEnv",
-)
-
-register(
-    id="MiniGrid-GoToObject-8x8-N2-v0",
-    entry_point="gym_minigrid.envs.gotoobject:GoToObjectEnv",
-    size=8,
-    numObjs=2,
-)

+ 0 - 44
gym_minigrid/envs/keycorridor.py

@@ -1,4 +1,3 @@
-from gym_minigrid.register import register
 from gym_minigrid.roomgrid import RoomGrid
 
 
@@ -52,46 +51,3 @@ class KeyCorridorEnv(RoomGrid):
                 done = True
 
         return obs, reward, done, info
-
-
-register(
-    id="MiniGrid-KeyCorridorS3R1-v0",
-    entry_point="gym_minigrid.envs.keycorridor:KeyCorridorEnv",
-    room_size=3,
-    num_rows=1,
-)
-
-register(
-    id="MiniGrid-KeyCorridorS3R2-v0",
-    entry_point="gym_minigrid.envs.keycorridor:KeyCorridorEnv",
-    room_size=3,
-    num_rows=2,
-)
-
-register(
-    id="MiniGrid-KeyCorridorS3R3-v0",
-    entry_point="gym_minigrid.envs.keycorridor:KeyCorridorEnv",
-    room_size=3,
-    num_rows=3,
-)
-
-register(
-    id="MiniGrid-KeyCorridorS4R3-v0",
-    entry_point="gym_minigrid.envs.keycorridor:KeyCorridorEnv",
-    room_size=4,
-    num_rows=3,
-)
-
-register(
-    id="MiniGrid-KeyCorridorS5R3-v0",
-    entry_point="gym_minigrid.envs.keycorridor:KeyCorridorEnv",
-    room_size=5,
-    num_rows=3,
-)
-
-register(
-    id="MiniGrid-KeyCorridorS6R3-v0",
-    entry_point="gym_minigrid.envs.keycorridor:KeyCorridorEnv",
-    room_size=6,
-    num_rows=3,
-)

+ 0 - 20
gym_minigrid/envs/lavagap.py

@@ -1,7 +1,6 @@
 import numpy as np
 
 from gym_minigrid.minigrid import Goal, Grid, Lava, MiniGridEnv
-from gym_minigrid.register import register
 
 
 class LavaGapEnv(MiniGridEnv):
@@ -56,22 +55,3 @@ class LavaGapEnv(MiniGridEnv):
             if self.obstacle_type == Lava
             else "find the opening and get to the green goal square"
         )
-
-
-register(
-    id="MiniGrid-LavaGapS5-v0",
-    entry_point="gym_minigrid.envs.lavagap:LavaGapEnv",
-    size=5,
-)
-
-register(
-    id="MiniGrid-LavaGapS6-v0",
-    entry_point="gym_minigrid.envs.lavagap:LavaGapEnv",
-    size=6,
-)
-
-register(
-    id="MiniGrid-LavaGapS7-v0",
-    entry_point="gym_minigrid.envs.lavagap:LavaGapEnv",
-    size=7,
-)

+ 0 - 7
gym_minigrid/envs/lockedroom.py

@@ -1,5 +1,4 @@
 from gym_minigrid.minigrid import COLOR_NAMES, Door, Goal, Grid, Key, MiniGridEnv, Wall
-from gym_minigrid.register import register
 
 
 class LockedRoom:
@@ -101,9 +100,3 @@ class LockedRoomEnv(MiniGridEnv):
     def step(self, action):
         obs, reward, done, info = MiniGridEnv.step(self, action)
         return obs, reward, done, info
-
-
-register(
-    id="MiniGrid-LockedRoom-v0",
-    entry_point="gym_minigrid.envs.lockedroom:LockedRoomEnv",
-)

+ 0 - 38
gym_minigrid/envs/memory.py

@@ -1,7 +1,6 @@
 import numpy as np
 
 from gym_minigrid.minigrid import Ball, Grid, Key, MiniGridEnv, Wall
-from gym_minigrid.register import register
 
 
 class MemoryEnv(MiniGridEnv):
@@ -96,40 +95,3 @@ class MemoryEnv(MiniGridEnv):
             done = True
 
         return obs, reward, done, info
-
-
-register(
-    id="MiniGrid-MemoryS17Random-v0",
-    entry_point="gym_minigrid.envs.memory:MemoryEnv",
-    size=17,
-    random_length=True,
-)
-
-register(
-    id="MiniGrid-MemoryS13Random-v0",
-    entry_point="gym_minigrid.envs.memory:MemoryEnv",
-    size=13,
-    random_length=True,
-)
-
-
-register(
-    id="MiniGrid-MemoryS13-v0",
-    entry_point="gym_minigrid.envs.memory:MemoryEnv",
-    size=13,
-)
-
-
-register(
-    id="MiniGrid-MemoryS11-v0",
-    entry_point="gym_minigrid.envs.memory:MemoryEnv",
-    size=11,
-)
-
-register(
-    id="MiniGrid-MemoryS9-v0", entry_point="gym_minigrid.envs.memory:MemoryEnv", size=9
-)
-
-register(
-    id="MiniGrid-MemoryS7-v0", entry_point="gym_minigrid.envs.memory:MemoryEnv", size=7
-)

+ 0 - 25
gym_minigrid/envs/multiroom.py

@@ -1,5 +1,4 @@
 from gym_minigrid.minigrid import COLOR_NAMES, Door, Goal, Grid, MiniGridEnv, Wall
-from gym_minigrid.register import register
 
 
 class MultiRoom:
@@ -198,27 +197,3 @@ class MultiRoomEnv(MiniGridEnv):
                 break
 
         return True
-
-
-register(
-    id="MiniGrid-MultiRoom-N2-S4-v0",
-    entry_point="gym_minigrid.envs.multiroom:MultiRoomEnv",
-    minNumRooms=2,
-    maxNumRooms=2,
-    maxRoomSize=4,
-)
-
-register(
-    id="MiniGrid-MultiRoom-N4-S5-v0",
-    entry_point="gym_minigrid.envs.multiroom:MultiRoomEnv",
-    minNumRooms=4,
-    maxNumRooms=4,
-    maxRoomSize=5,
-)
-
-register(
-    id="MiniGrid-MultiRoom-N6-v0",
-    entry_point="gym_minigrid.envs.multiroom:MultiRoomEnv",
-    minNumRooms=6,
-    maxNumRooms=6,
-)

+ 0 - 76
gym_minigrid/envs/obstructedmaze.py

@@ -1,5 +1,4 @@
 from gym_minigrid.minigrid import COLOR_NAMES, DIR_TO_VEC, Ball, Box, Key
-from gym_minigrid.register import register
 from gym_minigrid.roomgrid import RoomGrid
 
 
@@ -179,78 +178,3 @@ class ObstructedMaze_2Dlh(ObstructedMaze_Full):
 class ObstructedMaze_2Dlhb(ObstructedMaze_Full):
     def __init__(self, **kwargs):
         super().__init__((2, 1), True, True, 1, 4, **kwargs)
-
-
-register(
-    id="MiniGrid-ObstructedMaze-1Dl-v0",
-    entry_point="gym_minigrid.envs.obstructedmaze:ObstructedMaze_1Dlhb",
-    key_in_box=False,
-    blocked=False,
-)
-
-register(
-    id="MiniGrid-ObstructedMaze-1Dlh-v0",
-    entry_point="gym_minigrid.envs.obstructedmaze:ObstructedMaze_1Dlhb",
-    key_in_box=True,
-    blocked=False,
-)
-
-register(
-    id="MiniGrid-ObstructedMaze-1Dlhb-v0",
-    entry_point="gym_minigrid.envs.obstructedmaze:ObstructedMaze_1Dlhb",
-)
-
-register(
-    id="MiniGrid-ObstructedMaze-2Dl-v0",
-    entry_point="gym_minigrid.envs.obstructedmaze:ObstructedMaze_Full",
-    agent_room=(2, 1),
-    key_in_box=False,
-    blocked=False,
-    num_quarters=1,
-    num_rooms_visited=4,
-)
-
-register(
-    id="MiniGrid-ObstructedMaze-2Dlh-v0",
-    entry_point="gym_minigrid.envs.obstructedmaze:ObstructedMaze_Full",
-    agent_room=(2, 1),
-    key_in_box=True,
-    blocked=False,
-    num_quarters=1,
-    num_rooms_visited=4,
-)
-
-register(
-    id="MiniGrid-ObstructedMaze-2Dlhb-v0",
-    entry_point="gym_minigrid.envs.obstructedmaze:ObstructedMaze_Full",
-    agent_room=(2, 1),
-    key_in_box=True,
-    blocked=True,
-    num_quarters=1,
-    num_rooms_visited=4,
-)
-
-register(
-    id="MiniGrid-ObstructedMaze-1Q-v0",
-    entry_point="gym_minigrid.envs.obstructedmaze:ObstructedMaze_Full",
-    agent_room=(1, 1),
-    key_in_box=True,
-    blocked=True,
-    num_quarters=1,
-    num_rooms_visited=5,
-)
-
-register(
-    id="MiniGrid-ObstructedMaze-2Q-v0",
-    entry_point="gym_minigrid.envs.obstructedmaze:ObstructedMaze_Full",
-    agent_room=(2, 1),
-    key_in_box=True,
-    blocked=True,
-    num_quarters=2,
-    num_rooms_visited=11,
-)
-
-register(
-    id="MiniGrid-ObstructedMaze-Full-v0",
-    entry_point="gym_minigrid.envs.obstructedmaze:ObstructedMaze_Full",
-)

+ 0 - 7
gym_minigrid/envs/playground.py

@@ -1,5 +1,4 @@
 from gym_minigrid.minigrid import COLOR_NAMES, Ball, Box, Door, Grid, Key, MiniGridEnv
-from gym_minigrid.register import register
 
 
 class PlaygroundEnv(MiniGridEnv):
@@ -76,9 +75,3 @@ class PlaygroundEnv(MiniGridEnv):
     def step(self, action):
         obs, reward, done, info = super().step(action)
         return obs, reward, done, info
-
-
-register(
-    id="MiniGrid-Playground-v0",
-    entry_point="gym_minigrid.envs.playground:PlaygroundEnv",
-)

+ 0 - 13
gym_minigrid/envs/putnear.py

@@ -1,5 +1,4 @@
 from gym_minigrid.minigrid import COLOR_NAMES, Ball, Box, Grid, Key, MiniGridEnv
-from gym_minigrid.register import register
 
 
 class PutNearEnv(MiniGridEnv):
@@ -117,15 +116,3 @@ class PutNearEnv(MiniGridEnv):
             done = True
 
         return obs, reward, done, info
-
-
-register(
-    id="MiniGrid-PutNear-6x6-N2-v0", entry_point="gym_minigrid.envs.putnear:PutNearEnv"
-)
-
-register(
-    id="MiniGrid-PutNear-8x8-N3-v0",
-    entry_point="gym_minigrid.envs.putnear:PutNearEnv",
-    size=8,
-    numObjs=3,
-)

+ 0 - 13
gym_minigrid/envs/redbluedoors.py

@@ -1,5 +1,4 @@
 from gym_minigrid.minigrid import Door, Grid, MiniGridEnv
-from gym_minigrid.register import register
 
 
 class RedBlueDoorEnv(MiniGridEnv):
@@ -63,15 +62,3 @@ class RedBlueDoorEnv(MiniGridEnv):
                 done = True
 
         return obs, reward, done, info
-
-
-register(
-    id="MiniGrid-RedBlueDoors-6x6-v0",
-    entry_point="gym_minigrid.envs.redbluedoors:RedBlueDoorEnv",
-    size=6,
-)
-
-register(
-    id="MiniGrid-RedBlueDoors-8x8-v0",
-    entry_point="gym_minigrid.envs.redbluedoors:RedBlueDoorEnv",
-)

+ 0 - 4
gym_minigrid/envs/unlock.py

@@ -1,4 +1,3 @@
-from gym_minigrid.register import register
 from gym_minigrid.roomgrid import RoomGrid
 
 
@@ -39,6 +38,3 @@ class UnlockEnv(RoomGrid):
                 done = True
 
         return obs, reward, done, info
-
-
-register(id="MiniGrid-Unlock-v0", entry_point="gym_minigrid.envs.unlock:UnlockEnv")

+ 0 - 7
gym_minigrid/envs/unlockpickup.py

@@ -1,4 +1,3 @@
-from gym_minigrid.register import register
 from gym_minigrid.roomgrid import RoomGrid
 
 
@@ -41,9 +40,3 @@ class UnlockPickupEnv(RoomGrid):
                 done = True
 
         return obs, reward, done, info
-
-
-register(
-    id="MiniGrid-UnlockPickup-v0",
-    entry_point="gym_minigrid.envs.unlockpickup:UnlockPickupEnv",
-)

+ 1 - 0
gym_minigrid/minigrid.py

@@ -751,6 +751,7 @@ class MiniGridEnv(gym.Env):
 
         # Return first observation
         obs = self.gen_obs()
+
         return obs
 
     def hash(self, size=16):

+ 0 - 16
gym_minigrid/register.py

@@ -1,16 +0,0 @@
-from gym.envs.registration import register as gym_register
-
-env_list = []
-
-
-def register(id, entry_point, reward_threshold=0.95, **kwargs):
-    assert id.startswith("MiniGrid-")
-    assert id not in env_list
-
-    # Register the environment with OpenAI gym
-    gym_register(
-        id=id, entry_point=entry_point, reward_threshold=reward_threshold, kwargs=kwargs
-    )
-
-    # Add the environment to the set
-    env_list.append(id)

+ 3 - 0
setup.py

@@ -33,6 +33,9 @@ setup(
     description="Minimalistic gridworld reinforcement learning environments",
     extras_require=extras,
     packages=["gym_minigrid", "gym_minigrid.envs"],
+    entry_points={
+        "gym.envs": ["__root__ = gym_minigrid.__init__:register_minigrid_envs"]
+    },
     license="Apache",
     long_description=long_description,
     long_description_content_type="text/markdown",