Почему 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?