Source code for litestar.plugins.pydantic.plugins.di

from __future__ import annotations

import inspect
from inspect import Signature
from typing import Any

from litestar.plugins import DIPlugin
from litestar.plugins.pydantic.utils import is_pydantic_model_class


[docs] class PydanticDIPlugin(DIPlugin):
[docs] def has_typed_init(self, type_: Any) -> bool: return is_pydantic_model_class(type_)
[docs] def get_typed_init(self, type_: Any) -> tuple[Signature, dict[str, Any]]: try: model_fields = dict(type_.model_fields) except AttributeError: model_fields = {k: model_field.field_info for k, model_field in type_.__fields__.items()} parameters = [ inspect.Parameter(name=field_name, kind=inspect.Parameter.KEYWORD_ONLY, annotation=Any) for field_name in model_fields ] type_hints = dict.fromkeys(model_fields, Any) return Signature(parameters), type_hints