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 warning

Ну, технически он работает нормально, код работает. Но как-то 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 аннотации и вы будете устанавливать :)