# -*- coding: utf-8 -*-
# code generated by Prisma. DO NOT EDIT.
# pyright: reportUnusedImport=false
# fmt: off

# global imports for type checking
from builtins import bool as _bool
from builtins import int as _int
from builtins import float as _float
from builtins import str as _str
import sys
import decimal
import datetime
from typing import (
    TYPE_CHECKING,
    Optional,
    Iterable,
    Iterator,
    Sequence,
    Callable,
    ClassVar,
    NoReturn,
    TypeVar,
    Generic,
    Mapping,
    Tuple,
    Union,
    List,
    Dict,
    Type,
    Any,
    Set,
    overload,
    cast,
)
from typing_extensions import TypedDict, Literal


LiteralString = str
# -- template models.py.jinja --
import os
import logging
import inspect
import warnings
from collections import OrderedDict

from pydantic import BaseModel, Field

from . import types, enums, errors, fields, bases
from ._types import FuncType
from ._compat import model_rebuild, field_validator
from ._builder import serialize_base64
from .generator import partial_models_ctx, PartialModelField


log: logging.Logger = logging.getLogger(__name__)
_created_partial_types: Set[str] = set()

class LiteLLM_BudgetTable(bases.BaseLiteLLM_BudgetTable):
    """Represents a LiteLLM_BudgetTable record"""

    budget_id: _str
    max_budget: Optional[_float] = None
    soft_budget: Optional[_float] = None
    max_parallel_requests: Optional[_int] = None
    tpm_limit: Optional[_int] = None
    rpm_limit: Optional[_int] = None
    model_max_budget: Optional['fields.Json'] = None
    budget_duration: Optional[_str] = None
    budget_reset_at: Optional[datetime.datetime] = None
    created_at: datetime.datetime
    created_by: _str
    updated_at: datetime.datetime
    updated_by: _str
    organization: Optional[List['models.LiteLLM_OrganizationTable']] = None
    projects: Optional[List['models.LiteLLM_ProjectTable']] = None
    keys: Optional[List['models.LiteLLM_VerificationToken']] = None
    end_users: Optional[List['models.LiteLLM_EndUserTable']] = None
    tags: Optional[List['models.LiteLLM_TagTable']] = None
    team_membership: Optional[List['models.LiteLLM_TeamMembership']] = None
    organization_membership: Optional[List['models.LiteLLM_OrganizationMembership']] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_BudgetTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_BudgetTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_BudgetTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_BudgetTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_BudgetTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_BudgetTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_BudgetTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_BudgetTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_BudgetTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_BudgetTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True

            if exclude_relational_fields:
                fields = {
                    key: data
                    for key, data in fields.items()
                    if key not in _LiteLLM_BudgetTable_relational_fields
                }

            if relations:
                for field, type_ in relations.items():
                    if field not in _LiteLLM_BudgetTable_relational_fields:
                        raise errors.UnknownRelationalFieldError('LiteLLM_BudgetTable', field)

                    # TODO: this method of validating types is not ideal
                    # as it means we cannot two create partial types that
                    # reference each other
                    if type_ not in _created_partial_types:
                        raise ValueError(
                            f'Unknown partial type: "{type_}". '
                            f'Did you remember to generate the {type_} type before this one?'
                        )

                    # TODO: support non prisma.partials models
                    info = fields[field]
                    if info['is_list']:
                        info['type'] = f'List[\'partials.{type_}\']'
                    else:
                        info['type'] = f'\'partials.{type_}\''
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_BudgetTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_BudgetTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_CredentialsTable(bases.BaseLiteLLM_CredentialsTable):
    """Represents a LiteLLM_CredentialsTable record"""

    credential_id: _str
    credential_name: _str
    credential_values: 'fields.Json'
    credential_info: Optional['fields.Json'] = None
    created_at: datetime.datetime
    created_by: _str
    updated_at: datetime.datetime
    updated_by: _str

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_CredentialsTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_CredentialsTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_CredentialsTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_CredentialsTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_CredentialsTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_CredentialsTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_CredentialsTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_CredentialsTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_CredentialsTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_CredentialsTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_CredentialsTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_CredentialsTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_CredentialsTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_ProxyModelTable(bases.BaseLiteLLM_ProxyModelTable):
    """Represents a LiteLLM_ProxyModelTable record"""

    model_id: _str
    model_name: _str
    litellm_params: 'fields.Json'
    model_info: Optional['fields.Json'] = None
    created_at: datetime.datetime
    created_by: _str
    updated_at: datetime.datetime
    updated_by: _str

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_ProxyModelTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_ProxyModelTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_ProxyModelTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_ProxyModelTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_ProxyModelTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_ProxyModelTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_ProxyModelTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_ProxyModelTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ProxyModelTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ProxyModelTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_ProxyModelTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_ProxyModelTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_ProxyModelTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_AgentsTable(bases.BaseLiteLLM_AgentsTable):
    """Represents a LiteLLM_AgentsTable record"""

    agent_id: _str
    agent_name: _str
    litellm_params: Optional['fields.Json'] = None
    agent_card_params: 'fields.Json'
    static_headers: Optional['fields.Json'] = None
    extra_headers: List[_str]
    agent_access_groups: List[_str]
    object_permission_id: Optional[_str] = None
    object_permission: Optional['models.LiteLLM_ObjectPermissionTable'] = None
    spend: _float
    tpm_limit: Optional[_int] = None
    rpm_limit: Optional[_int] = None
    session_tpm_limit: Optional[_int] = None
    session_rpm_limit: Optional[_int] = None
    created_at: datetime.datetime
    created_by: _str
    updated_at: datetime.datetime
    updated_by: _str

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )

    @field_validator('extra_headers', 'agent_access_groups', pre=True, allow_reuse=True)
    @classmethod
    def _transform_required_list_fields(cls, value: object) -> object:
        # When using raw queries, some databases will return `None` for an array field that has not been set yet.
        #
        # In our case we want to use an empty list instead as that is the internal Prisma behaviour and we want
        # to use the same consistent structure between the core ORM and raw queries. For example, if we updated
        # our type definitions to include `None` for `List` fields then it would be misleading as it will only
        # ever be `None` in raw queries.
        if value is None:
            return []

        return value

    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_AgentsTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_AgentsTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_AgentsTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_AgentsTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_AgentsTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_AgentsTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_AgentsTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_AgentsTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_AgentsTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_AgentsTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True

            if exclude_relational_fields:
                fields = {
                    key: data
                    for key, data in fields.items()
                    if key not in _LiteLLM_AgentsTable_relational_fields
                }

            if relations:
                for field, type_ in relations.items():
                    if field not in _LiteLLM_AgentsTable_relational_fields:
                        raise errors.UnknownRelationalFieldError('LiteLLM_AgentsTable', field)

                    # TODO: this method of validating types is not ideal
                    # as it means we cannot two create partial types that
                    # reference each other
                    if type_ not in _created_partial_types:
                        raise ValueError(
                            f'Unknown partial type: "{type_}". '
                            f'Did you remember to generate the {type_} type before this one?'
                        )

                    # TODO: support non prisma.partials models
                    info = fields[field]
                    if info['is_list']:
                        info['type'] = f'List[\'partials.{type_}\']'
                    else:
                        info['type'] = f'\'partials.{type_}\''
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_AgentsTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_AgentsTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_OrganizationTable(bases.BaseLiteLLM_OrganizationTable):
    """Represents a LiteLLM_OrganizationTable record"""

    organization_id: _str
    organization_alias: _str
    budget_id: _str
    metadata: 'fields.Json'
    models: List[_str]
    spend: _float
    model_spend: 'fields.Json'
    object_permission_id: Optional[_str] = None
    created_at: datetime.datetime
    created_by: _str
    updated_at: datetime.datetime
    updated_by: _str
    litellm_budget_table: Optional['models.LiteLLM_BudgetTable'] = None
    teams: Optional[List['models.LiteLLM_TeamTable']] = None
    users: Optional[List['models.LiteLLM_UserTable']] = None
    keys: Optional[List['models.LiteLLM_VerificationToken']] = None
    members: Optional[List['models.LiteLLM_OrganizationMembership']] = None
    object_permission: Optional['models.LiteLLM_ObjectPermissionTable'] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )

    @field_validator('models', pre=True, allow_reuse=True)
    @classmethod
    def _transform_required_list_fields(cls, value: object) -> object:
        # When using raw queries, some databases will return `None` for an array field that has not been set yet.
        #
        # In our case we want to use an empty list instead as that is the internal Prisma behaviour and we want
        # to use the same consistent structure between the core ORM and raw queries. For example, if we updated
        # our type definitions to include `None` for `List` fields then it would be misleading as it will only
        # ever be `None` in raw queries.
        if value is None:
            return []

        return value

    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_OrganizationTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_OrganizationTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_OrganizationTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_OrganizationTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_OrganizationTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_OrganizationTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_OrganizationTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_OrganizationTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_OrganizationTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_OrganizationTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True

            if exclude_relational_fields:
                fields = {
                    key: data
                    for key, data in fields.items()
                    if key not in _LiteLLM_OrganizationTable_relational_fields
                }

            if relations:
                for field, type_ in relations.items():
                    if field not in _LiteLLM_OrganizationTable_relational_fields:
                        raise errors.UnknownRelationalFieldError('LiteLLM_OrganizationTable', field)

                    # TODO: this method of validating types is not ideal
                    # as it means we cannot two create partial types that
                    # reference each other
                    if type_ not in _created_partial_types:
                        raise ValueError(
                            f'Unknown partial type: "{type_}". '
                            f'Did you remember to generate the {type_} type before this one?'
                        )

                    # TODO: support non prisma.partials models
                    info = fields[field]
                    if info['is_list']:
                        info['type'] = f'List[\'partials.{type_}\']'
                    else:
                        info['type'] = f'\'partials.{type_}\''
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_OrganizationTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_OrganizationTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_ModelTable(bases.BaseLiteLLM_ModelTable):
    """Represents a LiteLLM_ModelTable record"""

    id: _int
    model_aliases: Optional['fields.Json'] = None
    created_at: datetime.datetime
    created_by: _str
    updated_at: datetime.datetime
    updated_by: _str
    team: Optional['models.LiteLLM_TeamTable'] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_ModelTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_ModelTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_ModelTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_ModelTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_ModelTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_ModelTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_ModelTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_ModelTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ModelTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ModelTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True

            if exclude_relational_fields:
                fields = {
                    key: data
                    for key, data in fields.items()
                    if key not in _LiteLLM_ModelTable_relational_fields
                }

            if relations:
                for field, type_ in relations.items():
                    if field not in _LiteLLM_ModelTable_relational_fields:
                        raise errors.UnknownRelationalFieldError('LiteLLM_ModelTable', field)

                    # TODO: this method of validating types is not ideal
                    # as it means we cannot two create partial types that
                    # reference each other
                    if type_ not in _created_partial_types:
                        raise ValueError(
                            f'Unknown partial type: "{type_}". '
                            f'Did you remember to generate the {type_} type before this one?'
                        )

                    # TODO: support non prisma.partials models
                    info = fields[field]
                    if info['is_list']:
                        info['type'] = f'List[\'partials.{type_}\']'
                    else:
                        info['type'] = f'\'partials.{type_}\''
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_ModelTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_ModelTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_TeamTable(bases.BaseLiteLLM_TeamTable):
    """Represents a LiteLLM_TeamTable record"""

    team_id: _str
    team_alias: Optional[_str] = None
    organization_id: Optional[_str] = None
    object_permission_id: Optional[_str] = None
    admins: List[_str]
    members: List[_str]
    members_with_roles: 'fields.Json'
    metadata: 'fields.Json'
    max_budget: Optional[_float] = None
    soft_budget: Optional[_float] = None
    spend: _float
    models: List[_str]
    max_parallel_requests: Optional[_int] = None
    tpm_limit: Optional[_int] = None
    rpm_limit: Optional[_int] = None
    budget_duration: Optional[_str] = None
    budget_reset_at: Optional[datetime.datetime] = None
    blocked: _bool
    created_at: datetime.datetime
    updated_at: datetime.datetime
    model_spend: 'fields.Json'
    model_max_budget: 'fields.Json'
    router_settings: Optional['fields.Json'] = None
    team_member_permissions: List[_str]
    access_group_ids: List[_str]
    policies: List[_str]
    model_id: Optional[_int] = None
    allow_team_guardrail_config: _bool
    litellm_organization_table: Optional['models.LiteLLM_OrganizationTable'] = None
    litellm_model_table: Optional['models.LiteLLM_ModelTable'] = None
    object_permission: Optional['models.LiteLLM_ObjectPermissionTable'] = None
    projects: Optional[List['models.LiteLLM_ProjectTable']] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )

    @field_validator('admins', 'members', 'models', 'team_member_permissions', 'access_group_ids', 'policies', pre=True, allow_reuse=True)
    @classmethod
    def _transform_required_list_fields(cls, value: object) -> object:
        # When using raw queries, some databases will return `None` for an array field that has not been set yet.
        #
        # In our case we want to use an empty list instead as that is the internal Prisma behaviour and we want
        # to use the same consistent structure between the core ORM and raw queries. For example, if we updated
        # our type definitions to include `None` for `List` fields then it would be misleading as it will only
        # ever be `None` in raw queries.
        if value is None:
            return []

        return value

    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_TeamTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_TeamTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_TeamTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_TeamTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_TeamTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_TeamTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_TeamTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_TeamTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_TeamTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_TeamTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True

            if exclude_relational_fields:
                fields = {
                    key: data
                    for key, data in fields.items()
                    if key not in _LiteLLM_TeamTable_relational_fields
                }

            if relations:
                for field, type_ in relations.items():
                    if field not in _LiteLLM_TeamTable_relational_fields:
                        raise errors.UnknownRelationalFieldError('LiteLLM_TeamTable', field)

                    # TODO: this method of validating types is not ideal
                    # as it means we cannot two create partial types that
                    # reference each other
                    if type_ not in _created_partial_types:
                        raise ValueError(
                            f'Unknown partial type: "{type_}". '
                            f'Did you remember to generate the {type_} type before this one?'
                        )

                    # TODO: support non prisma.partials models
                    info = fields[field]
                    if info['is_list']:
                        info['type'] = f'List[\'partials.{type_}\']'
                    else:
                        info['type'] = f'\'partials.{type_}\''
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_TeamTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_TeamTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_ProjectTable(bases.BaseLiteLLM_ProjectTable):
    """Represents a LiteLLM_ProjectTable record"""

    project_id: _str
    project_alias: Optional[_str] = None
    description: Optional[_str] = None
    team_id: Optional[_str] = None
    budget_id: Optional[_str] = None
    metadata: 'fields.Json'
    models: List[_str]
    spend: _float
    model_spend: 'fields.Json'
    model_rpm_limit: 'fields.Json'
    model_tpm_limit: 'fields.Json'
    blocked: _bool
    object_permission_id: Optional[_str] = None
    created_at: datetime.datetime
    created_by: _str
    updated_at: datetime.datetime
    updated_by: _str
    litellm_team_table: Optional['models.LiteLLM_TeamTable'] = None
    litellm_budget_table: Optional['models.LiteLLM_BudgetTable'] = None
    keys: Optional[List['models.LiteLLM_VerificationToken']] = None
    object_permission: Optional['models.LiteLLM_ObjectPermissionTable'] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )

    @field_validator('models', pre=True, allow_reuse=True)
    @classmethod
    def _transform_required_list_fields(cls, value: object) -> object:
        # When using raw queries, some databases will return `None` for an array field that has not been set yet.
        #
        # In our case we want to use an empty list instead as that is the internal Prisma behaviour and we want
        # to use the same consistent structure between the core ORM and raw queries. For example, if we updated
        # our type definitions to include `None` for `List` fields then it would be misleading as it will only
        # ever be `None` in raw queries.
        if value is None:
            return []

        return value

    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_ProjectTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_ProjectTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_ProjectTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_ProjectTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_ProjectTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_ProjectTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_ProjectTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_ProjectTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ProjectTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ProjectTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True

            if exclude_relational_fields:
                fields = {
                    key: data
                    for key, data in fields.items()
                    if key not in _LiteLLM_ProjectTable_relational_fields
                }

            if relations:
                for field, type_ in relations.items():
                    if field not in _LiteLLM_ProjectTable_relational_fields:
                        raise errors.UnknownRelationalFieldError('LiteLLM_ProjectTable', field)

                    # TODO: this method of validating types is not ideal
                    # as it means we cannot two create partial types that
                    # reference each other
                    if type_ not in _created_partial_types:
                        raise ValueError(
                            f'Unknown partial type: "{type_}". '
                            f'Did you remember to generate the {type_} type before this one?'
                        )

                    # TODO: support non prisma.partials models
                    info = fields[field]
                    if info['is_list']:
                        info['type'] = f'List[\'partials.{type_}\']'
                    else:
                        info['type'] = f'\'partials.{type_}\''
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_ProjectTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_ProjectTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_DeletedTeamTable(bases.BaseLiteLLM_DeletedTeamTable):
    """Represents a LiteLLM_DeletedTeamTable record"""

    id: _str
    team_id: _str
    team_alias: Optional[_str] = None
    organization_id: Optional[_str] = None
    object_permission_id: Optional[_str] = None
    admins: List[_str]
    members: List[_str]
    members_with_roles: 'fields.Json'
    metadata: 'fields.Json'
    max_budget: Optional[_float] = None
    soft_budget: Optional[_float] = None
    spend: _float
    models: List[_str]
    max_parallel_requests: Optional[_int] = None
    tpm_limit: Optional[_int] = None
    rpm_limit: Optional[_int] = None
    budget_duration: Optional[_str] = None
    budget_reset_at: Optional[datetime.datetime] = None
    blocked: _bool
    model_spend: 'fields.Json'
    model_max_budget: 'fields.Json'
    router_settings: Optional['fields.Json'] = None
    team_member_permissions: List[_str]
    access_group_ids: List[_str]
    policies: List[_str]
    model_id: Optional[_int] = None
    allow_team_guardrail_config: _bool
    created_at: Optional[datetime.datetime] = None
    updated_at: Optional[datetime.datetime] = None
    deleted_at: datetime.datetime
    deleted_by: Optional[_str] = None
    deleted_by_api_key: Optional[_str] = None
    litellm_changed_by: Optional[_str] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )

    @field_validator('admins', 'members', 'models', 'team_member_permissions', 'access_group_ids', 'policies', pre=True, allow_reuse=True)
    @classmethod
    def _transform_required_list_fields(cls, value: object) -> object:
        # When using raw queries, some databases will return `None` for an array field that has not been set yet.
        #
        # In our case we want to use an empty list instead as that is the internal Prisma behaviour and we want
        # to use the same consistent structure between the core ORM and raw queries. For example, if we updated
        # our type definitions to include `None` for `List` fields then it would be misleading as it will only
        # ever be `None` in raw queries.
        if value is None:
            return []

        return value

    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_DeletedTeamTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_DeletedTeamTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_DeletedTeamTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_DeletedTeamTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_DeletedTeamTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_DeletedTeamTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_DeletedTeamTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_DeletedTeamTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DeletedTeamTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DeletedTeamTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_DeletedTeamTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_DeletedTeamTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_DeletedTeamTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_UserTable(bases.BaseLiteLLM_UserTable):
    """Represents a LiteLLM_UserTable record"""

    user_id: _str
    user_alias: Optional[_str] = None
    team_id: Optional[_str] = None
    sso_user_id: Optional[_str] = None
    organization_id: Optional[_str] = None
    object_permission_id: Optional[_str] = None
    password: Optional[_str] = None
    teams: List[_str]
    user_role: Optional[_str] = None
    max_budget: Optional[_float] = None
    spend: _float
    user_email: Optional[_str] = None
    models: List[_str]
    metadata: 'fields.Json'
    max_parallel_requests: Optional[_int] = None
    tpm_limit: Optional[_int] = None
    rpm_limit: Optional[_int] = None
    budget_duration: Optional[_str] = None
    budget_reset_at: Optional[datetime.datetime] = None
    allowed_cache_controls: List[_str]
    policies: List[_str]
    model_spend: 'fields.Json'
    model_max_budget: 'fields.Json'
    created_at: Optional[datetime.datetime] = None
    updated_at: Optional[datetime.datetime] = None
    litellm_organization_table: Optional['models.LiteLLM_OrganizationTable'] = None
    organization_memberships: Optional[List['models.LiteLLM_OrganizationMembership']] = None
    invitations_created: Optional[List['models.LiteLLM_InvitationLink']] = None
    invitations_updated: Optional[List['models.LiteLLM_InvitationLink']] = None
    invitations_user: Optional[List['models.LiteLLM_InvitationLink']] = None
    object_permission: Optional['models.LiteLLM_ObjectPermissionTable'] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )

    @field_validator('teams', 'models', 'allowed_cache_controls', 'policies', pre=True, allow_reuse=True)
    @classmethod
    def _transform_required_list_fields(cls, value: object) -> object:
        # When using raw queries, some databases will return `None` for an array field that has not been set yet.
        #
        # In our case we want to use an empty list instead as that is the internal Prisma behaviour and we want
        # to use the same consistent structure between the core ORM and raw queries. For example, if we updated
        # our type definitions to include `None` for `List` fields then it would be misleading as it will only
        # ever be `None` in raw queries.
        if value is None:
            return []

        return value

    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_UserTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_UserTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_UserTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_UserTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_UserTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_UserTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_UserTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_UserTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_UserTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_UserTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True

            if exclude_relational_fields:
                fields = {
                    key: data
                    for key, data in fields.items()
                    if key not in _LiteLLM_UserTable_relational_fields
                }

            if relations:
                for field, type_ in relations.items():
                    if field not in _LiteLLM_UserTable_relational_fields:
                        raise errors.UnknownRelationalFieldError('LiteLLM_UserTable', field)

                    # TODO: this method of validating types is not ideal
                    # as it means we cannot two create partial types that
                    # reference each other
                    if type_ not in _created_partial_types:
                        raise ValueError(
                            f'Unknown partial type: "{type_}". '
                            f'Did you remember to generate the {type_} type before this one?'
                        )

                    # TODO: support non prisma.partials models
                    info = fields[field]
                    if info['is_list']:
                        info['type'] = f'List[\'partials.{type_}\']'
                    else:
                        info['type'] = f'\'partials.{type_}\''
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_UserTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_UserTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_ObjectPermissionTable(bases.BaseLiteLLM_ObjectPermissionTable):
    """Represents a LiteLLM_ObjectPermissionTable record"""

    object_permission_id: _str
    mcp_servers: List[_str]
    mcp_access_groups: List[_str]
    mcp_tool_permissions: Optional['fields.Json'] = None
    vector_stores: List[_str]
    agents: List[_str]
    agent_access_groups: List[_str]
    blocked_tools: List[_str]
    teams: Optional[List['models.LiteLLM_TeamTable']] = None
    projects: Optional[List['models.LiteLLM_ProjectTable']] = None
    verification_tokens: Optional[List['models.LiteLLM_VerificationToken']] = None
    organizations: Optional[List['models.LiteLLM_OrganizationTable']] = None
    users: Optional[List['models.LiteLLM_UserTable']] = None
    end_users: Optional[List['models.LiteLLM_EndUserTable']] = None
    agents_table: Optional[List['models.LiteLLM_AgentsTable']] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )

    @field_validator('mcp_servers', 'mcp_access_groups', 'vector_stores', 'agents', 'agent_access_groups', 'blocked_tools', pre=True, allow_reuse=True)
    @classmethod
    def _transform_required_list_fields(cls, value: object) -> object:
        # When using raw queries, some databases will return `None` for an array field that has not been set yet.
        #
        # In our case we want to use an empty list instead as that is the internal Prisma behaviour and we want
        # to use the same consistent structure between the core ORM and raw queries. For example, if we updated
        # our type definitions to include `None` for `List` fields then it would be misleading as it will only
        # ever be `None` in raw queries.
        if value is None:
            return []

        return value

    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_ObjectPermissionTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_ObjectPermissionTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_ObjectPermissionTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_ObjectPermissionTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_ObjectPermissionTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_ObjectPermissionTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_ObjectPermissionTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_ObjectPermissionTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ObjectPermissionTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ObjectPermissionTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True

            if exclude_relational_fields:
                fields = {
                    key: data
                    for key, data in fields.items()
                    if key not in _LiteLLM_ObjectPermissionTable_relational_fields
                }

            if relations:
                for field, type_ in relations.items():
                    if field not in _LiteLLM_ObjectPermissionTable_relational_fields:
                        raise errors.UnknownRelationalFieldError('LiteLLM_ObjectPermissionTable', field)

                    # TODO: this method of validating types is not ideal
                    # as it means we cannot two create partial types that
                    # reference each other
                    if type_ not in _created_partial_types:
                        raise ValueError(
                            f'Unknown partial type: "{type_}". '
                            f'Did you remember to generate the {type_} type before this one?'
                        )

                    # TODO: support non prisma.partials models
                    info = fields[field]
                    if info['is_list']:
                        info['type'] = f'List[\'partials.{type_}\']'
                    else:
                        info['type'] = f'\'partials.{type_}\''
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_ObjectPermissionTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_ObjectPermissionTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_MCPServerTable(bases.BaseLiteLLM_MCPServerTable):
    """Represents a LiteLLM_MCPServerTable record"""

    server_id: _str
    server_name: Optional[_str] = None
    alias: Optional[_str] = None
    description: Optional[_str] = None
    url: Optional[_str] = None
    spec_path: Optional[_str] = None
    transport: _str
    auth_type: Optional[_str] = None
    credentials: Optional['fields.Json'] = None
    created_at: Optional[datetime.datetime] = None
    created_by: Optional[_str] = None
    updated_at: Optional[datetime.datetime] = None
    updated_by: Optional[_str] = None
    mcp_info: Optional['fields.Json'] = None
    mcp_access_groups: List[_str]
    allowed_tools: List[_str]
    tool_name_to_display_name: Optional['fields.Json'] = None
    tool_name_to_description: Optional['fields.Json'] = None
    extra_headers: List[_str]
    static_headers: Optional['fields.Json'] = None
    status: Optional[_str] = None
    last_health_check: Optional[datetime.datetime] = None
    health_check_error: Optional[_str] = None
    command: Optional[_str] = None
    args: List[_str]
    env: Optional['fields.Json'] = None
    authorization_url: Optional[_str] = None
    token_url: Optional[_str] = None
    registration_url: Optional[_str] = None
    allow_all_keys: _bool
    available_on_public_internet: _bool
    is_byok: _bool
    byok_description: List[_str]
    byok_api_key_help_url: Optional[_str] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )

    @field_validator('mcp_access_groups', 'allowed_tools', 'extra_headers', 'args', 'byok_description', pre=True, allow_reuse=True)
    @classmethod
    def _transform_required_list_fields(cls, value: object) -> object:
        # When using raw queries, some databases will return `None` for an array field that has not been set yet.
        #
        # In our case we want to use an empty list instead as that is the internal Prisma behaviour and we want
        # to use the same consistent structure between the core ORM and raw queries. For example, if we updated
        # our type definitions to include `None` for `List` fields then it would be misleading as it will only
        # ever be `None` in raw queries.
        if value is None:
            return []

        return value

    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_MCPServerTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_MCPServerTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_MCPServerTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_MCPServerTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_MCPServerTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_MCPServerTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_MCPServerTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_MCPServerTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_MCPServerTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_MCPServerTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_MCPServerTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_MCPServerTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_MCPServerTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_MCPUserCredentials(bases.BaseLiteLLM_MCPUserCredentials):
    """Represents a LiteLLM_MCPUserCredentials record"""

    id: _str
    user_id: _str
    server_id: _str
    credential_b64: _str
    created_at: datetime.datetime
    updated_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_MCPUserCredentialsKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_MCPUserCredentialsKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_MCPUserCredentialsKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_MCPUserCredentialsKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_MCPUserCredentialsRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_MCPUserCredentialsKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_MCPUserCredentials_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_MCPUserCredentials_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_MCPUserCredentials_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_MCPUserCredentials_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_MCPUserCredentials" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_MCPUserCredentials / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_MCPUserCredentials',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_VerificationToken(bases.BaseLiteLLM_VerificationToken):
    """Represents a LiteLLM_VerificationToken record"""

    token: _str
    key_name: Optional[_str] = None
    key_alias: Optional[_str] = None
    soft_budget_cooldown: _bool
    spend: _float
    expires: Optional[datetime.datetime] = None
    models: List[_str]
    aliases: 'fields.Json'
    config: 'fields.Json'
    router_settings: Optional['fields.Json'] = None
    user_id: Optional[_str] = None
    team_id: Optional[_str] = None
    agent_id: Optional[_str] = None
    project_id: Optional[_str] = None
    permissions: 'fields.Json'
    max_parallel_requests: Optional[_int] = None
    metadata: 'fields.Json'
    blocked: Optional[_bool] = None
    tpm_limit: Optional[_int] = None
    rpm_limit: Optional[_int] = None
    max_budget: Optional[_float] = None
    budget_duration: Optional[_str] = None
    budget_reset_at: Optional[datetime.datetime] = None
    allowed_cache_controls: List[_str]
    allowed_routes: List[_str]
    policies: List[_str]
    access_group_ids: List[_str]
    model_spend: 'fields.Json'
    model_max_budget: 'fields.Json'
    budget_id: Optional[_str] = None
    organization_id: Optional[_str] = None
    object_permission_id: Optional[_str] = None
    created_at: Optional[datetime.datetime] = None
    created_by: Optional[_str] = None
    updated_at: Optional[datetime.datetime] = None
    updated_by: Optional[_str] = None
    last_active: Optional[datetime.datetime] = None
    rotation_count: Optional[_int] = None
    auto_rotate: Optional[_bool] = None
    rotation_interval: Optional[_str] = None
    last_rotation_at: Optional[datetime.datetime] = None
    key_rotation_at: Optional[datetime.datetime] = None
    litellm_budget_table: Optional['models.LiteLLM_BudgetTable'] = None
    litellm_organization_table: Optional['models.LiteLLM_OrganizationTable'] = None
    litellm_project_table: Optional['models.LiteLLM_ProjectTable'] = None
    object_permission: Optional['models.LiteLLM_ObjectPermissionTable'] = None
    jwt_key_mappings: Optional[List['models.LiteLLM_JWTKeyMapping']] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )

    @field_validator('models', 'allowed_cache_controls', 'allowed_routes', 'policies', 'access_group_ids', pre=True, allow_reuse=True)
    @classmethod
    def _transform_required_list_fields(cls, value: object) -> object:
        # When using raw queries, some databases will return `None` for an array field that has not been set yet.
        #
        # In our case we want to use an empty list instead as that is the internal Prisma behaviour and we want
        # to use the same consistent structure between the core ORM and raw queries. For example, if we updated
        # our type definitions to include `None` for `List` fields then it would be misleading as it will only
        # ever be `None` in raw queries.
        if value is None:
            return []

        return value

    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_VerificationTokenKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_VerificationTokenKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_VerificationTokenKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_VerificationTokenKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_VerificationTokenRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_VerificationTokenKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_VerificationToken_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_VerificationToken_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_VerificationToken_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_VerificationToken_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True

            if exclude_relational_fields:
                fields = {
                    key: data
                    for key, data in fields.items()
                    if key not in _LiteLLM_VerificationToken_relational_fields
                }

            if relations:
                for field, type_ in relations.items():
                    if field not in _LiteLLM_VerificationToken_relational_fields:
                        raise errors.UnknownRelationalFieldError('LiteLLM_VerificationToken', field)

                    # TODO: this method of validating types is not ideal
                    # as it means we cannot two create partial types that
                    # reference each other
                    if type_ not in _created_partial_types:
                        raise ValueError(
                            f'Unknown partial type: "{type_}". '
                            f'Did you remember to generate the {type_} type before this one?'
                        )

                    # TODO: support non prisma.partials models
                    info = fields[field]
                    if info['is_list']:
                        info['type'] = f'List[\'partials.{type_}\']'
                    else:
                        info['type'] = f'\'partials.{type_}\''
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_VerificationToken / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_VerificationToken',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_JWTKeyMapping(bases.BaseLiteLLM_JWTKeyMapping):
    """Represents a LiteLLM_JWTKeyMapping record"""

    id: _str
    jwt_claim_name: _str
    jwt_claim_value: _str
    token: _str
    description: Optional[_str] = None
    is_active: _bool
    created_at: datetime.datetime
    created_by: Optional[_str] = None
    updated_at: datetime.datetime
    updated_by: Optional[_str] = None
    litellm_verification_token: Optional['models.LiteLLM_VerificationToken'] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_JWTKeyMappingKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_JWTKeyMappingKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_JWTKeyMappingKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_JWTKeyMappingKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_JWTKeyMappingRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_JWTKeyMappingKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_JWTKeyMapping_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_JWTKeyMapping_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_JWTKeyMapping_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_JWTKeyMapping_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True

            if exclude_relational_fields:
                fields = {
                    key: data
                    for key, data in fields.items()
                    if key not in _LiteLLM_JWTKeyMapping_relational_fields
                }

            if relations:
                for field, type_ in relations.items():
                    if field not in _LiteLLM_JWTKeyMapping_relational_fields:
                        raise errors.UnknownRelationalFieldError('LiteLLM_JWTKeyMapping', field)

                    # TODO: this method of validating types is not ideal
                    # as it means we cannot two create partial types that
                    # reference each other
                    if type_ not in _created_partial_types:
                        raise ValueError(
                            f'Unknown partial type: "{type_}". '
                            f'Did you remember to generate the {type_} type before this one?'
                        )

                    # TODO: support non prisma.partials models
                    info = fields[field]
                    if info['is_list']:
                        info['type'] = f'List[\'partials.{type_}\']'
                    else:
                        info['type'] = f'\'partials.{type_}\''
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_JWTKeyMapping / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_JWTKeyMapping',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_DeprecatedVerificationToken(bases.BaseLiteLLM_DeprecatedVerificationToken):
    """Represents a LiteLLM_DeprecatedVerificationToken record"""

    id: _str
    token: _str
    active_token_id: _str
    revoke_at: datetime.datetime
    created_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_DeprecatedVerificationTokenKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_DeprecatedVerificationTokenKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_DeprecatedVerificationTokenKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_DeprecatedVerificationTokenKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_DeprecatedVerificationTokenRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_DeprecatedVerificationTokenKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_DeprecatedVerificationToken_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_DeprecatedVerificationToken_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DeprecatedVerificationToken_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DeprecatedVerificationToken_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_DeprecatedVerificationToken" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_DeprecatedVerificationToken / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_DeprecatedVerificationToken',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_DeletedVerificationToken(bases.BaseLiteLLM_DeletedVerificationToken):
    """Represents a LiteLLM_DeletedVerificationToken record"""

    id: _str
    token: _str
    key_name: Optional[_str] = None
    key_alias: Optional[_str] = None
    soft_budget_cooldown: _bool
    spend: _float
    expires: Optional[datetime.datetime] = None
    models: List[_str]
    aliases: 'fields.Json'
    config: 'fields.Json'
    user_id: Optional[_str] = None
    team_id: Optional[_str] = None
    agent_id: Optional[_str] = None
    project_id: Optional[_str] = None
    permissions: 'fields.Json'
    max_parallel_requests: Optional[_int] = None
    metadata: 'fields.Json'
    blocked: Optional[_bool] = None
    tpm_limit: Optional[_int] = None
    rpm_limit: Optional[_int] = None
    max_budget: Optional[_float] = None
    budget_duration: Optional[_str] = None
    budget_reset_at: Optional[datetime.datetime] = None
    allowed_cache_controls: List[_str]
    allowed_routes: List[_str]
    policies: List[_str]
    access_group_ids: List[_str]
    model_spend: 'fields.Json'
    model_max_budget: 'fields.Json'
    router_settings: Optional['fields.Json'] = None
    budget_id: Optional[_str] = None
    organization_id: Optional[_str] = None
    object_permission_id: Optional[_str] = None
    created_at: Optional[datetime.datetime] = None
    created_by: Optional[_str] = None
    updated_at: Optional[datetime.datetime] = None
    updated_by: Optional[_str] = None
    last_active: Optional[datetime.datetime] = None
    rotation_count: Optional[_int] = None
    auto_rotate: Optional[_bool] = None
    rotation_interval: Optional[_str] = None
    last_rotation_at: Optional[datetime.datetime] = None
    key_rotation_at: Optional[datetime.datetime] = None
    deleted_at: datetime.datetime
    deleted_by: Optional[_str] = None
    deleted_by_api_key: Optional[_str] = None
    litellm_changed_by: Optional[_str] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )

    @field_validator('models', 'allowed_cache_controls', 'allowed_routes', 'policies', 'access_group_ids', pre=True, allow_reuse=True)
    @classmethod
    def _transform_required_list_fields(cls, value: object) -> object:
        # When using raw queries, some databases will return `None` for an array field that has not been set yet.
        #
        # In our case we want to use an empty list instead as that is the internal Prisma behaviour and we want
        # to use the same consistent structure between the core ORM and raw queries. For example, if we updated
        # our type definitions to include `None` for `List` fields then it would be misleading as it will only
        # ever be `None` in raw queries.
        if value is None:
            return []

        return value

    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_DeletedVerificationTokenKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_DeletedVerificationTokenKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_DeletedVerificationTokenKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_DeletedVerificationTokenKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_DeletedVerificationTokenRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_DeletedVerificationTokenKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_DeletedVerificationToken_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_DeletedVerificationToken_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DeletedVerificationToken_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DeletedVerificationToken_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_DeletedVerificationToken" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_DeletedVerificationToken / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_DeletedVerificationToken',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_EndUserTable(bases.BaseLiteLLM_EndUserTable):
    """Represents a LiteLLM_EndUserTable record"""

    user_id: _str
    alias: Optional[_str] = None
    spend: _float
    allowed_model_region: Optional[_str] = None
    default_model: Optional[_str] = None
    budget_id: Optional[_str] = None
    object_permission_id: Optional[_str] = None
    litellm_budget_table: Optional['models.LiteLLM_BudgetTable'] = None
    object_permission: Optional['models.LiteLLM_ObjectPermissionTable'] = None
    blocked: _bool

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_EndUserTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_EndUserTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_EndUserTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_EndUserTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_EndUserTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_EndUserTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_EndUserTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_EndUserTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_EndUserTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_EndUserTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True

            if exclude_relational_fields:
                fields = {
                    key: data
                    for key, data in fields.items()
                    if key not in _LiteLLM_EndUserTable_relational_fields
                }

            if relations:
                for field, type_ in relations.items():
                    if field not in _LiteLLM_EndUserTable_relational_fields:
                        raise errors.UnknownRelationalFieldError('LiteLLM_EndUserTable', field)

                    # TODO: this method of validating types is not ideal
                    # as it means we cannot two create partial types that
                    # reference each other
                    if type_ not in _created_partial_types:
                        raise ValueError(
                            f'Unknown partial type: "{type_}". '
                            f'Did you remember to generate the {type_} type before this one?'
                        )

                    # TODO: support non prisma.partials models
                    info = fields[field]
                    if info['is_list']:
                        info['type'] = f'List[\'partials.{type_}\']'
                    else:
                        info['type'] = f'\'partials.{type_}\''
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_EndUserTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_EndUserTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_TagTable(bases.BaseLiteLLM_TagTable):
    """Represents a LiteLLM_TagTable record"""

    tag_name: _str
    description: Optional[_str] = None
    models: List[_str]
    model_info: Optional['fields.Json'] = None
    spend: _float
    budget_id: Optional[_str] = None
    litellm_budget_table: Optional['models.LiteLLM_BudgetTable'] = None
    created_at: datetime.datetime
    created_by: Optional[_str] = None
    updated_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )

    @field_validator('models', pre=True, allow_reuse=True)
    @classmethod
    def _transform_required_list_fields(cls, value: object) -> object:
        # When using raw queries, some databases will return `None` for an array field that has not been set yet.
        #
        # In our case we want to use an empty list instead as that is the internal Prisma behaviour and we want
        # to use the same consistent structure between the core ORM and raw queries. For example, if we updated
        # our type definitions to include `None` for `List` fields then it would be misleading as it will only
        # ever be `None` in raw queries.
        if value is None:
            return []

        return value

    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_TagTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_TagTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_TagTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_TagTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_TagTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_TagTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_TagTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_TagTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_TagTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_TagTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True

            if exclude_relational_fields:
                fields = {
                    key: data
                    for key, data in fields.items()
                    if key not in _LiteLLM_TagTable_relational_fields
                }

            if relations:
                for field, type_ in relations.items():
                    if field not in _LiteLLM_TagTable_relational_fields:
                        raise errors.UnknownRelationalFieldError('LiteLLM_TagTable', field)

                    # TODO: this method of validating types is not ideal
                    # as it means we cannot two create partial types that
                    # reference each other
                    if type_ not in _created_partial_types:
                        raise ValueError(
                            f'Unknown partial type: "{type_}". '
                            f'Did you remember to generate the {type_} type before this one?'
                        )

                    # TODO: support non prisma.partials models
                    info = fields[field]
                    if info['is_list']:
                        info['type'] = f'List[\'partials.{type_}\']'
                    else:
                        info['type'] = f'\'partials.{type_}\''
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_TagTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_TagTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_Config(bases.BaseLiteLLM_Config):
    """Represents a LiteLLM_Config record"""

    param_name: _str
    param_value: Optional['fields.Json'] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_ConfigKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_ConfigKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_ConfigKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_ConfigKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_ConfigRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_ConfigKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_Config_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_Config_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_Config_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_Config_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_Config" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_Config / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_Config',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_SpendLogs(bases.BaseLiteLLM_SpendLogs):
    """Represents a LiteLLM_SpendLogs record"""

    request_id: _str
    call_type: _str
    api_key: _str
    spend: _float
    total_tokens: _int
    prompt_tokens: _int
    completion_tokens: _int
    startTime: datetime.datetime
    endTime: datetime.datetime
    request_duration_ms: Optional[_int] = None
    completionStartTime: Optional[datetime.datetime] = None
    model: _str
    model_id: Optional[_str] = None
    model_group: Optional[_str] = None
    custom_llm_provider: Optional[_str] = None
    api_base: Optional[_str] = None
    user: Optional[_str] = None
    metadata: Optional['fields.Json'] = None
    cache_hit: Optional[_str] = None
    cache_key: Optional[_str] = None
    request_tags: Optional['fields.Json'] = None
    team_id: Optional[_str] = None
    organization_id: Optional[_str] = None
    end_user: Optional[_str] = None
    requester_ip_address: Optional[_str] = None
    messages: Optional['fields.Json'] = None
    response: Optional['fields.Json'] = None
    session_id: Optional[_str] = None
    status: Optional[_str] = None
    mcp_namespaced_tool_name: Optional[_str] = None
    agent_id: Optional[_str] = None
    proxy_server_request: Optional['fields.Json'] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_SpendLogsKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_SpendLogsKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_SpendLogsKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_SpendLogsKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_SpendLogsRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_SpendLogsKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_SpendLogs_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_SpendLogs_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_SpendLogs_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_SpendLogs_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_SpendLogs" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_SpendLogs / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_SpendLogs',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_ErrorLogs(bases.BaseLiteLLM_ErrorLogs):
    """Represents a LiteLLM_ErrorLogs record"""

    request_id: _str
    startTime: datetime.datetime
    endTime: datetime.datetime
    api_base: _str
    model_group: _str
    litellm_model_name: _str
    model_id: _str
    request_kwargs: 'fields.Json'
    exception_type: _str
    exception_string: _str
    status_code: _str

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_ErrorLogsKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_ErrorLogsKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_ErrorLogsKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_ErrorLogsKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_ErrorLogsRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_ErrorLogsKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_ErrorLogs_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_ErrorLogs_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ErrorLogs_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ErrorLogs_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_ErrorLogs" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_ErrorLogs / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_ErrorLogs',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_UserNotifications(bases.BaseLiteLLM_UserNotifications):
    """Represents a LiteLLM_UserNotifications record"""

    request_id: _str
    user_id: _str
    models: List[_str]
    justification: _str
    status: _str

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )

    @field_validator('models', pre=True, allow_reuse=True)
    @classmethod
    def _transform_required_list_fields(cls, value: object) -> object:
        # When using raw queries, some databases will return `None` for an array field that has not been set yet.
        #
        # In our case we want to use an empty list instead as that is the internal Prisma behaviour and we want
        # to use the same consistent structure between the core ORM and raw queries. For example, if we updated
        # our type definitions to include `None` for `List` fields then it would be misleading as it will only
        # ever be `None` in raw queries.
        if value is None:
            return []

        return value

    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_UserNotificationsKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_UserNotificationsKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_UserNotificationsKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_UserNotificationsKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_UserNotificationsRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_UserNotificationsKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_UserNotifications_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_UserNotifications_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_UserNotifications_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_UserNotifications_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_UserNotifications" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_UserNotifications / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_UserNotifications',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_TeamMembership(bases.BaseLiteLLM_TeamMembership):
    """Represents a LiteLLM_TeamMembership record"""

    user_id: _str
    team_id: _str
    spend: _float
    budget_id: Optional[_str] = None
    litellm_budget_table: Optional['models.LiteLLM_BudgetTable'] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_TeamMembershipKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_TeamMembershipKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_TeamMembershipKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_TeamMembershipKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_TeamMembershipRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_TeamMembershipKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_TeamMembership_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_TeamMembership_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_TeamMembership_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_TeamMembership_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True

            if exclude_relational_fields:
                fields = {
                    key: data
                    for key, data in fields.items()
                    if key not in _LiteLLM_TeamMembership_relational_fields
                }

            if relations:
                for field, type_ in relations.items():
                    if field not in _LiteLLM_TeamMembership_relational_fields:
                        raise errors.UnknownRelationalFieldError('LiteLLM_TeamMembership', field)

                    # TODO: this method of validating types is not ideal
                    # as it means we cannot two create partial types that
                    # reference each other
                    if type_ not in _created_partial_types:
                        raise ValueError(
                            f'Unknown partial type: "{type_}". '
                            f'Did you remember to generate the {type_} type before this one?'
                        )

                    # TODO: support non prisma.partials models
                    info = fields[field]
                    if info['is_list']:
                        info['type'] = f'List[\'partials.{type_}\']'
                    else:
                        info['type'] = f'\'partials.{type_}\''
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_TeamMembership / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_TeamMembership',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_OrganizationMembership(bases.BaseLiteLLM_OrganizationMembership):
    """Represents a LiteLLM_OrganizationMembership record"""

    user_id: _str
    organization_id: _str
    user_role: Optional[_str] = None
    spend: Optional[_float] = None
    budget_id: Optional[_str] = None
    created_at: Optional[datetime.datetime] = None
    updated_at: Optional[datetime.datetime] = None
    user: Optional['models.LiteLLM_UserTable'] = None
    organization: Optional['models.LiteLLM_OrganizationTable'] = None
    litellm_budget_table: Optional['models.LiteLLM_BudgetTable'] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_OrganizationMembershipKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_OrganizationMembershipKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_OrganizationMembershipKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_OrganizationMembershipKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_OrganizationMembershipRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_OrganizationMembershipKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_OrganizationMembership_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_OrganizationMembership_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_OrganizationMembership_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_OrganizationMembership_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True

            if exclude_relational_fields:
                fields = {
                    key: data
                    for key, data in fields.items()
                    if key not in _LiteLLM_OrganizationMembership_relational_fields
                }

            if relations:
                for field, type_ in relations.items():
                    if field not in _LiteLLM_OrganizationMembership_relational_fields:
                        raise errors.UnknownRelationalFieldError('LiteLLM_OrganizationMembership', field)

                    # TODO: this method of validating types is not ideal
                    # as it means we cannot two create partial types that
                    # reference each other
                    if type_ not in _created_partial_types:
                        raise ValueError(
                            f'Unknown partial type: "{type_}". '
                            f'Did you remember to generate the {type_} type before this one?'
                        )

                    # TODO: support non prisma.partials models
                    info = fields[field]
                    if info['is_list']:
                        info['type'] = f'List[\'partials.{type_}\']'
                    else:
                        info['type'] = f'\'partials.{type_}\''
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_OrganizationMembership / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_OrganizationMembership',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_InvitationLink(bases.BaseLiteLLM_InvitationLink):
    """Represents a LiteLLM_InvitationLink record"""

    id: _str
    user_id: _str
    is_accepted: _bool
    accepted_at: Optional[datetime.datetime] = None
    expires_at: datetime.datetime
    created_at: datetime.datetime
    created_by: _str
    updated_at: datetime.datetime
    updated_by: _str
    liteLLM_user_table_user: Optional['models.LiteLLM_UserTable'] = None
    liteLLM_user_table_created: Optional['models.LiteLLM_UserTable'] = None
    liteLLM_user_table_updated: Optional['models.LiteLLM_UserTable'] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_InvitationLinkKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_InvitationLinkKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_InvitationLinkKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_InvitationLinkKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_InvitationLinkRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_InvitationLinkKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_InvitationLink_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_InvitationLink_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_InvitationLink_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_InvitationLink_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True

            if exclude_relational_fields:
                fields = {
                    key: data
                    for key, data in fields.items()
                    if key not in _LiteLLM_InvitationLink_relational_fields
                }

            if relations:
                for field, type_ in relations.items():
                    if field not in _LiteLLM_InvitationLink_relational_fields:
                        raise errors.UnknownRelationalFieldError('LiteLLM_InvitationLink', field)

                    # TODO: this method of validating types is not ideal
                    # as it means we cannot two create partial types that
                    # reference each other
                    if type_ not in _created_partial_types:
                        raise ValueError(
                            f'Unknown partial type: "{type_}". '
                            f'Did you remember to generate the {type_} type before this one?'
                        )

                    # TODO: support non prisma.partials models
                    info = fields[field]
                    if info['is_list']:
                        info['type'] = f'List[\'partials.{type_}\']'
                    else:
                        info['type'] = f'\'partials.{type_}\''
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_InvitationLink / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_InvitationLink',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_AuditLog(bases.BaseLiteLLM_AuditLog):
    """Represents a LiteLLM_AuditLog record"""

    id: _str
    updated_at: datetime.datetime
    changed_by: _str
    changed_by_api_key: _str
    action: _str
    table_name: _str
    object_id: _str
    before_value: Optional['fields.Json'] = None
    updated_values: Optional['fields.Json'] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_AuditLogKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_AuditLogKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_AuditLogKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_AuditLogKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_AuditLogRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_AuditLogKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_AuditLog_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_AuditLog_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_AuditLog_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_AuditLog_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_AuditLog" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_AuditLog / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_AuditLog',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_DailyUserSpend(bases.BaseLiteLLM_DailyUserSpend):
    """Represents a LiteLLM_DailyUserSpend record"""

    id: _str
    user_id: Optional[_str] = None
    date: _str
    api_key: _str
    model: Optional[_str] = None
    model_group: Optional[_str] = None
    custom_llm_provider: Optional[_str] = None
    mcp_namespaced_tool_name: Optional[_str] = None
    endpoint: Optional[_str] = None
    prompt_tokens: _int
    completion_tokens: _int
    cache_read_input_tokens: _int
    cache_creation_input_tokens: _int
    spend: _float
    api_requests: _int
    successful_requests: _int
    failed_requests: _int
    created_at: datetime.datetime
    updated_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_DailyUserSpendKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_DailyUserSpendKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_DailyUserSpendKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_DailyUserSpendKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_DailyUserSpendRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_DailyUserSpendKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_DailyUserSpend_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_DailyUserSpend_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DailyUserSpend_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DailyUserSpend_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_DailyUserSpend" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_DailyUserSpend / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_DailyUserSpend',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_DailyOrganizationSpend(bases.BaseLiteLLM_DailyOrganizationSpend):
    """Represents a LiteLLM_DailyOrganizationSpend record"""

    id: _str
    organization_id: Optional[_str] = None
    date: _str
    api_key: _str
    model: Optional[_str] = None
    model_group: Optional[_str] = None
    custom_llm_provider: Optional[_str] = None
    mcp_namespaced_tool_name: Optional[_str] = None
    endpoint: Optional[_str] = None
    prompt_tokens: _int
    completion_tokens: _int
    cache_read_input_tokens: _int
    cache_creation_input_tokens: _int
    spend: _float
    api_requests: _int
    successful_requests: _int
    failed_requests: _int
    created_at: datetime.datetime
    updated_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_DailyOrganizationSpendKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_DailyOrganizationSpendKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_DailyOrganizationSpendKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_DailyOrganizationSpendKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_DailyOrganizationSpendRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_DailyOrganizationSpendKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_DailyOrganizationSpend_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_DailyOrganizationSpend_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DailyOrganizationSpend_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DailyOrganizationSpend_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_DailyOrganizationSpend" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_DailyOrganizationSpend / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_DailyOrganizationSpend',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_DailyEndUserSpend(bases.BaseLiteLLM_DailyEndUserSpend):
    """Represents a LiteLLM_DailyEndUserSpend record"""

    id: _str
    end_user_id: Optional[_str] = None
    date: _str
    api_key: _str
    model: Optional[_str] = None
    model_group: Optional[_str] = None
    custom_llm_provider: Optional[_str] = None
    mcp_namespaced_tool_name: Optional[_str] = None
    endpoint: Optional[_str] = None
    prompt_tokens: _int
    completion_tokens: _int
    cache_read_input_tokens: _int
    cache_creation_input_tokens: _int
    spend: _float
    api_requests: _int
    successful_requests: _int
    failed_requests: _int
    created_at: datetime.datetime
    updated_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_DailyEndUserSpendKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_DailyEndUserSpendKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_DailyEndUserSpendKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_DailyEndUserSpendKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_DailyEndUserSpendRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_DailyEndUserSpendKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_DailyEndUserSpend_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_DailyEndUserSpend_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DailyEndUserSpend_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DailyEndUserSpend_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_DailyEndUserSpend" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_DailyEndUserSpend / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_DailyEndUserSpend',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_DailyAgentSpend(bases.BaseLiteLLM_DailyAgentSpend):
    """Represents a LiteLLM_DailyAgentSpend record"""

    id: _str
    agent_id: Optional[_str] = None
    date: _str
    api_key: _str
    model: Optional[_str] = None
    model_group: Optional[_str] = None
    custom_llm_provider: Optional[_str] = None
    mcp_namespaced_tool_name: Optional[_str] = None
    endpoint: Optional[_str] = None
    prompt_tokens: _int
    completion_tokens: _int
    cache_read_input_tokens: _int
    cache_creation_input_tokens: _int
    spend: _float
    api_requests: _int
    successful_requests: _int
    failed_requests: _int
    created_at: datetime.datetime
    updated_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_DailyAgentSpendKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_DailyAgentSpendKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_DailyAgentSpendKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_DailyAgentSpendKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_DailyAgentSpendRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_DailyAgentSpendKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_DailyAgentSpend_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_DailyAgentSpend_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DailyAgentSpend_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DailyAgentSpend_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_DailyAgentSpend" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_DailyAgentSpend / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_DailyAgentSpend',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_DailyTeamSpend(bases.BaseLiteLLM_DailyTeamSpend):
    """Represents a LiteLLM_DailyTeamSpend record"""

    id: _str
    team_id: Optional[_str] = None
    date: _str
    api_key: _str
    model: Optional[_str] = None
    model_group: Optional[_str] = None
    custom_llm_provider: Optional[_str] = None
    mcp_namespaced_tool_name: Optional[_str] = None
    endpoint: Optional[_str] = None
    prompt_tokens: _int
    completion_tokens: _int
    cache_read_input_tokens: _int
    cache_creation_input_tokens: _int
    spend: _float
    api_requests: _int
    successful_requests: _int
    failed_requests: _int
    created_at: datetime.datetime
    updated_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_DailyTeamSpendKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_DailyTeamSpendKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_DailyTeamSpendKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_DailyTeamSpendKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_DailyTeamSpendRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_DailyTeamSpendKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_DailyTeamSpend_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_DailyTeamSpend_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DailyTeamSpend_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DailyTeamSpend_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_DailyTeamSpend" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_DailyTeamSpend / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_DailyTeamSpend',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_DailyTagSpend(bases.BaseLiteLLM_DailyTagSpend):
    """Represents a LiteLLM_DailyTagSpend record"""

    id: _str
    request_id: Optional[_str] = None
    tag: Optional[_str] = None
    date: _str
    api_key: _str
    model: Optional[_str] = None
    model_group: Optional[_str] = None
    custom_llm_provider: Optional[_str] = None
    mcp_namespaced_tool_name: Optional[_str] = None
    endpoint: Optional[_str] = None
    prompt_tokens: _int
    completion_tokens: _int
    cache_read_input_tokens: _int
    cache_creation_input_tokens: _int
    spend: _float
    api_requests: _int
    successful_requests: _int
    failed_requests: _int
    created_at: datetime.datetime
    updated_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_DailyTagSpendKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_DailyTagSpendKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_DailyTagSpendKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_DailyTagSpendKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_DailyTagSpendRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_DailyTagSpendKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_DailyTagSpend_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_DailyTagSpend_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DailyTagSpend_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DailyTagSpend_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_DailyTagSpend" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_DailyTagSpend / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_DailyTagSpend',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_CronJob(bases.BaseLiteLLM_CronJob):
    """Represents a LiteLLM_CronJob record"""

    cronjob_id: _str
    pod_id: _str
    status: 'enums.JobStatus'
    last_updated: datetime.datetime
    ttl: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_CronJobKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_CronJobKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_CronJobKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_CronJobKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_CronJobRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_CronJobKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_CronJob_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_CronJob_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_CronJob_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_CronJob_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_CronJob" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_CronJob / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_CronJob',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_ManagedFileTable(bases.BaseLiteLLM_ManagedFileTable):
    """Represents a LiteLLM_ManagedFileTable record"""

    id: _str
    unified_file_id: _str
    file_object: Optional['fields.Json'] = None
    model_mappings: 'fields.Json'
    flat_model_file_ids: List[_str]
    storage_backend: Optional[_str] = None
    storage_url: Optional[_str] = None
    created_at: datetime.datetime
    created_by: Optional[_str] = None
    updated_at: datetime.datetime
    updated_by: Optional[_str] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )

    @field_validator('flat_model_file_ids', pre=True, allow_reuse=True)
    @classmethod
    def _transform_required_list_fields(cls, value: object) -> object:
        # When using raw queries, some databases will return `None` for an array field that has not been set yet.
        #
        # In our case we want to use an empty list instead as that is the internal Prisma behaviour and we want
        # to use the same consistent structure between the core ORM and raw queries. For example, if we updated
        # our type definitions to include `None` for `List` fields then it would be misleading as it will only
        # ever be `None` in raw queries.
        if value is None:
            return []

        return value

    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_ManagedFileTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_ManagedFileTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_ManagedFileTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_ManagedFileTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_ManagedFileTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_ManagedFileTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_ManagedFileTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_ManagedFileTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ManagedFileTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ManagedFileTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_ManagedFileTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_ManagedFileTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_ManagedFileTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_ManagedObjectTable(bases.BaseLiteLLM_ManagedObjectTable):
    """Represents a LiteLLM_ManagedObjectTable record"""

    id: _str
    unified_object_id: _str
    model_object_id: _str
    file_object: 'fields.Json'
    file_purpose: _str
    status: Optional[_str] = None
    batch_processed: _bool
    created_at: datetime.datetime
    created_by: Optional[_str] = None
    updated_at: datetime.datetime
    updated_by: Optional[_str] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_ManagedObjectTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_ManagedObjectTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_ManagedObjectTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_ManagedObjectTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_ManagedObjectTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_ManagedObjectTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_ManagedObjectTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_ManagedObjectTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ManagedObjectTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ManagedObjectTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_ManagedObjectTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_ManagedObjectTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_ManagedObjectTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_ManagedVectorStoreTable(bases.BaseLiteLLM_ManagedVectorStoreTable):
    """Represents a LiteLLM_ManagedVectorStoreTable record"""

    id: _str
    unified_resource_id: _str
    resource_object: Optional['fields.Json'] = None
    model_mappings: 'fields.Json'
    flat_model_resource_ids: List[_str]
    storage_backend: Optional[_str] = None
    storage_url: Optional[_str] = None
    created_at: datetime.datetime
    created_by: Optional[_str] = None
    updated_at: datetime.datetime
    updated_by: Optional[_str] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )

    @field_validator('flat_model_resource_ids', pre=True, allow_reuse=True)
    @classmethod
    def _transform_required_list_fields(cls, value: object) -> object:
        # When using raw queries, some databases will return `None` for an array field that has not been set yet.
        #
        # In our case we want to use an empty list instead as that is the internal Prisma behaviour and we want
        # to use the same consistent structure between the core ORM and raw queries. For example, if we updated
        # our type definitions to include `None` for `List` fields then it would be misleading as it will only
        # ever be `None` in raw queries.
        if value is None:
            return []

        return value

    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_ManagedVectorStoreTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_ManagedVectorStoreTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_ManagedVectorStoreTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_ManagedVectorStoreTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_ManagedVectorStoreTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_ManagedVectorStoreTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_ManagedVectorStoreTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_ManagedVectorStoreTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ManagedVectorStoreTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ManagedVectorStoreTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_ManagedVectorStoreTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_ManagedVectorStoreTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_ManagedVectorStoreTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_ManagedVectorStoresTable(bases.BaseLiteLLM_ManagedVectorStoresTable):
    """Represents a LiteLLM_ManagedVectorStoresTable record"""

    vector_store_id: _str
    custom_llm_provider: _str
    vector_store_name: Optional[_str] = None
    vector_store_description: Optional[_str] = None
    vector_store_metadata: Optional['fields.Json'] = None
    created_at: datetime.datetime
    updated_at: datetime.datetime
    litellm_credential_name: Optional[_str] = None
    litellm_params: Optional['fields.Json'] = None
    team_id: Optional[_str] = None
    user_id: Optional[_str] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_ManagedVectorStoresTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_ManagedVectorStoresTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_ManagedVectorStoresTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_ManagedVectorStoresTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_ManagedVectorStoresTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_ManagedVectorStoresTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_ManagedVectorStoresTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_ManagedVectorStoresTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ManagedVectorStoresTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ManagedVectorStoresTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_ManagedVectorStoresTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_ManagedVectorStoresTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_ManagedVectorStoresTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_GuardrailsTable(bases.BaseLiteLLM_GuardrailsTable):
    """Represents a LiteLLM_GuardrailsTable record"""

    guardrail_id: _str
    guardrail_name: _str
    litellm_params: 'fields.Json'
    guardrail_info: Optional['fields.Json'] = None
    team_id: Optional[_str] = None
    created_at: datetime.datetime
    updated_at: datetime.datetime
    status: _str
    submitted_at: Optional[datetime.datetime] = None
    reviewed_at: Optional[datetime.datetime] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_GuardrailsTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_GuardrailsTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_GuardrailsTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_GuardrailsTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_GuardrailsTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_GuardrailsTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_GuardrailsTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_GuardrailsTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_GuardrailsTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_GuardrailsTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_GuardrailsTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_GuardrailsTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_GuardrailsTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_DailyGuardrailMetrics(bases.BaseLiteLLM_DailyGuardrailMetrics):
    """Represents a LiteLLM_DailyGuardrailMetrics record"""

    guardrail_id: _str
    date: _str
    requests_evaluated: _int
    passed_count: _int
    blocked_count: _int
    flagged_count: _int
    avg_score: Optional[_float] = None
    avg_latency_ms: Optional[_float] = None
    created_at: datetime.datetime
    updated_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_DailyGuardrailMetricsKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_DailyGuardrailMetricsKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_DailyGuardrailMetricsKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_DailyGuardrailMetricsKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_DailyGuardrailMetricsRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_DailyGuardrailMetricsKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_DailyGuardrailMetrics_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_DailyGuardrailMetrics_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DailyGuardrailMetrics_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DailyGuardrailMetrics_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_DailyGuardrailMetrics" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_DailyGuardrailMetrics / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_DailyGuardrailMetrics',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_DailyPolicyMetrics(bases.BaseLiteLLM_DailyPolicyMetrics):
    """Represents a LiteLLM_DailyPolicyMetrics record"""

    policy_id: _str
    date: _str
    requests_evaluated: _int
    passed_count: _int
    blocked_count: _int
    flagged_count: _int
    avg_score: Optional[_float] = None
    avg_latency_ms: Optional[_float] = None
    created_at: datetime.datetime
    updated_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_DailyPolicyMetricsKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_DailyPolicyMetricsKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_DailyPolicyMetricsKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_DailyPolicyMetricsKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_DailyPolicyMetricsRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_DailyPolicyMetricsKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_DailyPolicyMetrics_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_DailyPolicyMetrics_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DailyPolicyMetrics_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_DailyPolicyMetrics_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_DailyPolicyMetrics" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_DailyPolicyMetrics / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_DailyPolicyMetrics',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_SpendLogGuardrailIndex(bases.BaseLiteLLM_SpendLogGuardrailIndex):
    """Represents a LiteLLM_SpendLogGuardrailIndex record"""

    request_id: _str
    guardrail_id: _str
    policy_id: Optional[_str] = None
    start_time: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_SpendLogGuardrailIndexKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_SpendLogGuardrailIndexKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_SpendLogGuardrailIndexKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_SpendLogGuardrailIndexKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_SpendLogGuardrailIndexRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_SpendLogGuardrailIndexKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_SpendLogGuardrailIndex_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_SpendLogGuardrailIndex_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_SpendLogGuardrailIndex_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_SpendLogGuardrailIndex_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_SpendLogGuardrailIndex" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_SpendLogGuardrailIndex / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_SpendLogGuardrailIndex',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_SpendLogToolIndex(bases.BaseLiteLLM_SpendLogToolIndex):
    """Represents a LiteLLM_SpendLogToolIndex record"""

    request_id: _str
    tool_name: _str
    start_time: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_SpendLogToolIndexKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_SpendLogToolIndexKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_SpendLogToolIndexKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_SpendLogToolIndexKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_SpendLogToolIndexRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_SpendLogToolIndexKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_SpendLogToolIndex_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_SpendLogToolIndex_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_SpendLogToolIndex_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_SpendLogToolIndex_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_SpendLogToolIndex" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_SpendLogToolIndex / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_SpendLogToolIndex',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_PromptTable(bases.BaseLiteLLM_PromptTable):
    """Represents a LiteLLM_PromptTable record"""

    id: _str
    prompt_id: _str
    version: _int
    litellm_params: 'fields.Json'
    prompt_info: Optional['fields.Json'] = None
    created_at: datetime.datetime
    updated_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_PromptTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_PromptTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_PromptTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_PromptTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_PromptTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_PromptTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_PromptTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_PromptTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_PromptTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_PromptTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_PromptTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_PromptTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_PromptTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_HealthCheckTable(bases.BaseLiteLLM_HealthCheckTable):
    """Represents a LiteLLM_HealthCheckTable record"""

    health_check_id: _str
    model_name: _str
    model_id: Optional[_str] = None
    status: _str
    healthy_count: _int
    unhealthy_count: _int
    error_message: Optional[_str] = None
    response_time_ms: Optional[_float] = None
    details: Optional['fields.Json'] = None
    checked_by: Optional[_str] = None
    checked_at: datetime.datetime
    created_at: datetime.datetime
    updated_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_HealthCheckTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_HealthCheckTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_HealthCheckTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_HealthCheckTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_HealthCheckTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_HealthCheckTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_HealthCheckTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_HealthCheckTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_HealthCheckTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_HealthCheckTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_HealthCheckTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_HealthCheckTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_HealthCheckTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_SearchToolsTable(bases.BaseLiteLLM_SearchToolsTable):
    """Represents a LiteLLM_SearchToolsTable record"""

    search_tool_id: _str
    search_tool_name: _str
    litellm_params: 'fields.Json'
    search_tool_info: Optional['fields.Json'] = None
    created_at: datetime.datetime
    updated_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_SearchToolsTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_SearchToolsTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_SearchToolsTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_SearchToolsTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_SearchToolsTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_SearchToolsTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_SearchToolsTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_SearchToolsTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_SearchToolsTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_SearchToolsTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_SearchToolsTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_SearchToolsTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_SearchToolsTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_SSOConfig(bases.BaseLiteLLM_SSOConfig):
    """Represents a LiteLLM_SSOConfig record"""

    id: _str
    sso_settings: 'fields.Json'
    created_at: datetime.datetime
    updated_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_SSOConfigKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_SSOConfigKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_SSOConfigKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_SSOConfigKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_SSOConfigRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_SSOConfigKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_SSOConfig_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_SSOConfig_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_SSOConfig_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_SSOConfig_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_SSOConfig" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_SSOConfig / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_SSOConfig',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_ManagedVectorStoreIndexTable(bases.BaseLiteLLM_ManagedVectorStoreIndexTable):
    """Represents a LiteLLM_ManagedVectorStoreIndexTable record"""

    id: _str
    index_name: _str
    litellm_params: 'fields.Json'
    index_info: Optional['fields.Json'] = None
    created_at: datetime.datetime
    created_by: Optional[_str] = None
    updated_at: datetime.datetime
    updated_by: Optional[_str] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_ManagedVectorStoreIndexTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_ManagedVectorStoreIndexTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_ManagedVectorStoreIndexTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_ManagedVectorStoreIndexTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_ManagedVectorStoreIndexTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_ManagedVectorStoreIndexTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_ManagedVectorStoreIndexTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_ManagedVectorStoreIndexTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ManagedVectorStoreIndexTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ManagedVectorStoreIndexTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_ManagedVectorStoreIndexTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_ManagedVectorStoreIndexTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_ManagedVectorStoreIndexTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_CacheConfig(bases.BaseLiteLLM_CacheConfig):
    """Represents a LiteLLM_CacheConfig record"""

    id: _str
    cache_settings: 'fields.Json'
    created_at: datetime.datetime
    updated_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_CacheConfigKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_CacheConfigKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_CacheConfigKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_CacheConfigKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_CacheConfigRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_CacheConfigKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_CacheConfig_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_CacheConfig_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_CacheConfig_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_CacheConfig_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_CacheConfig" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_CacheConfig / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_CacheConfig',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_UISettings(bases.BaseLiteLLM_UISettings):
    """Represents a LiteLLM_UISettings record"""

    id: _str
    ui_settings: 'fields.Json'
    created_at: datetime.datetime
    updated_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_UISettingsKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_UISettingsKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_UISettingsKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_UISettingsKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_UISettingsRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_UISettingsKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_UISettings_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_UISettings_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_UISettings_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_UISettings_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_UISettings" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_UISettings / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_UISettings',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_ConfigOverrides(bases.BaseLiteLLM_ConfigOverrides):
    """Represents a LiteLLM_ConfigOverrides record"""

    config_type: _str
    config_value: 'fields.Json'
    created_at: datetime.datetime
    updated_at: datetime.datetime

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_ConfigOverridesKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_ConfigOverridesKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_ConfigOverridesKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_ConfigOverridesKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_ConfigOverridesRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_ConfigOverridesKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_ConfigOverrides_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_ConfigOverrides_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ConfigOverrides_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ConfigOverrides_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_ConfigOverrides" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_ConfigOverrides / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_ConfigOverrides',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_SkillsTable(bases.BaseLiteLLM_SkillsTable):
    """Represents a LiteLLM_SkillsTable record"""

    skill_id: _str
    display_title: Optional[_str] = None
    description: Optional[_str] = None
    instructions: Optional[_str] = None
    source: _str
    latest_version: Optional[_str] = None
    file_content: Optional['fields.Base64'] = None
    file_name: Optional[_str] = None
    file_type: Optional[_str] = None
    metadata: Optional['fields.Json'] = None
    created_at: datetime.datetime
    created_by: Optional[_str] = None
    updated_at: datetime.datetime
    updated_by: Optional[_str] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_SkillsTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_SkillsTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_SkillsTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_SkillsTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_SkillsTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_SkillsTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_SkillsTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_SkillsTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_SkillsTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_SkillsTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_SkillsTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_SkillsTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_SkillsTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_PolicyTable(bases.BaseLiteLLM_PolicyTable):
    """Represents a LiteLLM_PolicyTable record"""

    policy_id: _str
    policy_name: _str
    version_number: _int
    version_status: _str
    parent_version_id: Optional[_str] = None
    is_latest: _bool
    published_at: Optional[datetime.datetime] = None
    production_at: Optional[datetime.datetime] = None
    inherit: Optional[_str] = None
    description: Optional[_str] = None
    guardrails_add: List[_str]
    guardrails_remove: List[_str]
    condition: Optional['fields.Json'] = None
    pipeline: Optional['fields.Json'] = None
    created_at: datetime.datetime
    created_by: Optional[_str] = None
    updated_at: datetime.datetime
    updated_by: Optional[_str] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )

    @field_validator('guardrails_add', 'guardrails_remove', pre=True, allow_reuse=True)
    @classmethod
    def _transform_required_list_fields(cls, value: object) -> object:
        # When using raw queries, some databases will return `None` for an array field that has not been set yet.
        #
        # In our case we want to use an empty list instead as that is the internal Prisma behaviour and we want
        # to use the same consistent structure between the core ORM and raw queries. For example, if we updated
        # our type definitions to include `None` for `List` fields then it would be misleading as it will only
        # ever be `None` in raw queries.
        if value is None:
            return []

        return value

    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_PolicyTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_PolicyTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_PolicyTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_PolicyTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_PolicyTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_PolicyTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_PolicyTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_PolicyTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_PolicyTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_PolicyTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_PolicyTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_PolicyTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_PolicyTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_PolicyAttachmentTable(bases.BaseLiteLLM_PolicyAttachmentTable):
    """Represents a LiteLLM_PolicyAttachmentTable record"""

    attachment_id: _str
    policy_name: _str
    scope: Optional[_str] = None
    teams: List[_str]
    keys: List[_str]
    models: List[_str]
    tags: List[_str]
    created_at: datetime.datetime
    created_by: Optional[_str] = None
    updated_at: datetime.datetime
    updated_by: Optional[_str] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )

    @field_validator('teams', 'keys', 'models', 'tags', pre=True, allow_reuse=True)
    @classmethod
    def _transform_required_list_fields(cls, value: object) -> object:
        # When using raw queries, some databases will return `None` for an array field that has not been set yet.
        #
        # In our case we want to use an empty list instead as that is the internal Prisma behaviour and we want
        # to use the same consistent structure between the core ORM and raw queries. For example, if we updated
        # our type definitions to include `None` for `List` fields then it would be misleading as it will only
        # ever be `None` in raw queries.
        if value is None:
            return []

        return value

    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_PolicyAttachmentTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_PolicyAttachmentTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_PolicyAttachmentTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_PolicyAttachmentTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_PolicyAttachmentTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_PolicyAttachmentTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_PolicyAttachmentTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_PolicyAttachmentTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_PolicyAttachmentTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_PolicyAttachmentTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_PolicyAttachmentTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_PolicyAttachmentTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_PolicyAttachmentTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_ToolTable(bases.BaseLiteLLM_ToolTable):
    """Represents a LiteLLM_ToolTable record"""

    tool_id: _str
    tool_name: _str
    origin: Optional[_str] = None
    input_policy: _str
    output_policy: _str
    call_count: _int
    assignments: Optional['fields.Json'] = None
    key_hash: Optional[_str] = None
    team_id: Optional[_str] = None
    key_alias: Optional[_str] = None
    user_agent: Optional[_str] = None
    last_used_at: Optional[datetime.datetime] = None
    created_at: datetime.datetime
    created_by: Optional[_str] = None
    updated_at: datetime.datetime
    updated_by: Optional[_str] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_ToolTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_ToolTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_ToolTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_ToolTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_ToolTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_ToolTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_ToolTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_ToolTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ToolTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ToolTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_ToolTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_ToolTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_ToolTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_AccessGroupTable(bases.BaseLiteLLM_AccessGroupTable):
    """Represents a LiteLLM_AccessGroupTable record"""

    access_group_id: _str
    access_group_name: _str
    description: Optional[_str] = None
    access_model_names: List[_str]
    access_mcp_server_ids: List[_str]
    access_agent_ids: List[_str]
    assigned_team_ids: List[_str]
    assigned_key_ids: List[_str]
    created_at: datetime.datetime
    created_by: Optional[_str] = None
    updated_at: datetime.datetime
    updated_by: Optional[_str] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )

    @field_validator('access_model_names', 'access_mcp_server_ids', 'access_agent_ids', 'assigned_team_ids', 'assigned_key_ids', pre=True, allow_reuse=True)
    @classmethod
    def _transform_required_list_fields(cls, value: object) -> object:
        # When using raw queries, some databases will return `None` for an array field that has not been set yet.
        #
        # In our case we want to use an empty list instead as that is the internal Prisma behaviour and we want
        # to use the same consistent structure between the core ORM and raw queries. For example, if we updated
        # our type definitions to include `None` for `List` fields then it would be misleading as it will only
        # ever be `None` in raw queries.
        if value is None:
            return []

        return value

    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_AccessGroupTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_AccessGroupTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_AccessGroupTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_AccessGroupTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_AccessGroupTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_AccessGroupTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_AccessGroupTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_AccessGroupTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_AccessGroupTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_AccessGroupTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_AccessGroupTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_AccessGroupTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_AccessGroupTable',
            }
        )
        _created_partial_types.add(name)


