.. versionadded:: 3.12
+.. class:: CapsuleType
+
+ The type of :ref:`capsule objects <capsules>`.
+
+ .. versionadded:: 3.13
+
Additional Utility Classes and Functions
----------------------------------------
import builtins
import codecs
+import _datetime
import gc
import locale
import operator
x = property(getx, setx, delx, "")
check(x, size('5Pi'))
# PyCapsule
- # XXX
+ check(_datetime.datetime_CAPI, size('6P'))
# rangeiterator
check(iter(range(1)), size('3l'))
check(iter(range(2**65)), size('3P'))
import collections.abc
from collections import namedtuple
import copy
+import _datetime
import gc
import inspect
import pickle
self.assertIsInstance(exc.__traceback__, types.TracebackType)
self.assertIsInstance(exc.__traceback__.tb_frame, types.FrameType)
+ def test_capsule_type(self):
+ self.assertIsInstance(_datetime.datetime_CAPI, types.CapsuleType)
+
class UnionTests(unittest.TestCase):
"""
Define names for built-in types that aren't directly accessible as a builtin.
"""
+
import sys
# Iterators in Python aren't a matter of type but of protocol. A large
NoneType = type(None)
NotImplementedType = type(NotImplemented)
+def __getattr__(name):
+ if name == 'CapsuleType':
+ import _socket
+ return type(_socket.CAPI)
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
+
__all__ = [n for n in globals() if n[:1] != '_']
+__all__ += ['CapsuleType']
--- /dev/null
+Expose the type of PyCapsule objects as ``types.CapsuleType``.