@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')
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)), '()')
{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);
{Py_tp_clear, keyobject_clear},
{Py_tp_richcompare, keyobject_richcompare},
{Py_tp_members, keyobject_members},
+ {Py_tp_getset, keyobject_getset},
{0, 0}
};