code: def test_custom_space_sync_vector_env():
      env_fns = [make_custom_space_env(i) for i in range(4)]
  
      env = SyncVectorEnv(env_fns)
      reset_observations, infos = env.reset()
  
      assert isinstance(env.single_action_space, CustomSpace)
      assert isinstance(env.action_space, Tuple)
  
      actions = ("action-2", "action-3", "action-5", "action-7")
      step_observations, rewards, terminateds, truncateds, _ = env.step(
          actions
      )
  
      env.close()
  
      assert isinstance(env.single_observation_space, CustomSpace)
      assert isinstance(env.observation_space, Tuple)
  
      assert isinstance(reset_observations, tuple)
      assert reset_observations == ("reset", "reset", "reset", "reset")
  
      assert isinstance(step_observations, tuple)
      assert step_observations == (
          "step(action-2)",
          "step(action-3)",
          "step(action-5)",
          "step(action-7)",
      )
  
file_path: gym/tests/vector/test_sync_vector_env.py
imports: import numpy
  import pytest
  from gym.envs.registration import EnvSpec
  from gym.spaces import Box, Discrete, MultiDiscrete, Tuple
  from gym.vector.sync_vector_env import SyncVectorEnv
  from tests.envs.utils import all_testing_env_specs
  from tests.vector.utils import CustomSpace, assert_rng_equal, make_custom_space_env, make_env
label_desc: Use image node_id 7 for calling a global function with example usage: test_custom_space_sync_vector_env() without return types