diff options
author | Victor Stinner <vstinner@redhat.com> | 2018-08-05 12:31:59 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-05 12:31:59 +0200 |
commit | 0c90d6f75931da4fec84d06c2efe9dd94bb96b77 (patch) | |
tree | ec34949a2d8b022b854acb0e885552c8fc0dd5ff /Include | |
parent | e65ec491fbaa14db61a6559eb269733616b0e7f0 (diff) | |
download | cpython-git-0c90d6f75931da4fec84d06c2efe9dd94bb96b77.tar.gz |
[3.7] bpo-34247: Fix Python 3.7 initialization (#8659)
* -X dev: it is now possible to override the memory allocator using
PYTHONMALLOC even if the developer mode is enabled.
* Add _Py_InitializeFromConfig()
* Add _Py_Initialize_ReadEnvVars() to set global configuration
variables from environment variables
* Fix the code to initialize Python: Py_Initialize() now also reads
environment variables
* _Py_InitializeCore() can now be called twice: the second call
only replaces the configuration.
* Write unit tests on Py_Initialize() and the different ways to
configure Python
* The isolated mode now always sets Py_IgnoreEnvironmentFlag and
Py_NoUserSiteDirectory to 1.
* pymain_read_conf() now saves/restores the configuration
if the encoding changed
Diffstat (limited to 'Include')
-rw-r--r-- | Include/pylifecycle.h | 20 | ||||
-rw-r--r-- | Include/pystate.h | 3 |
2 files changed, 19 insertions, 4 deletions
diff --git a/Include/pylifecycle.h b/Include/pylifecycle.h index 659c6df644..1192961949 100644 --- a/Include/pylifecycle.h +++ b/Include/pylifecycle.h @@ -51,14 +51,24 @@ PyAPI_FUNC(int) Py_SetStandardStreamEncoding(const char *encoding, const char *errors); /* PEP 432 Multi-phase initialization API (Private while provisional!) */ -PyAPI_FUNC(_PyInitError) _Py_InitializeCore(const _PyCoreConfig *); +PyAPI_FUNC(_PyInitError) _Py_InitializeCore( + PyInterpreterState **interp_p, + const _PyCoreConfig *config); PyAPI_FUNC(int) _Py_IsCoreInitialized(void); +PyAPI_FUNC(_PyInitError) _Py_InitializeFromConfig( + const _PyCoreConfig *config); +#ifdef Py_BUILD_CORE +PyAPI_FUNC(void) _Py_Initialize_ReadEnvVarsNoAlloc(void); +#endif PyAPI_FUNC(_PyInitError) _PyCoreConfig_Read(_PyCoreConfig *); PyAPI_FUNC(void) _PyCoreConfig_Clear(_PyCoreConfig *); PyAPI_FUNC(int) _PyCoreConfig_Copy( _PyCoreConfig *config, const _PyCoreConfig *config2); +PyAPI_FUNC(void) _PyCoreConfig_SetGlobalConfig( + const _PyCoreConfig *config); + PyAPI_FUNC(_PyInitError) _PyMainInterpreterConfig_Read( _PyMainInterpreterConfig *config, @@ -68,14 +78,16 @@ PyAPI_FUNC(int) _PyMainInterpreterConfig_Copy( _PyMainInterpreterConfig *config, const _PyMainInterpreterConfig *config2); -PyAPI_FUNC(_PyInitError) _Py_InitializeMainInterpreter(const _PyMainInterpreterConfig *); -#endif +PyAPI_FUNC(_PyInitError) _Py_InitializeMainInterpreter( + PyInterpreterState *interp, + const _PyMainInterpreterConfig *config); +#endif /* !defined(Py_LIMITED_API) */ + /* Initialization and finalization */ PyAPI_FUNC(void) Py_Initialize(void); PyAPI_FUNC(void) Py_InitializeEx(int); #ifndef Py_LIMITED_API -PyAPI_FUNC(_PyInitError) _Py_InitializeEx_Private(int, int); PyAPI_FUNC(void) _Py_FatalInitError(_PyInitError err) _Py_NO_RETURN; #endif PyAPI_FUNC(void) Py_Finalize(void); diff --git a/Include/pystate.h b/Include/pystate.h index 29d7148bf9..f16ffb8fd2 100644 --- a/Include/pystate.h +++ b/Include/pystate.h @@ -79,8 +79,11 @@ typedef struct { #define _PyCoreConfig_INIT \ (_PyCoreConfig){ \ .install_signal_handlers = -1, \ + .ignore_environment = -1, \ .use_hash_seed = -1, \ .coerce_c_locale = -1, \ + .faulthandler = -1, \ + .tracemalloc = -1, \ .utf8_mode = -1, \ .argc = -1, \ .nmodule_search_path = -1} |