class_docstr: This is the multi-agent version of ExternalEnv.
class_docstr_tok: ["This","is","the","multi-agent","version","of","ExternalEnv","."]
docstr: Record the end of an episode.
  
  Args:
      episode_id: Episode id returned from start_episode().
      observation_dict: Current environment observation.
docstr_tok: ["Record","the","end","of","an","episode",".","Args",":","episode_id",":","Episode","id","returned","from","start_episode","(",")",".","observation_dict",":","Current","environment","observation","."]
code: def end_episode(
      self, episode_id: str, observation_dict: MultiAgentDict
  ) -> None:
      """Record the end of an episode.
  
      Args:
          episode_id: Episode id returned from start_episode().
          observation_dict: Current environment observation.
      """
  
      episode = self._get(episode_id)
      self._finished.add(episode.episode_id)
      episode.done(observation_dict)
  
file_path: ray/rllib/env/external_multi_agent_env.py
imports: import uuid
  import gymnasium
  from typing import Optional
  from ray.rllib.utils.annotations import override, PublicAPI
  from ray.rllib.env.external_env import ExternalEnv, _ExternalEnvEpisode
  from ray.rllib.utils.typing import MultiAgentDict
label_desc: Use image node_id 7 for calling the ExternalMultiAgentEnv obj's underlying member method code with example usage: obj.end_episode(episode_id, observation_dict) without return types