GH-100242: bring functools.py partial implementation more in line with C code (GH-100244)

in partial.__new__, before checking for the existence of the attribute
'func', first check whether the argument is an instance of partial.
This commit is contained in:
CF Bolz-Tereick 2024-04-17 15:34:46 +02:00 committed by GitHub
parent 8e36cb7bb2
commit 5a0209fc23
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 30 additions and 5 deletions

View file

@ -185,6 +185,19 @@ class TestPartial:
flat = partial(signature, 'asdf', bar=True)
self.assertEqual(signature(nested), signature(flat))
def test_nested_optimization_bug(self):
partial = self.partial
class Builder:
def __call__(self, tag, *children, **attrib):
return (tag, children, attrib)
def __getattr__(self, tag):
return partial(self, tag)
B = Builder()
m = B.m
assert m(1, 2, a=2) == ('m', (1, 2), dict(a=2))
def test_nested_partial_with_attribute(self):
# see issue 25137
partial = self.partial