summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudiu Popa <pcmanticore@gmail.com>2015-10-09 21:30:22 +0300
committerClaudiu Popa <pcmanticore@gmail.com>2015-10-09 21:30:22 +0300
commit8b915c5569ec9b12d3d5415b673e5c1f9e94737c (patch)
tree0a86fbc1051d4553f12af5900ce21d1c8b4d7d5e
parent57fe8b8721a1463a44d7542b2b002603b1b66ab2 (diff)
downloadastroid-8b915c5569ec9b12d3d5415b673e5c1f9e94737c.tar.gz
The functional form of Enum returns a class, not an instance.
-rw-r--r--astroid/brain/py2stdlib.py2
-rw-r--r--astroid/tests/unittest_brain.py12
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):