flake8 условно с версией python в заглушке - PullRequest
0 голосов
/ 11 апреля 2020

Мне нужно поддерживать как python 3.8, так и версии ниже 3.8, но пакет, который мне нужно импортировать в мой файл-заглушку (* .pyi), имел другое имя в <3.8 </p>

import sys
if sys.version_info.minor < 8:
    import xyz
else:
    import zyx

В В общем, это должно сработать, но когда я запускаю flake8 с * .pyi файлами config (flake8 --config flake8-pyi.ini), я получаю следующее:

Y002 If test must be a simple comparison against sys.platform or sys.version_info

Любые идеи, что можно с этим сделать ?

Заранее спасибо!

1 Ответ

0 голосов
/ 12 апреля 2020

Из описание flake8-pyi (плагин flake8, не являющийся частью самого flake8):

Y002: Если проверка должна быть простым сравнением с sys.platform или sys.version_info. Заглушки поддерживают простые условные обозначения для указания различий между Python версиями или платформами, но средства проверки типов понимают только ограниченное подмножество синтаксиса Python, и это предупреждение срабатывает для условий, которые средства проверки типов, вероятно, не поймут.

Исправлено: измените ваше состояние на:

if sys.version_info < (3, 8):

обратите внимание, что ваш код сломается для 2.8 (да, некоторые люди делают это!) И 4.0, поэтому вы должны быть осторожны с элидирующие части сравнений;) - я написал плагин flake8, который помогает противостоять условиям, которые могут быть проблематичными c: flake8-2020

...