Flake 8: "несколько операторов в одной строке (двоеточие)" только для имени переменной, начинающегося с " if"
я использую flake8
в коде Visual Studio напишите некоторый код с помощью Python 3.6 аннотации переменных. До сих пор это работало без проблем, но я столкнулся со странным предупреждением.
это прекрасно работает:
style: str = """
width: 100%;
...
"""
# Doing sth with `style`
такое:
img_style: str = """
width: 100%;
...
"""
# Doing sth with `img_style`
это, однако, не делает, он дает ниже предупреждение:
iframe_style: str = """
width: 100%;
...
"""
# Doing sth with `iframe_style`
Ну, технически он работает нормально, код работает. Но как-то flake8
не доволен этим.
Многострочная строка и следующий за ней код всегда одинаковы.
когда я опускаю "f" (i_rame_style
), я тоже не получаю предупреждения! Поэтому я думаю, по какой-то причине flake8 думает о if foo: bar()
здесь!?
что я пропустила? Это ошибка в flake8
?
1 ответов
Edit: проблема заключается в pycodestyle (pep8), который вызывается flake8. Остальные все еще стоят.
второе редактирование: я сделал еще несколько исследований, и проблема исправлена здесь. Исправление еще не было выпущено.
определенно выглядит как ошибка flake8 для меня:
flakebug.py
:
innocuous: str = ""
ifstarting_string: str = ""
forfalse_positivetoo: str = ""
whilethis_lookslikeabug: str = ""
elsehaha: str = ""
в доспехах:
$ # python3.6 -m pycodestyle flakebug.py gives the same results
$ python3.6 -m flake8 flakebug.py
flakebug.py:2:18: E701 multiple statements on one line (colon)
flakebug.py:3:21: E701 multiple statements on one line (colon)
flakebug.py:4:24: E701 multiple statements on one line (colon)
flakebug.py:5:9: E701 multiple statements on one line (colon)
выглядит как каждая строка, начинающаяся с оператора потока управления вызвать его.
Держу пари, он использует регулярное выражение, как (if|else|while|for).*:
.
я постараюсь разобраться в этом и обновить этот ответ, если смогу, тем временем вы можете добавить некоторые # noqa
аннотации и вы будете устанавливать :)