class_docstr: An interface to the kaggle's football environment.
  
  See: https://github.com/Kaggle/kaggle-environments
class_docstr_tok: ["An","interface","to","the","kaggle","'s","football","environment",".","See",":","https",":","\/\/github.com\/Kaggle\/kaggle-environments"]
code: def step(
      self, action_dict: Dict[AgentID, int]
  ) -> Tuple[
      MultiAgentDict,
      MultiAgentDict,
      MultiAgentDict,
      MultiAgentDict,
      MultiAgentDict,
  ]:
      # Convert action_dict (used by RLlib) to a list of actions (used by
      # kaggle_environments)
      action_list = [None] * len(self.kaggle_env.state)
      for idx, agent_state in enumerate(self.kaggle_env.state):
          if agent_state["status"] == "ACTIVE":
              action = action_dict[f"agent{idx}"]
              action_list[idx] = [action]
      self.kaggle_env.step(action_list)
  
      # Parse (obs, reward, terminated, truncated, info) from kaggle's "state"
      # representation.
      obs = {}
      cumulative_reward = {}
      terminated = {"__all__": self.kaggle_env.done}
      truncated = {"__all__": False}
      info = {}
      for idx in range(len(self.kaggle_env.state)):
          agent_state = self.kaggle_env.state[idx]
          agent_name = f"agent{idx}"
          if agent_state["status"] == "ACTIVE":
              obs[agent_name] = self._convert_obs(
                  agent_state["observation"]
              )
          cumulative_reward[agent_name] = agent_state["reward"]
          terminated[agent_name] = agent_state["status"] != "ACTIVE"
          truncated[agent_name] = False
          info[agent_name] = agent_state["info"]
      # Compute the step rewards from the cumulative rewards
      if self.last_cumulative_reward is not None:
          reward = {
              agent_id: agent_reward
              - self.last_cumulative_reward[agent_id]
              for agent_id, agent_reward in cumulative_reward.items()
          }
      else:
          reward = cumulative_reward
      self.last_cumulative_reward = cumulative_reward
      return obs, reward, terminated, truncated, info
  
file_path: ray/rllib/env/wrappers/kaggle_wrapper.py
imports: from copy import deepcopy
  from gymnasium.spaces import Box, Dict, Discrete, MultiBinary, MultiDiscrete, Space, Tuple
  import numpy
  from typing import Any, Dict, Optional, Tuple
  from ray.rllib.env import MultiAgentEnv
  from ray.rllib.utils.typing import MultiAgentDict, AgentID
label_desc: Use image node_id 3 for calling the KaggleFootballMultiAgentEnv obj's underlying member method code with example usage: obj.step(action_dict) and returns: obs,  reward,  terminated,  truncated,  info