class_docstr: A Wrapper with typing support modifying the environments observation.
class_docstr_tok: ["A","Wrapper","with","typing","support","modifying","the","environments","observation","."]
docstr: Convert the observations, keep actions the same.
code: def get_observation_and_action_dicts(
      self,
      maze_state: Optional[MazeStateType],
      maze_action: Optional[MazeActionType],
      first_step_in_episode: bool,
  ) -> Tuple[
      Optional[Dict[Union[int, str], Any]],
      Optional[Dict[Union[int, str], Any]],
  ]:
      """Convert the observations, keep actions the same."""
      obs_dict, act_dict = self.env.get_observation_and_action_dicts(
          maze_state, maze_action, first_step_in_episode
      )
      if obs_dict is not None:
          obs_dict = {
              policy_id: self.observation(obs)
              for policy_id, obs in obs_dict.items()
          }
      return obs_dict, act_dict
  
imports: from abc import abstractmethod, ABC
  from typing import Generator, TypeVar, Generic, Type, Union, Dict, Tuple, Any, Optional
  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.environment_context import EnvironmentContext
  from maze.core.env.maze_action import MazeActionType
  from maze.core.env.maze_state import MazeStateType
  from maze.core.env.simulated_env_mixin import SimulatedEnvMixin
label_desc: Use image node_id 4 for calling the ObservationWrapper obj's underlying member method code with example usage: obj.get_observation_and_action_dicts(maze_state, maze_action, first_step_in_episode) and returns: obs_dict,  act_dict