Spaces:
Sleeping
Sleeping
| from pydantic import BaseModel, model_validator, field_validator | |
| from typing import List, Optional, Any | |
| class Bug(BaseModel): | |
| description: str | |
| file: str = "unknown" | |
| line: Optional[int] = None | |
| severity: str = "critical" | |
| def coerce_file(cls, v: Any) -> str: | |
| if isinstance(v, list): | |
| return ", ".join(str(f) for f in v) if v else "unknown" | |
| return v or "unknown" | |
| class Warning(BaseModel): | |
| description: str | |
| file: str = "unknown" | |
| line: Optional[int] = None | |
| def coerce_file(cls, v: Any) -> str: | |
| if isinstance(v, list): | |
| return ", ".join(str(f) for f in v) if v else "unknown" | |
| return v or "unknown" | |
| class Suggestion(BaseModel): | |
| description: str | |
| file: str = "unknown" | |
| def coerce_file(cls, v: Any) -> str: | |
| if isinstance(v, list): | |
| return ", ".join(str(f) for f in v) if v else "unknown" | |
| return v or "unknown" | |
| class IssueReport(BaseModel): | |
| critical: List[Bug] = [] | |
| warnings: List[Warning] = [] | |
| suggestions: List[Suggestion] = [] | |
| total_critical: int = 0 | |
| total_warnings: int = 0 | |
| total_suggestions: int = 0 | |
| def compute_totals(self) -> "IssueReport": | |
| self.total_critical = len(self.critical) | |
| self.total_warnings = len(self.warnings) | |
| self.total_suggestions = len(self.suggestions) | |
| return self | |