# generated by datamodel-codegen:
#   filename:  DataType.json

from __future__ import annotations

from enum import Enum
from typing import Any, Literal, Optional

from pydantic import BaseModel, ConfigDict, Field


class Status(Enum):
    pending = 'pending'
    in_progress = 'in-progress'
    done = 'done'
    blocked = 'blocked'


class TodoItem(BaseModel):
    model_config = ConfigDict(
        extra='forbid',
    )
    description: str
    status: Status
    owner: Optional[str] = None
    tags: Optional[list[str]] = None
    link: Optional[str] = None


class Metadata(BaseModel):
    model_config = ConfigDict(
        extra='forbid',
    )
    name: str
    intent: str
    todo: Optional[list[TodoItem]] = None


class Contract(BaseModel):
    model_config = ConfigDict(
        extra='forbid',
    )
    schema_: dict[str, Any] = Field(..., alias='schema')


class DataType(BaseModel):
    model_config = ConfigDict(
        extra='forbid',
    )
    kind: Literal['DataType']
    schema_version: str
    metadata: Metadata
    contract: Contract
