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: Triggers logging events for observations, actions and reward.
          
docstr_tok: ["Triggers","logging","events","for","observations",",","actions","and","reward","."]
code: def step(
      self, action: ActionType
  ) -> Tuple[ObservationType, float, bool, Dict[Any, Any]]:
      """Triggers logging events for observations, actions and reward."""
  
      substep_name = self._get_substep_name()
      agent_name = self._get_agent_name()
  
      # take wrapped env step
      obs, rew, done, info = self.env.step(action)
  
      if self.action_logging:
          self._log_action(substep_name, agent_name, action)
  
      if self.observation_logging:
          self._log_observation(substep_name, agent_name, obs)
  
      if self.reward_logging:
          self.reward_events.reward_processed(
              step_key=substep_name, agent_name=agent_name, value=rew
          )
  
      # update action space
      self._action_space = self.env.action_space
  
      return obs, rew, done, info
  
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 2 for calling the MazeEnvMonitoringWrapper obj's underlying member method code with example usage: obj.step(action) and returns: obs,  rew,  done,  info