mirror of
https://github.com/PyCQA/flake8.git
synced 2026-04-04 20:26:53 +00:00
Disabling in hooks is too late since mercurial already imports _pyflakes before. Fixes #88
54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
try:
|
|
# The 'demandimport' breaks pyflakes and flake8._pyflakes
|
|
from mercurial import demandimport
|
|
demandimport.disable()
|
|
except ImportError:
|
|
pass
|
|
import pyflakes
|
|
import pyflakes.checker
|
|
|
|
|
|
def patch_pyflakes():
|
|
"""Add error codes to Pyflakes messages."""
|
|
codes = dict([line.split()[::-1] for line in (
|
|
'F401 UnusedImport',
|
|
'F402 ImportShadowedByLoopVar',
|
|
'F403 ImportStarUsed',
|
|
'F404 LateFutureImport',
|
|
'F810 Redefined', # XXX Obsolete?
|
|
'F811 RedefinedWhileUnused',
|
|
'F812 RedefinedInListComp',
|
|
'F821 UndefinedName',
|
|
'F822 UndefinedExport',
|
|
'F823 UndefinedLocal',
|
|
'F831 DuplicateArgument',
|
|
'F841 UnusedVariable',
|
|
)])
|
|
|
|
for name, obj in vars(pyflakes.messages).items():
|
|
if name[0].isupper() and obj.message:
|
|
obj.flake8_msg = '%s %s' % (codes.get(name, 'F999'), obj.message)
|
|
patch_pyflakes()
|
|
|
|
|
|
class FlakesChecker(pyflakes.checker.Checker):
|
|
"""Subclass the Pyflakes checker to conform with the flake8 API."""
|
|
name = 'pyflakes'
|
|
version = pyflakes.__version__
|
|
|
|
@classmethod
|
|
def add_options(cls, parser):
|
|
parser.add_option('--builtins',
|
|
help="define more built-ins, comma separated")
|
|
parser.config_options.append('builtins')
|
|
|
|
@classmethod
|
|
def parse_options(cls, options):
|
|
if options.builtins:
|
|
cls.builtIns = cls.builtIns.union(options.builtins.split(','))
|
|
|
|
def run(self):
|
|
for m in self.messages:
|
|
col = getattr(m, 'col', 0)
|
|
yield m.lineno, col, (m.flake8_msg % m.message_args), m.__class__
|