(root)/
Python-3.12.0/
Modules/
_contextvarsmodule.c
       1  #include "Python.h"
       2  
       3  #include "clinic/_contextvarsmodule.c.h"
       4  
       5  /*[clinic input]
       6  module _contextvars
       7  [clinic start generated code]*/
       8  /*[clinic end generated code: output=da39a3ee5e6b4b0d input=a0955718c8b8cea6]*/
       9  
      10  
      11  /*[clinic input]
      12  _contextvars.copy_context
      13  [clinic start generated code]*/
      14  
      15  static PyObject *
      16  _contextvars_copy_context_impl(PyObject *module)
      17  /*[clinic end generated code: output=1fcd5da7225c4fa9 input=89bb9ae485888440]*/
      18  {
      19      return PyContext_CopyCurrent();
      20  }
      21  
      22  
      23  PyDoc_STRVAR(module_doc, "Context Variables");
      24  
      25  static PyMethodDef _contextvars_methods[] = {
      26      _CONTEXTVARS_COPY_CONTEXT_METHODDEF
      27      {NULL, NULL}
      28  };
      29  
      30  static int
      31  _contextvars_exec(PyObject *m)
      32  {
      33      if (PyModule_AddType(m, &PyContext_Type) < 0) {
      34          return -1;
      35      }
      36      if (PyModule_AddType(m, &PyContextVar_Type) < 0) {
      37          return -1;
      38      }
      39      if (PyModule_AddType(m, &PyContextToken_Type) < 0) {
      40          return -1;
      41      }
      42      return 0;
      43  }
      44  
      45  static struct PyModuleDef_Slot _contextvars_slots[] = {
      46      {Py_mod_exec, _contextvars_exec},
      47      {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
      48      {0, NULL}
      49  };
      50  
      51  static struct PyModuleDef _contextvarsmodule = {
      52      PyModuleDef_HEAD_INIT,      /* m_base */
      53      "_contextvars",             /* m_name */
      54      module_doc,                 /* m_doc */
      55      0,                          /* m_size */
      56      _contextvars_methods,       /* m_methods */
      57      _contextvars_slots,         /* m_slots */
      58      NULL,                       /* m_traverse */
      59      NULL,                       /* m_clear */
      60      NULL,                       /* m_free */
      61  };
      62  
      63  PyMODINIT_FUNC
      64  PyInit__contextvars(void)
      65  {
      66      return PyModuleDef_Init(&_contextvarsmodule);
      67  }