self.assertEqual(_testcapi.eval_get_func_name(sum), "sum") # c function
self.assertEqual(_testcapi.eval_get_func_name(A), "type")
+ def test_eval_get_func_desc(self):
+ def function_example(): ...
+
+ class A:
+ def method_example(self): ...
+
+ self.assertEqual(_testcapi.eval_get_func_desc(function_example),
+ "()")
+ self.assertEqual(_testcapi.eval_get_func_desc(A.method_example),
+ "()")
+ self.assertEqual(_testcapi.eval_get_func_desc(A().method_example),
+ "()")
+ self.assertEqual(_testcapi.eval_get_func_desc(sum), "()") # c function
+ self.assertEqual(_testcapi.eval_get_func_desc(A), " object")
+
def test_function_get_code(self):
import types
return PyUnicode_FromString(PyEval_GetFuncName(func));
}
+static PyObject *
+eval_get_func_desc(PyObject *self, PyObject *func)
+{
+ return PyUnicode_FromString(PyEval_GetFuncDesc(func));
+}
+
static PyObject *
get_feature_macros(PyObject *self, PyObject *Py_UNUSED(args))
{
{"frame_getbuiltins", frame_getbuiltins, METH_O, NULL},
{"frame_getlasti", frame_getlasti, METH_O, NULL},
{"eval_get_func_name", eval_get_func_name, METH_O, NULL},
+ {"eval_get_func_desc", eval_get_func_desc, METH_O, NULL},
{"get_feature_macros", get_feature_macros, METH_NOARGS, NULL},
{"test_code_api", test_code_api, METH_NOARGS, NULL},
{"settrace_to_record", settrace_to_record, METH_O, NULL},