1- from __future__ import annotations
2-
31import contextlib
42import copy
53import difflib
108import warnings
119from dataclasses import dataclass , field
1210from typing import (
13- Any ,
1411 Callable ,
12+ Dict ,
1513 Iterable ,
14+ List ,
1615 Optional ,
1716 Sequence ,
1817 SupportsFloat ,
18+ Tuple ,
1919 Union ,
2020 overload ,
2121)
3434if sys .version_info >= (3 , 8 ):
3535 from typing import Literal
3636else :
37-
38- class Literal (str ):
39- def __class_getitem__ (cls , item ):
40- return Any
41-
37+ from typing_extensions import Literal
4238
4339from gym import Env , error , logger
4440
45- ENV_ID_RE : re . Pattern = re .compile (
41+ ENV_ID_RE = re .compile (
4642 r"^(?:(?P<namespace>[\w:-]+)\/)?(?:(?P<name>[\w:.-]+?))(?:-v(?P<version>\d+))?$"
4743)
4844
@@ -54,7 +50,7 @@ def load(name: str) -> type:
5450 return fn
5551
5652
57- def parse_env_id (id : str ) -> tuple [Optional [str ], str , Optional [int ]]:
53+ def parse_env_id (id : str ) -> Tuple [Optional [str ], str , Optional [int ]]:
5854 """Parse environment ID string format.
5955
6056 This format is true today, but it's *not* an official spec.
@@ -241,7 +237,7 @@ def _check_version_exists(ns: Optional[str], name: str, version: Optional[int]):
241237
242238
243239def find_highest_version (ns : Optional [str ], name : str ) -> Optional [int ]:
244- version : list [int ] = [
240+ version : List [int ] = [
245241 spec_ .version
246242 for spec_ in registry .values ()
247243 if spec_ .namespace == ns and spec_ .name == name and spec_ .version is not None
@@ -302,39 +298,39 @@ def load_env_plugins(entry_point: str = "gym.envs") -> None:
302298
303299
304300@overload
305- def make (id : Literal ["CartPole-v1" ], ** kwargs ) -> Env [np .ndarray , np .ndarray | int ]: ...
301+ def make (id : Literal ["CartPole-v0" , "CartPole- v1" ], ** kwargs ) -> Env [np .ndarray , Union [ np .ndarray , int ] ]: ...
306302@overload
307- def make (id : Literal ["MountainCar-v0" ], ** kwargs ) -> Env [np .ndarray , np .ndarray | int ]: ...
303+ def make (id : Literal ["MountainCar-v0" ], ** kwargs ) -> Env [np .ndarray , Union [ np .ndarray , int ] ]: ...
308304@overload
309- def make (id : Literal ["MountainCarContinuous-v0" ], ** kwargs ) -> Env [np .ndarray , np .ndarray | Sequence [SupportsFloat ]]: ...
305+ def make (id : Literal ["MountainCarContinuous-v0" ], ** kwargs ) -> Env [np .ndarray , Union [ np .ndarray , Sequence [SupportsFloat ] ]]: ...
310306@overload
311- def make (id : Literal ["Pendulum-v1" ], ** kwargs ) -> Env [np .ndarray , np .ndarray | Sequence [SupportsFloat ]]: ...
307+ def make (id : Literal ["Pendulum-v1" ], ** kwargs ) -> Env [np .ndarray , Union [ np .ndarray , Sequence [SupportsFloat ] ]]: ...
312308@overload
313- def make (id : Literal ["Acrobot-v1" ], ** kwargs ) -> Env [np .ndarray , np .ndarray | int ]: ...
309+ def make (id : Literal ["Acrobot-v1" ], ** kwargs ) -> Env [np .ndarray , Union [ np .ndarray , int ] ]: ...
314310
315311# Box2d
316312# ----------------------------------------
317313
318314
319315@overload
320- def make (id : Literal ["LunarLander-v2" , "LunarLanderContinuous-v2" ], ** kwargs ) -> Env [np .ndarray , np .ndarray | int ]: ...
316+ def make (id : Literal ["LunarLander-v2" , "LunarLanderContinuous-v2" ], ** kwargs ) -> Env [np .ndarray , Union [ np .ndarray , int ] ]: ...
321317@overload
322- def make (id : Literal ["BipedalWalker-v3" , "BipedalWalkerHardcore-v3" ], ** kwargs ) -> Env [np .ndarray , np .ndarray | Sequence [SupportsFloat ]]: ...
318+ def make (id : Literal ["BipedalWalker-v3" , "BipedalWalkerHardcore-v3" ], ** kwargs ) -> Env [np .ndarray , Union [ np .ndarray , Sequence [SupportsFloat ] ]]: ...
323319@overload
324- def make (id : Literal ["CarRacing-v1" , "CarRacingDomainRandomize-v1" ], ** kwargs ) -> Env [np .ndarray , np .ndarray | Sequence [SupportsFloat ]]: ...
320+ def make (id : Literal ["CarRacing-v1" , "CarRacingDomainRandomize-v1" ], ** kwargs ) -> Env [np .ndarray , Union [ np .ndarray , Sequence [SupportsFloat ] ]]: ...
325321
326322# Toy Text
327323# ----------------------------------------
328324
329325
330326@overload
331- def make (id : Literal ["Blackjack-v1" ], ** kwargs ) -> Env [np .ndarray , np .ndarray | int ]: ...
327+ def make (id : Literal ["Blackjack-v1" ], ** kwargs ) -> Env [np .ndarray , Union [ np .ndarray , int ] ]: ...
332328@overload
333- def make (id : Literal ["FrozenLake-v1" , "FrozenLake8x8-v1" ], ** kwargs ) -> Env [np .ndarray , np .ndarray | int ]: ...
329+ def make (id : Literal ["FrozenLake-v1" , "FrozenLake8x8-v1" ], ** kwargs ) -> Env [np .ndarray , Union [ np .ndarray , int ] ]: ...
334330@overload
335- def make (id : Literal ["CliffWalking-v0" ], ** kwargs ) -> Env [np .ndarray , np .ndarray | int ]: ...
331+ def make (id : Literal ["CliffWalking-v0" ], ** kwargs ) -> Env [np .ndarray , Union [ np .ndarray , int ] ]: ...
336332@overload
337- def make (id : Literal ["Taxi-v3" ], ** kwargs ) -> Env [np .ndarray , np .ndarray | int ]: ...
333+ def make (id : Literal ["Taxi-v3" ], ** kwargs ) -> Env [np .ndarray , Union [ np .ndarray , int ] ]: ...
338334
339335# Mujoco
340336# ----------------------------------------
@@ -415,7 +411,7 @@ def env_specs(self):
415411
416412
417413# Global registry of environments. Meant to be accessed through `register` and `make`
418- registry : dict [str , EnvSpec ] = EnvRegistry ()
414+ registry : Dict [str , EnvSpec ] = EnvRegistry ()
419415current_namespace : Optional [str ] = None
420416
421417
@@ -522,7 +518,7 @@ def register(id: str, **kwargs):
522518
523519
524520def make (
525- id : str | EnvSpec ,
521+ id : Union [ str , EnvSpec ] ,
526522 max_episode_steps : Optional [int ] = None ,
527523 autoreset : bool = False ,
528524 disable_env_checker : bool = False ,
0 commit comments