Чи можна ігнорувати один певний рядок із пілінтом?


150

У своєму заголовку є такий рядок:

import config.logging_settings

Це фактично змінює мої налаштування журналу python, але pylint вважає, що це імпорт, який не використовується. Я не хочу видаляти unused-importпопередження взагалі, чи можна просто ігнорувати цей конкретний рядок?

Я б не заперечував над тим, що є .pylintrcдля цього проекту, тому відповіді про зміну конфігураційного файлу будуть прийняті.

В іншому випадку щось подібне також буде оцінено:

import config.logging_settings # pylint: disable-this-line-in-some-way

Відповіді:


227

Управління повідомленнями Pylint задокументовано в посібнику Pylint :

Чи можливо локально відключити певне повідомлення?

Так, ця функція була додана в Pylint 0,11. Це можна зробити, додавши
# pylint: disable=some-message,another-one
бажаний рівень блоку або в кінці потрібного рядка коду

Ви можете використовувати код повідомлення або символічні назви.

Наприклад

def test():
    # Disable all the no-member violations in this function
    # pylint: disable=no-member
    ...
global VAR # pylint: disable=global-statement

Посібник також має додаткові приклади .

Існує вікі, який документує всі повідомлення про пілінг та їх коди.


Мені подобається flake8 s # noqa. Я не хочу бачити стільки коментарів у коді. # nolintбуло б ще зрозуміліше.
Нілс Ліндеманн

61
import config.logging_settings # pylint: disable=W0611

Це було просто і є специфічним для цього рядка.

Як люб’язно зазначав sthenault, ви можете і повинні використовувати більш читану форму:

import config.logging_settings # pylint: disable=unused-import

Звідки ви берете явний символ повідомлення? Мій лайтер (той, що у шпидері) не повідомляє про це, і вікі, пов'язані у відповіді Джомо, також не містять його.
Joooeey

Ви маєте на увазі unused-import? Я думаю, що мій літер надіслав мені попередження, коли я використовував W0611, але його було> 3 року, тому я не пам’ятаю: / Вибачте
Нефункціональний кіт

4

Я вірю, що ви шукаєте, це ...

import config.logging_settings  # @UnusedImport

Зверніть увагу на подвійний пробіл перед коментарем, щоб не потрапляти на інші попередження форматування.

Крім того, залежно від вашого IDE (якщо ви використовуєте його), ймовірно, є можливість додати правильне правило ігнорування (наприклад, при натисканні затемнення, Ctrl1коли курсор над попередженням автоматично запропонує@UnusedImport


2
Це може працювати для деяких ІДЕ, але це не працює emacs/flycheck. Дякую. Будь ласка, зберігайте відповідь, оскільки це може допомогти комусь іншому.
The Unfun Cat

Це не працює під час запуску pylintчи flake8з командного рядка.
Джейкоб Томлінсон

@JacobTomlinson Цікаво, дякую. Це приймає Підєв, і я був під враженням, що піпіліпс просто виділився в пілінт. Повинно бути трохи налаштованим, або, можливо, затемнення обробляє ці директиви і придушує вихід.
Основні

4

Перевірте файли в https://github.com/PyCQA/pylint/tree/master/pylint/checkers . Я не знайшов кращого способу отримати ім’я помилки з повідомлення, ніж Ctrl + F-ing цих файлів або за допомогою функції пошуку Github:

Якщо повідомлення "Без імені ... в модулі ...", використовуйте пошук:

No name %r in module %r repo:PyCQA/pylint/tree/master path:/pylint/checkers

Або для отримання менших результатів:

"No name %r in module %r" repo:PyCQA/pylint/tree/master path:/pylint/checkers

Github покаже вам:

"E0611": (
    "No name %r in module %r",
    "no-name-in-module",
    "Used when a name cannot be found in a module.",

Потім ви можете зробити:

from collections import Sequence # pylint: disable=no-name-in-module

1
їх можна знайти в документах
Естебан

Спасибі, це набагато краще, ніж пройти через джерело. Я знайшов ще два дзеркала для документа pylint. Мабуть, readthedoc - це офіційне дзеркало. Інший - pylint.org
loxaxs
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.