diff options
author | Marius Gedminas <marius@gedmin.as> | 2017-06-17 12:39:09 +0300 |
---|---|---|
committer | Marius Gedminas <marius@gedmin.as> | 2018-07-17 14:32:28 +0300 |
commit | d6f54c33f428d19d5bcd4c67e9ff89572a85c1c5 (patch) | |
tree | 3f0ee9fd018c0e5f39c7280683d34695b2be8449 | |
parent | 15a35c195e03a4be6192f259b362a9c6734babde (diff) | |
download | pyflakes-d6f54c33f428d19d5bcd4c67e9ff89572a85c1c5.tar.gz |
Recognize __module__ when used in class scope
Fixes #259.
-rw-r--r-- | pyflakes/checker.py | 3 | ||||
-rw-r--r-- | pyflakes/test/test_undefined_names.py | 16 |
2 files changed, 19 insertions, 0 deletions
diff --git a/pyflakes/checker.py b/pyflakes/checker.py index 648a224..a57ce50 100644 --- a/pyflakes/checker.py +++ b/pyflakes/checker.py @@ -756,6 +756,9 @@ class Checker(object): # the special name __path__ is valid only in packages return + if name == '__module__' and isinstance(self.scope, ClassScope): + return + # protected with a NameError handler? if 'NameError' not in self.exceptHandlers[-1]: self.report(messages.UndefinedName, node, name) diff --git a/pyflakes/test/test_undefined_names.py b/pyflakes/test/test_undefined_names.py index 8434cd8..88eba93 100644 --- a/pyflakes/test/test_undefined_names.py +++ b/pyflakes/test/test_undefined_names.py @@ -256,6 +256,22 @@ class Test(TestCase): self.flakes('__path__', m.UndefinedName) self.flakes('__path__', filename='package/__init__.py') + def test_magicModuleInClassScope(self): + """ + Use of the C{__module__} magic builtin should not emit an undefined + name warning if used in class scope. + """ + self.flakes('__module__', m.UndefinedName) + self.flakes(''' + class Foo: + __module__ + ''') + self.flakes(''' + class Foo: + def bar(self): + __module__ + ''', m.UndefinedName) + def test_globalImportStar(self): """Can't find undefined names with import *.""" self.flakes('from fu import *; bar', |