Merge from the flake8 trunk

This commit is contained in:
Peter Teichman 2012-09-15 13:52:37 -04:00
commit 4a7b381fc0
5 changed files with 825 additions and 573 deletions

2
README
View file

@ -90,7 +90,7 @@ To use the Git hook on any *commit*, add a **pre-commit** file in the
STRICT = False
if __name__ == '__main__':
sys.exit(git_hook(complexity=COMPLEXITY, strict=STRICT))
sys.exit(git_hook(complexity=COMPLEXITY, strict=STRICT, ignore='E501'))
If *strict* option is set to **True**, any warning will block the commit. When

View file

@ -11,6 +11,7 @@ except ImportError:
import optparse
import sys
from flake8.util import skip_warning
from collections import defaultdict
WARNING_CODE = "W901"
@ -243,14 +244,16 @@ def get_code_complexity(code, min=7, filename='stdin'):
# ?
continue
if graph.complexity() >= min:
msg = '%s:%d:1: %s %r is too complex (%d)' % (
filename,
graph.lineno,
WARNING_CODE,
graph.entity,
graph.complexity(),
)
complex.append(msg)
graph.filename = filename
if not skip_warning(graph):
msg = '%s:%d:1: %s %r is too complex (%d)' % (
filename,
graph.lineno,
WARNING_CODE,
graph.entity,
graph.complexity(),
)
complex.append(msg)
if len(complex) == 0:
return 0

File diff suppressed because it is too large Load diff

View file

@ -17,10 +17,12 @@ from flake8 import pep8
from flake8 import pyflakes
from flake8 import mccabe
pep8style = None
def check_file(path, complexity=-1):
warnings = pyflakes.checkPath(path)
warnings += pep8.input_file(path)
warnings += pep8style.input_file(path)
if complexity > -1:
warnings += mccabe.get_module_complexity(path, complexity)
return warnings
@ -28,7 +30,7 @@ def check_file(path, complexity=-1):
def check_code(code, complexity=-1):
warnings = pyflakes.check(code, 'stdin')
warnings += pep8.input_file(StringIO(code))
warnings += pep8style.input_file(StringIO(code))
if complexity > -1:
warnings += mccabe.get_code_complexity(code, complexity)
return warnings
@ -52,7 +54,9 @@ def _get_python_files(paths):
def main():
options, args = pep8.process_options()
global pep8style
pep8style = pep8.StyleGuide(parse_argv=True, config_file=True)
options = pep8style.options
complexity = options.max_complexity
builtins = set(options.builtins)
warnings = 0
@ -61,8 +65,8 @@ def main():
orig_builtins = set(pyflakes._MAGIC_GLOBALS)
pyflakes._MAGIC_GLOBALS = orig_builtins | builtins
if args and options.filename is not None:
for path in _get_python_files(args):
if pep8style.paths and options.filename is not None:
for path in _get_python_files(pep8style.paths):
warnings += check_file(path, complexity)
else:
# wait for 1 second on the stdin fd
@ -121,6 +125,7 @@ def _initpep8():
pep8.options.logical_checks = pep8.find_checks('logical_line')
pep8.options.counters = dict.fromkeys(pep8.BENCHMARK_KEYS, 0)
pep8.options.messages = {}
pep8.options.max_line_length = 79
pep8.args = []
@ -131,8 +136,11 @@ def run(command):
[line.strip() for line in p.stderr.readlines()])
def git_hook(complexity=-1, strict=False):
def git_hook(complexity=-1, strict=False, ignore=None):
_initpep8()
if ignore:
pep8.options.ignore=ignore
warnings = 0
_, files_modified, _ = run("git diff-index --cached --name-only HEAD")
@ -191,6 +199,9 @@ else:
yield "%s.py" % filename
def run(self):
global pep8style
pep8style = pep8.StyleGuide(config_file=True)
_initpep8()
# _get_python_files can produce the same file several

View file

@ -1,14 +1,19 @@
import sys
ispy3 = sys.version_info[0] == 3
issetuptools = False
kwargs = {}
if ispy3:
from distutils.core import setup # NOQA
else:
try:
from setuptools import setup # NOQA
issetuptools = True
kwargs = {
'entry_points':
{'distutils.commands': ['flake8 = flake8.run:Flake8Command']},
'tests_require': ['nose'],
'test_suite': 'nose.collector'
}
except ImportError:
from distutils.core import setup # NOQA
@ -16,10 +21,6 @@ from flake8 import __version__
README = open('README').read()
entry_points = {}
if issetuptools:
entry_points["distutils.commands"] = ["flake8 = flake8.run:Flake8Command"]
setup(
name="flake8",
license="MIT",
@ -30,7 +31,6 @@ setup(
url="http://bitbucket.org/tarek/flake8",
packages=["flake8", "flake8.tests"],
scripts=["flake8/flake8"],
entry_points=entry_points,
long_description=README,
classifiers=[
"Environment :: Console",
@ -39,4 +39,5 @@ setup(
"Programming Language :: Python",
"Topic :: Software Development",
"Topic :: Utilities",
])
],
**kwargs)