1 #ifndef Py_INTERNAL_LIFECYCLE_H
2 #define Py_INTERNAL_LIFECYCLE_H
3 #ifdef __cplusplus
4 extern "C" {
5 #endif
6 
7 #ifndef Py_BUILD_CORE
8 #  error "this header requires Py_BUILD_CORE define"
9 #endif
10 
11 #include "pycore_runtime.h"       // _PyRuntimeState
12 
13 /* Forward declarations */
14 struct _PyArgv;
15 struct pyruntimestate;
16 
17 /* True if the main interpreter thread exited due to an unhandled
18  * KeyboardInterrupt exception, suggesting the user pressed ^C. */
19 PyAPI_DATA(int) _Py_UnhandledKeyboardInterrupt;
20 
21 extern int _Py_SetFileSystemEncoding(
22     const char *encoding,
23     const char *errors);
24 extern void _Py_ClearFileSystemEncoding(void);
25 extern PyStatus _PyUnicode_InitEncodings(PyThreadState *tstate);
26 #ifdef MS_WINDOWS
27 extern int _PyUnicode_EnableLegacyWindowsFSEncoding(void);
28 #endif
29 
30 PyAPI_FUNC(void) _Py_ClearStandardStreamEncoding(void);
31 
32 PyAPI_FUNC(int) _Py_IsLocaleCoercionTarget(const char *ctype_loc);
33 
34 /* Various one-time initializers */
35 
36 extern PyStatus _PyFaulthandler_Init(int enable);
37 extern int _PyTraceMalloc_Init(int enable);
38 extern PyObject * _PyBuiltin_Init(PyInterpreterState *interp);
39 extern PyStatus _PySys_Create(
40     PyThreadState *tstate,
41     PyObject **sysmod_p);
42 extern PyStatus _PySys_ReadPreinitWarnOptions(PyWideStringList *options);
43 extern PyStatus _PySys_ReadPreinitXOptions(PyConfig *config);
44 extern int _PySys_UpdateConfig(PyThreadState *tstate);
45 extern void _PySys_Fini(PyInterpreterState *interp);
46 extern int _PyBuiltins_AddExceptions(PyObject * bltinmod);
47 extern PyStatus _Py_HashRandomization_Init(const PyConfig *);
48 
49 extern PyStatus _PyImportZip_Init(PyThreadState *tstate);
50 extern PyStatus _PyGC_Init(PyInterpreterState *interp);
51 extern PyStatus _PyAtExit_Init(PyInterpreterState *interp);
52 extern int _Py_Deepfreeze_Init(void);
53 
54 /* Various internal finalizers */
55 
56 extern int _PySignal_Init(int install_signal_handlers);
57 extern void _PySignal_Fini(void);
58 
59 extern void _PyImport_Fini(void);
60 extern void _PyImport_Fini2(void);
61 extern void _PyGC_Fini(PyInterpreterState *interp);
62 extern void _Py_HashRandomization_Fini(void);
63 extern void _PyFaulthandler_Fini(void);
64 extern void _PyHash_Fini(void);
65 extern void _PyTraceMalloc_Fini(void);
66 extern void _PyWarnings_Fini(PyInterpreterState *interp);
67 extern void _PyAST_Fini(PyInterpreterState *interp);
68 extern void _PyAtExit_Fini(PyInterpreterState *interp);
69 extern void _PyThread_FiniType(PyInterpreterState *interp);
70 extern void _Py_Deepfreeze_Fini(void);
71 extern void _PyArg_Fini(void);
72 
73 extern PyStatus _PyGILState_Init(_PyRuntimeState *runtime);
74 extern PyStatus _PyGILState_SetTstate(PyThreadState *tstate);
75 extern void _PyGILState_Fini(PyInterpreterState *interp);
76 
77 PyAPI_FUNC(void) _PyGC_DumpShutdownStats(PyInterpreterState *interp);
78 
79 PyAPI_FUNC(PyStatus) _Py_PreInitializeFromPyArgv(
80     const PyPreConfig *src_config,
81     const struct _PyArgv *args);
82 PyAPI_FUNC(PyStatus) _Py_PreInitializeFromConfig(
83     const PyConfig *config,
84     const struct _PyArgv *args);
85 
86 PyAPI_FUNC(wchar_t *) _Py_GetStdlibDir(void);
87 
88 PyAPI_FUNC(int) _Py_HandleSystemExit(int *exitcode_p);
89 
90 PyAPI_FUNC(PyObject*) _PyErr_WriteUnraisableDefaultHook(PyObject *unraisable);
91 
92 PyAPI_FUNC(void) _PyErr_Print(PyThreadState *tstate);
93 PyAPI_FUNC(void) _PyErr_Display(PyObject *file, PyObject *exception,
94                                 PyObject *value, PyObject *tb);
95 
96 PyAPI_FUNC(void) _PyThreadState_DeleteCurrent(PyThreadState *tstate);
97 
98 extern void _PyAtExit_Call(PyInterpreterState *interp);
99 
100 #ifdef __cplusplus
101 }
102 #endif
103 #endif /* !Py_INTERNAL_LIFECYCLE_H */
104