Issue #29377: Add three new wrappers to types.py (Manuel Krebber).
This commit is contained in:
parent
72268ae1c0
commit
934aba66ef
|
@ -132,6 +132,29 @@ Standard names are defined for the following types:
|
||||||
C".)
|
C".)
|
||||||
|
|
||||||
|
|
||||||
|
.. data:: SlotWrapperType
|
||||||
|
|
||||||
|
The type of methods of some built-in data types and base classes such as
|
||||||
|
:meth:`object.__init__` or :meth:`object.__lt__`.
|
||||||
|
|
||||||
|
.. versionadded:: 3.7
|
||||||
|
|
||||||
|
|
||||||
|
.. data:: MethodWrapperType
|
||||||
|
|
||||||
|
The type of *bound* methods of some built-in data types and base classes.
|
||||||
|
For example it is the type of :code:`object().__str__`.
|
||||||
|
|
||||||
|
.. versionadded:: 3.7
|
||||||
|
|
||||||
|
|
||||||
|
.. data:: MethodDescriptorType
|
||||||
|
|
||||||
|
The type of methods of some built-in data types such as :meth:`str.join`.
|
||||||
|
|
||||||
|
.. versionadded:: 3.7
|
||||||
|
|
||||||
|
|
||||||
.. class:: ModuleType(name, doc=None)
|
.. class:: ModuleType(name, doc=None)
|
||||||
|
|
||||||
The type of :term:`modules <module>`. Constructor takes the name of the
|
The type of :term:`modules <module>`. Constructor takes the name of the
|
||||||
|
|
|
@ -576,6 +576,24 @@ class TypesTests(unittest.TestCase):
|
||||||
self.assertGreater(object.__basicsize__, 0)
|
self.assertGreater(object.__basicsize__, 0)
|
||||||
self.assertGreater(tuple.__itemsize__, 0)
|
self.assertGreater(tuple.__itemsize__, 0)
|
||||||
|
|
||||||
|
def test_slot_wrapper_types(self):
|
||||||
|
self.assertIsInstance(object.__init__, types.SlotWrapperType)
|
||||||
|
self.assertIsInstance(object.__str__, types.SlotWrapperType)
|
||||||
|
self.assertIsInstance(object.__lt__, types.SlotWrapperType)
|
||||||
|
self.assertIsInstance(int.__lt__, types.SlotWrapperType)
|
||||||
|
|
||||||
|
def test_method_wrapper_types(self):
|
||||||
|
self.assertIsInstance(object().__init__, types.MethodWrapperType)
|
||||||
|
self.assertIsInstance(object().__str__, types.MethodWrapperType)
|
||||||
|
self.assertIsInstance(object().__lt__, types.MethodWrapperType)
|
||||||
|
self.assertIsInstance((42).__lt__, types.MethodWrapperType)
|
||||||
|
|
||||||
|
def test_method_descriptor_types(self):
|
||||||
|
self.assertIsInstance(str.join, types.MethodDescriptorType)
|
||||||
|
self.assertIsInstance(list.append, types.MethodDescriptorType)
|
||||||
|
self.assertIsInstance(''.join, types.BuiltinMethodType)
|
||||||
|
self.assertIsInstance([].append, types.BuiltinMethodType)
|
||||||
|
|
||||||
|
|
||||||
class MappingProxyTests(unittest.TestCase):
|
class MappingProxyTests(unittest.TestCase):
|
||||||
mappingproxy = types.MappingProxyType
|
mappingproxy = types.MappingProxyType
|
||||||
|
|
|
@ -36,6 +36,10 @@ MethodType = type(_C()._m)
|
||||||
BuiltinFunctionType = type(len)
|
BuiltinFunctionType = type(len)
|
||||||
BuiltinMethodType = type([].append) # Same as BuiltinFunctionType
|
BuiltinMethodType = type([].append) # Same as BuiltinFunctionType
|
||||||
|
|
||||||
|
SlotWrapperType = type(object.__init__)
|
||||||
|
MethodWrapperType = type(object().__str__)
|
||||||
|
MethodDescriptorType = type(str.join)
|
||||||
|
|
||||||
ModuleType = type(sys)
|
ModuleType = type(sys)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -223,6 +223,10 @@ Extension Modules
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #29377: Add SlotWrapperType, MethodWrapperType, and
|
||||||
|
MethodDescriptorType built-in types to types module.
|
||||||
|
Original patch by Manuel Krebber.
|
||||||
|
|
||||||
- Issue #29218: Unused install_misc command is now removed. It has been
|
- Issue #29218: Unused install_misc command is now removed. It has been
|
||||||
documented as unused since 2000. Patch by Eric N. Vander Weele.
|
documented as unused since 2000. Patch by Eric N. Vander Weele.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue