blob: 51f05b389e3503e03107c8cf0f10e0a3a1464b62 [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 Stinner331a6a52019-05-27 16:39:22 +020018PyAPI_FUNC(int) Py_BytesMain(int argc, char **argv);
Victor Stinnera1c249c2018-11-01 03:15:58 +010019
Victor Stinner43fc3bb2019-05-02 11:54:20 -040020extern int _Py_SetFileSystemEncoding(
Victor Stinnera1c249c2018-11-01 03:15:58 +010021 const char *encoding,
22 const char *errors);
Victor Stinner43fc3bb2019-05-02 11:54:20 -040023extern void _Py_ClearFileSystemEncoding(void);
Victor Stinner331a6a52019-05-27 16:39:22 +020024extern PyStatus _PyUnicode_InitEncodings(PyInterpreterState *interp);
Victor Stinner709d23d2019-05-02 14:56:30 -040025#ifdef MS_WINDOWS
26extern int _PyUnicode_EnableLegacyWindowsFSEncoding(void);
27#endif
Victor Stinnera1c249c2018-11-01 03:15:58 +010028
29PyAPI_FUNC(void) _Py_ClearStandardStreamEncoding(void);
30
31PyAPI_FUNC(int) _Py_IsLocaleCoercionTarget(const char *ctype_loc);
32
Victor Stinnerbf4ac2d2019-01-22 17:39:03 +010033/* Various one-time initializers */
34
Victor Stinner331a6a52019-05-27 16:39:22 +020035extern PyStatus _PyUnicode_Init(void);
Victor Stinnera1c249c2018-11-01 03:15:58 +010036extern int _PyStructSequence_Init(void);
37extern int _PyLong_Init(void);
Victor Stinner331a6a52019-05-27 16:39:22 +020038extern PyStatus _PyFaulthandler_Init(int enable);
Victor Stinnera1c249c2018-11-01 03:15:58 +010039extern int _PyTraceMalloc_Init(int enable);
Victor Stinnerbf4ac2d2019-01-22 17:39:03 +010040extern PyObject * _PyBuiltin_Init(void);
Victor Stinner331a6a52019-05-27 16:39:22 +020041extern PyStatus _PySys_Create(
Victor Stinner0fd2c302019-06-04 03:15:09 +020042 _PyRuntimeState *runtime,
Victor Stinnerab672812019-01-23 15:04:40 +010043 PyInterpreterState *interp,
44 PyObject **sysmod_p);
Victor Stinner331a6a52019-05-27 16:39:22 +020045extern PyStatus _PySys_SetPreliminaryStderr(PyObject *sysdict);
Victor Stinneraf84a882019-08-23 21:16:51 +020046extern PyStatus _PySys_ReadPreinitWarnOptions(PyConfig *config);
47extern PyStatus _PySys_ReadPreinitXOptions(PyConfig *config);
Victor Stinner0fd2c302019-06-04 03:15:09 +020048extern int _PySys_InitMain(
49 _PyRuntimeState *runtime,
50 PyInterpreterState *interp);
Victor Stinner331a6a52019-05-27 16:39:22 +020051extern PyStatus _PyImport_Init(PyInterpreterState *interp);
52extern PyStatus _PyExc_Init(void);
53extern PyStatus _PyErr_Init(void);
54extern PyStatus _PyBuiltins_AddExceptions(PyObject * bltinmod);
55extern PyStatus _PyImportHooks_Init(void);
Victor Stinnerbf4ac2d2019-01-22 17:39:03 +010056extern int _PyFloat_Init(void);
Victor Stinner331a6a52019-05-27 16:39:22 +020057extern PyStatus _Py_HashRandomization_Init(const PyConfig *);
Victor Stinnera1c249c2018-11-01 03:15:58 +010058
Victor Stinner331a6a52019-05-27 16:39:22 +020059extern PyStatus _PyTypes_Init(void);
60extern PyStatus _PyImportZip_Init(PyInterpreterState *interp);
Victor Stinner410b85a2019-05-13 17:12:45 +020061
Victor Stinnera1c249c2018-11-01 03:15:58 +010062
Victor Stinnerbf4ac2d2019-01-22 17:39:03 +010063/* Various internal finalizers */
64
65extern void PyMethod_Fini(void);
66extern void PyFrame_Fini(void);
67extern void PyCFunction_Fini(void);
68extern void PyDict_Fini(void);
69extern void PyTuple_Fini(void);
70extern void PyList_Fini(void);
71extern void PySet_Fini(void);
72extern void PyBytes_Fini(void);
73extern void PyFloat_Fini(void);
74extern void PyOS_FiniInterrupts(void);
75extern void PySlice_Fini(void);
76extern void PyAsyncGen_Fini(void);
77
78extern void _PyExc_Fini(void);
79extern void _PyImport_Fini(void);
80extern void _PyImport_Fini2(void);
Victor Stinner8e91c242019-04-24 17:24:01 +020081extern void _PyGC_Fini(_PyRuntimeState *runtime);
Victor Stinnerbf4ac2d2019-01-22 17:39:03 +010082extern void _PyType_Fini(void);
83extern void _Py_HashRandomization_Fini(void);
Victor Stinnera1c249c2018-11-01 03:15:58 +010084extern void _PyUnicode_Fini(void);
85extern void PyLong_Fini(void);
86extern void _PyFaulthandler_Fini(void);
87extern void _PyHash_Fini(void);
88extern int _PyTraceMalloc_Fini(void);
Eric Snow86ea5812019-05-10 13:29:55 -040089extern void _PyWarnings_Fini(PyInterpreterState *interp);
Victor Stinnera1c249c2018-11-01 03:15:58 +010090
Victor Stinner0fd2c302019-06-04 03:15:09 +020091extern void _PyGILState_Init(
92 _PyRuntimeState *runtime,
93 PyInterpreterState *interp,
94 PyThreadState *tstate);
Victor Stinner8e91c242019-04-24 17:24:01 +020095extern void _PyGILState_Fini(_PyRuntimeState *runtime);
Victor Stinnera1c249c2018-11-01 03:15:58 +010096
Victor Stinner9db03242019-04-26 02:32:01 +020097PyAPI_FUNC(void) _PyGC_DumpShutdownStats(_PyRuntimeState *runtime);
Victor Stinnera1c249c2018-11-01 03:15:58 +010098
Victor Stinner331a6a52019-05-27 16:39:22 +020099PyAPI_FUNC(PyStatus) _Py_PreInitializeFromPyArgv(
100 const PyPreConfig *src_config,
Victor Stinner70005ac2019-05-02 15:25:34 -0400101 const _PyArgv *args);
Victor Stinner331a6a52019-05-27 16:39:22 +0200102PyAPI_FUNC(PyStatus) _Py_PreInitializeFromConfig(
103 const PyConfig *config,
Victor Stinner70005ac2019-05-02 15:25:34 -0400104 const _PyArgv *args);
Victor Stinner20004952019-03-26 02:31:11 +0100105
Victor Stinneref9d9b62019-05-22 11:28:22 +0200106
Victor Stinner12083282019-05-17 23:05:29 +0200107PyAPI_FUNC(int) _Py_HandleSystemExit(int *exitcode_p);
108
Victor Stinneref9d9b62019-05-22 11:28:22 +0200109PyAPI_FUNC(PyObject*) _PyErr_WriteUnraisableDefaultHook(PyObject *unraisable);
110
Victor Stinner438a12d2019-05-24 17:01:38 +0200111PyAPI_FUNC(void) _PyErr_Print(PyThreadState *tstate);
Victor Stinnercd590a72019-05-28 00:39:52 +0200112PyAPI_FUNC(void) _PyErr_Display(PyObject *file, PyObject *exception,
113 PyObject *value, PyObject *tb);
Victor Stinner438a12d2019-05-24 17:01:38 +0200114
Victor Stinnera1c249c2018-11-01 03:15:58 +0100115#ifdef __cplusplus
116}
117#endif
118#endif /* !Py_INTERNAL_LIFECYCLE_H */