Continuation line missing indentation or outdented как исправить

У меня есть скрипт на python, и flake8 обнаружил некоторые ошибки для моего скрипта: 231 flake8 E128 continuation line under-indented for visual indent 232 flake8 E128 continuation line under-indented for visual indent 234 flake8 E128 continuation line under-indented for visual indent 235 f...

У меня есть скрипт на python, и flake8 обнаружил некоторые ошибки для моего скрипта:

231 flake8  
E128 continuation line under-indented for visual indent

232 flake8  
E128 continuation line under-indented for visual indent

234 flake8  
E128 continuation line under-indented for visual indent

235 flake8  
E122 continuation line missing indentation or outdented

236 flake8  
E122 continuation line missing indentation or outdented

Вот мой код:

t = someFunction (
        data, title=so, Rows=1,
        Widths=[1.2 * inch, 0.3 * inch,
        0.1 * inch, 0.3 * inch, 2 * inch, 3 * inch,
        5.00 * inch],
        style=[("sth1", (0, 0), (-1, -1), "CENTER"),
            ("sth2", (0, 0), (-1, -1), "CENTER"),
            ('sth3', (0, 0), (-1, -1), 0.5, colors.grey),
            ('sth4', (0, 0), (-1, 0), colors.orange),
            ('sth5', (0, 1), (0, -1), colors.orange),
        ])

Я пробовал разные перестановки, и ни одна из них не работала. Может кто-нибудь сказать мне, как отформатировать эту функцию?

1 ответ

Лучший ответ

E122: Когда вы используете строку продолжения для нескольких аргументов функции, они должны использовать обычный отступ в 4 столбца.

E128: Когда вы распределяете элементы списка, dict, tuple и т. Д. По нескольким строкам, вам нужно выровнять их слева.

t = someFunction (
    Widths=[1.2 * inch, 0.3 * inch,
            0.1 * inch, 0.3 * inch, 2 * inch, 3 * inch,
            5.00 * inch],
    style=[("sth1", (0, 0), (-1, -1), "CENTER"),
           ("sth2", (0, 0), (-1, -1), "CENTER"),
           ('sth3', (0, 0), (-1, -1), 0.5, colors.grey),
           ('sth4', (0, 0), (-1, 0), colors.orange),
           ('sth5', (0, 1), (0, -1), colors.orange)]
)

Вот документация:

В строке продолжения отсутствует отступ или отступ (E122)

Строка продолжения с отступом для визуального отступа (E128)


0

Barmar
12 Сен 2019 в 23:43

#python #pycharm #refactoring #indentation #pep8

Вопрос:

Когда я получу предупреждение

PEP 8: E122 continuation line missing indentation or outdented

Ctrl Alt L не выполняет необходимые отступы. Вместо этого отступ должен быть сделан вручную.

Как будто этого было недостаточно, если я сделаю Ctrl Alt Lэто позже, строка не будет привязана к предыдущему неверному уровню, что снова вызовет вышеупомянутое предупреждение. Каково решение этой досадной неприятности?

Как и было предложено, вот пример:

 def foo():
    return range(15)


var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, 
var15 = foo()
 

Editor -> Code Style -> Markdown Настройки:

Hard wrap = 80

Wrap on typing = Yes .

Комментарии:

1. Я думаю, что было бы гораздо лучше, если бы вы включили также пример. PyCharm не всегда использует лучшее форматирование (и иногда оно непоследовательно). OTOH PEP8 тоже не без проблем, и иногда просто лучше писать код по-другому

Ответ №1:

PyCharm имеет некоторые встроенные функции, которые автоматически исправляют отступы в строке продолжения, но не для конкретного случая, показанного в вопросе.

Показанный код-Python, поэтому соответствующие настройки находятся на File > Settings > Editor > Code Style > Python > Wrapping and Braces .

Если вы посмотрите на скриншот, нужная вам функциональность работает для доступных опций, которые называются Wrap if long (используются вместе с Hard wrap at ограничением). Если вы попытаетесь сделать то же самое для любой из конструкций, у которых есть предыдущая опция (например, импорт), отступ строки продолжения будет автоматически исправлен нажатием Ctrl Alt L. Однако ваш пример предназначен для нескольких объявлений атрибутов в одной строке с распаковкой, для которой нет возможности.

снимок экрана диалога настроек IDE

Это оставляет пользователям 3 распространенных альтернативы:

  1. Используйте Python Black для форматирования кода.
  2. В этом случае выполните форматирование вручную.
  3. Не обращайте внимания на руководство по стилю PEP 8 и отключите предупреждение линтера.

Но, в заключение, это не связано с тем, что вы делаете что-то не так, и где-то нет скрытой настройки, которая позволила бы это сделать. В среде IDE просто нет функции форматирования для этой конкретной конструкции.

Вы также можете отправить запрос на функцию в JetBrains bugtracker.

Уведомления

  • Начало
  • » Python для новичков
  • » Настройка вывода информации AUTOMATION TESTS c библиотекой nosetests (unittest)

#1 Апрель 8, 2015 11:14:13

Настройка вывода информации AUTOMATION TESTS c библиотекой nosetests (unittest)

Привет, и сразу заранее спасибо за помощь.

import unittest

class MyTestCase(unittest.TestCase):
def test_with_docstring(self):
"""Test that something does something
i can fly

"""

