Sky-Blue-da-ba-dee's picture
added files
ac9ddbb
"""API Schemas for Predict Request and Response."""
from enum import Enum
from pydantic import BaseModel, ConfigDict, ValidationError
class ProgrammingLanguage(str, Enum):
"""Programming languages supported for prediction."""
JAVA = "java"
PYTHON = "python"
PHARO = "pharo"
class ModelType(str, Enum):
"""Model types for prediction."""
SETFIT = "setfit"
RANDOM_FOREST = "random_forest"
TRANSFORMER = "transformer"
class PredictRequest(BaseModel):
"""Schema for Predict Request."""
text: str
language: ProgrammingLanguage
model_type: ModelType
model_config = ConfigDict(
json_schema_extra={
"example": {
"text": "This method calculates the average score.",
"language": "python",
"model_type": "transformer",
}
}
)
class PredictResponse(BaseModel):
"""Schema for Predict Response."""
label: str
score: float
""" Demonstration of object instantiation, printing,
and validation error handling with dummy use cases"""
if __name__ == "__main__":
print("\n--- 1. Object Instantiation & Printing ---")
valid_data = {
"text": "This method calculates the average score.",
"language": "java",
"model_type": "setfit",
}
# Instantiate the object
request = PredictRequest(**valid_data)
# Print object as dictionary (.model_dump() is Pydantic V2 syntax)
print(f"Valid Request Object: {request.model_dump()}")
print("\n--- 2. Handling Invalid Data ---")
try:
print("Attempting to create request with language='c++'...")
# This should fail because 'c++' is not in ProgrammingLanguage Enum
invalid_request = PredictRequest(
text="std::cout << 'Hello';", language="c++", model_type="setfit"
)
except ValidationError as e:
print("SUCCESS: Validation Error Caught!")
print(e.json())