diff options
author | Claudiu Popa <pcmanticore@gmail.com> | 2015-10-09 21:30:22 +0300 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2015-10-09 21:30:22 +0300 |
commit | 8b915c5569ec9b12d3d5415b673e5c1f9e94737c (patch) | |
tree | 0a86fbc1051d4553f12af5900ce21d1c8b4d7d5e | |
parent | 57fe8b8721a1463a44d7542b2b002603b1b66ab2 (diff) | |
download | astroid-8b915c5569ec9b12d3d5415b673e5c1f9e94737c.tar.gz |
The functional form of Enum returns a class, not an instance.
-rw-r--r-- | astroid/brain/py2stdlib.py | 2 | ||||
-rw-r--r-- | astroid/tests/unittest_brain.py | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/astroid/brain/py2stdlib.py b/astroid/brain/py2stdlib.py index 8971d5c..953a718 100644 --- a/astroid/brain/py2stdlib.py +++ b/astroid/brain/py2stdlib.py @@ -294,7 +294,7 @@ def infer_enum(node, context=None): enum_meta = nodes.ClassDef("EnumMeta", 'docstring') class_node = infer_func_form(node, enum_meta, context=context, enum=True)[0] - return iter([class_node.instanciate_class()]) + return iter([class_node]) def infer_enum_class(node): diff --git a/astroid/tests/unittest_brain.py b/astroid/tests/unittest_brain.py index 02c405b..960991b 100644 --- a/astroid/tests/unittest_brain.py +++ b/astroid/tests/unittest_brain.py @@ -414,6 +414,18 @@ class EnumBrainTest(unittest.TestCase): self.assertTrue(clazz.is_subtype_of(int_type), 'IntEnum based enums should be a subtype of int') + def test_enum_func_form_is_class_not_instance(self): + cls, instance = test_utils.extract_node(''' + from enum import Enum + f = Enum('Audience', ['a', 'b', 'c']) + f #@ + f() #@ + ''') + inferred_cls = next(cls.infer()) + self.assertIsInstance(inferred_cls, nodes.ClassDef) + inferred_instance = next(instance.infer()) + self.assertIsInstance(inferred_instance, bases.Instance) + @unittest.skipUnless(HAS_DATEUTIL, "This test requires the dateutil library.") class DateutilBrainTest(unittest.TestCase): |