Skip to content

Define an Entity

from datetime import datetime
from beekeeper import Entity, Unavailability


class MyUnavailability(Unavailability[datetime]):
    is_paid_leave: bool


class MyWorker(Entity[MyUnavailability]):
    name: str
    role: str

Subclass Unavailability[T] to add domain-specific absence fields, then subclass Entity[YourUnavailability] to add the worker fields you care about.

The [YourUnavailability] parameter on Entity propagates: an algorithm written against Entity[MyUnavailability] will see MyUnavailability instances when iterating entity.unavailabilities, with their custom fields available statically.

Entity is a pydantic BaseModel with extra="forbid", so JSON adapters will reject unknown fields. Domain subclasses inherit that strictness.