mirror of
https://github.com/Farama-Foundation/Gymnasium.git
synced 2025-08-17 20:39:12 +00:00
Error make_vec
for vector entry point with non-empty additional wrappers (#983)
This commit is contained in:
@@ -934,9 +934,13 @@ def make_vec(
|
|||||||
raise error.Error(
|
raise error.Error(
|
||||||
f"Custom vector environment can be passed arguments only through kwargs and `vector_kwargs` is not empty ({vector_kwargs})"
|
f"Custom vector environment can be passed arguments only through kwargs and `vector_kwargs` is not empty ({vector_kwargs})"
|
||||||
)
|
)
|
||||||
if len(wrappers) > 0:
|
elif len(wrappers) > 0:
|
||||||
raise error.Error(
|
raise error.Error(
|
||||||
"Cannot use `vector_entry_point` vectorization mode with the wrappers argument."
|
f"Cannot use `vector_entry_point` vectorization mode with the wrappers argument ({wrappers})."
|
||||||
|
)
|
||||||
|
elif len(env_spec.additional_wrappers) > 0:
|
||||||
|
raise error.Error(
|
||||||
|
f"Cannot use `vector_entry_point` vectorization mode with the additional_wrappers parameter in spec being not empty ({env_spec.additional_wrappers})."
|
||||||
)
|
)
|
||||||
|
|
||||||
entry_point = env_spec.vector_entry_point
|
entry_point = env_spec.vector_entry_point
|
||||||
|
@@ -4,7 +4,7 @@ import re
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
import gymnasium as gym
|
import gymnasium as gym
|
||||||
from gymnasium import VectorizeMode
|
from gymnasium import VectorizeMode, error, wrappers
|
||||||
from gymnasium.envs.classic_control import CartPoleEnv
|
from gymnasium.envs.classic_control import CartPoleEnv
|
||||||
from gymnasium.envs.classic_control.cartpole import CartPoleVectorEnv
|
from gymnasium.envs.classic_control.cartpole import CartPoleVectorEnv
|
||||||
from gymnasium.vector import AsyncVectorEnv, SyncVectorEnv
|
from gymnasium.vector import AsyncVectorEnv, SyncVectorEnv
|
||||||
@@ -232,3 +232,39 @@ def test_async_with_dynamically_registered_env(ctx):
|
|||||||
)
|
)
|
||||||
|
|
||||||
del gym.registry["TestEnv-v0"]
|
del gym.registry["TestEnv-v0"]
|
||||||
|
|
||||||
|
|
||||||
|
def test_make_vec_with_spec_additional_wrappers():
|
||||||
|
gym.register(
|
||||||
|
"TestEnv-v0",
|
||||||
|
entry_point=CartPoleEnv,
|
||||||
|
additional_wrappers=(
|
||||||
|
wrappers.ClipReward.wrapper_spec(min_reward=-0.5, max_reward=0.5),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
env = gym.make("TestEnv-v0")
|
||||||
|
assert isinstance(env, wrappers.ClipReward)
|
||||||
|
env.close()
|
||||||
|
|
||||||
|
envs = gym.make_vec("TestEnv-v0")
|
||||||
|
assert isinstance(envs.envs[0], wrappers.ClipReward)
|
||||||
|
envs.close()
|
||||||
|
|
||||||
|
gym.register(
|
||||||
|
"TestEnv-v1",
|
||||||
|
vector_entry_point=CartPoleVectorEnv,
|
||||||
|
additional_wrappers=(
|
||||||
|
wrappers.ClipReward.wrapper_spec(min_reward=-0.5, max_reward=0.5),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
with pytest.raises(
|
||||||
|
error.Error,
|
||||||
|
match=re.escape(
|
||||||
|
"Cannot use `vector_entry_point` vectorization mode with the additional_wrappers parameter in spec being not empty"
|
||||||
|
),
|
||||||
|
):
|
||||||
|
gym.make_vec("TestEnv-v1")
|
||||||
|
|
||||||
|
del gym.registry["TestEnv-v0"]
|
||||||
|
del gym.registry["TestEnv-v1"]
|
||||||
|
Reference in New Issue
Block a user