mypy не может найти подсказки для черных - PullRequest
0 голосов
/ 25 марта 2020

У меня есть файл test.py, который содержит только строку import black. Когда я запускаю mypy test.py, я получаю следующую ошибку:

test.py:1: error: Skipping analyzing 'black': found module but no type hints or library stubs
test.py:1: note: See https://mypy.readthedocs.io/en/latest/running_mypy.html#missing-imports
Found 1 error in 1 file (checked 1 source file)

Однако, когда я смотрю на источник для black, кажется, что все имеет подсказки типа. Что мне нужно сделать по-другому в mypy, чтобы заставить его использовать подсказки типа при импорте black?

Настройка среды:

conda create -n test python=3.7 -y
conda activate test
pip install black mypy

РЕДАКТИРОВАТЬ - Начиная с ссылка, указанная в сообщении об ошибке :

Mypy не будет пытаться определить типы установленных вами сторонних библиотек, если они не объявили себя PEP Заглушка, соответствующая стандарту 561, или зарегистрировалась на типе

Я предполагал, что black выполнило одно из этих требований, но, похоже, оно не зарегистрировано на типе . Начиная с здесь , кажется, что пакет должен иметь файл py.typed, чтобы быть PEP 561-совместимым со встроенными аннотациями, и black, похоже, тоже этого не имеет.

Мой вопрос остается в силе - учитывая, что информация о наборе уже есть в black, как я могу (без необходимости, чтобы PR где-то был утвержден) получить mypy, чтобы использовать это?

Я не вижу какие-нибудь подробности о файле py.typed - если это всего лишь пустой файл и имеет значение только его существование, я предполагаю, что смогу создать его где-нибудь, и тогда будет работать набор текста?

1 Ответ

0 голосов
/ 25 марта 2020

Создание пустого файла с именем py.typed в каталоге установки достаточно:

cd ~/anaconda/envs/test/lib/python3.7/site-packages # or wherever your packages are installed
# black.py is directly in site-packages, but py.typed needs to be in a directory for the module
mkdir black
touch black/py.typed
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...