Mypy терпит неудачу с ожидаемым типом «Type[T]», вместо этого получен «UnionType»Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Mypy терпит неудачу с ожидаемым типом «Type[T]», вместо этого получен «UnionType»

Сообщение Anonymous »

Я использую pydantic для загрузки данных из файлов JSON, которые могут иметь разные параметры, в этом примере — x или y. Я использую класс Loader для загрузки их в модели pydantic, чтобы иметь возможность проверять их во время выполнения, но я не могу сделать свой код совместимым с mypy. Ошибка возникает из-за этой ошибки: Ожидаемый тип «Type[T]», вместо этого получен «UnionType»..
У меня mypy 1.10.0 и pydantic 2.7.0.
Вот воспроизводимый пример моего варианта использования:

Код: Выделить всё

from typing import Iterator, Type, TypeVar, Union

from pydantic import BaseModel, TypeAdapter

class A(BaseModel):
x: int

class B(BaseModel):
y: int

T = TypeVar("T", bound=BaseModel)

class Loader:
def load_models(self, model_class: Type[T]) -> Iterator[T]:
# logic to load models
my_dict = {"x": 1}  # fake data for testing
yield TypeAdapter(model_class).validate_python(my_dict)
my_dict = {"y": 2}  # fake data for testing
yield TypeAdapter(model_class).validate_python(my_dict)

ModelAOrB = A | B

print(list(Loader().load_models(ModelAOrB)))
Есть ли способ заставить его работать с mypy?


Подробнее здесь: https://stackoverflow.com/questions/783 ... pe-instead
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»