mirror of https://github.com/python/cpython
bpo-39481: Make functools.cached_property, partial, partialmethod generic (#19427)
This commit is contained in:
parent
584a3cfda4
commit
cecf049673
|
@ -20,6 +20,7 @@ from collections import namedtuple
|
|||
# import types, weakref # Deferred to single_dispatch()
|
||||
from reprlib import recursive_repr
|
||||
from _thread import RLock
|
||||
from types import GenericAlias
|
||||
|
||||
|
||||
################################################################################
|
||||
|
@ -656,6 +657,9 @@ class partialmethod(object):
|
|||
def __isabstractmethod__(self):
|
||||
return getattr(self.func, "__isabstractmethod__", False)
|
||||
|
||||
__class_getitem__ = classmethod(GenericAlias)
|
||||
|
||||
|
||||
# Helper functions
|
||||
|
||||
def _unwrap_partial(func):
|
||||
|
@ -1208,3 +1212,5 @@ class cached_property:
|
|||
)
|
||||
raise TypeError(msg) from None
|
||||
return val
|
||||
|
||||
__class_getitem__ = classmethod(GenericAlias)
|
||||
|
|
|
@ -9,6 +9,7 @@ from collections.abc import *
|
|||
from concurrent.futures import Future
|
||||
from concurrent.futures.thread import _WorkItem
|
||||
from contextlib import AbstractContextManager, AbstractAsyncContextManager
|
||||
from functools import partial, partialmethod, _lru_cache_wrapper, cached_property
|
||||
from ctypes import Array, LibraryLoader
|
||||
from difflib import SequenceMatcher
|
||||
from filecmp import dircmp
|
||||
|
@ -49,6 +50,7 @@ class BaseTest(unittest.TestCase):
|
|||
FileInput,
|
||||
OrderedDict, Counter, UserDict, UserList,
|
||||
Pattern, Match,
|
||||
partial, partialmethod, cached_property,
|
||||
AbstractContextManager, AbstractAsyncContextManager,
|
||||
Awaitable, Coroutine,
|
||||
AsyncIterable, AsyncIterator,
|
||||
|
|
|
@ -414,6 +414,8 @@ partial_setstate(partialobject *pto, PyObject *state)
|
|||
static PyMethodDef partial_methods[] = {
|
||||
{"__reduce__", (PyCFunction)partial_reduce, METH_NOARGS},
|
||||
{"__setstate__", (PyCFunction)partial_setstate, METH_O},
|
||||
{"__class_getitem__", (PyCFunction)Py_GenericAlias,
|
||||
METH_O|METH_CLASS, PyDoc_STR("See PEP 585")},
|
||||
{NULL, NULL} /* sentinel */
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue