mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	Move get_recursion_depth() function from _testcapi to _testinternalcapi to avoid accessing PyThreadState attributes directly in _testcapi.
		
			
				
	
	
		
			56 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * C Extension module to test Python internal C APIs (Include/internal).
 | 
						|
 */
 | 
						|
 | 
						|
#if !defined(Py_BUILD_CORE_BUILTIN) && !defined(Py_BUILD_CORE_MODULE)
 | 
						|
#  error "Py_BUILD_CORE_BUILTIN or Py_BUILD_CORE_MODULE must be defined"
 | 
						|
#endif
 | 
						|
 | 
						|
#define PY_SSIZE_T_CLEAN
 | 
						|
 | 
						|
#include "Python.h"
 | 
						|
#include "pycore_initconfig.h"   // _Py_GetConfigsAsDict()
 | 
						|
 | 
						|
 | 
						|
static PyObject *
 | 
						|
get_configs(PyObject *self, PyObject *Py_UNUSED(args))
 | 
						|
{
 | 
						|
    return _Py_GetConfigsAsDict();
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
static PyObject*
 | 
						|
get_recursion_depth(PyObject *self, PyObject *args)
 | 
						|
{
 | 
						|
    PyThreadState *tstate = PyThreadState_Get();
 | 
						|
 | 
						|
    /* subtract one to ignore the frame of the get_recursion_depth() call */
 | 
						|
    return PyLong_FromLong(tstate->recursion_depth - 1);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
static PyMethodDef TestMethods[] = {
 | 
						|
    {"get_configs", get_configs, METH_NOARGS},
 | 
						|
    {"get_recursion_depth", get_recursion_depth, METH_NOARGS},
 | 
						|
    {NULL, NULL} /* sentinel */
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
static struct PyModuleDef _testcapimodule = {
 | 
						|
    PyModuleDef_HEAD_INIT,
 | 
						|
    "_testinternalcapi",
 | 
						|
    NULL,
 | 
						|
    -1,
 | 
						|
    TestMethods,
 | 
						|
    NULL,
 | 
						|
    NULL,
 | 
						|
    NULL,
 | 
						|
    NULL
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
PyMODINIT_FUNC
 | 
						|
PyInit__testinternalcapi(void)
 | 
						|
{
 | 
						|
    return PyModule_Create(&_testcapimodule);
 | 
						|
}
 |