Skip to content

Ensure all data uses Pydantic models for validation #53

@eshulman2

Description

@eshulman2

Description

Not all data structures use Pydantic models, leading to potential runtime errors and inconsistent validation.

Current Issues

  • Some functions accept raw dicts
  • Inconsistent validation
  • No automatic schema generation
  • Runtime type errors possible

Proposed Changes

1. Identify All Data Structures

Audit code for:

  • Function parameters accepting dict
  • Return values that are dict
  • Configuration structures
  • API request/response models

2. Create Missing Models

# Before
def process_config(config: dict) -> dict:
    return {"processed": True, "items": config.get("items", [])}

# After
class ConfigInput(BaseModel):
    items: List[str] = []
    timeout: int = 30

class ConfigOutput(BaseModel):
    processed: bool
    items: List[str]

def process_config(config: ConfigInput) -> ConfigOutput:
    return ConfigOutput(processed=True, items=config.items)

3. Add Validators

class AgentConfig(BaseModel):
    name: str
    endpoint: str
    max_iterations: int = 20

    @field_validator('endpoint')
    @classmethod
    def validate_endpoint(cls, v: str) -> str:
        if not v.startswith(('http://', 'https://')):
            raise ValueError('Endpoint must be HTTP(S) URL')
        return v

    @field_validator('max_iterations')
    @classmethod
    def validate_iterations(cls, v: int) -> int:
        if v < 1 or v > 100:
            raise ValueError('max_iterations must be between 1 and 100')
        return v

Acceptance Criteria

  • All API inputs use Pydantic models
  • All API outputs use Pydantic models
  • Configuration uses Pydantic models
  • No raw dicts in public APIs
  • Validators added where appropriate
  • Tests for validation
  • Documentation updated

Files to Review

  • All files in src/core/
  • All files in src/infrastructure/
  • src/core/workflows/models.py

Priority: 🟡 Medium
Effort: 4-5 hours
Difficulty: Medium

Metadata

Metadata

Assignees

No one assigned

    Labels

    consistencyCode consistency and standardsenhancementNew feature or requesttype-safetyType hints and type checking

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions