attribution / schema_structured.py
thanhnt-cf's picture
initial commit
7a38b33
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]