Est-il possible d'ignorer une seule ligne spécifique avec pylint?

150

J'ai la ligne suivante dans mon en-tête:

import config.logging_settings

Cela modifie en fait mes paramètres de journalisation python, mais pylint pense que c'est une importation inutilisée. Je ne veux pas supprimer les unused-importavertissements en général, alors est-il possible d'ignorer simplement cette ligne spécifique?

Cela ne me dérangerait pas d'avoir un .pylintrcpour ce projet, donc les réponses modifiant un fichier de configuration seront acceptées.

Sinon, quelque chose comme ça sera également apprécié:

import config.logging_settings # pylint: disable-this-line-in-some-way
Le chat impertinent
la source

Réponses:

228

Le contrôle des messages Pylint est documenté dans le manuel Pylint :

Est-il possible de désactiver localement un message particulier?

Oui, cette fonctionnalité a été ajoutée dans Pylint 0.11. Cela peut être fait en ajoutant
# pylint: disable=some-message,another-one
au niveau de bloc souhaité ou à la fin de la ligne de code souhaitée

Vous pouvez utiliser le code de message ou les noms symboliques.

Par exemple

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

Le manuel contient également d' autres exemples .

Il existe un wiki qui documente tous les messages pylint et leurs codes.

jomo
la source
J'aime flake8 s # noqa. Je ne veux pas voir autant de commentaires dans le code. # nolintserait encore plus clair.
Nils Lindemann le
61
import config.logging_settings # pylint: disable=W0611

C'était simple et spécifique à cette ligne.

Comme sthenault l'a gentiment souligné, vous pouvez et devez utiliser la forme la plus lisible:

import config.logging_settings # pylint: disable=unused-import
Le chat impertinent
la source
D'où vient le symbole explicite du message? Mon linter (celui de spyder) ne le rapporte pas et le wiki lié dans la réponse de jomo ne le répertorie pas non plus.
Joooeey
Tu veux dire unused-import? Je pense que mon linter m'a donné un avertissement lorsque j'ai utilisé W0611, mais ça fait> 3 ans donc je ne me souviens pas: / Désolé
The Unfun Cat
4

Je crois que ce que vous cherchez est ...

import config.logging_settings  # @UnusedImport

Notez le double espace avant le commentaire pour éviter de frapper d'autres avertissements de formatage.

En outre, en fonction de votre IDE (si vous en utilisez un), il existe probablement une option pour ajouter la règle d'ignorance correcte (par exemple, en cas d'éclipse, appuyez sur Ctrl1lorsque le curseur est au-dessus, l'avertissement suggérera automatiquement@UnusedImport

De base
la source
2
Cela peut fonctionner pour certains IDE, mais pas pour emacs/flycheck. Merci. Veuillez garder la réponse car cela pourrait aider quelqu'un d'autre.
The Unfun Cat
Cela ne fonctionne pas lors de l'exécution pylintou à flake8partir de la ligne de commande.
Jacob Tomlinson
@JacobTomlinson Intéressant, merci. C'est ce qu'accepte Pydev et j'avais l'impression que la pyclipse s'est simplement transformée en pylint. Doit être légèrement personnalisé ou peut-être qu'eclipse traite ces directives et supprime la sortie.
base
4

Récupérez les fichiers sur https://github.com/PyCQA/pylint/tree/master/pylint/checkers . Je n'ai pas trouvé de meilleur moyen d'obtenir le nom de l'erreur à partir d'un message que de Ctrl + F-ing ces fichiers ou d'utiliser la fonction de recherche Github:

Si le message est "Pas de nom ... dans le module ...", utilisez la recherche:

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

Ou, pour obtenir moins de résultats:

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

Github vous montrera:

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

Vous pouvez alors faire:

from collections import Sequence # pylint: disable=no-name-in-module
loxax
la source
1
vous pouvez tous les trouver dans la documentation
Esteban
Merci, c'est bien mieux que de passer par la source. J'ai trouvé deux autres miroirs pour le doc pylint. Apparemment, readthedoc est le miroir officiel. L'autre est pylint.org
loxaxs