mirror of https://github.com/python/cpython.git
gh-127537: Add __class_getitem__ to the python implementation of functools.partial (#127537)
This commit is contained in:
parent
ea2b53739f
commit
401bba6b58
|
@ -433,6 +433,9 @@ def __setstate__(self, state):
|
|||
self._phcount = phcount
|
||||
self._merger = merger
|
||||
|
||||
__class_getitem__ = classmethod(GenericAlias)
|
||||
|
||||
|
||||
try:
|
||||
from _functools import partial, Placeholder, _PlaceholderType
|
||||
except ImportError:
|
||||
|
|
|
@ -473,6 +473,12 @@ class A:
|
|||
self.assertEqual(a.cmeth(3, b=4), ((1, A, 3), {'a': 2, 'b': 4}))
|
||||
self.assertEqual(a.smeth(3, b=4), ((1, 3), {'a': 2, 'b': 4}))
|
||||
|
||||
def test_partial_genericalias(self):
|
||||
alias = self.partial[int]
|
||||
self.assertIs(alias.__origin__, self.partial)
|
||||
self.assertEqual(alias.__args__, (int,))
|
||||
self.assertEqual(alias.__parameters__, ())
|
||||
|
||||
|
||||
@unittest.skipUnless(c_functools, 'requires the C _functools module')
|
||||
class TestPartialC(TestPartial, unittest.TestCase):
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
Add missing ``__class_getitem__`` method to the Python implementation of
|
||||
:func:`functools.partial`, to make it compatible with the C version. This is
|
||||
mainly relevant for alternative Python implementations like PyPy and
|
||||
GraalPy, because CPython will usually use the C-implementation of that
|
||||
function.
|
Loading…
Reference in New Issue