summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Gedminas <marius@gedmin.as>2017-06-17 12:39:09 +0300
committerMarius Gedminas <marius@gedmin.as>2018-07-17 14:32:28 +0300
commitd6f54c33f428d19d5bcd4c67e9ff89572a85c1c5 (patch)
tree3f0ee9fd018c0e5f39c7280683d34695b2be8449
parent15a35c195e03a4be6192f259b362a9c6734babde (diff)
downloadpyflakes-d6f54c33f428d19d5bcd4c67e9ff89572a85c1c5.tar.gz
Recognize __module__ when used in class scope
Fixes #259.
-rw-r--r--pyflakes/checker.py3
-rw-r--r--pyflakes/test/test_undefined_names.py16
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',