faisaltitu/Drift-Detection
0
1"""2Pydantic Models for API Request/Response3"""4 5from pydantic import BaseModel, Field6from typing import Optional7from datetime import datetime8 9 10class PredictionRequest(BaseModel):11 """Request schema for housing prediction."""12 13 MedInc: float = Field(..., description="Median income in block group")14 HouseAge: float = Field(..., description="Median house age in block group")15 AveRooms: float = Field(..., description="Average number of rooms per household")16 AveBedrms: float = Field(..., description="Average number of bedrooms per household")17 Population: float = Field(..., description="Block group population")18 AveOccup: float = Field(..., description="Average number of household members")19 Latitude: float = Field(..., description="Block group latitude")20 Longitude: float = Field(..., description="Block group longitude")21 22 model_config = {23 "json_schema_extra": {24 "examples": [25 {26 "MedInc": 8.3252,27 "HouseAge": 41.0,28 "AveRooms": 6.984,29 "AveBedrms": 1.024,30 "Population": 322.0,31 "AveOccup": 2.556,32 "Latitude": 37.88,33 "Longitude": -122.2334 }35 ]36 }37 }38 39 40class PredictionResponse(BaseModel):41 """Response schema for housing prediction."""42 43 model_config = {"protected_namespaces": ()}44 45 prediction: float = Field(..., description="Predicted median house value (in $100,000s)")46 model_version: int = Field(..., description="Model version used for prediction")47 timestamp: datetime = Field(..., description="Prediction timestamp")48 prediction_id: int = Field(..., description="Unique prediction ID")49 50 51class HealthResponse(BaseModel):52 """Health check response."""53 54 model_config = {"protected_namespaces": ()}55 56 status: str57 model_loaded: bool58 model_version: Optional[int] = None59 