Как я могу заставить pylint и autopep8 договориться о том, как делать отступы в определениях обернутых функций?

Как сделать так, чтобы преттификатор autopep8 и линтер pylint согласовывали порядок отступов в моем коде, не отключая при этом форматирование отступов/линтинг в целом? Мне все равно, первое это или второе форматирование, пока я могу нажать Alt+F в VSCode и доверять выводу.

Prettifier хочет, чтобы код был с таким отступом...

# autopep8 prettifier
def sum(
    a: int,
    b: int
) -> int:
    """Return the sum of a and b."""
    return a + b

... но линтер хочет именно так.

# pylint linter
def sum(
        a: int,
        b: int
    ) -> int:
    """Return the sum of a and b."""
    return a + b

Стандарт PEP8 перечисляет это как способ форматирования функции, но не упоминает, как сделать отступ, когда закрывающая скобка помещается в отдельную строку. Я действительно предпочитаю иметь дополнительный разрыв строки, потому что это помещает формат вывода в отдельную строку, это уменьшает желание иметь пустую строку в качестве первой строки в теле функции. Я немного предпочитаю первый вариант выше, так как он выравнивает закрывающую скобку со строкой, которая должна открыть ее. Руководство по стилю Python от Google рекомендует первый пример отступа при использовании подсказок типа.

# PEP8 standard
def sum(
        a: int,
        b: int) -> int:
    """Return the sum of a and b."""
    return a + b

(Для приведенного выше примера было бы лучше просто поместить объявление функции в одну строку, но это не всегда возможно, не делая строку слишком длинной.)


person Jan Aagaard    schedule 17.11.2018    source источник


Ответы (1)


Вы можете перейти на последнюю версию pylint. bad-continuation и bad-whitespace были удалены из pylint в версии 2.6.0. Команда pylint считает, что black или autopep8 помогут вам лучше форматировать чем Пилинт.

В более общем плане я думаю, что если вы используете автоформатер, вы можете отключить сообщения pylint о форматировании.

person Pierre.Sassoulas    schedule 16.02.2021