Могу ли я подавить ошибки mypy в линии? - PullRequest
0 голосов
/ 25 февраля 2019

Я недавно сделал ошибку, открыв свой файл $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, или ...?

...