Я недавно сделал ошибку, открыв свой файл $PYTHONSTARTUP
с включенной проверкой синтаксиса mypy
.В результате я начал получать эту ошибку:
startup.py|79 col 2 error| Incompatible types in assignment (expression has type "HistoryPrompt", variable has type "str")
В строке 79:
sys.ps1 = HistoryPrompt()
Я сразу подумал: «Клянусь, mypy
! Вы совершенно правы!И все же, это именно то, что я хочу сделать, так что вы тоже ошибаетесь!
Я посмотрел, есть ли какая-нибудь "заглушка" для модуля sys
, но ничего не смог найти.Я предполагаю, что mypy
определяет тип, глядя на значение, хранящееся в переменной (по умолчанию ">>>", то есть str
).
В действительности, конечно,тип должен быть несуществующим typing.Stringifiable
, указывая на объект, который будет реагировать на str(x)
.
Достигнув этого тупика, я искал способ сказать mypy
, чтобы подавитьошибка.Многие другие инструменты поддерживают # noqa: xxx
, и я подумал, что должно быть чем-то, верно?
Неверно.Или, по крайней мере, я не смог найти его в своей версии: mypy 0.670
Поэтому я разработал хак умный обходной путь:
import typing
# Work around mypy error: Incompatible types in assignment
suppress_mypy_error: typing.Any = HistoryPrompt()
sys.ps1 = suppress_mypy_error
Мой вопрос таков: Есть ли способ подавления этой конкретной ошибки в строке (лучше всего), или в mypy.ini
, или путем отправки PR на python/mypy
, или ...?