mirror of https://github.com/python/cpython.git
[3.10] gh-79512: Fixed names and __module__ value of weakref classes (GH-93719) (GH-94071)
Classes ReferenceType, ProxyType and CallableProxyType have now correct
atrtributes __module__, __name__ and __qualname__.
It makes them (types, not instances) pickleable.
(cherry picked from commit 8352e322e8
)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
46d0e1c06e
commit
54250e7353
|
@ -2145,6 +2145,17 @@ def test_atexit(self):
|
|||
self.assertTrue(b'ZeroDivisionError' in err)
|
||||
|
||||
|
||||
class ModuleTestCase(unittest.TestCase):
|
||||
def test_names(self):
|
||||
for name in ('ReferenceType', 'ProxyType', 'CallableProxyType',
|
||||
'WeakMethod', 'WeakSet', 'WeakKeyDictionary', 'WeakValueDictionary'):
|
||||
obj = getattr(weakref, name)
|
||||
if name != 'WeakSet':
|
||||
self.assertEqual(obj.__module__, 'weakref')
|
||||
self.assertEqual(obj.__name__, name)
|
||||
self.assertEqual(obj.__qualname__, name)
|
||||
|
||||
|
||||
libreftest = """ Doctest for examples in the library reference: weakref.rst
|
||||
|
||||
>>> from test.support import gc_collect
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
Fixed names and ``__module__`` value of :mod:`weakref` classes
|
||||
:class:`~weakref.ReferenceType`, :class:`~weakref.ProxyType`,
|
||||
:class:`~weakref.CallableProxyType`. It makes them pickleable.
|
|
@ -371,7 +371,7 @@ static PyMethodDef weakref_methods[] = {
|
|||
PyTypeObject
|
||||
_PyWeakref_RefType = {
|
||||
PyVarObject_HEAD_INIT(&PyType_Type, 0)
|
||||
"weakref",
|
||||
"weakref.ReferenceType",
|
||||
sizeof(PyWeakReference),
|
||||
0,
|
||||
weakref_dealloc, /*tp_dealloc*/
|
||||
|
@ -741,7 +741,7 @@ static PyMappingMethods proxy_as_mapping = {
|
|||
PyTypeObject
|
||||
_PyWeakref_ProxyType = {
|
||||
PyVarObject_HEAD_INIT(&PyType_Type, 0)
|
||||
"weakproxy",
|
||||
"weakref.ProxyType",
|
||||
sizeof(PyWeakReference),
|
||||
0,
|
||||
/* methods */
|
||||
|
@ -776,7 +776,7 @@ _PyWeakref_ProxyType = {
|
|||
PyTypeObject
|
||||
_PyWeakref_CallableProxyType = {
|
||||
PyVarObject_HEAD_INIT(&PyType_Type, 0)
|
||||
"weakcallableproxy",
|
||||
"weakref.CallableProxyType",
|
||||
sizeof(PyWeakReference),
|
||||
0,
|
||||
/* methods */
|
||||
|
|
Loading…
Reference in New Issue