mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00: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;
							 | 
						||
| 
								 | 
							
								}
							 |