bpo-39481: Make weakref and WeakSet generic (GH-19497)
This commit is contained in:
parent
cecf049673
commit
8ef875028a
|
@ -3,6 +3,7 @@
|
|||
# by abc.py to load everything else at startup.
|
||||
|
||||
from _weakref import ref
|
||||
from types import GenericAlias
|
||||
|
||||
__all__ = ['WeakSet']
|
||||
|
||||
|
@ -197,3 +198,5 @@ class WeakSet:
|
|||
|
||||
def __repr__(self):
|
||||
return repr(self.data)
|
||||
|
||||
__class_getitem__ = classmethod(GenericAlias)
|
||||
|
|
|
@ -33,6 +33,7 @@ from tempfile import TemporaryDirectory, SpooledTemporaryFile
|
|||
from urllib.parse import SplitResult, ParseResult
|
||||
from unittest.case import _AssertRaisesContext
|
||||
from queue import Queue, SimpleQueue
|
||||
from weakref import WeakSet, ReferenceType, ref
|
||||
import typing
|
||||
|
||||
from typing import TypeVar
|
||||
|
@ -73,6 +74,7 @@ class BaseTest(unittest.TestCase):
|
|||
Array, LibraryLoader,
|
||||
SplitResult, ParseResult,
|
||||
ValueProxy, ApplyResult,
|
||||
WeakSet, ReferenceType, ref,
|
||||
ShareableList, SimpleQueue,
|
||||
Future, _WorkItem,
|
||||
Morsel,
|
||||
|
|
|
@ -362,6 +362,12 @@ static PyMemberDef weakref_members[] = {
|
|||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
static PyMethodDef weakref_methods[] = {
|
||||
{"__class_getitem__", (PyCFunction)Py_GenericAlias,
|
||||
METH_O|METH_CLASS, PyDoc_STR("See PEP 585")},
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
PyTypeObject
|
||||
_PyWeakref_RefType = {
|
||||
PyVarObject_HEAD_INIT(&PyType_Type, 0)
|
||||
|
@ -392,7 +398,7 @@ _PyWeakref_RefType = {
|
|||
0, /*tp_weaklistoffset*/
|
||||
0, /*tp_iter*/
|
||||
0, /*tp_iternext*/
|
||||
0, /*tp_methods*/
|
||||
weakref_methods, /*tp_methods*/
|
||||
weakref_members, /*tp_members*/
|
||||
0, /*tp_getset*/
|
||||
0, /*tp_base*/
|
||||
|
|
Loading…
Reference in New Issue