def test_without_docstring(self):
pass

if __name__ == '__main__':
nose.run(argv=["nosetests" "***.py", "--verbosity=2"])
>>>Validation of ****** i can fly
>>>test_without_docstring (tmp.MyTestCase)

Как избавится от пробелов? (в одну строку писать нельзя т.к. PEP 8)

Такое решение не подходит:

import unittest

class MyTestCase(unittest.TestCase):
def test_with_docstring(self):
"""Test that something does something
i can fly

"""

def test_without_docstring(self):
pass

if __name__ == '__main__':
nose.run(argv=["nosetests" "***.py", "--verbosity=2"])
>>>Validation of ****** i can fly

Или как вариант избавится от “”

Отредактировано felix175 (Апрель 9, 2015 10:29:44)

Офлайн

  • Пожаловаться

#2 Апрель 8, 2015 12:34:20

Настройка вывода информации AUTOMATION TESTS c библиотекой nosetests (unittest)

def refine_txt(txt):
    txt = txt.strip()
    while txt.find('  ') >= 0:
        txt = txt.replace('  ', ' ')
    return txt

Офлайн

  • Пожаловаться

#3 Апрель 8, 2015 13:27:07

Настройка вывода информации AUTOMATION TESTS c библиотекой nosetests (unittest)

Suguby27

Так оно не работает с NOSETEST (Если я Вас правильно понял)

должно при запуске быть так:
Validation of correct ****** … ok
Validation of correct ****** … ok
Validation of correct ****** … ok
Validation of correct ****** … ok

А сейчас если исправить и просто вызвать функцию, оно не понимает что с ней сделать и выведет:
test1 (CLASS.TEST) … OK

Конечно же функция отработала
Спасибо.

Добавляю код чтоб было понятней

import nose

class Suite(unittest.TestCase):

def test1(self):
"Validation of**********************************************
"I can fly"

pass

if __name__ == '__main__':
unittest.main()

Отредактировано felix175 (Апрель 8, 2015 13:34:38)

Офлайн

  • Пожаловаться

#4 Апрель 9, 2015 15:46:02

Настройка вывода информации AUTOMATION TESTS c библиотекой nosetests (unittest)

хм, может так

class MyTestCase(unittest.TestCase):
    def test_with_docstring(self):
        refine_txt("""Test that something does something 
            i can fly
        """)

хотя даже вот так

class MyTestCase(unittest.TestCase):
    def test_with_docstring(self):
        ("Test that something does something "
            "i can fly "
            "... and all"
        )

пайтон сцепляет подряд идущие строки

Офлайн

  • Пожаловаться

#5 Апрель 10, 2015 12:54:07

Настройка вывода информации AUTOMATION TESTS c библиотекой nosetests (unittest)

Suguby27
хм, может так

Statement seems to have no effect less… (Ctrl+F1)
This inspection detects statements without any effect

Спасибо, но все равно подчеркивает текст

Отредактировано felix175 (Апрель 15, 2015 18:10:15)

Офлайн

  • Пожаловаться

#6 Апрель 10, 2015 13:14:51

Настройка вывода информации AUTOMATION TESTS c библиотекой nosetests (unittest)

>>> class A:
...   def m(self):
...     'line1' 
...     'line2' 
...     'line3'
...     print(1)
... 
>>> a = A()
>>> a.m()
1
>>> print(a.m.__doc__)
line1line2line3
>>>

Офлайн

  • Пожаловаться

#7 Апрель 15, 2015 18:17:29

Настройка вывода информации AUTOMATION TESTS c библиотекой nosetests (unittest)

Suguby27
хм, может так

1й вариант не работает

2й вариант жалуется PEP8: continuation line under-indented for visual indent

Офлайн

  • Пожаловаться

#8 Апрель 15, 2015 18:21:25

Настройка вывода информации AUTOMATION TESTS c библиотекой nosetests (unittest)

py.user.next

Так и было реализовано но PEP8: continuation line missing indentation or outdented

Офлайн

  • Пожаловаться

#9 Апрель 15, 2015 23:47:15

Настройка вывода информации AUTOMATION TESTS c библиотекой nosetests (unittest)

felix175
Так и было реализовано но PEP8: continuation line missing indentation or outdented

А ты в чём это всё смотришь? Потому что ошибок нет, просто эта штука срабатывает.
Причём не просто срабатывает, а ещё и пишет какими-то загадками.

Отредактировано py.user.next (Апрель 15, 2015 23:48:12)

Офлайн

  • Пожаловаться

#10 Апрель 16, 2015 11:07:50

Настройка вывода информации AUTOMATION TESTS c библиотекой nosetests (unittest)

py.user.next

как сейчас

как должно быть

но при этом неправельно выводит

потому что много пробелов

Отредактировано felix175 (Апрель 16, 2015 11:12:52)

Офлайн

  • Пожаловаться

  • Начало
  • » Python для новичков
  • » Настройка вывода информации AUTOMATION TESTS c библиотекой nosetests (unittest)

Понравилась статья? Поделить с друзьями:
  • Content manager assetto corsa error
  • Content encoding error битрикс
  • Contact support error code 0x3000001
  • Contact form 7 wordpress как изменить внешний вид
  • Contact form 7 500 internal server error