Banyak modul kami dimulai dengan:
try:
import json
except ImportError:
from django.utils import simplejson as json # Python 2.4 fallback.
... dan itu satu-satunya peringatan Pyflakes di seluruh file:
foo/bar.py:14: redefinition of unused 'json' from line 12
Bagaimana saya bisa membuat Pyflakes mengabaikan ini?
(Biasanya saya akan membaca dokumen tetapi tautannya rusak. Jika tidak ada yang memiliki jawaban, saya hanya akan membaca sumbernya.)
Jawaban:
Jika Anda dapat menggunakan flake8 sebagai gantinya - yang membungkus pyflake serta pemeriksa pep8 - baris yang diakhiri dengan
# NOQA
(di mana spasinya signifikan - 2 spasi antara akhir kode dan
#
, satu di antara itu danNOQA
teks) akan memberi tahu pemeriksa untuk mengabaikan kesalahan apa pun pada baris itu.sumber
# flake8: noqa
akan memberi tahu flake8 untuk mengabaikan validasi untuk seluruh file.# noqa
hanya mengabaikan peringatan / kesalahan tertentu, tetapi tidak semua - untuk mengatasinya, solusinya melibatkan menginstal / menggunakan paket di pypi.python.org/pypi/flake8-respect-noqa# noqa: F841
berarti hanya mengabaikanF841
kesalahan di telepon.Saya tahu ini telah dipertanyakan beberapa waktu lalu dan sudah dijawab.
Tetapi saya ingin menambahkan apa yang biasanya saya gunakan:
try: import json assert json # silence pyflakes except ImportError: from django.utils import simplejson as json # Python 2.4 fallback.
sumber
silence pyflakes
komentar.) Terima kasih!assert
pernyataan cukup untuk membungkam pemeriksa dalam kasus ini. Trik yang bagus, ngomong-ngomong.Ya, sayangnya dimod.org sedang down bersama dengan semua barang.
Melihat kode pyflakes, menurut saya pyflakes dirancang sedemikian rupa sehingga akan mudah digunakan sebagai "pemeriksa cepat tertanam".
Untuk mengimplementasikan fungsionalitas abaikan, Anda perlu menulis sendiri yang memanggil pemeriksa pyflakes.
Di sini Anda dapat menemukan ide: http://djangosnippets.org/snippets/1762/
Perhatikan bahwa potongan di atas hanya untuk tempat komentar pada baris yang sama. Untuk mengabaikan seluruh blok Anda mungkin ingin menambahkan 'pyflakes: ignore' di blok docstring dan filter berdasarkan node.doc.
Semoga berhasil!
Saya menggunakan pocket-lint untuk semua jenis analisis kode statis. Berikut adalah perubahan yang dibuat pada pocket-lint untuk mengabaikan pyflakes: https://code.launchpad.net/~adiroiban/pocket-lint/907742/+merge/102882
sumber
Mengutip dari tiket terbitan github :
sumber
_WritelnDecorator;
sama sekali tidak melakukan apa-apa, bukan? Jadi saya dapat menggunakan ini untuk membuat pyflakes mengabaikan variabel yang tidak digunakan yang sebenarnya digunakan di dalam string eval atau numexpr dengan mencantumkan variabel pada baris terpisah? Apakah tanda titik koma diperlukan?dis.dis
, ini tampaknya melakukanLOAD_FAST
danPOP_TOP
untuk setiap variabel pada baris dengan sendirinya (meletakkannya di tumpukan dan kemudian menghapusnya dari tumpukan?), Jadi tidak melakukan apa-apa. Lebih baik dari ituassert
.Berikut adalah patch monyet untuk pyflakes yang menambahkan
# bypass_pyflakes
opsi komentar.bypass_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()
Jika Anda menyimpan ini sebagai
bypass_pyflakes.py
, maka Anda dapat memanggilnya sebagaipython bypass_pyflakes.py myfile.py
.http://chase-seibert.github.com/blog/2013/01/11/bypass_pyflakes.html
sumber
text_lineno = args[0] - 1
diubah menjaditext_lineno = args[0].lineno - 1
. Saya sarankan memperbarui jawaban ini untuk mencerminkan ini.Anda juga dapat mengimpor dengan
__import__
. Ini bukan pythonic, tapi pyflake tidak memperingatkan Anda lagi. Lihat dokumentasi untuk__import__
.try: import json except ImportError: __import__('django.utils', globals(), locals(), ['json'], -1)
sumber
from foo import bar
Saya membuat skrip shell kecil dengan beberapa
awk
sihir untuk membantu saya. Dengan ini semua baris denganimport typing
,from typing import
atau#$
(terakhir adalah komentar khusus yang saya gunakan di sini) dikecualikan ($1
adalah nama file dari skrip Python):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 ...
Pada dasarnya ini mencatat nomor baris dan secara dinamis membuat regex darinya.
sumber