code: def test_subproc_distributed_rollouts_with_policy_wrapper():
      policy, env, trainer = train_setup(
          n_epochs=2, policy_wrapper={"_target_": DummyPolicyWrapper}
      )
  
      rollouts = ESSubprocDistributedRollouts(
          env_factory=lambda: GymMazeEnv(env="CartPole-v0"),
          n_training_workers=2,
          n_eval_workers=1,
          shared_noise=trainer.shared_noise,
          env_seeds=[1337] * 3,
          agent_seed=1337,
      )
  
      trainer.train(rollouts, model_selection=None)
  
imports: from typing import Tuple, Optional, Sequence, Dict, List
  import torch
  import torch.nn
  from maze.core.agent.policy import Policy
  from maze.core.agent.torch_model import TorchModel
  from maze.core.agent.torch_policy import TorchPolicy
  from maze.core.annotations import override
  from maze.core.env.action_conversion import ActionType
  from maze.core.env.base_env import BaseEnv
  from maze.core.env.maze_env import MazeEnv
  from maze.core.env.maze_state import MazeStateType
  from maze.core.env.observation_conversion import ObservationType
  from maze.core.env.structured_env import StructuredEnv, ActorID
  from maze.core.wrappers.maze_gym_env_wrapper import GymMazeEnv
  from maze.distributions.distribution_mapper import DistributionMapper
  from maze.perception.models.built_in.flatten_concat import FlattenConcatPolicyNet
  from maze.train.trainers.es.distributed.es_dummy_distributed_rollouts import ESDummyDistributedRollouts
  from maze.train.trainers.es.distributed.es_subproc_distributed_rollouts import ESSubprocDistributedRollouts
  from maze.train.trainers.es.es_algorithm_config import ESAlgorithmConfig
  from maze.train.trainers.es.es_shared_noise_table import SharedNoiseTable
  from maze.train.trainers.es.es_trainer import ESTrainer
  from maze.train.trainers.es.optimizers.adam import Adam
label_desc: Use image node_id 5 for calling a global function with example usage: test_subproc_distributed_rollouts_with_policy_wrapper() without return types