summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYury Selivanov <yselivanov@sprymix.com>2014-01-31 19:28:44 (GMT)
committerYury Selivanov <yselivanov@sprymix.com>2014-01-31 19:28:44 (GMT)
commit0860a0bd3f7859ca5786a9bb9b3c4b6c0e7a1f8d (patch)
treeb2fd10620c101f89a81ca06e7b72f6daff29bec3
parent28479d8c7df55584ceb23041122cfbeb6073294e (diff)
downloadcpython-0860a0bd3f7859ca5786a9bb9b3c4b6c0e7a1f8d.zip
cpython-0860a0bd3f7859ca5786a9bb9b3c4b6c0e7a1f8d.tar.gz
cpython-0860a0bd3f7859ca5786a9bb9b3c4b6c0e7a1f8d.tar.bz2
inspect.classify_class_attrs: Classify object.__new__ and __init__ correctly #18801
-rw-r--r--Lib/inspect.py2
-rw-r--r--Lib/test/test_inspect.py4
2 files changed, 5 insertions, 1 deletions
diff --git a/Lib/inspect.py b/Lib/inspect.py
index e6c7b5b..8de9892 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -412,7 +412,7 @@ def classify_class_attrs(cls):
elif isinstance(dict_obj, property):
kind = "property"
obj = dict_obj
- elif isfunction(obj) or ismethoddescriptor(obj):
+ elif isroutine(obj):
kind = "method"
else:
kind = "data"
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index f06b5b4..477f601 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -646,6 +646,10 @@ class TestClassesAndFunctions(unittest.TestCase):
md = _BrokenMethodDescriptor()
attrs = attrs_wo_objs(A)
+
+ self.assertIn(('__new__', 'method', object), attrs, 'missing __new__')
+ self.assertIn(('__init__', 'method', object), attrs, 'missing __init__')
+
self.assertIn(('s', 'static method', A), attrs, 'missing static method')
self.assertIn(('c', 'class method', A), attrs, 'missing class method')
self.assertIn(('p', 'property', A), attrs, 'missing property')