mirror of
https://github.com/saymrwulf/stable-baselines3.git
synced 2026-05-22 22:10:16 +00:00
* Fix failing set_env test * Fix test failiing due to deprectation of env.seed * Adjust mean reward threshold in failing test * Fix her test failing due to rng * Change seed and revert reward threshold to 90 * Pin gym version * Make VecEnv compatible with gym seeding change * Revert change to VecEnv reset signature * Change subprocenv seed cmd to call reset instead * Fix type check * Add backward compat * Add `compat_gym_seed` helper * Add goal env checks in env_checker * Add docs on HER requirements for envs * Capture user warning in test with inverted box space * Update ale-py version * Fix randint * Allow noop_max to be zero * Update changelog * Update docker image * Update doc conda env and dockerfile * Custom envs should not have any warnings * Fix test for numpy >= 1.21 * Add check for vectorized compute reward * Bump to gym 0.24 * Fix gym default step docstring * Test downgrading gym * Revert "Test downgrading gym" This reverts commit 0072b77156c006ada8a1d6e26ce347ed85a83eeb. * Fix protobuf error * Fix in dependencies * Fix protobuf dep * Use newest version of cartpole * Update gym * Fix warning * Loosen required scipy version * Scipy no longer needed * Try gym 0.25 * Silence warnings from gym * Filter warnings during tests * Update doc * Update requirements * Add gym 26 compat in vec env * Fixes in envs and tests for gym 0.26+ * Enforce gym 0.26 api * format * Fix formatting * Fix dependencies * Fix syntax * Cleanup doc and warnings * Faster tests * Higher budget for HER perf test (revert prev change) * Fixes and update doc * Fix doc build * Fix breaking change * Fixes for rendering * Rename variables in monitor * update render method for gym 0.26 API backwards compatible (mode argument is allowed) while using the gym 0.26 API (render mode is determined at environment creation) * update tests and docs to new gym render API * undo removal of render modes metatadata check * set rgb_array as default render mode for gym.make * undo changes & raise warning if not 'rgb_array' * Fix type check * Remove recursion and fix type checking * Remove hacks for protobuf and gym 0.24 * Fix type annotations * reuse existing render_mode attribute * return tiled images for 'human' render mode * Allow to use opencv for human render, fix typos * Add warning when using non-zero start with Discrete (fixes #1197) * Fix type checking * Bug fixes and handle more cases * Throw proper warnings * Update test * Fix new metadata name * Ignore numpy warnings * Fixes in vec recorder * Global ignore * Filter local warning too * Monkey patch not needed for gym 26 * Add doc of VecEnv vs Gym API * Add render test * Fix return type * Update VecEnv vs Gym API doc * Fix for custom render mode * Fix return type * Fix type checking * check test env test_buffer * skip render check * check env test_dict_env * test_env test_gae * check envs in remaining tests * Update tests * Add warning for Discrete action space with non-zero (#1295) * Fix atari annotation * ignore get_action_meanings [attr-defined] * Fix mypy issues * Add patch for gym/gymnasium transition * Switch to gymnasium * Rely on signature instead of version * More patches * Type ignore because of https://github.com/Farama-Foundation/Gymnasium/pull/39 * Fix doc build * Fix pytype errors * Fix atari requirement * Update env checker due to change in dtype for Discrete * Fix type hint * Convert spaces for saved models * Ignore pytype * Remove gitlab CI * Disable pytype for convert space * Fix undefined info * Fix undefined info * Upgrade shimmy * Fix wrappers type annotation (need PR from Gymnasium) * Fix gymnasium dependency * Fix dependency declaration * Cap pygame version for python 3.7 * Point to master branch (v0.28.0) * Fix: use main not master branch * Rename done to terminated * Fix pygame dependency for python 3.7 * Rename gym to gymnasium * Update Gymnasium * Fix test * Fix tests * Forks don't have access to private variables * Fix linter warnings * Update read the doc env * Fix env checker for GoalEnv * Fix import * Update env checker (more info) and fix dtype * Use micromamab for Docker * Update dependencies * Clarify VecEnv doc * Fix Gymnasium version * Copy file only after mamba install * [ci skip] Update docker doc * Polish code * Reformat * Remove deprecated features * Ignore warning * Update doc * Update examples and changelog * Fix type annotation bundle (SAC, TD3, A2C, PPO, base class) (#1436) * Fix SAC type hints, improve DQN ones * Fix A2C and TD3 type hints * Fix PPO type hints * Fix on-policy type hints * Fix base class type annotation, do not use defaults * Update version * Disable mypy for python 3.7 * Rename Gym26StepReturn * Update continuous critic type annotation * Fix pytype complain --------- Co-authored-by: Carlos Luis <carlos.luisgonc@gmail.com> Co-authored-by: Quentin Gallouédec <45557362+qgallouedec@users.noreply.github.com> Co-authored-by: Thomas Lips <37955681+tlpss@users.noreply.github.com> Co-authored-by: tlips <thomas.lips@ugent.be> Co-authored-by: tlpss <thomas17.lips@gmail.com> Co-authored-by: Quentin GALLOUÉDEC <gallouedec.quentin@gmail.com>
100 lines
3.4 KiB
Python
100 lines
3.4 KiB
Python
import warnings
|
|
from inspect import signature
|
|
from typing import Union
|
|
|
|
import gymnasium
|
|
|
|
try:
|
|
import gym # pytype: disable=import-error
|
|
|
|
gym_installed = True
|
|
except ImportError:
|
|
gym_installed = False
|
|
|
|
|
|
def _patch_env(env: Union["gym.Env", gymnasium.Env]) -> gymnasium.Env: # pragma: no cover
|
|
"""
|
|
Adapted from https://github.com/thu-ml/tianshou.
|
|
|
|
Takes an environment and patches it to return Gymnasium env.
|
|
This function takes the environment object and returns a patched
|
|
env, using shimmy wrapper to convert it to Gymnasium,
|
|
if necessary.
|
|
|
|
:param env: A gym/gymnasium env
|
|
:return: Patched env (gymnasium env)
|
|
"""
|
|
|
|
# Gymnasium env, no patching to be done
|
|
if isinstance(env, gymnasium.Env):
|
|
return env
|
|
|
|
if not gym_installed or not isinstance(env, gym.Env):
|
|
raise ValueError(
|
|
f"The environment is of type {type(env)}, not a Gymnasium "
|
|
f"environment. In this case, we expect OpenAI Gym to be "
|
|
f"installed and the environment to be an OpenAI Gym environment."
|
|
)
|
|
|
|
try:
|
|
import shimmy # pytype: disable=import-error
|
|
except ImportError as e:
|
|
raise ImportError(
|
|
"Missing shimmy installation. You an OpenAI Gym environment. "
|
|
"Stable-Baselines3 (SB3) has transitioned to using Gymnasium internally. "
|
|
"In order to use OpenAI Gym environments with SB3, you need to "
|
|
"install shimmy (`pip install 'shimmy>=0.2.1'`)."
|
|
) from e
|
|
|
|
warnings.warn(
|
|
"You provided an OpenAI Gym environment. "
|
|
"We strongly recommend transitioning to Gymnasium environments. "
|
|
"Stable-Baselines3 is automatically wrapping your environments in a compatibility "
|
|
"layer, which could potentially cause issues."
|
|
)
|
|
|
|
if "seed" in signature(env.unwrapped.reset).parameters:
|
|
# Gym 0.26+ env
|
|
return shimmy.GymV26CompatibilityV0(env=env)
|
|
# Gym 0.21 env
|
|
return shimmy.GymV21CompatibilityV0(env=env)
|
|
|
|
|
|
def _convert_space(space: Union["gym.Space", gymnasium.Space]) -> gymnasium.Space: # pragma: no cover
|
|
"""
|
|
Takes a space and patches it to return Gymnasium Space.
|
|
This function takes the space object and returns a patched
|
|
space, using shimmy wrapper to convert it to Gymnasium,
|
|
if necessary.
|
|
|
|
:param env: A gym/gymnasium Space
|
|
:return: Patched space (gymnasium Space)
|
|
"""
|
|
|
|
# Gymnasium space, no convertion to be done
|
|
if isinstance(space, gymnasium.Space):
|
|
return space
|
|
|
|
if not gym_installed or not isinstance(space, gym.Space):
|
|
raise ValueError(
|
|
f"The space is of type {type(space)}, not a Gymnasium "
|
|
f"space. In this case, we expect OpenAI Gym to be "
|
|
f"installed and the space to be an OpenAI Gym space."
|
|
)
|
|
|
|
try:
|
|
import shimmy # pytype: disable=import-error
|
|
except ImportError as e:
|
|
raise ImportError(
|
|
"Missing shimmy installation. You provided an OpenAI Gym space. "
|
|
"Stable-Baselines3 (SB3) has transitioned to using Gymnasium internally. "
|
|
"In order to use OpenAI Gym space with SB3, you need to "
|
|
"install shimmy (`pip install 'shimmy>=0.2.1'`)."
|
|
) from e
|
|
|
|
warnings.warn(
|
|
"You loaded a model that was trained using OpenAI Gym. "
|
|
"We strongly recommend transitioning to Gymnasium by saving that model again."
|
|
)
|
|
|
|
return shimmy.openai_gym_compatibility._convert_space(space)
|