bpo-1635741: Port _weakref extension module to multiphase initializat… · python/cpython@8334f30 (original) (raw)

`@@ -136,14 +136,48 @@ weakref_functions[] = {

`

136

136

` {NULL, NULL, 0, NULL}

`

137

137

`};

`

138

138

``

``

139

`+

static int

`

``

140

`+

weakref_exec(PyObject *module)

`

``

141

`+

{

`

``

142

`+

Py_INCREF(&_PyWeakref_RefType);

`

``

143

`+

if (PyModule_AddObject(module, "ref", (PyObject *) &_PyWeakref_RefType) < 0) {

`

``

144

`+

Py_DECREF(&_PyWeakref_RefType);

`

``

145

`+

return -1;

`

``

146

`+

}

`

``

147

`+

Py_INCREF(&_PyWeakref_RefType);

`

``

148

`+

if (PyModule_AddObject(module, "ReferenceType",

`

``

149

`+

(PyObject *) &_PyWeakref_RefType) < 0) {

`

``

150

`+

Py_DECREF(&_PyWeakref_RefType);

`

``

151

`+

return -1;

`

``

152

`+

}

`

``

153

`+

Py_INCREF(&_PyWeakref_ProxyType);

`

``

154

`+

if (PyModule_AddObject(module, "ProxyType",

`

``

155

`+

(PyObject *) &_PyWeakref_ProxyType) < 0) {

`

``

156

`+

Py_DECREF(&_PyWeakref_ProxyType);

`

``

157

`+

return -1;

`

``

158

`+

}

`

``

159

`+

Py_INCREF(&_PyWeakref_CallableProxyType);

`

``

160

`+

if (PyModule_AddObject(module, "CallableProxyType",

`

``

161

`+

(PyObject *) &_PyWeakref_CallableProxyType) < 0) {

`

``

162

`+

Py_DECREF(&_PyWeakref_CallableProxyType);

`

``

163

`+

return -1;

`

``

164

`+

}

`

``

165

+

``

166

`+

return 0;

`

``

167

`+

}

`

``

168

+

``

169

`+

static struct PyModuleDef_Slot weakref_slots[] = {

`

``

170

`+

{Py_mod_exec, weakref_exec},

`

``

171

`+

{0, NULL}

`

``

172

`+

};

`

139

173

``

140

174

`static struct PyModuleDef weakrefmodule = {

`

141

175

`PyModuleDef_HEAD_INIT,

`

142

176

`"_weakref",

`

143

177

`"Weak-reference support module.",

`

144

``

`-

-1,

`

``

178

`+

0,

`

145

179

`weakref_functions,

`

146

``

`-

NULL,

`

``

180

`+

weakref_slots,

`

147

181

`NULL,

`

148

182

`NULL,

`

149

183

`NULL

`

`@@ -152,23 +186,5 @@ static struct PyModuleDef weakrefmodule = {

`

152

186

`PyMODINIT_FUNC

`

153

187

`PyInit__weakref(void)

`

154

188

`{

`

155

``

`-

PyObject *m;

`

156

``

-

157

``

`-

m = PyModule_Create(&weakrefmodule);

`

158

``

-

159

``

`-

if (m != NULL) {

`

160

``

`-

Py_INCREF(&_PyWeakref_RefType);

`

161

``

`-

PyModule_AddObject(m, "ref",

`

162

``

`-

(PyObject *) &_PyWeakref_RefType);

`

163

``

`-

Py_INCREF(&_PyWeakref_RefType);

`

164

``

`-

PyModule_AddObject(m, "ReferenceType",

`

165

``

`-

(PyObject *) &_PyWeakref_RefType);

`

166

``

`-

Py_INCREF(&_PyWeakref_ProxyType);

`

167

``

`-

PyModule_AddObject(m, "ProxyType",

`

168

``

`-

(PyObject *) &_PyWeakref_ProxyType);

`

169

``

`-

Py_INCREF(&_PyWeakref_CallableProxyType);

`

170

``

`-

PyModule_AddObject(m, "CallableProxyType",

`

171

``

`-

(PyObject *) &_PyWeakref_CallableProxyType);

`

172

``

`-

}

`

173

``

`-

return m;

`

``

189

`+

return PyModuleDef_Init(&weakrefmodule);

`

174

190

`}

`