class_docstr: Interface definition for core environments forming the basis for actual RL trainable environments.
      
class_docstr_tok: ["Interface","definition","for","core","environments","forming","the","basis","for","actual","RL","trainable","environments","."]
docstr: Environment step function.
  
  Note: If your core environment is structured, you should call
  :func:`maze.core.env.environment_context.EnvironmentContext.increment_env_step()`
  once the structured step is done, so that the env time is incremented and events/stats cleared.
  
  :param maze_action: Environment MazeAction to take.
  :return: state, reward, done, info
docstr_tok: ["Environment","step","function",".","Note",":","If","your","core","environment","is","structured",",","you","should","call",":","func",":","`","maze.core.env.environment_context.EnvironmentContext.increment_env_step","(",")","`","once","the","structured","step","is","done",",","so","that","the","env","time","is","incremented","and","events\/stats","cleared",".",":","param","maze_action",":","Environment","MazeAction","to","take",".",":","return",":","state",",","reward",",","done",",","info"]
code: def step(
      self, maze_action: MazeActionType
  ) -> Tuple[
      MazeStateType, Union[float, np.ndarray, Any], bool, Dict[Any, Any]
  ]:
      """Environment step function.
  
      Note: If your core environment is structured, you should call
      :func:`maze.core.env.environment_context.EnvironmentContext.increment_env_step()`
      once the structured step is done, so that the env time is incremented and events/stats cleared.
  
      :param maze_action: Environment MazeAction to take.
      :return: state, reward, done, info
      """
  
imports: from abc import ABC, abstractmethod
  from typing import Tuple, Any, Dict, Union, Iterable, Optional
  import numpy
  from maze.core.annotations import override
  from maze.core.env.environment_context import EnvironmentContext
  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.reward import RewardAggregatorInterface
  from maze.core.env.serializable_env_mixin import SerializableEnvMixin
  from maze.core.env.structured_env import StructuredEnv, StepKeyType, ActorID
  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.rendering.renderer import Renderer
label_desc: Use image node_id 2 for calling the CoreEnv obj's underlying member method code with example usage: obj.step(maze_action) without return types