Всем привет, не совсем пойму, как нужно указывать тип моделей, которые идут на вход у функции.
Пусть будут несколько "абстрактных" моделей, которые наследуются от 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)
Как здесь правильно указать тайпинги?