[Python-checkins] [3.11] gh-94808: Cover `PyEval_GetFuncName` (GH-98246). (#98283)
JelleZijlstra
webhook-mailer at python.org
Sat Oct 15 14:48:54 EDT 2022
https://github.com/python/cpython/commit/93d0d9cfdd74b7ff80a75ce8887adef600f21c69
commit: 93d0d9cfdd74b7ff80a75ce8887adef600f21c69
branch: 3.11
author: Jelle Zijlstra <jelle.zijlstra at gmail.com>
committer: JelleZijlstra <jelle.zijlstra at gmail.com>
date: 2022-10-15T11:48:48-07:00
summary:
[3.11] gh-94808: Cover `PyEval_GetFuncName` (GH-98246). (#98283)
(cherry picked from commit f01b56c7bdec239abe0dae2706f8325f4336249c)
Co-authored-by: Nikita Sobolev <mail at sobolevn.me>
files:
M Lib/test/test_capi.py
M Modules/_testcapimodule.c
diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py
index e157d9fdc850..6e56016a47cc 100644
--- a/Lib/test/test_capi.py
+++ b/Lib/test/test_capi.py
@@ -724,6 +724,21 @@ def test_export_symbols(self):
with self.subTest(name=name):
self.assertTrue(hasattr(ctypes.pythonapi, name))
+ def test_eval_get_func_name(self):
+ def function_example(): ...
+
+ class A:
+ def method_example(self): ...
+
+ self.assertEqual(_testcapi.eval_get_func_name(function_example),
+ "function_example")
+ self.assertEqual(_testcapi.eval_get_func_name(A.method_example),
+ "method_example")
+ self.assertEqual(_testcapi.eval_get_func_name(A().method_example),
+ "method_example")
+ self.assertEqual(_testcapi.eval_get_func_name(sum), "sum") # c function
+ self.assertEqual(_testcapi.eval_get_func_name(A), "type")
+
class TestPendingCalls(unittest.TestCase):
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
index 43fec8138a0e..69703be186d1 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -5935,6 +5935,12 @@ frame_getlasti(PyObject *self, PyObject *frame)
return PyLong_FromLong(lasti);
}
+static PyObject *
+eval_get_func_name(PyObject *self, PyObject *func)
+{
+ return PyUnicode_FromString(PyEval_GetFuncName(func));
+}
+
static PyObject *
get_feature_macros(PyObject *self, PyObject *Py_UNUSED(args))
{
@@ -6372,6 +6378,7 @@ static PyMethodDef TestMethods[] = {
{"frame_getgenerator", frame_getgenerator, METH_O, NULL},
{"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},
{"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},
More information about the Python-checkins
mailing list