class LiteLLM_ClaudeCodePluginTable(bases.BaseLiteLLM_ClaudeCodePluginTable):
    """Represents a LiteLLM_ClaudeCodePluginTable record"""

    id: _str
    name: _str
    version: Optional[_str] = None
    description: Optional[_str] = None
    manifest_json: Optional[_str] = None
    files_json: Optional[_str] = None
    enabled: _bool
    created_at: Optional[datetime.datetime] = None
    updated_at: Optional[datetime.datetime] = None
    created_by: Optional[_str] = None

    # take *args and **kwargs so that other metaclasses can define arguments
    def __init_subclass__(
        cls,
        *args: Any,
        warn_subclass: Optional[bool] = None,
        **kwargs: Any,
    ) -> None:
        super().__init_subclass__()
        if warn_subclass is not None:
            warnings.warn(
                'The `warn_subclass` argument is deprecated as it is no longer necessary and will be removed in the next release',
                DeprecationWarning,
                stacklevel=3,
            )


    @staticmethod
    def create_partial(
        name: str,
        include: Optional[Iterable['types.LiteLLM_ClaudeCodePluginTableKeys']] = None,
        exclude: Optional[Iterable['types.LiteLLM_ClaudeCodePluginTableKeys']] = None,
        required: Optional[Iterable['types.LiteLLM_ClaudeCodePluginTableKeys']] = None,
        optional: Optional[Iterable['types.LiteLLM_ClaudeCodePluginTableKeys']] = None,
        relations: Optional[Mapping['types.LiteLLM_ClaudeCodePluginTableRelationalFieldKeys', str]] = None,
        exclude_relational_fields: bool = False,
    ) -> None:
        if not os.environ.get('PRISMA_GENERATOR_INVOCATION'):
            raise RuntimeError(
                'Attempted to create a partial type outside of client generation.'
            )

        if name in _created_partial_types:
            raise ValueError(f'Partial type "{name}" has already been created.')

        if include is not None:
            if exclude is not None:
                raise TypeError('Exclude and include are mutually exclusive.')
            if exclude_relational_fields is True:
                raise TypeError('Include and exclude_relational_fields=True are mutually exclusive.')

        if required and optional:
            shared = set(required) & set(optional)
            if shared:
                raise ValueError(f'Cannot make the same field(s) required and optional {shared}')

        if exclude_relational_fields and relations:
            raise ValueError(
                'exclude_relational_fields and relations are mutually exclusive'
            )

        fields: Dict['types.LiteLLM_ClaudeCodePluginTableKeys', PartialModelField] = OrderedDict()

        try:
            if include:
                for field in include:
                    fields[field] = _LiteLLM_ClaudeCodePluginTable_fields[field].copy()
            elif exclude:
                for field in exclude:
                    if field not in _LiteLLM_ClaudeCodePluginTable_fields:
                        raise KeyError(field)

                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ClaudeCodePluginTable_fields.items()
                    if key not in exclude
                }
            else:
                fields = {
                    key: data.copy()
                    for key, data in _LiteLLM_ClaudeCodePluginTable_fields.items()
                }

            if required:
                for field in required:
                    fields[field]['optional'] = False

            if optional:
                for field in optional:
                    fields[field]['optional'] = True


            if relations:
                raise ValueError('Model: "LiteLLM_ClaudeCodePluginTable" has no relational fields.')
        except KeyError as exc:
            raise ValueError(
                f'{exc.args[0]} is not a valid LiteLLM_ClaudeCodePluginTable / {name} field.'
            ) from None

        models = partial_models_ctx.get()
        models.append(
            {
                'name': name,
                'fields': cast(Mapping[str, PartialModelField], fields),
                'from_model': 'LiteLLM_ClaudeCodePluginTable',
            }
        )
        _created_partial_types.add(name)



