# generated by datamodel-codegen:
#   filename:  advanced_constructs.xsd
#   timestamp: 2019-07-26T00:00:00+00:00

from __future__ import annotations

from typing import Annotated

from msgspec import UNSET, Meta, Struct, UnsetType


class Animal(Struct):
    id: str


class Paragraph(Struct):
    emphasis: list[str] | UnsetType = UNSET
    lang: str | UnsetType = UNSET
    value: str | UnsetType = UNSET


class Vehicle(Struct):
    vin: str


class Car(Vehicle):
    doors: Annotated[int, Meta(ge=1)]


class Cat(Animal):
    lives: Annotated[int, Meta(ge=1)]


class Dog(Animal):
    breed: str


class Zoo(Struct):
    animal: Annotated[list[Cat | Dog], Meta(min_length=1)]
    vehicle: Vehicle | Car | UnsetType = UNSET
    description: Paragraph | UnsetType = UNSET


class Model(Struct):
    vehicle: Vehicle
    zoo: Annotated[Zoo, Meta(title='Zoo')]
