class_docstr: Describes the observations, actions, and time horizon of an MDP.
  
  Args:
      observation_space (akro.Space): The observation space of the env.
      action_space (akro.Space): The action space of the env.
      max_episode_length (int): The maximum number of steps allowed in an
          episode.
class_docstr_tok: ["Describes","the","observations",",","actions",",","and","time","horizon","of","an","MDP",".","Args",":","observation_space","(","akro.Space",")",":","The","observation","space","of","the","env",".","action_space","(","akro.Space",")",":","The","action","space","of","the","env",".","max_episode_length","(","int",")",":","The","maximum","number","of","steps","allowed","in","an","episode","."]
code: def __init__(
      self, observation_space, action_space, max_episode_length=None
  ):
      object.__setattr__(self, "max_episode_length", max_episode_length)
      super().__init__(
          input_space=action_space, output_space=observation_space
      )
  
imports: import abc
  from dataclasses import dataclass
  from typing import Dict
  import akro
  import numpy
  from garage._dtypes import StepType
label_desc: Use image node_id 1 to create a new EnvSpec object from inherited base classes: InOutSpec with example: obj = EnvSpec(observation_space, action_space, max_episode_length)