from decimal import Decimal from uuid import UUID, uuid4 from pydantic import BaseModel, Field, field_validator class Transaction(BaseModel): id: UUID = Field(default_factory=uuid4) date: str = "" account: str = "" category: str = "" amount: Decimal = Field(default=Decimal("0")) description: str = "" @field_validator("amount") @classmethod def _amount_nonzero(cls, v: Decimal) -> Decimal: if v == 0: raise ValueError("amount must be non-zero") return v