from enum import Enum from typing import Union from pydantic import BaseModel, Field ##### # avoid using the 'import' string, including words like 'important', etc. class NeckType(str, Enum): ROUND = "Round neck" V_NECK = "V-neck" COLLAR = "Collar" OFF_SHOULDER = "Off-shoulder" HALTER = "Halter" OTHER = "Other" class Color(str, Enum): SCARLET = "Scarlet" # A bright red color AZURE = "Azure" # A bright blue color EMERALD = "Emerald" # A bright green color AMBER = "Amber" # A yellow-orange color EBONY = "Ebony" # A dark black color IVORY = "Ivory" # A creamy white color FUCHSIA = "Fuchsia" # A bright pink-purple color VIOLET = "Violet" # A purple color TANGERINE = "Tangerine" # A bright orange color CHESTNUT = "Chestnut" # A reddish-brown color SLATE = "Slate" # A gray color NAVY = "Navy" # A dark blue color SILVER = "Silver" # A metallic gray color GOLD = "Gold" # A metallic yellow color BEIGE = "Beige" # A light brown color MULTI = "Multicolor" # Multiple colors OTHER = "Other" # Any other color # class Color(str, Enum): # RED = "Red" # ORANGE = "Orange" # YELLOW = "Yellow" # GREEN = "Green" # BLUE = "Blue" # PURPLE = "Purple" # PINK = "Pink" # BROWN = "Brown" # BLACK = "Black" # WHITE = "White" # GRAY = "Gray" # # OTHER = "Other" class Sleeve(str, Enum): SHORT = "Short" LONG = "Long" SLEEVELESS = "Sleeveless" OTHER = "Other" class Shoulder(str, Enum): REGULAR = "Regular" DROP = "Drop" PUFF = "Puff" COLD_SHOULDER = "Cold shoulder" OTHER = "Other" class Waist(str, Enum): REGULAR = "Regular" HIGH = "High" LOW = "Low" OTHER = "Other" class UpperLength(str, Enum): CROPPED = "Cropped" REGULAR = "Regular" LONG = "Long" OTHER = "Other" class UpperGarmentSubcategory(str, Enum): T_SHIRT = "T-shirt" BLOUSE = "Blouse" SHIRT = "Shirt" SWEATER = "Sweater" JACKET = "Jacket" HOODIE = "Hoodie" DRESS = "Dress" OTHER = "Other" class LowerGarmentCategory(str, Enum): SHORTS = "Shorts" PANTS = "Pants" SKIRT = "Skirt" JEANS = "Jeans" OTHER = "Other" class PatternType(str, Enum): SOLID = "Solid" STRIPED = "Striped" CHECKERED = "Checkered" FLORAL = "Floral" POLKA_DOT = "Polka dot" OTHER = "Other" class Pattern(BaseModel): type: PatternType color: list[Color] class HipSize(str, Enum): REGULAR = "Regular" WIDE = "Wide" SKINNY = "Skinny" OTHER = "Other" class Rise(str, Enum): REGULAR = "Regular" HIGH = "High" LOW = "Low" OTHER = "Other" class LegWidth(str, Enum): REGULAR = "Regular" WIDE = "Wide" SKINNY = "Skinny" OTHER = "Other" class UpperGarmentProperties(BaseModel): upper_category: UpperGarmentSubcategory neck: NeckType sleeve: Sleeve shoulder: Shoulder waist: Waist length: UpperLength class LowerGarmentProperties(BaseModel): lower_category: LowerGarmentCategory waist: Waist hip: HipSize rise: Rise leg: LegWidth class HatStyle(str, Enum): BEANIE = "Beanie" BERET = "Beret" BUCKET = "Bucket" CAP = "Cap" FEDORA = "Fedora" VISOR = "Visor" OTHER = "Other" class Brim(str, Enum): NONE = "None" SHORT = "Short" MEDIUM = "Medium" LONG = "Long" OTHER = "Other" class HatProperties(BaseModel): style: HatStyle brim: Brim class Category(str, Enum): UPPER_GARMENT = "Upper garment" LOWER_GARMENT = "Lower garment" HAT = "Hat" OTHER = "Other" class Gender(str, Enum): MALE = "Male" FEMALE = "Female" UNISEX = "Unisex" OTHER = "Other" class Material(str, Enum): COTTON = "Cotton" POLYESTER = "Polyester" WOOL = "Wool" SILK = "Silk" LINEN = "Linen" LEATHER = "Leather" DENIM = "Denim" OTHER = "Other" class TargetAudienceAgeRange(str, Enum): KIDS = "Kids" TEENS = "Teens" ADULTS = "Adults" SENIORS = "Seniors" OTHER = "Other" class TargetAudienceStylePreference(str, Enum): TRENDY = "Trendy" CLASSIC = "Classic" VINTAGE = "Vintage" BOHEMIAN = "Bohemian" OTHER = "Other" class TargetAudienceLifestyle(str, Enum): ACTIVE = "Active" CASUAL = "Casual" FORMAL = "Formal" PARTY = "Party" OTHER = "Other" class TargetAudience(BaseModel): age_range: TargetAudienceAgeRange style_preference: TargetAudienceStylePreference lifestyle: TargetAudienceLifestyle class Style(str, Enum): CASUAL = "Casual" FORMAL = "Formal" SPORTS = "Sports" PARTY = "Party" OTHER = "Other" class ClosureType(str, Enum): BUTTON = "Button" ZIPPER = "Zipper" LACE = "Lace" HOOK = "Hook" TIE = "Tie" VELCRO = "Velcro" BUCKLE = "Buckle" NONE = "None" OTHER = "Other" class ClosureLocation(str, Enum): FRONT = "Front" BACK = "Back" SIDE = "Side" NECK = "Neck" WAIST = "Waist" OTHER = "Other" class Closure(BaseModel): color: Color type: ClosureType location: ClosureLocation class Fit(str, Enum): REGULAR = "Regular" SLIM = "Slim" LOOSE = "Loose" OTHER = "Other" class Season(str, Enum): ALL_SEASONS = "All seasons" SPRING = "Spring" SUMMER = "Summer" FALL = "Fall" WINTER = "Winter" class Occasion(str, Enum): CASUAL = "Casual" FORMAL = "Formal" PARTY = "Party" SPORTS = "Sports" WORK = "Work" OTHER = "Other" class Usage(str, Enum): DAILY = "Daily" SPECIAL = "Special" WORKOUT = "Workout" SLEEP = "Sleep" PARTY = "Party" OTHER = "Other" class Pairing(str, Enum): JEANS = "Jeans" SHORTS = "Shorts" SKIRT = "Skirt" LEGGINGS = "Leggings" TROUSERS = "Trousers" DRESS = "Dress" CLUTCH = "Clutch" HEELS = "Heels" SANDALS = "Sandals" JEWELRY = "Jewelry" OTHER = "Other" class SpecialOccasion(str, Enum): WEDDING = "Wedding" PROM = "Prom" HALLOWEEN = "Halloween" GRADUATION = "Graduation" BIRTHDAY = "Birthday" BRUNCH = "Brunch" OTHER = "Other" class Garment(BaseModel): # don't rename this class category: Category gender: Gender material: Material color: list[Color] pattern: Pattern style: Style closure: Closure fit: Fit season: list[Season] occasion: list[Occasion] special_occasion: list[SpecialOccasion] = Field(..., description='List up to three special occasions, such as weddings, halloween or graduation') usage: list[Usage] pairing: list[Pairing] target_audience: list[TargetAudience] properties: Union[UpperGarmentProperties, LowerGarmentProperties, HatProperties]