class_docstr: A MazeEnv monitoring wrapper logging events for observations, actions and rewards.
  
  :param env: The environment to wrap.
  :param observation_logging: If True observation events are logged.
  :param action_logging: If True action events are logged.
  :param reward_logging: If True additional reward events are logged.
class_docstr_tok: ["A","MazeEnv","monitoring","wrapper","logging","events","for","observations",",","actions","and","rewards",".",":","param","env",":","The","environment","to","wrap",".",":","param","observation_logging",":","If","True","observation","events","are","logged",".",":","param","action_logging",":","If","True","action","events","are","logged",".",":","param","reward_logging",":","If","True","additional","reward","events","are","logged","."]
docstr: Avoid calling this constructor directly, use :method:`wrap` instead.
docstr_tok: ["Avoid","calling","this","constructor","directly",",","use",":","method",":","`","wrap","`","instead","."]
code: def __init__(
      self,
      env: MazeEnv,
      observation_logging: bool,
      action_logging: bool,
      reward_logging: bool,
  ):
      """Avoid calling this constructor directly, use :method:`wrap` instead."""
      super().__init__(env)
  
      self.observation_logging = observation_logging
      self.action_logging = action_logging
      self.reward_logging = reward_logging
  
      # create event topics
      if self.observation_logging:
          self.observation_events = (
              self.core_env.context.event_service.create_event_topic(
                  ObservationEvents
              )
          )
      if self.action_logging:
          self.action_events = (
              self.core_env.context.event_service.create_event_topic(
                  ActionEvents
              )
          )
      if self.reward_logging:
          self.reward_events = (
              self.core_env.context.event_service.create_event_topic(
                  RewardEvents
              )
          )
  
      # maintain for multi-step environments
      self._action_space: Optional[spaces.Dict] = None
  
imports: import warnings
  from typing import TypeVar, Union, Any, Tuple, Dict, Optional
  import numpy
  from gym import spaces
  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_action import MazeActionType
  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.simulated_env_mixin import SimulatedEnvMixin
  from maze.core.env.structured_env import StructuredEnv
  from maze.core.log_events.monitoring_events import ActionEvents, RewardEvents, ObservationEvents
  from maze.core.wrappers.wrapper import Wrapper
label_desc: Use image node_id 1 to create a new MazeEnvMonitoringWrapper object from inherited base classes: Wrapper with example: obj = MazeEnvMonitoringWrapper(env, observation_logging, action_logging, reward_logging)