stympel
@stympel

Как указать тип для модели pydantic?

Всем привет, не совсем пойму, как нужно указывать тип моделей, которые идут на вход у функции.
Пусть будут несколько "абстрактных" моделей, которые наследуются от BaseModel.
from pydantic.main import BaseModel


class Cat(BaseModel):
    ...


class Dog(BaseModel):
    ...


class Mouse(BaseModel):
    ...


class NewAnimal(BaseModel):
    ...

Есть некая функция, которая принимает две любые pydantic модели на вход и возвращает pydantic модель, тип которой указан в качестве аргумента response_model. Не важно, что присходит внутри и что делает эта функция и почему именно такие модели, вопрос не в этом.
def foo(first_animal: BaseModel, second_animal: BaseModel, response_model: BaseModel) -> BaseModel:
    ...
    return response_model(**some_dict)

Вроде бы таких тайпингов и должно было хватит, ведь все модели являются наследниками BaseModel (по крайней мере я так думал), но PyCharm заливает все желтым при вызове функции.
cat = Cat(...)
dog = Dog(...)

new_animal = foo(first_animal=cat, second_animal=dog, response_model=NewAnimal)

Как здесь правильно указать тайпинги?
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы