Почему Mypy не вычисляет тип библиотечной функции третьей части?

Рассматривая этот код:

class ExportView(IndexView):
    model_admin: Optional[ModelAdmin] = None

    def export_csv(self) -> HttpResponse | StreamingHttpResponse:
        fields = getattr(self.model_admin, "csv_export_fields", [])
        return render_to_csv_response(self.queryset.all().values(*fields))

Я получаю следующую ошибку от Mypy в строке return:

ошибка: Возврат Any из функции, объявленной для возврата "Union[HttpResponse, StreamingHttpResponse]" [no-any-return]

render_to_csv_response является методом из django-queryset-csv, и Pyright правильно определил его тип возврата как Union[HttpResponse, StreamingHttpResponse].

Я думал, что Mypy не читает библиотеку 3-й части, как при запуске с --follow-imports=skip, но мой конфиг pyproject.toml установил silent, который ведет себя так же, как и обычный

[tool.mypy]
plugins = ["mypy_django_plugin.main"]
disallow_untyped_defs = true
ignore_missing_imports = true
follow_imports = 'silent'
no_incremental = true
warn_redundant_casts = true
warn_unused_ignores = true
warn_return_any = true
warn_unreachable = true
enable_error_code = 'ignore-without-code'
show_error_codes = true

Замена на normal также не устраняет проблему. Есть идеи, как заставить Mypy найти правильный тип, как это делает Pyright?

Вернуться на верх