class_docstr: Base class for (gym style) environments wrapping a core environment and defining state and execution interfaces.
  The aim of this class is to provide reusable functionality across different gym environments.
  This functionality comprises for example the reset-function, the step-function or the render-function.
  
  :param core_env: Core environment.
  :param action_conversion_dict: A dictionary with action conversion interface implementation
                                   and policy names as keys.
  :param observation_conversion_dict: A dictionary with observation conversion interface implementation
                                    and policy names as keys.
class_docstr_tok: ["Base","class","for","(","gym","style",")","environments","wrapping","a","core","environment","and","defining","state","and","execution","interfaces",".","The","aim","of","this","class","is","to","provide","reusable","functionality","across","different","gym","environments",".","This","functionality","comprises","for","example","the","reset-function",",","the","step-function","or","the","render-function",".",":","param","core_env",":","Core","environment",".",":","param","action_conversion_dict",":","A","dictionary","with","action","conversion","interface","implementation","and","policy","names","as","keys",".",":","param","observation_conversion_dict",":","A","dictionary","with","observation","conversion","interface","implementation","and","policy","names","as","keys","."]
docstr: Initialize observation and action space.
          
docstr_tok: ["Initialize","observation","and","action","space","."]
code: def _init_spaces(self) -> None:
      """Initialize observation and action space."""
      self._observation_spaces = {
          k: obs_conv.space()
          for k, obs_conv in self.observation_conversion_dict.items()
      }
      self._action_spaces = {
          k: act_conv.space()
          for k, act_conv in self.action_conversion_dict.items()
      }
  
imports: from copy import deepcopy
  from typing import Any, Tuple, Dict, Iterable, Optional, Union, TypeVar, Generic
  import gym
  import numpy
  from maze.core.annotations import override
  from maze.core.env.action_conversion import ActionConversionInterface, ActionType
  from maze.core.env.base_env import BaseEnv
  from maze.core.env.core_env import CoreEnv
  from maze.core.env.event_env_mixin import EventEnvMixin
  from maze.core.env.maze_action import MazeActionType
  from maze.core.env.maze_state import MazeStateType
  from maze.core.env.observation_conversion import ObservationConversionInterface, ObservationType
  from maze.core.env.recordable_env_mixin import RecordableEnvMixin
  from maze.core.env.simulated_env_mixin import SimulatedEnvMixin
  from maze.core.env.structured_env import StructuredEnv, StepKeyType, ActorID
  from maze.core.env.structured_env_spaces_mixin import StructuredEnvSpacesMixin
  from maze.core.env.time_env_mixin import TimeEnvMixin
  from maze.core.events.event_record import EventRecord
  from maze.core.log_events.kpi_calculator import KpiCalculator
  from maze.core.log_events.monitoring_events import RewardEvents
  from maze.core.rendering.renderer import Renderer
  from maze.core.wrappers.wrapper import Wrapper
label_desc: Use image node_id 15 for calling the MazeEnv obj's underlying member method code with example usage: obj._init_spaces() without return types