Victor Stinner | a1c249c | 2018-11-01 03:15:58 +0100 | [diff] [blame] | 1 | #ifndef Py_INTERNAL_LIFECYCLE_H |
| 2 | #define Py_INTERNAL_LIFECYCLE_H |
| 3 | #ifdef __cplusplus |
| 4 | extern "C" { |
| 5 | #endif |
| 6 | |
Victor Stinner | 5c75f37 | 2019-04-17 23:02:26 +0200 | [diff] [blame] | 7 | #ifndef Py_BUILD_CORE |
| 8 | # error "this header requires Py_BUILD_CORE define" |
Victor Stinner | a1c249c | 2018-11-01 03:15:58 +0100 | [diff] [blame] | 9 | #endif |
| 10 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 11 | #include "pycore_initconfig.h" /* _PyArgv */ |
Victor Stinner | 70005ac | 2019-05-02 15:25:34 -0400 | [diff] [blame] | 12 | #include "pycore_pystate.h" /* _PyRuntimeState */ |
Victor Stinner | 8e91c24 | 2019-04-24 17:24:01 +0200 | [diff] [blame] | 13 | |
Gregory P. Smith | 38f11cc | 2019-02-16 12:57:40 -0800 | [diff] [blame] | 14 | /* True if the main interpreter thread exited due to an unhandled |
| 15 | * KeyboardInterrupt exception, suggesting the user pressed ^C. */ |
| 16 | PyAPI_DATA(int) _Py_UnhandledKeyboardInterrupt; |
| 17 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 18 | PyAPI_FUNC(int) Py_BytesMain(int argc, char **argv); |
Victor Stinner | a1c249c | 2018-11-01 03:15:58 +0100 | [diff] [blame] | 19 | |
Victor Stinner | 43fc3bb | 2019-05-02 11:54:20 -0400 | [diff] [blame] | 20 | extern int _Py_SetFileSystemEncoding( |
Victor Stinner | a1c249c | 2018-11-01 03:15:58 +0100 | [diff] [blame] | 21 | const char *encoding, |
| 22 | const char *errors); |
Victor Stinner | 43fc3bb | 2019-05-02 11:54:20 -0400 | [diff] [blame] | 23 | extern void _Py_ClearFileSystemEncoding(void); |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 24 | extern PyStatus _PyUnicode_InitEncodings(PyInterpreterState *interp); |
Victor Stinner | 709d23d | 2019-05-02 14:56:30 -0400 | [diff] [blame] | 25 | #ifdef MS_WINDOWS |
| 26 | extern int _PyUnicode_EnableLegacyWindowsFSEncoding(void); |
| 27 | #endif |
Victor Stinner | a1c249c | 2018-11-01 03:15:58 +0100 | [diff] [blame] | 28 | |
| 29 | PyAPI_FUNC(void) _Py_ClearStandardStreamEncoding(void); |
| 30 | |
| 31 | PyAPI_FUNC(int) _Py_IsLocaleCoercionTarget(const char *ctype_loc); |
| 32 | |
Victor Stinner | bf4ac2d | 2019-01-22 17:39:03 +0100 | [diff] [blame] | 33 | /* Various one-time initializers */ |
| 34 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 35 | extern PyStatus _PyUnicode_Init(void); |
Victor Stinner | a1c249c | 2018-11-01 03:15:58 +0100 | [diff] [blame] | 36 | extern int _PyStructSequence_Init(void); |
| 37 | extern int _PyLong_Init(void); |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 38 | extern PyStatus _PyFaulthandler_Init(int enable); |
Victor Stinner | a1c249c | 2018-11-01 03:15:58 +0100 | [diff] [blame] | 39 | extern int _PyTraceMalloc_Init(int enable); |
Victor Stinner | bf4ac2d | 2019-01-22 17:39:03 +0100 | [diff] [blame] | 40 | extern PyObject * _PyBuiltin_Init(void); |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 41 | extern PyStatus _PySys_Create( |
Victor Stinner | 0fd2c30 | 2019-06-04 03:15:09 +0200 | [diff] [blame] | 42 | _PyRuntimeState *runtime, |
Victor Stinner | ab67281 | 2019-01-23 15:04:40 +0100 | [diff] [blame] | 43 | PyInterpreterState *interp, |
| 44 | PyObject **sysmod_p); |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 45 | extern PyStatus _PySys_SetPreliminaryStderr(PyObject *sysdict); |
Victor Stinner | af84a88 | 2019-08-23 21:16:51 +0200 | [diff] [blame^] | 46 | extern PyStatus _PySys_ReadPreinitWarnOptions(PyConfig *config); |
| 47 | extern PyStatus _PySys_ReadPreinitXOptions(PyConfig *config); |
Victor Stinner | 0fd2c30 | 2019-06-04 03:15:09 +0200 | [diff] [blame] | 48 | extern int _PySys_InitMain( |
| 49 | _PyRuntimeState *runtime, |
| 50 | PyInterpreterState *interp); |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 51 | extern PyStatus _PyImport_Init(PyInterpreterState *interp); |
| 52 | extern PyStatus _PyExc_Init(void); |
| 53 | extern PyStatus _PyErr_Init(void); |
| 54 | extern PyStatus _PyBuiltins_AddExceptions(PyObject * bltinmod); |
| 55 | extern PyStatus _PyImportHooks_Init(void); |
Victor Stinner | bf4ac2d | 2019-01-22 17:39:03 +0100 | [diff] [blame] | 56 | extern int _PyFloat_Init(void); |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 57 | extern PyStatus _Py_HashRandomization_Init(const PyConfig *); |
Victor Stinner | a1c249c | 2018-11-01 03:15:58 +0100 | [diff] [blame] | 58 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 59 | extern PyStatus _PyTypes_Init(void); |
| 60 | extern PyStatus _PyImportZip_Init(PyInterpreterState *interp); |
Victor Stinner | 410b85a | 2019-05-13 17:12:45 +0200 | [diff] [blame] | 61 | |
Victor Stinner | a1c249c | 2018-11-01 03:15:58 +0100 | [diff] [blame] | 62 | |
Victor Stinner | bf4ac2d | 2019-01-22 17:39:03 +0100 | [diff] [blame] | 63 | /* Various internal finalizers */ |
| 64 | |
| 65 | extern void PyMethod_Fini(void); |
| 66 | extern void PyFrame_Fini(void); |
| 67 | extern void PyCFunction_Fini(void); |
| 68 | extern void PyDict_Fini(void); |
| 69 | extern void PyTuple_Fini(void); |
| 70 | extern void PyList_Fini(void); |
| 71 | extern void PySet_Fini(void); |
| 72 | extern void PyBytes_Fini(void); |
| 73 | extern void PyFloat_Fini(void); |
| 74 | extern void PyOS_FiniInterrupts(void); |
| 75 | extern void PySlice_Fini(void); |
| 76 | extern void PyAsyncGen_Fini(void); |
| 77 | |
| 78 | extern void _PyExc_Fini(void); |
| 79 | extern void _PyImport_Fini(void); |
| 80 | extern void _PyImport_Fini2(void); |
Victor Stinner | 8e91c24 | 2019-04-24 17:24:01 +0200 | [diff] [blame] | 81 | extern void _PyGC_Fini(_PyRuntimeState *runtime); |
Victor Stinner | bf4ac2d | 2019-01-22 17:39:03 +0100 | [diff] [blame] | 82 | extern void _PyType_Fini(void); |
| 83 | extern void _Py_HashRandomization_Fini(void); |
Victor Stinner | a1c249c | 2018-11-01 03:15:58 +0100 | [diff] [blame] | 84 | extern void _PyUnicode_Fini(void); |
| 85 | extern void PyLong_Fini(void); |
| 86 | extern void _PyFaulthandler_Fini(void); |
| 87 | extern void _PyHash_Fini(void); |
| 88 | extern int _PyTraceMalloc_Fini(void); |
Eric Snow | 86ea581 | 2019-05-10 13:29:55 -0400 | [diff] [blame] | 89 | extern void _PyWarnings_Fini(PyInterpreterState *interp); |
Victor Stinner | a1c249c | 2018-11-01 03:15:58 +0100 | [diff] [blame] | 90 | |
Victor Stinner | 0fd2c30 | 2019-06-04 03:15:09 +0200 | [diff] [blame] | 91 | extern void _PyGILState_Init( |
| 92 | _PyRuntimeState *runtime, |
| 93 | PyInterpreterState *interp, |
| 94 | PyThreadState *tstate); |
Victor Stinner | 8e91c24 | 2019-04-24 17:24:01 +0200 | [diff] [blame] | 95 | extern void _PyGILState_Fini(_PyRuntimeState *runtime); |
Victor Stinner | a1c249c | 2018-11-01 03:15:58 +0100 | [diff] [blame] | 96 | |
Victor Stinner | 9db0324 | 2019-04-26 02:32:01 +0200 | [diff] [blame] | 97 | PyAPI_FUNC(void) _PyGC_DumpShutdownStats(_PyRuntimeState *runtime); |
Victor Stinner | a1c249c | 2018-11-01 03:15:58 +0100 | [diff] [blame] | 98 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 99 | PyAPI_FUNC(PyStatus) _Py_PreInitializeFromPyArgv( |
| 100 | const PyPreConfig *src_config, |
Victor Stinner | 70005ac | 2019-05-02 15:25:34 -0400 | [diff] [blame] | 101 | const _PyArgv *args); |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 102 | PyAPI_FUNC(PyStatus) _Py_PreInitializeFromConfig( |
| 103 | const PyConfig *config, |
Victor Stinner | 70005ac | 2019-05-02 15:25:34 -0400 | [diff] [blame] | 104 | const _PyArgv *args); |
Victor Stinner | 2000495 | 2019-03-26 02:31:11 +0100 | [diff] [blame] | 105 | |
Victor Stinner | ef9d9b6 | 2019-05-22 11:28:22 +0200 | [diff] [blame] | 106 | |
Victor Stinner | 1208328 | 2019-05-17 23:05:29 +0200 | [diff] [blame] | 107 | PyAPI_FUNC(int) _Py_HandleSystemExit(int *exitcode_p); |
| 108 | |
Victor Stinner | ef9d9b6 | 2019-05-22 11:28:22 +0200 | [diff] [blame] | 109 | PyAPI_FUNC(PyObject*) _PyErr_WriteUnraisableDefaultHook(PyObject *unraisable); |
| 110 | |
Victor Stinner | 438a12d | 2019-05-24 17:01:38 +0200 | [diff] [blame] | 111 | PyAPI_FUNC(void) _PyErr_Print(PyThreadState *tstate); |
Victor Stinner | cd590a7 | 2019-05-28 00:39:52 +0200 | [diff] [blame] | 112 | PyAPI_FUNC(void) _PyErr_Display(PyObject *file, PyObject *exception, |
| 113 | PyObject *value, PyObject *tb); |
Victor Stinner | 438a12d | 2019-05-24 17:01:38 +0200 | [diff] [blame] | 114 | |
Victor Stinner | a1c249c | 2018-11-01 03:15:58 +0100 | [diff] [blame] | 115 | #ifdef __cplusplus |
| 116 | } |
| 117 | #endif |
| 118 | #endif /* !Py_INTERNAL_LIFECYCLE_H */ |