mirror of
https://github.com/python/cpython.git
synced 2024-12-04 15:25:13 +08:00
76 lines
1.9 KiB
C
76 lines
1.9 KiB
C
#include "Python.h"
|
|
|
|
#include "clinic/_contextvarsmodule.c.h"
|
|
|
|
/*[clinic input]
|
|
module _contextvars
|
|
[clinic start generated code]*/
|
|
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=a0955718c8b8cea6]*/
|
|
|
|
|
|
/*[clinic input]
|
|
_contextvars.copy_context
|
|
[clinic start generated code]*/
|
|
|
|
static PyObject *
|
|
_contextvars_copy_context_impl(PyObject *module)
|
|
/*[clinic end generated code: output=1fcd5da7225c4fa9 input=89bb9ae485888440]*/
|
|
{
|
|
return (PyObject *)PyContext_CopyCurrent();
|
|
}
|
|
|
|
|
|
PyDoc_STRVAR(module_doc, "Context Variables");
|
|
|
|
static PyMethodDef _contextvars_methods[] = {
|
|
_CONTEXTVARS_COPY_CONTEXT_METHODDEF
|
|
{NULL, NULL}
|
|
};
|
|
|
|
static struct PyModuleDef _contextvarsmodule = {
|
|
PyModuleDef_HEAD_INIT, /* m_base */
|
|
"_contextvars", /* m_name */
|
|
module_doc, /* m_doc */
|
|
-1, /* m_size */
|
|
_contextvars_methods, /* m_methods */
|
|
NULL, /* m_slots */
|
|
NULL, /* m_traverse */
|
|
NULL, /* m_clear */
|
|
NULL, /* m_free */
|
|
};
|
|
|
|
PyMODINIT_FUNC
|
|
PyInit__contextvars(void)
|
|
{
|
|
PyObject *m = PyModule_Create(&_contextvarsmodule);
|
|
if (m == NULL) {
|
|
return NULL;
|
|
}
|
|
|
|
Py_INCREF(&PyContext_Type);
|
|
if (PyModule_AddObject(m, "Context",
|
|
(PyObject *)&PyContext_Type) < 0)
|
|
{
|
|
Py_DECREF(&PyContext_Type);
|
|
return NULL;
|
|
}
|
|
|
|
Py_INCREF(&PyContextVar_Type);
|
|
if (PyModule_AddObject(m, "ContextVar",
|
|
(PyObject *)&PyContextVar_Type) < 0)
|
|
{
|
|
Py_DECREF(&PyContextVar_Type);
|
|
return NULL;
|
|
}
|
|
|
|
Py_INCREF(&PyContextToken_Type);
|
|
if (PyModule_AddObject(m, "Token",
|
|
(PyObject *)&PyContextToken_Type) < 0)
|
|
{
|
|
Py_DECREF(&PyContextToken_Type);
|
|
return NULL;
|
|
}
|
|
|
|
return m;
|
|
}
|