Flake8: Ignorieren Sie eine bestimmte Warnung für die gesamte Datei

75

In den Dokumenten " Fehler ignorieren" wird derzeit eine Möglichkeit zum Ignorieren eines bestimmten Fehlers für eine bestimmte Zeile aufgeführt:

example = lambda: 'example'  # noqa: E731

... und eine Möglichkeit, alle Fehler für eine gesamte Datei zu ignorieren :

# flake8: noqa

from foo import unused
function_that_doesnt_exist()
x = 1+       2

... und verschiedene Möglichkeiten, entweder über die Konfiguration oder über Befehlszeilenoptionen, einen bestimmten Fehler global für ein gesamtes Projekt zu deaktivieren .

Was aber, wenn ich einen bestimmten Fehler in der Gesamtheit einer einzelnen Datei ignorieren möchte - zum Beispiel, um Warnungen vor nicht verwendeten Importen in einer __init__.pyBarrel-Datei zu deaktivieren , die nur eine Reihe von Klassen importiert, damit Code aus anderen Paketen sie daraus importieren kann Wende? Die Dokumente scheinen keine Syntax dafür anzudeuten. Ist es möglich?

Mark Amery
quelle
4
Für Ihr spezielles Beispiel besteht die offiziell empfohlene Methode (IIRC) darin, eine explizite __all__Erklärung abzugeben, in der das importierte Material aufgelistet ist .
Ash

Antworten:

78

Ab Flake8 3.7.0 können Sie dies mit der --per-file-ignoresOption tun .

Befehlszeilenbeispiel

flake8 --per-file-ignores='project/__init__.py:F401 setup.py:E121'

Oder in Ihrer Konfigurationsdatei

per-file-ignores =
    project/__init__.py:F401
    setup.py:E121
    other_project/*:W9

Die Dokumentation finden Sie hier: http://flake8.pycqa.org/en/latest/user/options.html?highlight=per-file-ignores#cmdoption-flake8-per-file-ignores

Es ist nicht möglich, einen noqaKommentar für bestimmte Codes oben in eine Datei einzufügen, wie dies für einzelne Zeilen möglich ist. # flake8: noqa: F401Auf den ersten Blick scheint es zu funktionieren, aber es wird tatsächlich nur als erkannt # flake8: noqa, was bedeutet, " alle Nachrichten in der Datei ignorieren ".

Ross MacArthur
quelle
24

Vor Version 3.7.0 wurde das Ignorieren bestimmter Fehler nur pro Zeile , nicht jedoch pro Datei implementiert .

Die Funktion wird in Ausgabe 89 verfolgt und diskutiert, von der nur der Vorschlag pro Zeile übernommen wurde. In jüngerer Zeit wurde eine Implementierung in vorgeschlagen dieser Zusammenführungsanforderung , der niemand nachgegangen ist.

Es wurden jedoch einige Erweiterungen entwickelt, um das Problem zu beheben:

  • flake8-per-file-ignores Mit dieser Option können Sie bestimmte Warnungen / Fehler für bestimmte Dateien über einen Eintrag in der Konfiguration ignorieren.

  • flake8-putty behauptet, dasselbe zu tun, wurde aber eine Weile nicht aktualisiert.

Arminius
quelle