mirror of
https://github.com/python/cpython.git
synced 2026-04-17 17:31:04 +00:00
[3.14] gh-144629: Add test for the PyFunction_GetAnnotations() function (GH-144630) (#144670)
gh-144629: Add test for the PyFunction_GetAnnotations() function (GH-144630)
(cherry picked from commit cc81707e40)
Co-authored-by: Nybblista <170842536+nybblista@users.noreply.github.com>
This commit is contained in:
parent
616e611844
commit
befa954efe
2 changed files with 26 additions and 1 deletions
|
|
@ -307,10 +307,27 @@ def function_without_closure(): ...
|
|||
_testcapi.function_get_closure(function_without_closure), (1, 2))
|
||||
self.assertEqual(function_without_closure.__closure__, (1, 2))
|
||||
|
||||
def test_function_get_annotations(self):
|
||||
# Test PyFunction_GetAnnotations()
|
||||
def normal():
|
||||
pass
|
||||
|
||||
def annofn(arg: int) -> str:
|
||||
return f'arg = {arg}'
|
||||
|
||||
annotations = _testcapi.function_get_annotations(normal)
|
||||
self.assertIsNone(annotations)
|
||||
|
||||
annotations = _testcapi.function_get_annotations(annofn)
|
||||
self.assertIsInstance(annotations, dict)
|
||||
self.assertEqual(annotations, annofn.__annotations__)
|
||||
|
||||
with self.assertRaises(SystemError):
|
||||
_testcapi.function_get_annotations(None)
|
||||
|
||||
# TODO: test PyFunction_New()
|
||||
# TODO: test PyFunction_NewWithQualName()
|
||||
# TODO: test PyFunction_SetVectorcall()
|
||||
# TODO: test PyFunction_GetAnnotations()
|
||||
# TODO: test PyFunction_SetAnnotations()
|
||||
# TODO: test PyClassMethod_New()
|
||||
# TODO: test PyStaticMethod_New()
|
||||
|
|
|
|||
|
|
@ -123,6 +123,13 @@ function_set_closure(PyObject *self, PyObject *args)
|
|||
}
|
||||
|
||||
|
||||
static PyObject *
|
||||
function_get_annotations(PyObject *self, PyObject *func)
|
||||
{
|
||||
return Py_XNewRef(PyFunction_GetAnnotations(func));
|
||||
}
|
||||
|
||||
|
||||
static PyMethodDef test_methods[] = {
|
||||
{"function_get_code", function_get_code, METH_O, NULL},
|
||||
{"function_get_globals", function_get_globals, METH_O, NULL},
|
||||
|
|
@ -133,6 +140,7 @@ static PyMethodDef test_methods[] = {
|
|||
{"function_set_kw_defaults", function_set_kw_defaults, METH_VARARGS, NULL},
|
||||
{"function_get_closure", function_get_closure, METH_O, NULL},
|
||||
{"function_set_closure", function_set_closure, METH_VARARGS, NULL},
|
||||
{"function_get_annotations", function_get_annotations, METH_O, NULL},
|
||||
{NULL},
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue