Spaces:
Configuration error
Configuration error
| """ | |
| Pydantic typed models for CodeReview OpenEnv. | |
| Defines all core data structures: enums for review categories and severities, | |
| code snippets, review comments, actions, observations, rewards, step results, | |
| task specifications, and environment state. | |
| """ | |
| from __future__ import annotations | |
| from enum import Enum | |
| from typing import Any, Dict, List, Optional | |
| from pydantic import BaseModel, Field | |
| # --------------------------------------------------------------------------- | |
| # Enums | |
| # --------------------------------------------------------------------------- | |
| class ReviewCategory(str, Enum): | |
| """Categories of code review issues.""" | |
| BUG = "bug" | |
| SECURITY = "security" | |
| PERFORMANCE = "performance" | |
| STYLE = "style" | |
| DOCUMENTATION = "documentation" | |
| class Severity(str, Enum): | |
| """Severity levels for review comments.""" | |
| LOW = "low" | |
| MEDIUM = "medium" | |
| HIGH = "high" | |
| CRITICAL = "critical" | |
| class TaskDifficulty(str, Enum): | |
| """Difficulty levels for tasks.""" | |
| EASY = "easy" | |
| MEDIUM = "medium" | |
| HARD = "hard" | |
| # --------------------------------------------------------------------------- | |
| # Core models | |
| # --------------------------------------------------------------------------- | |
| class CodeSnippet(BaseModel): | |
| """A Python source code snippet for review.""" | |
| file_name: str | |
| source: str | |
| language: str = "python" | |
| class ReviewComment(BaseModel): | |
| """A single review comment identifying an issue in the code.""" | |
| line: Optional[int] = None | |
| category: ReviewCategory | |
| severity: Severity = Severity.MEDIUM | |
| message: str | |
| suggestion: Optional[str] = None | |
| class Action(BaseModel): | |
| """Agent action: a list of review comments plus control flags.""" | |
| comments: List[ReviewComment] = Field(default_factory=list) | |
| summary: Optional[str] = None | |
| submit: bool = False | |
| class Observation(BaseModel): | |
| """What the agent sees on each step.""" | |
| task_id: str | |
| step: int | |
| snippet: CodeSnippet | |
| instructions: str | |
| previous_comments: List[ReviewComment] = Field(default_factory=list) | |
| feedback: Optional[str] = None | |
| done: bool = False | |
| class Reward(BaseModel): | |
| """Reward signal returned after each step.""" | |
| value: float = 0.0 | |
| breakdown: Dict[str, float] = Field(default_factory=dict) | |
| reason: str = "" | |
| class StepResult(BaseModel): | |
| """Result of a single environment step.""" | |
| observation: Observation | |
| reward: Reward | |
| done: bool | |
| info: Dict[str, Any] = Field(default_factory=dict) | |
| class TaskSpec(BaseModel): | |
| """Specification for a single task.""" | |
| task_id: str | |
| title: str | |
| difficulty: TaskDifficulty | |
| categories: List[str] | |
| description: str | |
| max_steps: int | |
| passing_threshold: float | |
| class EnvironmentState(BaseModel): | |
| """Full serialisable state snapshot of the environment.""" | |
| task_id: str | |
| step: int | |
| max_steps: int | |
| total_reward: float | |
| comments_so_far: List[ReviewComment] = Field(default_factory=list) | |
| done: bool | |
| grader_scores: Dict[str, Any] = Field(default_factory=dict) | |