mirror of
https://github.com/Farama-Foundation/Gymnasium.git
synced 2025-08-02 06:16:32 +00:00
* Added pydocstyle to pre-commit * Added docstrings for tests and updated the tests for autoreset * Add pydocstyle exclude folder to allow slowly adding new docstrings * Add docstrings for setup.py and gym/__init__.py, core.py, error.py and logger.py * Check that all unwrapped environment are of a particular wrapper type * Reverted back to import gym.spaces.Space to gym.spaces * Fixed the __init__.py docstring * Fixed autoreset autoreset test * Updated gym __init__.py top docstring * Fix examples in docstrings * Add docstrings and type hints where known to all functions and classes in gym/utils and gym/vector * Remove unnecessary import * Removed "unused error" and make APIerror deprecated at gym 1.0 * Add pydocstyle description to CONTRIBUTING.md * Added docstrings section to CONTRIBUTING.md * Added :meth: and :attr: keywords to docstrings * Added :meth: and :attr: keywords to docstrings * Imported annotations from __future__ to fix python 3.7 * Add __future__ import annotations for python 3.7 * isort * Remove utils and vectors for this PR and spaces for previous PR * Update gym/envs/classic_control/acrobot.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/envs/classic_control/acrobot.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/envs/classic_control/acrobot.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/spaces/dict.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/utils/env_checker.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/utils/env_checker.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/utils/env_checker.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/utils/env_checker.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/utils/env_checker.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/utils/ezpickle.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/utils/ezpickle.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/utils/play.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Pre-commit * Updated docstrings with :meth: * Updated docstrings with :meth: * Update gym/utils/play.py * Update gym/utils/play.py * Update gym/utils/play.py * Apply suggestions from code review Co-authored-by: Markus Krimmel <montcyril@gmail.com> * pre-commit * Update gym/utils/play.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Updated fps and zoom parameter docstring * Update play docstring * Apply suggestions from code review Added suggested corrections from @markus28 Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Pre-commit magic * Update the `gym.make` docstring with a warning for `env_checker` * Updated and fixed vector docstrings * Update test names for reflect the project filename style Co-authored-by: Markus Krimmel <montcyril@gmail.com>
60 lines
2.1 KiB
Python
60 lines
2.1 KiB
Python
"""Module for vector environments."""
|
|
from __future__ import annotations
|
|
|
|
from typing import Iterable, Optional, Union
|
|
|
|
from gym.vector.async_vector_env import AsyncVectorEnv
|
|
from gym.vector.sync_vector_env import SyncVectorEnv
|
|
from gym.vector.vector_env import VectorEnv, VectorEnvWrapper
|
|
|
|
__all__ = ["AsyncVectorEnv", "SyncVectorEnv", "VectorEnv", "VectorEnvWrapper", "make"]
|
|
|
|
|
|
def make(
|
|
id: str,
|
|
num_envs: int = 1,
|
|
asynchronous: bool = True,
|
|
wrappers: Optional[Union[callable, list[callable]]] = None,
|
|
**kwargs,
|
|
) -> VectorEnv:
|
|
"""Create a vectorized environment from multiple copies of an environment, from its id.
|
|
|
|
Example::
|
|
|
|
>>> import gym
|
|
>>> env = gym.vector.make('CartPole-v1', num_envs=3)
|
|
>>> env.reset()
|
|
array([[-0.04456399, 0.04653909, 0.01326909, -0.02099827],
|
|
[ 0.03073904, 0.00145001, -0.03088818, -0.03131252],
|
|
[ 0.03468829, 0.01500225, 0.01230312, 0.01825218]],
|
|
dtype=float32)
|
|
|
|
Args:
|
|
id: The environment ID. This must be a valid ID from the registry.
|
|
num_envs: Number of copies of the environment.
|
|
asynchronous: If `True`, wraps the environments in an :class:`AsyncVectorEnv` (which uses `multiprocessing`_ to run the environments in parallel). If ``False``, wraps the environments in a :class:`SyncVectorEnv`.
|
|
wrappers: If not ``None``, then apply the wrappers to each internal environment during creation.
|
|
**kwargs: Keywords arguments applied during gym.make
|
|
|
|
Returns:
|
|
The vectorized environment.
|
|
"""
|
|
from gym.envs import make as make_
|
|
|
|
def _make_env():
|
|
env = make_(id, **kwargs)
|
|
if wrappers is not None:
|
|
if callable(wrappers):
|
|
env = wrappers(env)
|
|
elif isinstance(wrappers, Iterable) and all(
|
|
[callable(w) for w in wrappers]
|
|
):
|
|
for wrapper in wrappers:
|
|
env = wrapper(env)
|
|
else:
|
|
raise NotImplementedError
|
|
return env
|
|
|
|
env_fns = [_make_env for _ in range(num_envs)]
|
|
return AsyncVectorEnv(env_fns) if asynchronous else SyncVectorEnv(env_fns)
|