mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
bpo-1635741: Port _weakref extension module to multiphase initialization (PEP 489) (GH-19084)
This commit is contained in:
parent
2de7ac9798
commit
8334f30a74
2 changed files with 38 additions and 21 deletions
|
@ -0,0 +1 @@
|
||||||
|
Port _weakref extension module to multiphase initialization (:pep:`489`).
|
|
@ -136,14 +136,48 @@ weakref_functions[] = {
|
||||||
{NULL, NULL, 0, NULL}
|
{NULL, NULL, 0, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int
|
||||||
|
weakref_exec(PyObject *module)
|
||||||
|
{
|
||||||
|
Py_INCREF(&_PyWeakref_RefType);
|
||||||
|
if (PyModule_AddObject(module, "ref", (PyObject *) &_PyWeakref_RefType) < 0) {
|
||||||
|
Py_DECREF(&_PyWeakref_RefType);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
Py_INCREF(&_PyWeakref_RefType);
|
||||||
|
if (PyModule_AddObject(module, "ReferenceType",
|
||||||
|
(PyObject *) &_PyWeakref_RefType) < 0) {
|
||||||
|
Py_DECREF(&_PyWeakref_RefType);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
Py_INCREF(&_PyWeakref_ProxyType);
|
||||||
|
if (PyModule_AddObject(module, "ProxyType",
|
||||||
|
(PyObject *) &_PyWeakref_ProxyType) < 0) {
|
||||||
|
Py_DECREF(&_PyWeakref_ProxyType);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
Py_INCREF(&_PyWeakref_CallableProxyType);
|
||||||
|
if (PyModule_AddObject(module, "CallableProxyType",
|
||||||
|
(PyObject *) &_PyWeakref_CallableProxyType) < 0) {
|
||||||
|
Py_DECREF(&_PyWeakref_CallableProxyType);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct PyModuleDef_Slot weakref_slots[] = {
|
||||||
|
{Py_mod_exec, weakref_exec},
|
||||||
|
{0, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
static struct PyModuleDef weakrefmodule = {
|
static struct PyModuleDef weakrefmodule = {
|
||||||
PyModuleDef_HEAD_INIT,
|
PyModuleDef_HEAD_INIT,
|
||||||
"_weakref",
|
"_weakref",
|
||||||
"Weak-reference support module.",
|
"Weak-reference support module.",
|
||||||
-1,
|
0,
|
||||||
weakref_functions,
|
weakref_functions,
|
||||||
NULL,
|
weakref_slots,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL
|
NULL
|
||||||
|
@ -152,23 +186,5 @@ static struct PyModuleDef weakrefmodule = {
|
||||||
PyMODINIT_FUNC
|
PyMODINIT_FUNC
|
||||||
PyInit__weakref(void)
|
PyInit__weakref(void)
|
||||||
{
|
{
|
||||||
PyObject *m;
|
return PyModuleDef_Init(&weakrefmodule);
|
||||||
|
|
||||||
m = PyModule_Create(&weakrefmodule);
|
|
||||||
|
|
||||||
if (m != NULL) {
|
|
||||||
Py_INCREF(&_PyWeakref_RefType);
|
|
||||||
PyModule_AddObject(m, "ref",
|
|
||||||
(PyObject *) &_PyWeakref_RefType);
|
|
||||||
Py_INCREF(&_PyWeakref_RefType);
|
|
||||||
PyModule_AddObject(m, "ReferenceType",
|
|
||||||
(PyObject *) &_PyWeakref_RefType);
|
|
||||||
Py_INCREF(&_PyWeakref_ProxyType);
|
|
||||||
PyModule_AddObject(m, "ProxyType",
|
|
||||||
(PyObject *) &_PyWeakref_ProxyType);
|
|
||||||
Py_INCREF(&_PyWeakref_CallableProxyType);
|
|
||||||
PyModule_AddObject(m, "CallableProxyType",
|
|
||||||
(PyObject *) &_PyWeakref_CallableProxyType);
|
|
||||||
}
|
|
||||||
return m;
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue