class_docstr: Stores multi-agent episode data.
  
  The central attribute of the class is the timestep mapping
  `global_t_to_local_t` that maps the global (environment)
  timestep to the local (agent) timesteps.
  
  The `MultiAgentEpisode` is based on the `SingleAgentEpisode`s
  for each agent, stored in `MultiAgentEpisode.agent_episodes`.
class_docstr_tok: ["Stores","multi-agent","episode","data",".","The","central","attribute","of","the","class","is","the","timestep","mapping","`","global_t_to_local_t","`","that","maps","the","global","(","environment",")","timestep","to","the","local","(","agent",")","timesteps",".","The","`","MultiAgentEpisode","`","is","based","on","the","`","SingleAgentEpisode","`","s","for","each","agent",",","stored","in","`","MultiAgentEpisode.agent_episodes","`","."]
docstr: Returns the state of a multi-agent episode.
  
  Note that from an episode's state the episode itself can
  be recreated.
  
  Returns: A dicitonary containing pickable data fro a
      `MultiAgentEpisode`.
code: def get_state(self) -> Dict[str, Any]:
      """Returns the state of a multi-agent episode.
  
      Note that from an episode's state the episode itself can
      be recreated.
  
      Returns: A dicitonary containing pickable data fro a
          `MultiAgentEpisode`.
      """
      # TODO (simon): Add the buffers.
      return list(
          {
              "id_": self.id_,
              "agent_ids": self._agent_ids,
              "global_t_to_local_t": self.global_t_to_local_t,
              "global_actions_t": self.global_actions_t,
              "partial_rewards_t": self.partial_rewards_t,
              "partial_rewards": self.partial_rewards,
              "agent_episodes": list(
                  {
                      agent_id: agent_eps.get_state()
                      for agent_id, agent_eps in self.agent_episodes.items()
                  }.items()
              ),
              "t_started": self.t_started,
              "t": self.t,
              "ts_carriage_return": self.ts_carriage_return,
              "is_terminated": self.is_terminated,
              "is_truncated": self.is_truncated,
          }.items()
      )
  
imports: from collections import defaultdict
  from queue import Queue
  from typing import Any, Dict, List, Optional, Set, Union
  import uuid
  import numpy
  from ray.rllib.env.single_agent_episode import SingleAgentEpisode
  from ray.rllib.policy.sample_batch import MultiAgentBatch
  from ray.rllib.utils.typing import MultiAgentDict
label_desc: Use image node_id 15 for calling the MultiAgentEpisode obj's underlying member method code with example usage: obj.get_state() and returns: list