1#ifndef Py_INTERNAL_LIFECYCLE_H
2#define Py_INTERNAL_LIFECYCLE_H
3#ifdef __cplusplus
4extern "C" {
5#endif
6
7#ifndef Py_BUILD_CORE
8# error "this header requires Py_BUILD_CORE define"
9#endif
10
11#ifdef HAVE_SIGNAL_H
12#include <signal.h>
13#endif
14
15#include "pycore_runtime.h" // _PyRuntimeState
16
17#ifndef NSIG
18# if defined(_NSIG)
19# define NSIG _NSIG /* For BSD/SysV */
20# elif defined(_SIGMAX)
21# define NSIG (_SIGMAX + 1) /* For QNX */
22# elif defined(SIGMAX)
23# define NSIG (SIGMAX + 1) /* For djgpp */
24# else
25# define NSIG 64 /* Use a reasonable default value */
26# endif
27#endif
28
29/* Forward declarations */
30struct _PyArgv;
31struct pyruntimestate;
32
33/* True if the main interpreter thread exited due to an unhandled
34 * KeyboardInterrupt exception, suggesting the user pressed ^C. */
35PyAPI_DATA(int) _Py_UnhandledKeyboardInterrupt;
36
37extern int _Py_SetFileSystemEncoding(
38 const char *encoding,
39 const char *errors);
40extern void _Py_ClearFileSystemEncoding(void);
41extern PyStatus _PyUnicode_InitEncodings(PyThreadState *tstate);
42#ifdef MS_WINDOWS
43extern int _PyUnicode_EnableLegacyWindowsFSEncoding(void);
44#endif
45
46PyAPI_FUNC(void) _Py_ClearStandardStreamEncoding(void);
47
48PyAPI_FUNC(int) _Py_IsLocaleCoercionTarget(const char *ctype_loc);
49
50/* Various one-time initializers */
51
52extern PyStatus _PyUnicode_Init(PyInterpreterState *interp);
53extern PyStatus _PyUnicode_InitTypes(void);
54extern PyStatus _PyBytes_Init(PyInterpreterState *interp);
55extern int _PyStructSequence_Init(void);
56extern int _PyLong_Init(PyInterpreterState *interp);
57extern int _PyLong_InitTypes(void);
58extern PyStatus _PyTuple_Init(PyInterpreterState *interp);
59extern PyStatus _PyFaulthandler_Init(int enable);
60extern int _PyTraceMalloc_Init(int enable);
61extern PyObject * _PyBuiltin_Init(PyInterpreterState *interp);
62extern PyStatus _PySys_Create(
63 PyThreadState *tstate,
64 PyObject **sysmod_p);
65extern PyStatus _PySys_ReadPreinitWarnOptions(PyWideStringList *options);
66extern PyStatus _PySys_ReadPreinitXOptions(PyConfig *config);
67extern int _PySys_UpdateConfig(PyThreadState *tstate);
68extern PyStatus _PyExc_Init(PyInterpreterState *interp);
69extern PyStatus _PyErr_InitTypes(void);
70extern PyStatus _PyBuiltins_AddExceptions(PyObject * bltinmod);
71extern void _PyFloat_Init(void);
72extern int _PyFloat_InitTypes(void);
73extern PyStatus _Py_HashRandomization_Init(const PyConfig *);
74
75extern PyStatus _PyTypes_Init(void);
76extern PyStatus _PyTypes_InitSlotDefs(void);
77extern PyStatus _PyImportZip_Init(PyThreadState *tstate);
78extern PyStatus _PyGC_Init(PyInterpreterState *interp);
79extern PyStatus _PyAtExit_Init(PyInterpreterState *interp);
80
81
82/* Various internal finalizers */
83
84extern void _PyFrame_Fini(PyInterpreterState *interp);
85extern void _PyDict_Fini(PyInterpreterState *interp);
86extern void _PyTuple_Fini(PyInterpreterState *interp);
87extern void _PyList_Fini(PyInterpreterState *interp);
88extern void _PyBytes_Fini(PyInterpreterState *interp);
89extern void _PyFloat_Fini(PyInterpreterState *interp);
90extern void _PySlice_Fini(PyInterpreterState *interp);
91extern void _PyAsyncGen_Fini(PyInterpreterState *interp);
92
93extern int _PySignal_Init(int install_signal_handlers);
94extern void _PySignal_Fini(void);
95
96extern void _PyExc_Fini(PyInterpreterState *interp);
97extern void _PyImport_Fini(void);
98extern void _PyImport_Fini2(void);
99extern void _PyGC_Fini(PyInterpreterState *interp);
100extern void _PyType_Fini(PyInterpreterState *interp);
101extern void _Py_HashRandomization_Fini(void);
102extern void _PyUnicode_Fini(PyInterpreterState *interp);
103extern void _PyUnicode_ClearInterned(PyInterpreterState *interp);
104extern void _PyLong_Fini(PyInterpreterState *interp);
105extern void _PyFaulthandler_Fini(void);
106extern void _PyHash_Fini(void);
107extern void _PyTraceMalloc_Fini(void);
108extern void _PyWarnings_Fini(PyInterpreterState *interp);
109extern void _PyAST_Fini(PyInterpreterState *interp);
110extern void _PyAtExit_Fini(PyInterpreterState *interp);
111
112extern PyStatus _PyGILState_Init(_PyRuntimeState *runtime);
113extern PyStatus _PyGILState_SetTstate(PyThreadState *tstate);
114extern void _PyGILState_Fini(PyInterpreterState *interp);
115
116PyAPI_FUNC(void) _PyGC_DumpShutdownStats(PyInterpreterState *interp);
117
118PyAPI_FUNC(PyStatus) _Py_PreInitializeFromPyArgv(
119 const PyPreConfig *src_config,
120 const struct _PyArgv *args);
121PyAPI_FUNC(PyStatus) _Py_PreInitializeFromConfig(
122 const PyConfig *config,
123 const struct _PyArgv *args);
124
125
126PyAPI_FUNC(int) _Py_HandleSystemExit(int *exitcode_p);
127
128PyAPI_FUNC(PyObject*) _PyErr_WriteUnraisableDefaultHook(PyObject *unraisable);
129
130PyAPI_FUNC(void) _PyErr_Print(PyThreadState *tstate);
131PyAPI_FUNC(void) _PyErr_Display(PyObject *file, PyObject *exception,
132 PyObject *value, PyObject *tb);
133
134PyAPI_FUNC(void) _PyThreadState_DeleteCurrent(PyThreadState *tstate);
135
136extern void _PyAtExit_Call(PyInterpreterState *interp);
137
138#ifdef __cplusplus
139}
140#endif
141#endif /* !Py_INTERNAL_LIFECYCLE_H */
142