_LiteLLM_BudgetTable_relational_fields: Set[str] = {
        'organization',
        'projects',
        'keys',
        'end_users',
        'tags',
        'team_membership',
        'organization_membership',
    }
_LiteLLM_BudgetTable_fields: Dict['types.LiteLLM_BudgetTableKeys', PartialModelField] = OrderedDict(
    [
        ('budget_id', {
            'name': 'budget_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('max_budget', {
            'name': 'max_budget',
            'is_list': False,
            'optional': True,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('soft_budget', {
            'name': 'soft_budget',
            'is_list': False,
            'optional': True,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('max_parallel_requests', {
            'name': 'max_parallel_requests',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('tpm_limit', {
            'name': 'tpm_limit',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('rpm_limit', {
            'name': 'rpm_limit',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_max_budget', {
            'name': 'model_max_budget',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_duration', {
            'name': 'budget_duration',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_reset_at', {
            'name': 'budget_reset_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('organization', {
            'name': 'organization',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_OrganizationTable\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('projects', {
            'name': 'projects',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_ProjectTable\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('keys', {
            'name': 'keys',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_VerificationToken\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('end_users', {
            'name': 'end_users',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_EndUserTable\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('tags', {
            'name': 'tags',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_TagTable\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('team_membership', {
            'name': 'team_membership',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_TeamMembership\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('organization_membership', {
            'name': 'organization_membership',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_OrganizationMembership\']',
            'is_relational': True,
            'documentation': None,
        }),
    ],
)

_LiteLLM_CredentialsTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_CredentialsTable_fields: Dict['types.LiteLLM_CredentialsTableKeys', PartialModelField] = OrderedDict(
    [
        ('credential_id', {
            'name': 'credential_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('credential_name', {
            'name': 'credential_name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('credential_values', {
            'name': 'credential_values',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('credential_info', {
            'name': 'credential_info',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_ProxyModelTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_ProxyModelTable_fields: Dict['types.LiteLLM_ProxyModelTableKeys', PartialModelField] = OrderedDict(
    [
        ('model_id', {
            'name': 'model_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_name', {
            'name': 'model_name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_params', {
            'name': 'litellm_params',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_info', {
            'name': 'model_info',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_AgentsTable_relational_fields: Set[str] = {
        'object_permission',
    }
_LiteLLM_AgentsTable_fields: Dict['types.LiteLLM_AgentsTableKeys', PartialModelField] = OrderedDict(
    [
        ('agent_id', {
            'name': 'agent_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('agent_name', {
            'name': 'agent_name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_params', {
            'name': 'litellm_params',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('agent_card_params', {
            'name': 'agent_card_params',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('static_headers', {
            'name': 'static_headers',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('extra_headers', {
            'name': 'extra_headers',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('agent_access_groups', {
            'name': 'agent_access_groups',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('object_permission_id', {
            'name': 'object_permission_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('object_permission', {
            'name': 'object_permission',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_ObjectPermissionTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('tpm_limit', {
            'name': 'tpm_limit',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('rpm_limit', {
            'name': 'rpm_limit',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('session_tpm_limit', {
            'name': 'session_tpm_limit',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('session_rpm_limit', {
            'name': 'session_rpm_limit',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_OrganizationTable_relational_fields: Set[str] = {
        'litellm_budget_table',
        'teams',
        'users',
        'keys',
        'members',
        'object_permission',
    }
_LiteLLM_OrganizationTable_fields: Dict['types.LiteLLM_OrganizationTableKeys', PartialModelField] = OrderedDict(
    [
        ('organization_id', {
            'name': 'organization_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('organization_alias', {
            'name': 'organization_alias',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_id', {
            'name': 'budget_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('metadata', {
            'name': 'metadata',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('models', {
            'name': 'models',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_spend', {
            'name': 'model_spend',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('object_permission_id', {
            'name': 'object_permission_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_budget_table', {
            'name': 'litellm_budget_table',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_BudgetTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('teams', {
            'name': 'teams',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_TeamTable\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('users', {
            'name': 'users',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_UserTable\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('keys', {
            'name': 'keys',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_VerificationToken\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('members', {
            'name': 'members',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_OrganizationMembership\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('object_permission', {
            'name': 'object_permission',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_ObjectPermissionTable',
            'is_relational': True,
            'documentation': None,
        }),
    ],
)

_LiteLLM_ModelTable_relational_fields: Set[str] = {
        'team',
    }
_LiteLLM_ModelTable_fields: Dict['types.LiteLLM_ModelTableKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_aliases', {
            'name': 'model_aliases',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('team', {
            'name': 'team',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_TeamTable',
            'is_relational': True,
            'documentation': None,
        }),
    ],
)

_LiteLLM_TeamTable_relational_fields: Set[str] = {
        'litellm_organization_table',
        'litellm_model_table',
        'object_permission',
        'projects',
    }
_LiteLLM_TeamTable_fields: Dict['types.LiteLLM_TeamTableKeys', PartialModelField] = OrderedDict(
    [
        ('team_id', {
            'name': 'team_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('team_alias', {
            'name': 'team_alias',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('organization_id', {
            'name': 'organization_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('object_permission_id', {
            'name': 'object_permission_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('admins', {
            'name': 'admins',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('members', {
            'name': 'members',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('members_with_roles', {
            'name': 'members_with_roles',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('metadata', {
            'name': 'metadata',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('max_budget', {
            'name': 'max_budget',
            'is_list': False,
            'optional': True,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('soft_budget', {
            'name': 'soft_budget',
            'is_list': False,
            'optional': True,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('models', {
            'name': 'models',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('max_parallel_requests', {
            'name': 'max_parallel_requests',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('tpm_limit', {
            'name': 'tpm_limit',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('rpm_limit', {
            'name': 'rpm_limit',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_duration', {
            'name': 'budget_duration',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_reset_at', {
            'name': 'budget_reset_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('blocked', {
            'name': 'blocked',
            'is_list': False,
            'optional': False,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_spend', {
            'name': 'model_spend',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_max_budget', {
            'name': 'model_max_budget',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('router_settings', {
            'name': 'router_settings',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('team_member_permissions', {
            'name': 'team_member_permissions',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('access_group_ids', {
            'name': 'access_group_ids',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('policies', {
            'name': 'policies',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_id', {
            'name': 'model_id',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('allow_team_guardrail_config', {
            'name': 'allow_team_guardrail_config',
            'is_list': False,
            'optional': False,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_organization_table', {
            'name': 'litellm_organization_table',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_OrganizationTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('litellm_model_table', {
            'name': 'litellm_model_table',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_ModelTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('object_permission', {
            'name': 'object_permission',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_ObjectPermissionTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('projects', {
            'name': 'projects',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_ProjectTable\']',
            'is_relational': True,
            'documentation': None,
        }),
    ],
)

_LiteLLM_ProjectTable_relational_fields: Set[str] = {
        'litellm_team_table',
        'litellm_budget_table',
        'keys',
        'object_permission',
    }
_LiteLLM_ProjectTable_fields: Dict['types.LiteLLM_ProjectTableKeys', PartialModelField] = OrderedDict(
    [
        ('project_id', {
            'name': 'project_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('project_alias', {
            'name': 'project_alias',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('description', {
            'name': 'description',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('team_id', {
            'name': 'team_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_id', {
            'name': 'budget_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('metadata', {
            'name': 'metadata',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('models', {
            'name': 'models',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_spend', {
            'name': 'model_spend',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_rpm_limit', {
            'name': 'model_rpm_limit',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_tpm_limit', {
            'name': 'model_tpm_limit',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('blocked', {
            'name': 'blocked',
            'is_list': False,
            'optional': False,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('object_permission_id', {
            'name': 'object_permission_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_team_table', {
            'name': 'litellm_team_table',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_TeamTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('litellm_budget_table', {
            'name': 'litellm_budget_table',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_BudgetTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('keys', {
            'name': 'keys',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_VerificationToken\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('object_permission', {
            'name': 'object_permission',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_ObjectPermissionTable',
            'is_relational': True,
            'documentation': None,
        }),
    ],
)

_LiteLLM_DeletedTeamTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_DeletedTeamTable_fields: Dict['types.LiteLLM_DeletedTeamTableKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('team_id', {
            'name': 'team_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('team_alias', {
            'name': 'team_alias',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('organization_id', {
            'name': 'organization_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('object_permission_id', {
            'name': 'object_permission_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('admins', {
            'name': 'admins',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('members', {
            'name': 'members',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('members_with_roles', {
            'name': 'members_with_roles',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('metadata', {
            'name': 'metadata',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('max_budget', {
            'name': 'max_budget',
            'is_list': False,
            'optional': True,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('soft_budget', {
            'name': 'soft_budget',
            'is_list': False,
            'optional': True,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('models', {
            'name': 'models',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('max_parallel_requests', {
            'name': 'max_parallel_requests',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('tpm_limit', {
            'name': 'tpm_limit',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('rpm_limit', {
            'name': 'rpm_limit',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_duration', {
            'name': 'budget_duration',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_reset_at', {
            'name': 'budget_reset_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('blocked', {
            'name': 'blocked',
            'is_list': False,
            'optional': False,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_spend', {
            'name': 'model_spend',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_max_budget', {
            'name': 'model_max_budget',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('router_settings', {
            'name': 'router_settings',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('team_member_permissions', {
            'name': 'team_member_permissions',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('access_group_ids', {
            'name': 'access_group_ids',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('policies', {
            'name': 'policies',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_id', {
            'name': 'model_id',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('allow_team_guardrail_config', {
            'name': 'allow_team_guardrail_config',
            'is_list': False,
            'optional': False,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('deleted_at', {
            'name': 'deleted_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('deleted_by', {
            'name': 'deleted_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('deleted_by_api_key', {
            'name': 'deleted_by_api_key',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_changed_by', {
            'name': 'litellm_changed_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_UserTable_relational_fields: Set[str] = {
        'litellm_organization_table',
        'organization_memberships',
        'invitations_created',
        'invitations_updated',
        'invitations_user',
        'object_permission',
    }
_LiteLLM_UserTable_fields: Dict['types.LiteLLM_UserTableKeys', PartialModelField] = OrderedDict(
    [
        ('user_id', {
            'name': 'user_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('user_alias', {
            'name': 'user_alias',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('team_id', {
            'name': 'team_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('sso_user_id', {
            'name': 'sso_user_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('organization_id', {
            'name': 'organization_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('object_permission_id', {
            'name': 'object_permission_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('password', {
            'name': 'password',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('teams', {
            'name': 'teams',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('user_role', {
            'name': 'user_role',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('max_budget', {
            'name': 'max_budget',
            'is_list': False,
            'optional': True,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('user_email', {
            'name': 'user_email',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('models', {
            'name': 'models',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('metadata', {
            'name': 'metadata',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('max_parallel_requests', {
            'name': 'max_parallel_requests',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('tpm_limit', {
            'name': 'tpm_limit',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('rpm_limit', {
            'name': 'rpm_limit',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_duration', {
            'name': 'budget_duration',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_reset_at', {
            'name': 'budget_reset_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('allowed_cache_controls', {
            'name': 'allowed_cache_controls',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('policies', {
            'name': 'policies',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_spend', {
            'name': 'model_spend',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_max_budget', {
            'name': 'model_max_budget',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_organization_table', {
            'name': 'litellm_organization_table',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_OrganizationTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('organization_memberships', {
            'name': 'organization_memberships',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_OrganizationMembership\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('invitations_created', {
            'name': 'invitations_created',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_InvitationLink\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('invitations_updated', {
            'name': 'invitations_updated',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_InvitationLink\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('invitations_user', {
            'name': 'invitations_user',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_InvitationLink\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('object_permission', {
            'name': 'object_permission',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_ObjectPermissionTable',
            'is_relational': True,
            'documentation': None,
        }),
    ],
)

_LiteLLM_ObjectPermissionTable_relational_fields: Set[str] = {
        'teams',
        'projects',
        'verification_tokens',
        'organizations',
        'users',
        'end_users',
        'agents_table',
    }
_LiteLLM_ObjectPermissionTable_fields: Dict['types.LiteLLM_ObjectPermissionTableKeys', PartialModelField] = OrderedDict(
    [
        ('object_permission_id', {
            'name': 'object_permission_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('mcp_servers', {
            'name': 'mcp_servers',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('mcp_access_groups', {
            'name': 'mcp_access_groups',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('mcp_tool_permissions', {
            'name': 'mcp_tool_permissions',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('vector_stores', {
            'name': 'vector_stores',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('agents', {
            'name': 'agents',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('agent_access_groups', {
            'name': 'agent_access_groups',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('blocked_tools', {
            'name': 'blocked_tools',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('teams', {
            'name': 'teams',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_TeamTable\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('projects', {
            'name': 'projects',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_ProjectTable\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('verification_tokens', {
            'name': 'verification_tokens',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_VerificationToken\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('organizations', {
            'name': 'organizations',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_OrganizationTable\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('users', {
            'name': 'users',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_UserTable\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('end_users', {
            'name': 'end_users',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_EndUserTable\']',
            'is_relational': True,
            'documentation': None,
        }),
        ('agents_table', {
            'name': 'agents_table',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_AgentsTable\']',
            'is_relational': True,
            'documentation': None,
        }),
    ],
)

_LiteLLM_MCPServerTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_MCPServerTable_fields: Dict['types.LiteLLM_MCPServerTableKeys', PartialModelField] = OrderedDict(
    [
        ('server_id', {
            'name': 'server_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('server_name', {
            'name': 'server_name',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('alias', {
            'name': 'alias',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('description', {
            'name': 'description',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('url', {
            'name': 'url',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('spec_path', {
            'name': 'spec_path',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('transport', {
            'name': 'transport',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('auth_type', {
            'name': 'auth_type',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('credentials', {
            'name': 'credentials',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('mcp_info', {
            'name': 'mcp_info',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('mcp_access_groups', {
            'name': 'mcp_access_groups',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('allowed_tools', {
            'name': 'allowed_tools',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('tool_name_to_display_name', {
            'name': 'tool_name_to_display_name',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('tool_name_to_description', {
            'name': 'tool_name_to_description',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('extra_headers', {
            'name': 'extra_headers',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('static_headers', {
            'name': 'static_headers',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('status', {
            'name': 'status',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('last_health_check', {
            'name': 'last_health_check',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('health_check_error', {
            'name': 'health_check_error',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('command', {
            'name': 'command',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('args', {
            'name': 'args',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('env', {
            'name': 'env',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('authorization_url', {
            'name': 'authorization_url',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('token_url', {
            'name': 'token_url',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('registration_url', {
            'name': 'registration_url',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('allow_all_keys', {
            'name': 'allow_all_keys',
            'is_list': False,
            'optional': False,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('available_on_public_internet', {
            'name': 'available_on_public_internet',
            'is_list': False,
            'optional': False,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('is_byok', {
            'name': 'is_byok',
            'is_list': False,
            'optional': False,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('byok_description', {
            'name': 'byok_description',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('byok_api_key_help_url', {
            'name': 'byok_api_key_help_url',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_MCPUserCredentials_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_MCPUserCredentials_fields: Dict['types.LiteLLM_MCPUserCredentialsKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('user_id', {
            'name': 'user_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('server_id', {
            'name': 'server_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('credential_b64', {
            'name': 'credential_b64',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_VerificationToken_relational_fields: Set[str] = {
        'litellm_budget_table',
        'litellm_organization_table',
        'litellm_project_table',
        'object_permission',
        'jwt_key_mappings',
    }
_LiteLLM_VerificationToken_fields: Dict['types.LiteLLM_VerificationTokenKeys', PartialModelField] = OrderedDict(
    [
        ('token', {
            'name': 'token',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('key_name', {
            'name': 'key_name',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('key_alias', {
            'name': 'key_alias',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('soft_budget_cooldown', {
            'name': 'soft_budget_cooldown',
            'is_list': False,
            'optional': False,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('expires', {
            'name': 'expires',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('models', {
            'name': 'models',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('aliases', {
            'name': 'aliases',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('config', {
            'name': 'config',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('router_settings', {
            'name': 'router_settings',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('user_id', {
            'name': 'user_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('team_id', {
            'name': 'team_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('agent_id', {
            'name': 'agent_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('project_id', {
            'name': 'project_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('permissions', {
            'name': 'permissions',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('max_parallel_requests', {
            'name': 'max_parallel_requests',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('metadata', {
            'name': 'metadata',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('blocked', {
            'name': 'blocked',
            'is_list': False,
            'optional': True,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('tpm_limit', {
            'name': 'tpm_limit',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('rpm_limit', {
            'name': 'rpm_limit',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('max_budget', {
            'name': 'max_budget',
            'is_list': False,
            'optional': True,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_duration', {
            'name': 'budget_duration',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_reset_at', {
            'name': 'budget_reset_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('allowed_cache_controls', {
            'name': 'allowed_cache_controls',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('allowed_routes', {
            'name': 'allowed_routes',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('policies', {
            'name': 'policies',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('access_group_ids', {
            'name': 'access_group_ids',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_spend', {
            'name': 'model_spend',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_max_budget', {
            'name': 'model_max_budget',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_id', {
            'name': 'budget_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('organization_id', {
            'name': 'organization_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('object_permission_id', {
            'name': 'object_permission_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('last_active', {
            'name': 'last_active',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('rotation_count', {
            'name': 'rotation_count',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('auto_rotate', {
            'name': 'auto_rotate',
            'is_list': False,
            'optional': True,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('rotation_interval', {
            'name': 'rotation_interval',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('last_rotation_at', {
            'name': 'last_rotation_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('key_rotation_at', {
            'name': 'key_rotation_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_budget_table', {
            'name': 'litellm_budget_table',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_BudgetTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('litellm_organization_table', {
            'name': 'litellm_organization_table',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_OrganizationTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('litellm_project_table', {
            'name': 'litellm_project_table',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_ProjectTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('object_permission', {
            'name': 'object_permission',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_ObjectPermissionTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('jwt_key_mappings', {
            'name': 'jwt_key_mappings',
            'is_list': True,
            'optional': True,
            'type': 'List[\'models.LiteLLM_JWTKeyMapping\']',
            'is_relational': True,
            'documentation': None,
        }),
    ],
)

_LiteLLM_JWTKeyMapping_relational_fields: Set[str] = {
        'litellm_verification_token',
    }
_LiteLLM_JWTKeyMapping_fields: Dict['types.LiteLLM_JWTKeyMappingKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('jwt_claim_name', {
            'name': 'jwt_claim_name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('jwt_claim_value', {
            'name': 'jwt_claim_value',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('token', {
            'name': 'token',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('description', {
            'name': 'description',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('is_active', {
            'name': 'is_active',
            'is_list': False,
            'optional': False,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_verification_token', {
            'name': 'litellm_verification_token',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_VerificationToken',
            'is_relational': True,
            'documentation': None,
        }),
    ],
)

_LiteLLM_DeprecatedVerificationToken_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_DeprecatedVerificationToken_fields: Dict['types.LiteLLM_DeprecatedVerificationTokenKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('token', {
            'name': 'token',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('active_token_id', {
            'name': 'active_token_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('revoke_at', {
            'name': 'revoke_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_DeletedVerificationToken_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_DeletedVerificationToken_fields: Dict['types.LiteLLM_DeletedVerificationTokenKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('token', {
            'name': 'token',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('key_name', {
            'name': 'key_name',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('key_alias', {
            'name': 'key_alias',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('soft_budget_cooldown', {
            'name': 'soft_budget_cooldown',
            'is_list': False,
            'optional': False,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('expires', {
            'name': 'expires',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('models', {
            'name': 'models',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('aliases', {
            'name': 'aliases',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('config', {
            'name': 'config',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('user_id', {
            'name': 'user_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('team_id', {
            'name': 'team_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('agent_id', {
            'name': 'agent_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('project_id', {
            'name': 'project_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('permissions', {
            'name': 'permissions',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('max_parallel_requests', {
            'name': 'max_parallel_requests',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('metadata', {
            'name': 'metadata',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('blocked', {
            'name': 'blocked',
            'is_list': False,
            'optional': True,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('tpm_limit', {
            'name': 'tpm_limit',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('rpm_limit', {
            'name': 'rpm_limit',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('max_budget', {
            'name': 'max_budget',
            'is_list': False,
            'optional': True,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_duration', {
            'name': 'budget_duration',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_reset_at', {
            'name': 'budget_reset_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('allowed_cache_controls', {
            'name': 'allowed_cache_controls',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('allowed_routes', {
            'name': 'allowed_routes',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('policies', {
            'name': 'policies',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('access_group_ids', {
            'name': 'access_group_ids',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_spend', {
            'name': 'model_spend',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_max_budget', {
            'name': 'model_max_budget',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('router_settings', {
            'name': 'router_settings',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_id', {
            'name': 'budget_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('organization_id', {
            'name': 'organization_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('object_permission_id', {
            'name': 'object_permission_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('last_active', {
            'name': 'last_active',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('rotation_count', {
            'name': 'rotation_count',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('auto_rotate', {
            'name': 'auto_rotate',
            'is_list': False,
            'optional': True,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('rotation_interval', {
            'name': 'rotation_interval',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('last_rotation_at', {
            'name': 'last_rotation_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('key_rotation_at', {
            'name': 'key_rotation_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('deleted_at', {
            'name': 'deleted_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('deleted_by', {
            'name': 'deleted_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('deleted_by_api_key', {
            'name': 'deleted_by_api_key',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_changed_by', {
            'name': 'litellm_changed_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_EndUserTable_relational_fields: Set[str] = {
        'litellm_budget_table',
        'object_permission',
    }
_LiteLLM_EndUserTable_fields: Dict['types.LiteLLM_EndUserTableKeys', PartialModelField] = OrderedDict(
    [
        ('user_id', {
            'name': 'user_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('alias', {
            'name': 'alias',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('allowed_model_region', {
            'name': 'allowed_model_region',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('default_model', {
            'name': 'default_model',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_id', {
            'name': 'budget_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('object_permission_id', {
            'name': 'object_permission_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_budget_table', {
            'name': 'litellm_budget_table',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_BudgetTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('object_permission', {
            'name': 'object_permission',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_ObjectPermissionTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('blocked', {
            'name': 'blocked',
            'is_list': False,
            'optional': False,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_TagTable_relational_fields: Set[str] = {
        'litellm_budget_table',
    }
_LiteLLM_TagTable_fields: Dict['types.LiteLLM_TagTableKeys', PartialModelField] = OrderedDict(
    [
        ('tag_name', {
            'name': 'tag_name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('description', {
            'name': 'description',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('models', {
            'name': 'models',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_info', {
            'name': 'model_info',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_id', {
            'name': 'budget_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_budget_table', {
            'name': 'litellm_budget_table',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_BudgetTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_Config_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_Config_fields: Dict['types.LiteLLM_ConfigKeys', PartialModelField] = OrderedDict(
    [
        ('param_name', {
            'name': 'param_name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('param_value', {
            'name': 'param_value',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_SpendLogs_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_SpendLogs_fields: Dict['types.LiteLLM_SpendLogsKeys', PartialModelField] = OrderedDict(
    [
        ('request_id', {
            'name': 'request_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('call_type', {
            'name': 'call_type',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('api_key', {
            'name': 'api_key',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('total_tokens', {
            'name': 'total_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('prompt_tokens', {
            'name': 'prompt_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('completion_tokens', {
            'name': 'completion_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('startTime', {
            'name': 'startTime',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('endTime', {
            'name': 'endTime',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('request_duration_ms', {
            'name': 'request_duration_ms',
            'is_list': False,
            'optional': True,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('completionStartTime', {
            'name': 'completionStartTime',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('model', {
            'name': 'model',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_id', {
            'name': 'model_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_group', {
            'name': 'model_group',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('custom_llm_provider', {
            'name': 'custom_llm_provider',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('api_base', {
            'name': 'api_base',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('user', {
            'name': 'user',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('metadata', {
            'name': 'metadata',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('cache_hit', {
            'name': 'cache_hit',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('cache_key', {
            'name': 'cache_key',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('request_tags', {
            'name': 'request_tags',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('team_id', {
            'name': 'team_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('organization_id', {
            'name': 'organization_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('end_user', {
            'name': 'end_user',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('requester_ip_address', {
            'name': 'requester_ip_address',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('messages', {
            'name': 'messages',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('response', {
            'name': 'response',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('session_id', {
            'name': 'session_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('status', {
            'name': 'status',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('mcp_namespaced_tool_name', {
            'name': 'mcp_namespaced_tool_name',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('agent_id', {
            'name': 'agent_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('proxy_server_request', {
            'name': 'proxy_server_request',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_ErrorLogs_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_ErrorLogs_fields: Dict['types.LiteLLM_ErrorLogsKeys', PartialModelField] = OrderedDict(
    [
        ('request_id', {
            'name': 'request_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('startTime', {
            'name': 'startTime',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('endTime', {
            'name': 'endTime',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('api_base', {
            'name': 'api_base',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_group', {
            'name': 'model_group',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_model_name', {
            'name': 'litellm_model_name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_id', {
            'name': 'model_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('request_kwargs', {
            'name': 'request_kwargs',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('exception_type', {
            'name': 'exception_type',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('exception_string', {
            'name': 'exception_string',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('status_code', {
            'name': 'status_code',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_UserNotifications_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_UserNotifications_fields: Dict['types.LiteLLM_UserNotificationsKeys', PartialModelField] = OrderedDict(
    [
        ('request_id', {
            'name': 'request_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('user_id', {
            'name': 'user_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('models', {
            'name': 'models',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('justification', {
            'name': 'justification',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('status', {
            'name': 'status',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_TeamMembership_relational_fields: Set[str] = {
        'litellm_budget_table',
    }
_LiteLLM_TeamMembership_fields: Dict['types.LiteLLM_TeamMembershipKeys', PartialModelField] = OrderedDict(
    [
        ('user_id', {
            'name': 'user_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('team_id', {
            'name': 'team_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_id', {
            'name': 'budget_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_budget_table', {
            'name': 'litellm_budget_table',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_BudgetTable',
            'is_relational': True,
            'documentation': None,
        }),
    ],
)

_LiteLLM_OrganizationMembership_relational_fields: Set[str] = {
        'user',
        'organization',
        'litellm_budget_table',
    }
_LiteLLM_OrganizationMembership_fields: Dict['types.LiteLLM_OrganizationMembershipKeys', PartialModelField] = OrderedDict(
    [
        ('user_id', {
            'name': 'user_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('organization_id', {
            'name': 'organization_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('user_role', {
            'name': 'user_role',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': True,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('budget_id', {
            'name': 'budget_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('user', {
            'name': 'user',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_UserTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('organization', {
            'name': 'organization',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_OrganizationTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('litellm_budget_table', {
            'name': 'litellm_budget_table',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_BudgetTable',
            'is_relational': True,
            'documentation': None,
        }),
    ],
)

_LiteLLM_InvitationLink_relational_fields: Set[str] = {
        'liteLLM_user_table_user',
        'liteLLM_user_table_created',
        'liteLLM_user_table_updated',
    }
_LiteLLM_InvitationLink_fields: Dict['types.LiteLLM_InvitationLinkKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('user_id', {
            'name': 'user_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('is_accepted', {
            'name': 'is_accepted',
            'is_list': False,
            'optional': False,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('accepted_at', {
            'name': 'accepted_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('expires_at', {
            'name': 'expires_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('liteLLM_user_table_user', {
            'name': 'liteLLM_user_table_user',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_UserTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('liteLLM_user_table_created', {
            'name': 'liteLLM_user_table_created',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_UserTable',
            'is_relational': True,
            'documentation': None,
        }),
        ('liteLLM_user_table_updated', {
            'name': 'liteLLM_user_table_updated',
            'is_list': False,
            'optional': True,
            'type': 'models.LiteLLM_UserTable',
            'is_relational': True,
            'documentation': None,
        }),
    ],
)

_LiteLLM_AuditLog_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_AuditLog_fields: Dict['types.LiteLLM_AuditLogKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('changed_by', {
            'name': 'changed_by',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('changed_by_api_key', {
            'name': 'changed_by_api_key',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('action', {
            'name': 'action',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('table_name', {
            'name': 'table_name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('object_id', {
            'name': 'object_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('before_value', {
            'name': 'before_value',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_values', {
            'name': 'updated_values',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_DailyUserSpend_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_DailyUserSpend_fields: Dict['types.LiteLLM_DailyUserSpendKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('user_id', {
            'name': 'user_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('date', {
            'name': 'date',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('api_key', {
            'name': 'api_key',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model', {
            'name': 'model',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_group', {
            'name': 'model_group',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('custom_llm_provider', {
            'name': 'custom_llm_provider',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('mcp_namespaced_tool_name', {
            'name': 'mcp_namespaced_tool_name',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('endpoint', {
            'name': 'endpoint',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('prompt_tokens', {
            'name': 'prompt_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('completion_tokens', {
            'name': 'completion_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('cache_read_input_tokens', {
            'name': 'cache_read_input_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('cache_creation_input_tokens', {
            'name': 'cache_creation_input_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('api_requests', {
            'name': 'api_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('successful_requests', {
            'name': 'successful_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('failed_requests', {
            'name': 'failed_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_DailyOrganizationSpend_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_DailyOrganizationSpend_fields: Dict['types.LiteLLM_DailyOrganizationSpendKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('organization_id', {
            'name': 'organization_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('date', {
            'name': 'date',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('api_key', {
            'name': 'api_key',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model', {
            'name': 'model',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_group', {
            'name': 'model_group',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('custom_llm_provider', {
            'name': 'custom_llm_provider',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('mcp_namespaced_tool_name', {
            'name': 'mcp_namespaced_tool_name',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('endpoint', {
            'name': 'endpoint',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('prompt_tokens', {
            'name': 'prompt_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('completion_tokens', {
            'name': 'completion_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('cache_read_input_tokens', {
            'name': 'cache_read_input_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('cache_creation_input_tokens', {
            'name': 'cache_creation_input_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('api_requests', {
            'name': 'api_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('successful_requests', {
            'name': 'successful_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('failed_requests', {
            'name': 'failed_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_DailyEndUserSpend_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_DailyEndUserSpend_fields: Dict['types.LiteLLM_DailyEndUserSpendKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('end_user_id', {
            'name': 'end_user_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('date', {
            'name': 'date',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('api_key', {
            'name': 'api_key',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model', {
            'name': 'model',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_group', {
            'name': 'model_group',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('custom_llm_provider', {
            'name': 'custom_llm_provider',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('mcp_namespaced_tool_name', {
            'name': 'mcp_namespaced_tool_name',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('endpoint', {
            'name': 'endpoint',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('prompt_tokens', {
            'name': 'prompt_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('completion_tokens', {
            'name': 'completion_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('cache_read_input_tokens', {
            'name': 'cache_read_input_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('cache_creation_input_tokens', {
            'name': 'cache_creation_input_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('api_requests', {
            'name': 'api_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('successful_requests', {
            'name': 'successful_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('failed_requests', {
            'name': 'failed_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_DailyAgentSpend_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_DailyAgentSpend_fields: Dict['types.LiteLLM_DailyAgentSpendKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('agent_id', {
            'name': 'agent_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('date', {
            'name': 'date',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('api_key', {
            'name': 'api_key',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model', {
            'name': 'model',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_group', {
            'name': 'model_group',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('custom_llm_provider', {
            'name': 'custom_llm_provider',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('mcp_namespaced_tool_name', {
            'name': 'mcp_namespaced_tool_name',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('endpoint', {
            'name': 'endpoint',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('prompt_tokens', {
            'name': 'prompt_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('completion_tokens', {
            'name': 'completion_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('cache_read_input_tokens', {
            'name': 'cache_read_input_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('cache_creation_input_tokens', {
            'name': 'cache_creation_input_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('api_requests', {
            'name': 'api_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('successful_requests', {
            'name': 'successful_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('failed_requests', {
            'name': 'failed_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_DailyTeamSpend_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_DailyTeamSpend_fields: Dict['types.LiteLLM_DailyTeamSpendKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('team_id', {
            'name': 'team_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('date', {
            'name': 'date',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('api_key', {
            'name': 'api_key',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model', {
            'name': 'model',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_group', {
            'name': 'model_group',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('custom_llm_provider', {
            'name': 'custom_llm_provider',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('mcp_namespaced_tool_name', {
            'name': 'mcp_namespaced_tool_name',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('endpoint', {
            'name': 'endpoint',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('prompt_tokens', {
            'name': 'prompt_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('completion_tokens', {
            'name': 'completion_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('cache_read_input_tokens', {
            'name': 'cache_read_input_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('cache_creation_input_tokens', {
            'name': 'cache_creation_input_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('api_requests', {
            'name': 'api_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('successful_requests', {
            'name': 'successful_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('failed_requests', {
            'name': 'failed_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_DailyTagSpend_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_DailyTagSpend_fields: Dict['types.LiteLLM_DailyTagSpendKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('request_id', {
            'name': 'request_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('tag', {
            'name': 'tag',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('date', {
            'name': 'date',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('api_key', {
            'name': 'api_key',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model', {
            'name': 'model',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_group', {
            'name': 'model_group',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('custom_llm_provider', {
            'name': 'custom_llm_provider',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('mcp_namespaced_tool_name', {
            'name': 'mcp_namespaced_tool_name',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('endpoint', {
            'name': 'endpoint',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('prompt_tokens', {
            'name': 'prompt_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('completion_tokens', {
            'name': 'completion_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('cache_read_input_tokens', {
            'name': 'cache_read_input_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('cache_creation_input_tokens', {
            'name': 'cache_creation_input_tokens',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('spend', {
            'name': 'spend',
            'is_list': False,
            'optional': False,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('api_requests', {
            'name': 'api_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('successful_requests', {
            'name': 'successful_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('failed_requests', {
            'name': 'failed_requests',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_CronJob_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_CronJob_fields: Dict['types.LiteLLM_CronJobKeys', PartialModelField] = OrderedDict(
    [
        ('cronjob_id', {
            'name': 'cronjob_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('pod_id', {
            'name': 'pod_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('status', {
            'name': 'status',
            'is_list': False,
            'optional': False,
            'type': 'enums.JobStatus',
            'is_relational': False,
            'documentation': None,
        }),
        ('last_updated', {
            'name': 'last_updated',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('ttl', {
            'name': 'ttl',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_ManagedFileTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_ManagedFileTable_fields: Dict['types.LiteLLM_ManagedFileTableKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('unified_file_id', {
            'name': 'unified_file_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('file_object', {
            'name': 'file_object',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_mappings', {
            'name': 'model_mappings',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('flat_model_file_ids', {
            'name': 'flat_model_file_ids',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('storage_backend', {
            'name': 'storage_backend',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('storage_url', {
            'name': 'storage_url',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_ManagedObjectTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_ManagedObjectTable_fields: Dict['types.LiteLLM_ManagedObjectTableKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('unified_object_id', {
            'name': 'unified_object_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_object_id', {
            'name': 'model_object_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('file_object', {
            'name': 'file_object',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('file_purpose', {
            'name': 'file_purpose',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('status', {
            'name': 'status',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('batch_processed', {
            'name': 'batch_processed',
            'is_list': False,
            'optional': False,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_ManagedVectorStoreTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_ManagedVectorStoreTable_fields: Dict['types.LiteLLM_ManagedVectorStoreTableKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('unified_resource_id', {
            'name': 'unified_resource_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('resource_object', {
            'name': 'resource_object',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_mappings', {
            'name': 'model_mappings',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('flat_model_resource_ids', {
            'name': 'flat_model_resource_ids',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('storage_backend', {
            'name': 'storage_backend',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('storage_url', {
            'name': 'storage_url',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_ManagedVectorStoresTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_ManagedVectorStoresTable_fields: Dict['types.LiteLLM_ManagedVectorStoresTableKeys', PartialModelField] = OrderedDict(
    [
        ('vector_store_id', {
            'name': 'vector_store_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('custom_llm_provider', {
            'name': 'custom_llm_provider',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('vector_store_name', {
            'name': 'vector_store_name',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('vector_store_description', {
            'name': 'vector_store_description',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('vector_store_metadata', {
            'name': 'vector_store_metadata',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_credential_name', {
            'name': 'litellm_credential_name',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_params', {
            'name': 'litellm_params',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('team_id', {
            'name': 'team_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('user_id', {
            'name': 'user_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_GuardrailsTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_GuardrailsTable_fields: Dict['types.LiteLLM_GuardrailsTableKeys', PartialModelField] = OrderedDict(
    [
        ('guardrail_id', {
            'name': 'guardrail_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('guardrail_name', {
            'name': 'guardrail_name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_params', {
            'name': 'litellm_params',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('guardrail_info', {
            'name': 'guardrail_info',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('team_id', {
            'name': 'team_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('status', {
            'name': 'status',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('submitted_at', {
            'name': 'submitted_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('reviewed_at', {
            'name': 'reviewed_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_DailyGuardrailMetrics_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_DailyGuardrailMetrics_fields: Dict['types.LiteLLM_DailyGuardrailMetricsKeys', PartialModelField] = OrderedDict(
    [
        ('guardrail_id', {
            'name': 'guardrail_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('date', {
            'name': 'date',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('requests_evaluated', {
            'name': 'requests_evaluated',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('passed_count', {
            'name': 'passed_count',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('blocked_count', {
            'name': 'blocked_count',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('flagged_count', {
            'name': 'flagged_count',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('avg_score', {
            'name': 'avg_score',
            'is_list': False,
            'optional': True,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('avg_latency_ms', {
            'name': 'avg_latency_ms',
            'is_list': False,
            'optional': True,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_DailyPolicyMetrics_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_DailyPolicyMetrics_fields: Dict['types.LiteLLM_DailyPolicyMetricsKeys', PartialModelField] = OrderedDict(
    [
        ('policy_id', {
            'name': 'policy_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('date', {
            'name': 'date',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('requests_evaluated', {
            'name': 'requests_evaluated',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('passed_count', {
            'name': 'passed_count',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('blocked_count', {
            'name': 'blocked_count',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('flagged_count', {
            'name': 'flagged_count',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('avg_score', {
            'name': 'avg_score',
            'is_list': False,
            'optional': True,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('avg_latency_ms', {
            'name': 'avg_latency_ms',
            'is_list': False,
            'optional': True,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_SpendLogGuardrailIndex_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_SpendLogGuardrailIndex_fields: Dict['types.LiteLLM_SpendLogGuardrailIndexKeys', PartialModelField] = OrderedDict(
    [
        ('request_id', {
            'name': 'request_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('guardrail_id', {
            'name': 'guardrail_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('policy_id', {
            'name': 'policy_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('start_time', {
            'name': 'start_time',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_SpendLogToolIndex_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_SpendLogToolIndex_fields: Dict['types.LiteLLM_SpendLogToolIndexKeys', PartialModelField] = OrderedDict(
    [
        ('request_id', {
            'name': 'request_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('tool_name', {
            'name': 'tool_name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('start_time', {
            'name': 'start_time',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_PromptTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_PromptTable_fields: Dict['types.LiteLLM_PromptTableKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('prompt_id', {
            'name': 'prompt_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('version', {
            'name': 'version',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_params', {
            'name': 'litellm_params',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('prompt_info', {
            'name': 'prompt_info',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_HealthCheckTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_HealthCheckTable_fields: Dict['types.LiteLLM_HealthCheckTableKeys', PartialModelField] = OrderedDict(
    [
        ('health_check_id', {
            'name': 'health_check_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_name', {
            'name': 'model_name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('model_id', {
            'name': 'model_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('status', {
            'name': 'status',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('healthy_count', {
            'name': 'healthy_count',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('unhealthy_count', {
            'name': 'unhealthy_count',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('error_message', {
            'name': 'error_message',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('response_time_ms', {
            'name': 'response_time_ms',
            'is_list': False,
            'optional': True,
            'type': '_float',
            'is_relational': False,
            'documentation': None,
        }),
        ('details', {
            'name': 'details',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('checked_by', {
            'name': 'checked_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('checked_at', {
            'name': 'checked_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_SearchToolsTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_SearchToolsTable_fields: Dict['types.LiteLLM_SearchToolsTableKeys', PartialModelField] = OrderedDict(
    [
        ('search_tool_id', {
            'name': 'search_tool_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('search_tool_name', {
            'name': 'search_tool_name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_params', {
            'name': 'litellm_params',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('search_tool_info', {
            'name': 'search_tool_info',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_SSOConfig_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_SSOConfig_fields: Dict['types.LiteLLM_SSOConfigKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('sso_settings', {
            'name': 'sso_settings',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_ManagedVectorStoreIndexTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_ManagedVectorStoreIndexTable_fields: Dict['types.LiteLLM_ManagedVectorStoreIndexTableKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('index_name', {
            'name': 'index_name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('litellm_params', {
            'name': 'litellm_params',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('index_info', {
            'name': 'index_info',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_CacheConfig_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_CacheConfig_fields: Dict['types.LiteLLM_CacheConfigKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('cache_settings', {
            'name': 'cache_settings',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_UISettings_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_UISettings_fields: Dict['types.LiteLLM_UISettingsKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('ui_settings', {
            'name': 'ui_settings',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_ConfigOverrides_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_ConfigOverrides_fields: Dict['types.LiteLLM_ConfigOverridesKeys', PartialModelField] = OrderedDict(
    [
        ('config_type', {
            'name': 'config_type',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('config_value', {
            'name': 'config_value',
            'is_list': False,
            'optional': False,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_SkillsTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_SkillsTable_fields: Dict['types.LiteLLM_SkillsTableKeys', PartialModelField] = OrderedDict(
    [
        ('skill_id', {
            'name': 'skill_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('display_title', {
            'name': 'display_title',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('description', {
            'name': 'description',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('instructions', {
            'name': 'instructions',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('source', {
            'name': 'source',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('latest_version', {
            'name': 'latest_version',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('file_content', {
            'name': 'file_content',
            'is_list': False,
            'optional': True,
            'type': 'fields.Base64',
            'is_relational': False,
            'documentation': None,
        }),
        ('file_name', {
            'name': 'file_name',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('file_type', {
            'name': 'file_type',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('metadata', {
            'name': 'metadata',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_PolicyTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_PolicyTable_fields: Dict['types.LiteLLM_PolicyTableKeys', PartialModelField] = OrderedDict(
    [
        ('policy_id', {
            'name': 'policy_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('policy_name', {
            'name': 'policy_name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('version_number', {
            'name': 'version_number',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('version_status', {
            'name': 'version_status',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('parent_version_id', {
            'name': 'parent_version_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('is_latest', {
            'name': 'is_latest',
            'is_list': False,
            'optional': False,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('published_at', {
            'name': 'published_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('production_at', {
            'name': 'production_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('inherit', {
            'name': 'inherit',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('description', {
            'name': 'description',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('guardrails_add', {
            'name': 'guardrails_add',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('guardrails_remove', {
            'name': 'guardrails_remove',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('condition', {
            'name': 'condition',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('pipeline', {
            'name': 'pipeline',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_PolicyAttachmentTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_PolicyAttachmentTable_fields: Dict['types.LiteLLM_PolicyAttachmentTableKeys', PartialModelField] = OrderedDict(
    [
        ('attachment_id', {
            'name': 'attachment_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('policy_name', {
            'name': 'policy_name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('scope', {
            'name': 'scope',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('teams', {
            'name': 'teams',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('keys', {
            'name': 'keys',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('models', {
            'name': 'models',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('tags', {
            'name': 'tags',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_ToolTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_ToolTable_fields: Dict['types.LiteLLM_ToolTableKeys', PartialModelField] = OrderedDict(
    [
        ('tool_id', {
            'name': 'tool_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('tool_name', {
            'name': 'tool_name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('origin', {
            'name': 'origin',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('input_policy', {
            'name': 'input_policy',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('output_policy', {
            'name': 'output_policy',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('call_count', {
            'name': 'call_count',
            'is_list': False,
            'optional': False,
            'type': '_int',
            'is_relational': False,
            'documentation': None,
        }),
        ('assignments', {
            'name': 'assignments',
            'is_list': False,
            'optional': True,
            'type': 'fields.Json',
            'is_relational': False,
            'documentation': None,
        }),
        ('key_hash', {
            'name': 'key_hash',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('team_id', {
            'name': 'team_id',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('key_alias', {
            'name': 'key_alias',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('user_agent', {
            'name': 'user_agent',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('last_used_at', {
            'name': 'last_used_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_AccessGroupTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_AccessGroupTable_fields: Dict['types.LiteLLM_AccessGroupTableKeys', PartialModelField] = OrderedDict(
    [
        ('access_group_id', {
            'name': 'access_group_id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('access_group_name', {
            'name': 'access_group_name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('description', {
            'name': 'description',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('access_model_names', {
            'name': 'access_model_names',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('access_mcp_server_ids', {
            'name': 'access_mcp_server_ids',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('access_agent_ids', {
            'name': 'access_agent_ids',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('assigned_team_ids', {
            'name': 'assigned_team_ids',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('assigned_key_ids', {
            'name': 'assigned_key_ids',
            'is_list': True,
            'optional': False,
            'type': 'List[_str]',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': False,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_by', {
            'name': 'updated_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)

_LiteLLM_ClaudeCodePluginTable_relational_fields: Set[str] = set()  # pyright: ignore[reportUnusedVariable]
_LiteLLM_ClaudeCodePluginTable_fields: Dict['types.LiteLLM_ClaudeCodePluginTableKeys', PartialModelField] = OrderedDict(
    [
        ('id', {
            'name': 'id',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('name', {
            'name': 'name',
            'is_list': False,
            'optional': False,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('version', {
            'name': 'version',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('description', {
            'name': 'description',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('manifest_json', {
            'name': 'manifest_json',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('files_json', {
            'name': 'files_json',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
        ('enabled', {
            'name': 'enabled',
            'is_list': False,
            'optional': False,
            'type': '_bool',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_at', {
            'name': 'created_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('updated_at', {
            'name': 'updated_at',
            'is_list': False,
            'optional': True,
            'type': 'datetime.datetime',
            'is_relational': False,
            'documentation': None,
        }),
        ('created_by', {
            'name': 'created_by',
            'is_list': False,
            'optional': True,
            'type': '_str',
            'is_relational': False,
            'documentation': None,
        }),
    ],
)



# we have to import ourselves as relation types are namespaced to models
# e.g. models.Post
from . import models, actions

# required to support relationships between models
model_rebuild(LiteLLM_BudgetTable)
model_rebuild(LiteLLM_CredentialsTable)
model_rebuild(LiteLLM_ProxyModelTable)
model_rebuild(LiteLLM_AgentsTable)
model_rebuild(LiteLLM_OrganizationTable)
model_rebuild(LiteLLM_ModelTable)
model_rebuild(LiteLLM_TeamTable)
model_rebuild(LiteLLM_ProjectTable)
model_rebuild(LiteLLM_DeletedTeamTable)
model_rebuild(LiteLLM_UserTable)
model_rebuild(LiteLLM_ObjectPermissionTable)
model_rebuild(LiteLLM_MCPServerTable)
model_rebuild(LiteLLM_MCPUserCredentials)
model_rebuild(LiteLLM_VerificationToken)
model_rebuild(LiteLLM_JWTKeyMapping)
model_rebuild(LiteLLM_DeprecatedVerificationToken)
model_rebuild(LiteLLM_DeletedVerificationToken)
model_rebuild(LiteLLM_EndUserTable)
model_rebuild(LiteLLM_TagTable)
model_rebuild(LiteLLM_Config)
model_rebuild(LiteLLM_SpendLogs)
model_rebuild(LiteLLM_ErrorLogs)
model_rebuild(LiteLLM_UserNotifications)
model_rebuild(LiteLLM_TeamMembership)
model_rebuild(LiteLLM_OrganizationMembership)
model_rebuild(LiteLLM_InvitationLink)
model_rebuild(LiteLLM_AuditLog)
model_rebuild(LiteLLM_DailyUserSpend)
model_rebuild(LiteLLM_DailyOrganizationSpend)
model_rebuild(LiteLLM_DailyEndUserSpend)
model_rebuild(LiteLLM_DailyAgentSpend)
model_rebuild(LiteLLM_DailyTeamSpend)
model_rebuild(LiteLLM_DailyTagSpend)
model_rebuild(LiteLLM_CronJob)
model_rebuild(LiteLLM_ManagedFileTable)
model_rebuild(LiteLLM_ManagedObjectTable)
model_rebuild(LiteLLM_ManagedVectorStoreTable)
model_rebuild(LiteLLM_ManagedVectorStoresTable)
model_rebuild(LiteLLM_GuardrailsTable)
model_rebuild(LiteLLM_DailyGuardrailMetrics)
model_rebuild(LiteLLM_DailyPolicyMetrics)
model_rebuild(LiteLLM_SpendLogGuardrailIndex)
model_rebuild(LiteLLM_SpendLogToolIndex)
model_rebuild(LiteLLM_PromptTable)
model_rebuild(LiteLLM_HealthCheckTable)
model_rebuild(LiteLLM_SearchToolsTable)
model_rebuild(LiteLLM_SSOConfig)
model_rebuild(LiteLLM_ManagedVectorStoreIndexTable)
model_rebuild(LiteLLM_CacheConfig)
model_rebuild(LiteLLM_UISettings)
model_rebuild(LiteLLM_ConfigOverrides)
model_rebuild(LiteLLM_SkillsTable)
model_rebuild(LiteLLM_PolicyTable)
model_rebuild(LiteLLM_PolicyAttachmentTable)
model_rebuild(LiteLLM_ToolTable)
model_rebuild(LiteLLM_AccessGroupTable)
model_rebuild(LiteLLM_ClaudeCodePluginTable)
