"""about.py — who I am, as a typed object."""

from enum import StrEnum

from pydantic import BaseModel, EmailStr, HttpUrl, Field


class Role(StrEnum):
    SENIOR_ML_ENGINEER = "senior machine learning engineer"
    SENIOR_DATA_SCIENTIST = "senior data scientist"
    PYTHON_BACKEND_ENGINEER = "python backend engineer"


class Focus(StrEnum):
    PREDICTIVE_MODELING = "predictive modeling"
    NLP = "nlp"
    RAG_SYSTEMS = "rag systems"
    MLOPS = "mlops"
    DATA_PIPELINES = "automated data pipelines"
    LOW_LATENCY_BACKENDS = "low-latency backends"


class Stack(BaseModel):
    """The tools I reach for first, not an exhaustive list."""

    language: str = "python"
    runtime: list[str] = Field(default_factory=lambda: ["xgboost", "fastapi", "langchain", "transformers"])
    infra: list[str] = Field(default_factory=lambda: ["docker", "aws", "azure", "ec2", "s3", "redis"])
    specialties: list[str] = Field(
        default_factory=lambda: [
            "supervised & unsupervised learning",
            "text analytics",
            "retrieval + reranking pipelines",
            "scalable ml systems",
        ]
    )


class Person(BaseModel):
    name: str
    handle: str
    roles: list[Role]
    focus: list[Focus]
    stack: Stack
    location: str
    email: EmailStr
    website: HttpUrl
    currently_reading: str | None = None


me = Person(
    name="Vitor Carvalho Sampaio",
    handle="vitor_sampaio",
    roles=[Role.SENIOR_ML_ENGINEER, Role.SENIOR_DATA_SCIENTIST, Role.PYTHON_BACKEND_ENGINEER],
    focus=[
        Focus.PREDICTIVE_MODELING,
        Focus.NLP,
        Focus.RAG_SYSTEMS,
        Focus.MLOPS,
        Focus.DATA_PIPELINES,
    ],
    stack=Stack(),
    location="Brazil",
    email="vitorsampaiomle@gmail.com",
    website="https://vitorsampa.io",
    currently_reading=None,
)


if __name__ == "__main__":
    print(me.model_dump_json(indent=2))