from typing import List, Union from datetime import datetime from product import Product class Person: def __init__(self, id: int, name: str) -> None: self.id = id self.name = name class Measurement: def __init__(self, qty: int, unit: str) -> None: self.qty = qty self.unit = unit class Ingredient: def __init__(self, id: int, line: str, name: str, product: Product, measure: Measurement, preparation: str) -> None: self.id = id self.name = name self.product = product self.measure = measure self.line = line self.preparation = preparation class Recipe: def __init__(self, id: int, name: str, link: str, ingredients: List[Ingredient]) -> None: self.id = id self.name = name self.link = link self.ingredients = ingredients class Meal: def __init__(self, id: int, date: datetime, chef: List[Person], cleanup: List[Person], consumers: List[Person], recipes: List[Recipe]) -> None: self.id = id self.date = date self.chef = chef self.cleanup = cleanup self.consumers = consumers self.recipes = recipes class ShoppingListItem: def __init__(self, id: int, food_item: Product, measure: Measurement, source: Union[Meal, None]) -> None: self.id = id self.food_item = food_item self.measure = measure self.source = source class ShoppingList: def __init__(self, date: datetime, items: List[ShoppingListItem]) -> None: self.date = date self.items = items