mirror of
https://github.com/Farama-Foundation/Gymnasium.git
synced 2025-08-01 06:07:08 +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(
|
||||
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(
|
||||
"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
|
||||
|
@@ -4,7 +4,7 @@ import re
|
||||
import pytest
|
||||
|
||||
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.cartpole import CartPoleVectorEnv
|
||||
from gymnasium.vector import AsyncVectorEnv, SyncVectorEnv
|
||||
@@ -232,3 +232,39 @@ def test_async_with_dynamically_registered_env(ctx):
|
||||
)
|
||||
|
||||
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