/
githubmirror
/
cpython
Обзор
Документация
Войти
/
githubmirror
/
cpython
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Modules/_testcapi/weakref.c
46 строк
963 B
Serhiy Storchaka
gh-151130: Add more tests for PyWeakref_* C API (GH-151131)
09 июн 2026, 14:11
Не верифицирован
09 июн 2026, 14:11
c3cd75a
Код
Авторство
О чём код?
#include "parts.h" #include "util.h" static PyObject * pyweakref_getref(PyObject *module, PyObject *ref) { NULLABLE(ref); PyObject *obj = UNINITIALIZED_PTR; int rc = PyWeakref_GetRef(ref, &obj); if (rc == -1 && PyErr_Occurred()) { assert(obj == NULL); return NULL; } if (obj == NULL) { return Py_BuildValue("i", rc); } else { assert(obj != UNINITIALIZED_PTR); return Py_BuildValue("iN", rc, obj); } } static PyObject * pyweakref_isdead(PyObject *module, PyObject *obj) { NULLABLE(obj); int rc = PyWeakref_IsDead(obj); if (rc == -1 && PyErr_Occurred()) { return NULL; } return PyLong_FromLong(rc); } static PyMethodDef test_methods[] = { {"pyweakref_getref", pyweakref_getref, METH_O}, {"pyweakref_isdead", pyweakref_isdead, METH_O}, {NULL}, }; int _PyTestCapi_Init_Weakref(PyObject *m) { return PyModule_AddFunctions(m, test_methods); }