paint / models.py
baconnier's picture
Upload 10 files
05f2374 verified
from pydantic import BaseModel, Field, field_validator
from typing import List, Dict, Any
class ProgressMeters(BaseModel):
technical_detail: int = Field(default=0, ge=0, le=100)
artistic_style: int = Field(default=0, ge=0, le=100)
composition: int = Field(default=0, ge=0, le=100)
context: int = Field(default=0, ge=0, le=100)
class SubjectAnalysis(BaseModel):
clarity: int = Field(default=0, ge=0, le=100)
details_present: List[str] = []
details_missing: List[str] = []
class StyleEvaluation(BaseModel):
defined_elements: List[str] = []
missing_elements: List[str] = []
style_score: int = Field(default=0, ge=0, le=100)
class TechnicalAssessment(BaseModel):
specified_elements: List[str] = []
missing_elements: List[str] = []
technical_score: int = Field(default=0, ge=0, le=100)
class CompositionReview(BaseModel):
strengths: List[str] = []
weaknesses: List[str] = []
composition_score: int = Field(default=0, ge=0, le=100)
class InitialAnalysis(BaseModel):
subject_analysis: SubjectAnalysis = SubjectAnalysis()
style_evaluation: StyleEvaluation = StyleEvaluation()
technical_assessment: TechnicalAssessment = TechnicalAssessment()
composition_review: CompositionReview = CompositionReview()
class EnhancedVersion(BaseModel):
focus_area: str = ""
enhanced_prompt: str = ""
improvement_score: int = Field(default=0, ge=0, le=100)
class PromptAnalysis(BaseModel):
initial_analysis: InitialAnalysis = InitialAnalysis()
enhanced_versions: List[EnhancedVersion] = []
session_state: Dict[str, Any] = {}
@field_validator('enhanced_versions', mode='before')
def validate_enhanced_versions(cls, v):
if not isinstance(v, list):
return []
return v