from pydantic import BaseModel, Field, validator  # cotterpin:expect


class Account(BaseModel):
    name: str = Field(..., regex="^[a-z]+$")  # cotterpin:expect
    tags: list[str] = Field(default_factory=list, min_items=1)  # cotterpin:expect

    class Config:  # cotterpin:expect
        orm_mode = True

    @validator("name")
    def lower(cls, value):
        return value.lower()


class Admin(Account):
    level: int = 1


def load(raw):
    return Admin.parse_obj(raw)  # cotterpin:expect
