code: def test_rollouts_from_python():
      env, agent = GymMazeEnv("CartPole-v0"), DummyCartPolePolicy()
  
      sequential = SequentialRolloutRunner(
          n_episodes=2,
          max_episode_steps=2,
          deterministic=False,
          record_trajectory=False,
          record_event_logs=False,
          render=False,
      )
      sequential.maze_seeding = MazeSeeding(
          env_seed=1234,
          agent_seed=4321,
          cudnn_determinism_flag=False,
          explicit_env_seeds=None,
          explicit_agent_seeds=None,
          shuffle_seeds=False,
      )
      sequential.run_with(env=env, wrappers={}, agent=agent)
  
      parallel = ParallelRolloutRunner(
          n_episodes=2,
          max_episode_steps=2,
          deterministic=False,
          record_trajectory=False,
          record_event_logs=False,
          n_processes=2,
      )
      parallel.maze_seeding = MazeSeeding(
          env_seed=1234,
          agent_seed=4321,
          cudnn_determinism_flag=False,
          explicit_env_seeds=None,
          explicit_agent_seeds=None,
          shuffle_seeds=False,
      )
      # Test with a wrapper config as well
      parallel.run_with(
          env=env,
          wrappers={
              MazeEnvMonitoringWrapper: {
                  "observation_logging": True,
                  "action_logging": False,
                  "reward_logging": False,
              }
          },
          agent=agent,
      )
  
file_path: maze/maze/test/core/rollout/test_rollout.py
imports: from typing import Dict
  import pytest
  from maze.core.agent.dummy_cartpole_policy import DummyCartPolePolicy
  from maze.core.agent.heuristic_lunar_lander_policy import HeuristicLunarLanderPolicy
  from maze.core.agent.replay_recorded_actions_policy import ReplayRecordedActionsPolicy
  from maze.core.rollout.action_record_rollout_runner import ActionRecordRolloutRunner
  from maze.core.rollout.parallel_rollout_runner import ParallelRolloutRunner
  from maze.core.rollout.sequential_rollout_runner import SequentialRolloutRunner
  from maze.core.utils.seeding import MazeSeeding
  from maze.core.wrappers.action_recording_wrapper import ActionRecordingWrapper
  from maze.core.wrappers.maze_gym_env_wrapper import GymMazeEnv
  from maze.core.wrappers.monitoring_wrapper import MazeEnvMonitoringWrapper
  from maze.test.shared_test_utils.run_maze_utils import run_maze_job
label_desc: Use image node_id 2 for calling a global function with example usage: test_rollouts_from_python() without return types