class_docstr: A simple multi-agent example environment where agents have different spaces.
  
  agent0: obs=(10,), act=Discrete(2)
  agent1: obs=(20,), act=Discrete(3)
  
  The logic of the env doesn't really matter for this example. The point of this env
  is to show how one can use multi-agent envs, in which the different agents utilize
  different obs- and action spaces.
class_docstr_tok: ["A","simple","multi-agent","example","environment","where","agents","have","different","spaces",".","agent0",":","obs=","(","10",",",")",",","act=Discrete","(","2",")","agent1",":","obs=","(","20",",",")",",","act=Discrete","(","3",")","The","logic","of","the","env","does","n't","really","matter","for","this","example",".","The","point","of","this","env","is","to","show","how","one","can","use","multi-agent","envs",",","in","which","the","different","agents","utilize","different","obs-","and","action","spaces","."]
code: def __init__(self, config=None):
      self.agents = {"agent0", "agent1"}
      self._agent_ids = set(self.agents)
  
      self.terminateds = set()
      self.truncateds = set()
  
      # Provide full (preferred format) observation- and action-spaces as Dicts
      # mapping agent IDs to the individual agents' spaces.
      self._obs_space_in_preferred_format = True
      self.observation_space = gym.spaces.Dict(
          {
              "agent0": gym.spaces.Box(low=-1.0, high=1.0, shape=(10,)),
              "agent1": gym.spaces.Box(low=-1.0, high=1.0, shape=(20,)),
          }
      )
      self._action_space_in_preferred_format = True
      self.action_space = gym.spaces.Dict(
          {
              "agent0": gym.spaces.Discrete(2),
              "agent1": gym.spaces.Discrete(3),
          }
      )
  
      super().__init__()
  
file_path: ray/python/ray/rllib/examples/multi_agent_different_spaces_for_agents.py
imports: import argparse
  import gymnasium
  import os
  import ray
  from ray import air, tune
  from ray.rllib.env.multi_agent_env import MultiAgentEnv
  from ray.tune.registry import get_trainable_cls
label_desc: Use image node_id 1 to create a new BasicMultiAgentMultiSpaces object from inherited base classes: MultiAgentEnv with example: obj = BasicMultiAgentMultiSpaces(config)