code: def __init__(self, env_config):
      self.map = [m for m in MAP_DATA.split("\n") if m]
      self.x_dim = len(self.map)
      self.y_dim = len(self.map[0])
      logger.info("Loaded map {} {}".format(self.x_dim, self.y_dim))
      for x in range(self.x_dim):
          for y in range(self.y_dim):
              if self.map[x][y] == "S":
                  self.start_pos = (x, y)
              elif self.map[x][y] == "F":
                  self.end_pos = (x, y)
      logger.info(
          "Start pos {} end pos {}".format(self.start_pos, self.end_pos)
      )
      self.observation_space = Tuple(
          [
              Box(0, 100, shape=(2,)),  # (x, y)
              Discrete(4),  # wind direction (N, E, S, W)
          ]
      )
      self.action_space = Discrete(2)
  
file_path: ray/rllib/examples/env/windy_maze_env.py
imports: import gymnasium
  from gymnasium.spaces import Box, Discrete, Tuple
  import logging
  import random
  from ray.rllib.env import MultiAgentEnv
label_desc: Use image node_id 1 to create a new WindyMazeEnv object from inherited base classes: gym with example: obj = WindyMazeEnv(env_config)