code: def test_propagates_exceptions_to_main_thread():
      class FailingPolicy(DummyGreedyPolicy):
          """Mock policy, throws an error every time."""
  
          def compute_action(
              self,
              observation: ObservationType,
              maze_state: Optional[MazeStateType] = None,
              env: Optional[BaseEnv] = None,
              actor_id: ActorID = None,
              deterministic: bool = False,
          ) -> ActionType:
              """Throw an error."""
              raise RuntimeError("Test error.")
  
          def compute_top_action_candidates(
              self,
              observation: ObservationType,
              num_candidates: Optional[int],
              maze_state: Optional[MazeStateType],
              env: Optional[BaseEnv],
              actor_id: ActorID = None,
          ) -> Tuple[Sequence[ActionType], Sequence[float]]:
              """Not used"""
  
      agent_deployment = AgentDeployment(
          policy=FailingPolicy(), env=build_dummy_maze_env()
      )
  
      test_core_env = build_dummy_maze_env().core_env
      s = (
          test_core_env.reset()
      )  # Just get a valid state, the content is not really important
      with pytest.raises(RuntimeError) as e_info:
          agent_deployment.act(s, 0, False, {})
  
imports: from typing import Tuple, Sequence, Optional
  import gym
  import numpy
  import pytest
  from maze.core.agent.random_policy import RandomPolicy
  from maze.core.agent_deployment.agent_deployment import AgentDeployment
  from maze.core.env.action_conversion import ActionType
  from maze.core.env.base_env import BaseEnv
  from maze.core.env.base_env_events import BaseEnvEvents
  from maze.core.env.maze_state import MazeStateType
  from maze.core.env.observation_conversion import ObservationType
  from maze.core.env.structured_env import ActorID
  from maze.core.log_events.episode_event_log import EpisodeEventLog
  from maze.core.log_events.log_events_writer import LogEventsWriter
  from maze.core.log_events.log_events_writer_registry import LogEventsWriterRegistry
  from maze.core.log_events.monitoring_events import RewardEvents
  from maze.core.log_stats.log_stats import LogStatsWriter, LogStats, LogStatsLevel
  from maze.core.log_stats.log_stats import register_log_stats_writer
  from maze.core.trajectory_recording.records.trajectory_record import StateTrajectoryRecord
  from maze.core.trajectory_recording.writers.trajectory_writer import TrajectoryWriter
  from maze.core.trajectory_recording.writers.trajectory_writer_registry import TrajectoryWriterRegistry
  from maze.core.utils.config_utils import EnvFactory, read_hydra_config
  from maze.core.wrappers.log_stats_wrapper import LogStatsWrapper
  from maze.core.wrappers.maze_gym_env_wrapper import GymMazeEnv
  from maze.core.wrappers.trajectory_recording_wrapper import TrajectoryRecordingWrapper
  from maze.test.shared_test_utils.dummy_wrappers.step_skip_in_step_wrapper import StepSkipInStepWrapper
  from maze.test.shared_test_utils.dummy_env.agents.dummy_policy import DummyGreedyPolicy
  from maze.test.shared_test_utils.helper_functions import build_dummy_maze_env, build_dummy_structured_env
label_desc: Use image node_id 7 for calling a global function with example usage: test_propagates_exceptions_to_main_thread() without return types