continue
obj = get_obj if get_obj is not None else dict_obj
# Classify the object or its descriptor.
- if isinstance(dict_obj, staticmethod):
+ if isinstance(dict_obj, (staticmethod, types.BuiltinMethodType)):
kind = "static method"
obj = dict_obj
- elif isinstance(dict_obj, classmethod):
+ elif isinstance(dict_obj, (classmethod, types.ClassMethodDescriptorType)):
kind = "class method"
obj = dict_obj
elif isinstance(dict_obj, property):
attrs = attrs_wo_objs(A)
- self.assertIn(('__new__', 'method', object), attrs, 'missing __new__')
+ self.assertIn(('__new__', 'static method', object), attrs,
+ 'missing __new__')
self.assertIn(('__init__', 'method', object), attrs, 'missing __init__')
self.assertIn(('s', 'static method', A), attrs, 'missing static method')
if isinstance(builtin, type):
inspect.classify_class_attrs(builtin)
+ attrs = attrs_wo_objs(bool)
+ self.assertIn(('__new__', 'static method', bool), attrs,
+ 'missing __new__')
+ self.assertIn(('from_bytes', 'class method', int), attrs,
+ 'missing class method')
+ self.assertIn(('to_bytes', 'method', int), attrs,
+ 'missing plain method')
+ self.assertIn(('__add__', 'method', int), attrs,
+ 'missing plain method')
+ self.assertIn(('__and__', 'method', bool), attrs,
+ 'missing plain method')
+
def test_classify_DynamicClassAttribute(self):
class Meta(type):
def __getattr__(self, name):
self.assertIsInstance(''.join, types.BuiltinMethodType)
self.assertIsInstance([].append, types.BuiltinMethodType)
+ self.assertIsInstance(int.__dict__['from_bytes'], types.ClassMethodDescriptorType)
+ self.assertIsInstance(int.from_bytes, types.BuiltinMethodType)
+ self.assertIsInstance(int.__new__, types.BuiltinMethodType)
+
class MappingProxyTests(unittest.TestCase):
mappingproxy = types.MappingProxyType