class_docstr: Base class for an multi-agent environment (in a ray-like fashion).
class_docstr_tok: ["Base","class","for","an","multi-agent","environment","(","in","a","ray-like","fashion",")","."]
docstr: Returns observations from ready agents.
  The returns are dicts mapping from agent_id strings to StepOutcome. The
  number of agents in the env can vary over time.
docstr_tok: ["Returns","observations","from","ready","agents",".","The","returns","are","dicts","mapping","from","agent_id","strings","to","StepOutcome",".","The","number","of","agents","in","the","env","can","vary","over","time","."]
code: def step(self, action_dict: tp.Dict[str, tp.Any]) -> StepReturn:
      """Returns observations from ready agents.
      The returns are dicts mapping from agent_id strings to StepOutcome. The
      number of agents in the env can vary over time.
      """
      raise NotImplementedError
  
imports: import typing
  from collections import defaultdict
  import gym
label_desc: Use image node_id 2 for calling the MultiAgentEnv obj's underlying member method code with example usage: obj.step(action_dict) without return types