Использование локальных заглушек Mypy
Я пытаюсь ввести подсказку, введенную Python 3.5, и получил проблему, используя локальные заглушки в качестве подсказки ввода с mypy.
эксперимента я сделать, это создать kk.py содержащей
def type_check(a):
pass
кроме того, я поставил kk.pyi, содержащий
def type_check(a: int):...
в том же каталоге. Таким образом, я попытался вызвать ошибку "ncompatible types in assignment", передав строку type_check в kk.py - ... Однако, когда я побежал mypy kk.py и получить нет ошибка.
таким образом, я попробовал другой способ, который предлагает mypy doc, который должен установить переменную среды MYPYPATH в ~/some/path/stub и поставить kk.Нейпьидо в каталоге. Однако я получил ту же ошибку.
кто-нибудь может мне помочь в этом?
вот Вики mypy на как для использования локального заглушки.
1 ответов
Я не знаю, почему кто-то проголосовал против этого вопроса, не ответив на него или не комментируя, почему ему это не понравилось, но вот ответ, который я понял:
файл заглушки mypy работает только при импорте модуля. Таким образом, если у вас есть
def try_check(a):
pass
in kk.py и
def try_check(a: int):...
в КК.pyi в том же каталоге с kk.py или в каталоге, который указывает MYPYPATH, mypy будет вводить проверку файла python при импорте kk. Это, если у вас есть
import .kk
kk.try_check('str')
in test.py и беги!--14-->mypy test.py, mypy сообщит о конфликте типов. Однако он не сообщит о конфликте, если у вас есть
try_check('str')
in kk.py.
вы можете ввести функции проверки в программе, которая содержит определение функции, Если вы пишете подсказку ввода явно в определении функции. Например, вы можете написать
def try_check(a: int):
pass
try_check('str')
in kk.py и тогда mypy kk.py. Mypy сообщит конфликт типов.