blob: d4f0ae2da72e407c9dff1b3ec28925f696b01d3d [file] [log] [blame]
Victor Stinnera1c249c2018-11-01 03:15:58 +01001#ifndef Py_INTERNAL_LIFECYCLE_H
2#define Py_INTERNAL_LIFECYCLE_H
3#ifdef __cplusplus
4extern "C" {
5#endif
6
Victor Stinner5c75f372019-04-17 23:02:26 +02007#ifndef Py_BUILD_CORE
8# error "this header requires Py_BUILD_CORE define"
Victor Stinnera1c249c2018-11-01 03:15:58 +01009#endif
10
Victor Stinner331a6a52019-05-27 16:39:22 +020011#include "pycore_initconfig.h" /* _PyArgv */
Victor Stinner70005ac2019-05-02 15:25:34 -040012#include "pycore_pystate.h" /* _PyRuntimeState */
Victor Stinner8e91c242019-04-24 17:24:01 +020013
Gregory P. Smith38f11cc2019-02-16 12:57:40 -080014/* True if the main interpreter thread exited due to an unhandled
15 * KeyboardInterrupt exception, suggesting the user pressed ^C. */
16PyAPI_DATA(int) _Py_UnhandledKeyboardInterrupt;
17
Victor Stinner43fc3bb2019-05-02 11:54:20 -040018extern int _Py_SetFileSystemEncoding(
Victor Stinnera1c249c2018-11-01 03:15:58 +010019 const char *encoding,
20 const char *errors);
Victor Stinner43fc3bb2019-05-02 11:54:20 -040021extern void _Py_ClearFileSystemEncoding(void);
Victor Stinnerc5c64252019-09-23 15:59:00 +020022extern PyStatus _PyUnicode_InitEncodings(PyThreadState *tstate);
Victor Stinner709d23d2019-05-02 14:56:30 -040023#ifdef MS_WINDOWS
24extern int _PyUnicode_EnableLegacyWindowsFSEncoding(void);
25#endif
Victor Stinnera1c249c2018-11-01 03:15:58 +010026
27PyAPI_FUNC(void) _Py_ClearStandardStreamEncoding(void);
28
29PyAPI_FUNC(int) _Py_IsLocaleCoercionTarget(const char *ctype_loc);
30
Victor Stinnerbf4ac2d2019-01-22 17:39:03 +010031/* Various one-time initializers */
32
Victor Stinner331a6a52019-05-27 16:39:22 +020033extern PyStatus _PyUnicode_Init(void);
Victor Stinnera1c249c2018-11-01 03:15:58 +010034extern int _PyStructSequence_Init(void);
35extern int _PyLong_Init(void);
Victor Stinner331a6a52019-05-27 16:39:22 +020036extern PyStatus _PyFaulthandler_Init(int enable);
Victor Stinnera1c249c2018-11-01 03:15:58 +010037extern int _PyTraceMalloc_Init(int enable);
Victor Stinnerbf4ac2d2019-01-22 17:39:03 +010038extern PyObject * _PyBuiltin_Init(void);
Victor Stinner331a6a52019-05-27 16:39:22 +020039extern PyStatus _PySys_Create(
Victor Stinner0fd2c302019-06-04 03:15:09 +020040 _PyRuntimeState *runtime,
Victor Stinnerab672812019-01-23 15:04:40 +010041 PyInterpreterState *interp,
42 PyObject **sysmod_p);
Victor Stinner331a6a52019-05-27 16:39:22 +020043extern PyStatus _PySys_SetPreliminaryStderr(PyObject *sysdict);
Miss Islington (bot)c9ed9e62019-09-29 16:58:57 -070044extern PyStatus _PySys_ReadPreinitWarnOptions(PyWideStringList *options);
Victor Stinneraf84a882019-08-23 21:16:51 +020045extern PyStatus _PySys_ReadPreinitXOptions(PyConfig *config);
Victor Stinner0fd2c302019-06-04 03:15:09 +020046extern int _PySys_InitMain(
47 _PyRuntimeState *runtime,
48 PyInterpreterState *interp);
Victor Stinner331a6a52019-05-27 16:39:22 +020049extern PyStatus _PyImport_Init(PyInterpreterState *interp);
50extern PyStatus _PyExc_Init(void);
51extern PyStatus _PyErr_Init(void);
52extern PyStatus _PyBuiltins_AddExceptions(PyObject * bltinmod);
53extern PyStatus _PyImportHooks_Init(void);
Victor Stinnerbf4ac2d2019-01-22 17:39:03 +010054extern int _PyFloat_Init(void);
Victor Stinner331a6a52019-05-27 16:39:22 +020055extern PyStatus _Py_HashRandomization_Init(const PyConfig *);
Victor Stinnera1c249c2018-11-01 03:15:58 +010056
Victor Stinner331a6a52019-05-27 16:39:22 +020057extern PyStatus _PyTypes_Init(void);
58extern PyStatus _PyImportZip_Init(PyInterpreterState *interp);
Victor Stinner410b85a2019-05-13 17:12:45 +020059
Victor Stinnera1c249c2018-11-01 03:15:58 +010060
Victor Stinnerbf4ac2d2019-01-22 17:39:03 +010061/* Various internal finalizers */
62
63extern void PyMethod_Fini(void);
64extern void PyFrame_Fini(void);
65extern void PyCFunction_Fini(void);
66extern void PyDict_Fini(void);
67extern void PyTuple_Fini(void);
68extern void PyList_Fini(void);
69extern void PySet_Fini(void);
70extern void PyBytes_Fini(void);
71extern void PyFloat_Fini(void);
72extern void PyOS_FiniInterrupts(void);
73extern void PySlice_Fini(void);
74extern void PyAsyncGen_Fini(void);
75
76extern void _PyExc_Fini(void);
77extern void _PyImport_Fini(void);
78extern void _PyImport_Fini2(void);
Victor Stinner8e91c242019-04-24 17:24:01 +020079extern void _PyGC_Fini(_PyRuntimeState *runtime);
Victor Stinnerbf4ac2d2019-01-22 17:39:03 +010080extern void _PyType_Fini(void);
81extern void _Py_HashRandomization_Fini(void);
Victor Stinnera1c249c2018-11-01 03:15:58 +010082extern void _PyUnicode_Fini(void);
83extern void PyLong_Fini(void);
84extern void _PyFaulthandler_Fini(void);
85extern void _PyHash_Fini(void);
Miss Islington (bot)8d9efc42019-09-18 23:41:35 -070086extern void _PyTraceMalloc_Fini(void);
Eric Snow86ea5812019-05-10 13:29:55 -040087extern void _PyWarnings_Fini(PyInterpreterState *interp);
Victor Stinnera1c249c2018-11-01 03:15:58 +010088
Victor Stinner0fd2c302019-06-04 03:15:09 +020089extern void _PyGILState_Init(
90 _PyRuntimeState *runtime,
91 PyInterpreterState *interp,
92 PyThreadState *tstate);
Victor Stinner8e91c242019-04-24 17:24:01 +020093extern void _PyGILState_Fini(_PyRuntimeState *runtime);
Victor Stinnera1c249c2018-11-01 03:15:58 +010094
Victor Stinner9db03242019-04-26 02:32:01 +020095PyAPI_FUNC(void) _PyGC_DumpShutdownStats(_PyRuntimeState *runtime);
Victor Stinnera1c249c2018-11-01 03:15:58 +010096
Victor Stinner331a6a52019-05-27 16:39:22 +020097PyAPI_FUNC(PyStatus) _Py_PreInitializeFromPyArgv(
98 const PyPreConfig *src_config,
Victor Stinner70005ac2019-05-02 15:25:34 -040099 const _PyArgv *args);
Victor Stinner331a6a52019-05-27 16:39:22 +0200100PyAPI_FUNC(PyStatus) _Py_PreInitializeFromConfig(
101 const PyConfig *config,
Victor Stinner70005ac2019-05-02 15:25:34 -0400102 const _PyArgv *args);
Victor Stinner20004952019-03-26 02:31:11 +0100103
Victor Stinneref9d9b62019-05-22 11:28:22 +0200104
Victor Stinner12083282019-05-17 23:05:29 +0200105PyAPI_FUNC(int) _Py_HandleSystemExit(int *exitcode_p);
106
Victor Stinneref9d9b62019-05-22 11:28:22 +0200107PyAPI_FUNC(PyObject*) _PyErr_WriteUnraisableDefaultHook(PyObject *unraisable);
108
Victor Stinner438a12d2019-05-24 17:01:38 +0200109PyAPI_FUNC(void) _PyErr_Print(PyThreadState *tstate);
Victor Stinnercd590a72019-05-28 00:39:52 +0200110PyAPI_FUNC(void) _PyErr_Display(PyObject *file, PyObject *exception,
111 PyObject *value, PyObject *tb);
Victor Stinner438a12d2019-05-24 17:01:38 +0200112
Victor Stinnera1c249c2018-11-01 03:15:58 +0100113#ifdef __cplusplus
114}
115#endif
116#endif /* !Py_INTERNAL_LIFECYCLE_H */