from datetime import datetime from dataclasses import field from pydantic.dataclasses import dataclass @dataclass class PricingInfo: original_price: float current_price: float price_before_drop: float | None = None edu_price: float | None = None @dataclass class AvailabilityInfo: available: bool | None = None condition: str | None = None app_exclusive: bool | None = None member_pick: bool | None = None member_deal: bool | None = None @dataclass class ProductMetadata: image_url: str | None = None channel_id: str | None = None customization_index: str | None = None member_non_member_comparison: str | None = None overstock_text: str | None = None percentage: int | None = None affiliate_url: str | None = None @dataclass class ProductTiming: discovered_date: datetime | None = None start_date: datetime | None = None end_date: datetime | None = None @dataclass class Product: product_id: str title: str url: str metadata: ProductMetadata = field(default_factory=ProductMetadata) timing: ProductTiming = field(default_factory=ProductTiming) pricing: PricingInfo = field(default_factory=PricingInfo) availability: AvailabilityInfo = field(default_factory=AvailabilityInfo)