143

私たちのモジュールの多くは以下で始まります:

try:
    import json
except ImportError:
    from django.utils import simplejson as json  # Python 2.4 fallback.

...そしてそれはファイル全体で唯一のPyflakes警告です:

foo/bar.py:14: redefinition of unused 'json' from line 12

Pyflakesにこれを無視させるにはどうすればよいですか?

(通常、私はドキュメントを読みに行きますが、リンクが壊れています。誰も答えがない場合は、ソースを読むだけです。)

4

9 に答える 9

229

代わりにflake8を使用できる場合(pyflakesとpep8チェッカーをラップする)で終わる行

# NOQA

(スペースが重要です-コードの終わりとの間に2つのスペース、コードとテキスト#の間に1つNOQA)は、その行のエラーを無視するようにチェッカーに指示します。

于 2012-05-08T21:22:30.927 に答える
55

私はこれが少し前に質問され、すでに答えられていることを知っています。

しかし、私は通常使用するものを追加したかった:

try:
    import json
    assert json  # silence pyflakes
except ImportError:
    from django.utils import simplejson as json  # Python 2.4 fallback.
于 2012-08-25T11:01:30.717 に答える
8

はい、残念ながらdimod.orgはすべてのグッズと一緒にダウンしています。

pyflakesのコードを見ると、pyflakesは「埋め込み高速チェッカー」として使いやすいように設計されているように見えます。

無視機能を実装するには、pyflakesチェッカーを呼び出す独自の機能を作成する必要があります。

ここでアイデアを見つけることができます:http://djangosnippets.org/snippets/1762/

上記のスニペットは、コメントの場合のみ同じ行に配置されることに注意してください。ブロック全体を無視するには、ブロックdocstringに「pyflakes:ignore」を追加し、node.docに基づいてフィルタリングすることをお勧めします。

幸運を!


私はあらゆる種類の静的コード分析にpocket-lintを使用しています。pyflakesを無視するためにpocket-lintに加えられた変更は次のとおりです:https ://code.launchpad.net/~adiroiban/pocket-lint/907742/+merge/102882

于 2011-03-14T21:01:07.113 に答える
6

github発行チケットから引用するには:

修正がまだ行われている間、疑問に思っている場合は、これを回避する方法があります。

try:
    from unittest.runner import _WritelnDecorator
    _WritelnDecorator; # workaround for pyflakes issue #13
except ImportError:
    from unittest import _WritelnDecorator

必要なエンティティ(モジュール、関数、クラス)を使用したSubstitude_unittestおよび_WritelnDecorator

--deemoowoor _

于 2012-05-08T19:55:23.847 に答える
6

# bypass_pyflakesこれは、コメントオプションを追加するpyflakesのモンキーパッチです。

bytes_pyflakes.py

#!/usr/bin/env python

from pyflakes.scripts import pyflakes
from pyflakes.checker import Checker


def report_with_bypass(self, messageClass, *args, **kwargs):
    text_lineno = args[0] - 1
    with open(self.filename, 'r') as code:
        if code.readlines()[text_lineno].find('bypass_pyflakes') >= 0:
            return
    self.messages.append(messageClass(self.filename, *args, **kwargs))

# monkey patch checker to support bypass
Checker.report = report_with_bypass

pyflakes.main()

これをとして保存するとbypass_pyflakes.py、として呼び出すことができますpython bypass_pyflakes.py myfile.py

http://chase-seibert.github.com/blog/2013/01/11/bypass_pyflakes.html

于 2013-01-11T23:25:16.490 に答える
1

でインポートすることもできます__import__。pythonicではありませんが、pyflakesはもう警告しません。のドキュメントを__import__参照してください。

try:
    import json
except ImportError:
    __import__('django.utils', globals(), locals(), ['json'], -1)
于 2012-05-08T13:38:41.927 に答える
1

フレークには、違反を無視するためのいくつかのオプションがあります

私のお気に入りは、それを明示的にして、特定の違反をインラインで無視することです。

my invalid code # noqa: WS03

そして、あなたはすでに引用された他のオプションを持っています。

  1. 次の行のすべての検証を無視します。
my invalid code # NOQA
  1. ファイル内のすべての検証を無視します。その最初の行を入れてください:
# flake8: noqa: E121, E131, E241, F403, F405

または、flake8構成のパラメーターとして無視するように構成します。

于 2021-03-30T22:28:51.200 に答える
0

awk私は私を助けるためにいくつかの魔法で小さなシェルスクリプトを作成しました。import typingこれにより、、from typing importまたは#$(後者は私がここで使用している特別なコメントです)を含むすべての行が除外されます( $1Pythonスクリプトのファイル名です):

result=$(pyflakes -- "$1" 2>&1)

# check whether there is any output
if [ "$result" ]; then

    # lines to exclude
    excl=$(awk 'BEGIN { ORS="" } /(#\$)|(import +typing)|(from +typing +import )/ { print sep NR; sep="|" }' "$1")

    # exclude lines if there are any (otherwise we get invalid regex)
    [ "$excl" ] &&
        result=$(awk "! /^[^:]+:(${excl}):/" <<< "$result")

fi

# now echo "$result" or such ...

基本的に、行番号を記録し、動的に正規表現を作成します。

于 2016-10-21T12:55:13.733 に答える
0

の場合flake8、これは推奨される代替手段です(ここでflake8とpyflakesを比較してください)

次のように最初の行を追加します。

# flake8: noqa: E121, E131, E241, F403, F405

一般に:

# flake8: noqa: <code>[, <code> ...]

このようにして、1行で、をサイレントにentire fileして、many無視ステートメントに対して実行できますat once。これは多くの場合です。

于 2021-03-15T15:57:47.987 に答える