Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| from dataclasses import dataclass, field | |
| from typing import Any, Literal | |
| import numpy as np | |
| SlotName = Literal["top", "bottom", "shoes", "accessory", "unknown"] | |
| class WeatherContext: | |
| season: str = "all-season" | |
| temperature_c: float | None = None | |
| is_rainy: bool | None = None | |
| class RecommendationContext: | |
| occasion: str = "casual" | |
| weather: WeatherContext = field(default_factory=WeatherContext) | |
| region: str = "global" | |
| user_profile: dict[str, Any] = field(default_factory=dict) | |
| class EncodedWardrobeItem: | |
| item: dict[str, Any] | |
| vector: np.ndarray | |
| slot: SlotName | |
| metadata_text: str | |
| class OutfitCandidate: | |
| top: EncodedWardrobeItem | |
| bottom: EncodedWardrobeItem | |
| shoes: EncodedWardrobeItem | None = None | |
| accessory: EncodedWardrobeItem | None = None | |
| score: float = 0.0 | |
| breakdown: dict[str, float] = field(default_factory=dict) | |
| reason: str = "" | |
| tip: str = "" | |
| def slot_items(self) -> list[EncodedWardrobeItem]: | |
| return [ | |
| slot_item | |
| for slot_item in [self.top, self.bottom, self.shoes, self.accessory] | |
| if slot_item is not None | |
| ] | |