Make tabnanny recognize IndentationErrors raised by tokenize.

Add a test to test_inspect to make sure indented source
is recognized correctly. (fixes #1224621)
This commit is contained in:
Georg Brandl 2006-08-14 21:34:08 +00:00
parent 26a07b5198
commit 2463f8f831
4 changed files with 18 additions and 1 deletions

View file

@ -109,6 +109,10 @@ def check(file):
errprint("%r: Token Error: %s" % (file, msg))
return
except IndentationError, msg:
errprint("%r: Indentation Error: %s" % (file, msg))
return
except NannyNag, nag:
badline = nag.get_lineno()
line = nag.get_line()

View file

@ -88,3 +88,12 @@ extra85 = 'stop'
def func88():
# comment
return 90
# line 92
def f():
class X:
def g():
"doc"
return 42
return X
method_in_dynamic_class = f().g.im_func

View file

@ -274,6 +274,9 @@ class TestBuggyCases(GetSourceBase):
def test_with_comment_instead_of_docstring(self):
self.assertSourceEqual(mod2.func88, 88, 90)
def test_method_in_dynamic_class(self):
self.assertSourceEqual(mod2.method_in_dynamic_class, 95, 97)
# Helper for testing classify_class_attrs.
def attrs_wo_objs(cls):
return [t[:3] for t in inspect.classify_class_attrs(cls)]

View file

@ -273,7 +273,8 @@ def generate_tokens(readline):
while column < indents[-1]:
if column not in indents:
raise IndentationError(
"unindent does not match any outer indentation level")
"unindent does not match any outer indentation level",
("<tokenize>", lnum, pos, line))
indents = indents[:-1]
yield (DEDENT, '', (lnum, pos), (lnum, pos), line)