mirror of
https://github.com/python/cpython.git
synced 2025-11-02 11:08:57 +00:00
gh-118402: Fix inspect.signature() for functools.cmp_to_key() result (GH-118427)
This commit is contained in:
parent
02887c6428
commit
17a8af9508
3 changed files with 23 additions and 3 deletions
|
|
@ -947,8 +947,13 @@ class TestCmpToKey:
|
|||
@unittest.skipIf(support.MISSING_C_DOCSTRINGS,
|
||||
"Signature information for builtins requires docstrings")
|
||||
def test_cmp_to_signature(self):
|
||||
self.assertEqual(str(Signature.from_callable(self.cmp_to_key)),
|
||||
'(mycmp)')
|
||||
sig = Signature.from_callable(self.cmp_to_key)
|
||||
self.assertEqual(str(sig), '(mycmp)')
|
||||
def mycmp(x, y):
|
||||
return y - x
|
||||
sig = Signature.from_callable(self.cmp_to_key(mycmp))
|
||||
self.assertEqual(str(sig), '(obj)')
|
||||
|
||||
|
||||
|
||||
@unittest.skipUnless(c_functools, 'requires the C _functools module')
|
||||
|
|
@ -1864,9 +1869,10 @@ class TestLRU:
|
|||
self.assertIsNone(ref())
|
||||
|
||||
def test_common_signatures(self):
|
||||
def orig(): ...
|
||||
def orig(a, /, b, c=True): ...
|
||||
lru = self.module.lru_cache(1)(orig)
|
||||
|
||||
self.assertEqual(str(Signature.from_callable(lru)), '(a, /, b, c=True)')
|
||||
self.assertEqual(str(Signature.from_callable(lru.cache_info)), '()')
|
||||
self.assertEqual(str(Signature.from_callable(lru.cache_clear)), '()')
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
Fix :func:`inspect.signature` for the result of the
|
||||
:func:`functools.cmp_to_key` call.
|
||||
|
|
@ -571,6 +571,17 @@ static PyMemberDef keyobject_members[] = {
|
|||
{NULL}
|
||||
};
|
||||
|
||||
static PyObject *
|
||||
keyobject_text_signature(PyObject *self, void *Py_UNUSED(ignored))
|
||||
{
|
||||
return PyUnicode_FromString("(obj)");
|
||||
}
|
||||
|
||||
static PyGetSetDef keyobject_getset[] = {
|
||||
{"__text_signature__", keyobject_text_signature, (setter)NULL},
|
||||
{NULL}
|
||||
};
|
||||
|
||||
static PyObject *
|
||||
keyobject_call(keyobject *ko, PyObject *args, PyObject *kwds);
|
||||
|
||||
|
|
@ -585,6 +596,7 @@ static PyType_Slot keyobject_type_slots[] = {
|
|||
{Py_tp_clear, keyobject_clear},
|
||||
{Py_tp_richcompare, keyobject_richcompare},
|
||||
{Py_tp_members, keyobject_members},
|
||||
{Py_tp_getset, keyobject_getset},
|
||||
{0, 0}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue