diff --git a/flake8/mccabe.py b/flake8/mccabe.py index 77464b4..9f731e2 100644 --- a/flake8/mccabe.py +++ b/flake8/mccabe.py @@ -4,10 +4,10 @@ MIT License. """ try: - from compiler import parse - iter_child_nodes = None + from compiler import parse # NOQA + iter_child_nodes = None # NOQA except ImportError: - from ast import parse, iter_child_nodes + from ast import parse, iter_child_nodes # NOQA import optparse import sys diff --git a/flake8/messages.py b/flake8/messages.py index 0e5bff4..399ba0f 100644 --- a/flake8/messages.py +++ b/flake8/messages.py @@ -18,11 +18,6 @@ class Message(object): return self.filename < other.filename return self.lineno < other.lineno - def __cmp__(self, other): - if self.filename != other.filename: - return cmp(self.filename, other.filename) - return cmp(self.lineno, other.lineno) - class UnusedImport(Message): message = '%r imported but unused' diff --git a/flake8/pyflakes.py b/flake8/pyflakes.py index 142dd5b..13c579e 100644 --- a/flake8/pyflakes.py +++ b/flake8/pyflakes.py @@ -5,7 +5,7 @@ try: import __builtin__ # NOQA except ImportError: - import builtins as __builtin__ + import builtins as __builtin__ # NOQA import os.path import _ast @@ -332,8 +332,15 @@ class Checker(object): COMPREHENSION = KEYWORD = handleChildren def EXCEPTHANDLER(self, node): + if node.name is not None: - self.addBinding(node.lineno, FunctionDefinition(node.name, node)) + self.addBinding(node.lineno, Assignment(node.name, node)) + + def runException(): + for stmt in node.body: + self.handleNode(stmt, node) + + self.deferFunction(runException) def addBinding(self, lineno, value, reportRedef=True): '''Called when a binding is altered. @@ -358,7 +365,6 @@ class Checker(object): and (not isinstance(value, Importation) \ or value.fullName == existing.fullName) and reportRedef): - self.report(messages.RedefinedWhileUnused, lineno, value.name, scope[value.name].source.lineno) @@ -685,7 +691,6 @@ def check(codeString, filename='(code)'): if offset is not None: offset = offset - (len(text) - len(line)) - sys.stderr.write('%s:%d: %s\n' % (filename, lineno, msg)) sys.stderr.write(line + '\n') diff --git a/flake8/tests/test_mccabe.py b/flake8/tests/test_mccabe.py index 768accd..42032f2 100644 --- a/flake8/tests/test_mccabe.py +++ b/flake8/tests/test_mccabe.py @@ -3,7 +3,7 @@ import sys try: from StringIO import StringIO except ImportError: - from io import StringIO + from io import StringIO # NOQA from flake8.mccabe import get_code_complexity diff --git a/flake8/util.py b/flake8/util.py index 2bcfa66..21d2e4a 100644 --- a/flake8/util.py +++ b/flake8/util.py @@ -6,7 +6,11 @@ def skip_warning(warning): # XXX quick dirty hack, just need to keep the line in the warning if not os.path.isfile(warning.filename): return False - line = open(warning.filename).readlines()[warning.lineno - 1] + + # XXX should cache the file in memory + with open(warning.filename) as f: + line = f.readlines()[warning.lineno - 1] + return skip_line(line)