maze_env / models.py
Jiyaaaaaa's picture
Upload folder using huggingface_hub
3c97aaf verified
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.
"""
Data models for the Maze Environment.
The maze environment is a simple gridworld with walls, a start cell, and an exit.
"""
from typing import List
from pydantic import Field
# Support both in-repo and standalone imports
try:
# In-repo imports (when running from OpenEnv repository)
from openenv.core.env_server.types import Action, Observation, State
except ImportError:
# Standalone imports (when environment is standalone with openenv-core from pip)
from openenv_core.env_server.types import Action, Observation, State
class MazeAction(Action):
"""Action for the Maze environment."""
action: int
class MazeObservation(Observation):
"""
Observation from the Maze environment.
Attributes:
maze: The maze layout as a 2D grid (0 = empty, 1 = wall).
position: Agent position as [col, row].
total_reward: Cumulative reward in the current episode.
legal_actions: List of valid action indices.
"""
legal_actions: List[int] = Field(default_factory=list)
current_position: List[int] = Field(default_factory=list)
previous_position: List[int] = Field(default_factory=list)
class MazeState(State):
"""State for Maze environment."""
episode_id: str
step_count: int
done: bool = False
current_position: List[int] = Field(default_factory=list)
exit_cell: List[int] = Field(default_factory=list)
status: str = "playing" # e.g., "playing", "win", "lose"