mirror of https://github.com/python/cpython
bpo-38304: PyConfig_InitPythonConfig() cannot fail anymore (GH-16509)
PyConfig_InitPythonConfig() and PyConfig_InitIsolatedConfig() no longer return PyStatus: they cannot fail anymore.
This commit is contained in:
parent
3c30a76f3d
commit
8462a4936b
|
@ -343,12 +343,12 @@ PyConfig
|
||||||
|
|
||||||
Structure methods:
|
Structure methods:
|
||||||
|
|
||||||
.. c:function:: PyStatus PyConfig_InitPythonConfig(PyConfig *config)
|
.. c:function:: void PyConfig_InitPythonConfig(PyConfig *config)
|
||||||
|
|
||||||
Initialize configuration with :ref:`Python Configuration
|
Initialize configuration with :ref:`Python Configuration
|
||||||
<init-python-config>`.
|
<init-python-config>`.
|
||||||
|
|
||||||
.. c:function:: PyStatus PyConfig_InitIsolatedConfig(PyConfig *config)
|
.. c:function:: void PyConfig_InitIsolatedConfig(PyConfig *config)
|
||||||
|
|
||||||
Initialize configuration with :ref:`Isolated Configuration
|
Initialize configuration with :ref:`Isolated Configuration
|
||||||
<init-isolated-conf>`.
|
<init-isolated-conf>`.
|
||||||
|
@ -724,12 +724,9 @@ Example setting the program name::
|
||||||
void init_python(void)
|
void init_python(void)
|
||||||
{
|
{
|
||||||
PyStatus status;
|
PyStatus status;
|
||||||
PyConfig config;
|
|
||||||
|
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
PyConfig config;
|
||||||
if (PyStatus_Exception(status)) {
|
PyConfig_InitPythonConfig(&config);
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set the program name. Implicitly preinitialize Python. */
|
/* Set the program name. Implicitly preinitialize Python. */
|
||||||
status = PyConfig_SetString(&config, &config.program_name,
|
status = PyConfig_SetString(&config, &config.program_name,
|
||||||
|
@ -756,12 +753,9 @@ configuration, and then override some parameters::
|
||||||
PyStatus init_python(const char *program_name)
|
PyStatus init_python(const char *program_name)
|
||||||
{
|
{
|
||||||
PyStatus status;
|
PyStatus status;
|
||||||
PyConfig config;
|
|
||||||
|
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
PyConfig config;
|
||||||
if (PyStatus_Exception(status)) {
|
PyConfig_InitPythonConfig(&config);
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set the program name before reading the configuraton
|
/* Set the program name before reading the configuraton
|
||||||
(decode byte string from the locale encoding).
|
(decode byte string from the locale encoding).
|
||||||
|
@ -843,13 +837,9 @@ Example of customized Python always running in isolated mode::
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
PyStatus status;
|
PyStatus status;
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
config.isolated = 1;
|
config.isolated = 1;
|
||||||
|
|
||||||
/* Decode command line arguments.
|
/* Decode command line arguments.
|
||||||
|
@ -1034,14 +1024,9 @@ phases::
|
||||||
void init_python(void)
|
void init_python(void)
|
||||||
{
|
{
|
||||||
PyStatus status;
|
PyStatus status;
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
PyConfig_Clear(&config);
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
config._init_main = 0;
|
config._init_main = 0;
|
||||||
|
|
||||||
/* ... customize 'config' configuration ... */
|
/* ... customize 'config' configuration ... */
|
||||||
|
|
|
@ -404,8 +404,8 @@ typedef struct {
|
||||||
int _init_main;
|
int _init_main;
|
||||||
} PyConfig;
|
} PyConfig;
|
||||||
|
|
||||||
PyAPI_FUNC(PyStatus) PyConfig_InitPythonConfig(PyConfig *config);
|
PyAPI_FUNC(void) PyConfig_InitPythonConfig(PyConfig *config);
|
||||||
PyAPI_FUNC(PyStatus) PyConfig_InitIsolatedConfig(PyConfig *config);
|
PyAPI_FUNC(void) PyConfig_InitIsolatedConfig(PyConfig *config);
|
||||||
PyAPI_FUNC(void) PyConfig_Clear(PyConfig *);
|
PyAPI_FUNC(void) PyConfig_Clear(PyConfig *);
|
||||||
PyAPI_FUNC(PyStatus) PyConfig_SetString(
|
PyAPI_FUNC(PyStatus) PyConfig_SetString(
|
||||||
PyConfig *config,
|
PyConfig *config,
|
||||||
|
|
|
@ -144,7 +144,7 @@ typedef enum {
|
||||||
_PyConfig_INIT_ISOLATED = 3
|
_PyConfig_INIT_ISOLATED = 3
|
||||||
} _PyConfigInitEnum;
|
} _PyConfigInitEnum;
|
||||||
|
|
||||||
PyAPI_FUNC(PyStatus) _PyConfig_InitCompatConfig(PyConfig *config);
|
PyAPI_FUNC(void) _PyConfig_InitCompatConfig(PyConfig *config);
|
||||||
extern PyStatus _PyConfig_Copy(
|
extern PyStatus _PyConfig_Copy(
|
||||||
PyConfig *config,
|
PyConfig *config,
|
||||||
const PyConfig *config2);
|
const PyConfig *config2);
|
||||||
|
|
|
@ -61,11 +61,7 @@ pymain_init(const _PyArgv *args)
|
||||||
}
|
}
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (_PyStatus_EXCEPTION(status)) {
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* pass NULL as the config: config is read from command line arguments,
|
/* pass NULL as the config: config is read from command line arguments,
|
||||||
environment variables, configuration files */
|
environment variables, configuration files */
|
||||||
|
|
|
@ -193,10 +193,7 @@ wmain(int argc, wchar_t **argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
PyConfig_InitPythonConfig(&config);
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
goto fail_without_config;
|
|
||||||
}
|
|
||||||
|
|
||||||
status = PyConfig_SetArgv(&config, argc, argv);
|
status = PyConfig_SetArgv(&config, argc, argv);
|
||||||
if (PyStatus_Exception(status)) {
|
if (PyStatus_Exception(status)) {
|
||||||
|
|
|
@ -76,17 +76,12 @@ main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
text[text_size] = '\0';
|
text[text_size] = '\0';
|
||||||
|
|
||||||
PyStatus status;
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitIsolatedConfig(&config);
|
||||||
status = PyConfig_InitIsolatedConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
PyConfig_Clear(&config);
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
config.site_import = 0;
|
config.site_import = 0;
|
||||||
|
|
||||||
|
PyStatus status;
|
||||||
status = PyConfig_SetString(&config, &config.program_name,
|
status = PyConfig_SetString(&config, &config.program_name,
|
||||||
L"./_freeze_importlib");
|
L"./_freeze_importlib");
|
||||||
if (PyStatus_Exception(status)) {
|
if (PyStatus_Exception(status)) {
|
||||||
|
|
|
@ -394,11 +394,7 @@ static int check_init_compat_config(int preinit)
|
||||||
}
|
}
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
_PyConfig_InitCompatConfig(&config);
|
||||||
status = _PyConfig_InitCompatConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
config_set_program_name(&config);
|
config_set_program_name(&config);
|
||||||
init_from_config_clear(&config);
|
init_from_config_clear(&config);
|
||||||
|
@ -488,11 +484,8 @@ static int test_init_from_config(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
_PyConfig_InitCompatConfig(&config);
|
||||||
|
|
||||||
status = _PyConfig_InitCompatConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
config.install_signal_handlers = 0;
|
config.install_signal_handlers = 0;
|
||||||
|
|
||||||
/* FIXME: test use_environment */
|
/* FIXME: test use_environment */
|
||||||
|
@ -621,14 +614,8 @@ static int test_init_from_config(void)
|
||||||
|
|
||||||
static int check_init_parse_argv(int parse_argv)
|
static int check_init_parse_argv(int parse_argv)
|
||||||
{
|
{
|
||||||
PyStatus status;
|
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
config.parse_argv = parse_argv;
|
config.parse_argv = parse_argv;
|
||||||
|
|
||||||
|
@ -705,16 +692,10 @@ static int test_init_compat_env(void)
|
||||||
|
|
||||||
static int test_init_python_env(void)
|
static int test_init_python_env(void)
|
||||||
{
|
{
|
||||||
PyStatus status;
|
|
||||||
|
|
||||||
set_all_env_vars();
|
set_all_env_vars();
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
config_set_program_name(&config);
|
config_set_program_name(&config);
|
||||||
init_from_config_clear(&config);
|
init_from_config_clear(&config);
|
||||||
|
@ -760,15 +741,9 @@ static int test_init_env_dev_mode_alloc(void)
|
||||||
|
|
||||||
static int test_init_isolated_flag(void)
|
static int test_init_isolated_flag(void)
|
||||||
{
|
{
|
||||||
PyStatus status;
|
|
||||||
|
|
||||||
/* Test PyConfig.isolated=1 */
|
/* Test PyConfig.isolated=1 */
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
Py_IsolatedFlag = 0;
|
Py_IsolatedFlag = 0;
|
||||||
config.isolated = 1;
|
config.isolated = 1;
|
||||||
|
@ -797,11 +772,8 @@ static int test_preinit_isolated1(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
_PyConfig_InitCompatConfig(&config);
|
||||||
|
|
||||||
status = _PyConfig_InitCompatConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
config_set_program_name(&config);
|
config_set_program_name(&config);
|
||||||
set_all_env_vars();
|
set_all_env_vars();
|
||||||
init_from_config_clear(&config);
|
init_from_config_clear(&config);
|
||||||
|
@ -827,11 +799,7 @@ static int test_preinit_isolated2(void)
|
||||||
|
|
||||||
/* Test PyConfig.isolated=1 */
|
/* Test PyConfig.isolated=1 */
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
_PyConfig_InitCompatConfig(&config);
|
||||||
status = _PyConfig_InitCompatConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
Py_IsolatedFlag = 0;
|
Py_IsolatedFlag = 0;
|
||||||
config.isolated = 1;
|
config.isolated = 1;
|
||||||
|
@ -867,12 +835,7 @@ static int test_preinit_dont_parse_argv(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitIsolatedConfig(&config);
|
||||||
status = PyConfig_InitIsolatedConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
PyConfig_Clear(&config);
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
config.isolated = 0;
|
config.isolated = 0;
|
||||||
|
|
||||||
|
@ -890,14 +853,8 @@ static int test_preinit_dont_parse_argv(void)
|
||||||
|
|
||||||
static int test_preinit_parse_argv(void)
|
static int test_preinit_parse_argv(void)
|
||||||
{
|
{
|
||||||
PyStatus status;
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
PyConfig_Clear(&config);
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Pre-initialize implicitly using argv: make sure that -X dev
|
/* Pre-initialize implicitly using argv: make sure that -X dev
|
||||||
is used to configure the allocation in preinitialization */
|
is used to configure the allocation in preinitialization */
|
||||||
|
@ -962,12 +919,8 @@ static int check_preinit_isolated_config(int preinit)
|
||||||
}
|
}
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitIsolatedConfig(&config);
|
||||||
|
|
||||||
status = PyConfig_InitIsolatedConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
PyConfig_Clear(&config);
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
config_set_program_name(&config);
|
config_set_program_name(&config);
|
||||||
init_from_config_clear(&config);
|
init_from_config_clear(&config);
|
||||||
|
|
||||||
|
@ -995,8 +948,6 @@ static int test_init_isolated_config(void)
|
||||||
|
|
||||||
static int check_init_python_config(int preinit)
|
static int check_init_python_config(int preinit)
|
||||||
{
|
{
|
||||||
PyStatus status;
|
|
||||||
|
|
||||||
/* global configuration variables must be ignored */
|
/* global configuration variables must be ignored */
|
||||||
set_all_global_config_variables();
|
set_all_global_config_variables();
|
||||||
Py_IsolatedFlag = 1;
|
Py_IsolatedFlag = 1;
|
||||||
|
@ -1014,18 +965,15 @@ static int check_init_python_config(int preinit)
|
||||||
PyPreConfig preconfig;
|
PyPreConfig preconfig;
|
||||||
PyPreConfig_InitPythonConfig(&preconfig);
|
PyPreConfig_InitPythonConfig(&preconfig);
|
||||||
|
|
||||||
status = Py_PreInitialize(&preconfig);
|
PyStatus status = Py_PreInitialize(&preconfig);
|
||||||
if (PyStatus_Exception(status)) {
|
if (PyStatus_Exception(status)) {
|
||||||
Py_ExitStatusException(status);
|
Py_ExitStatusException(status);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
|
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
config_set_program_name(&config);
|
config_set_program_name(&config);
|
||||||
init_from_config_clear(&config);
|
init_from_config_clear(&config);
|
||||||
|
|
||||||
|
@ -1062,11 +1010,8 @@ static int test_init_dont_configure_locale(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
|
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
config_set_program_name(&config);
|
config_set_program_name(&config);
|
||||||
init_from_config_clear(&config);
|
init_from_config_clear(&config);
|
||||||
|
|
||||||
|
@ -1078,13 +1023,9 @@ static int test_init_dont_configure_locale(void)
|
||||||
|
|
||||||
static int test_init_dev_mode(void)
|
static int test_init_dev_mode(void)
|
||||||
{
|
{
|
||||||
PyStatus status;
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
|
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
putenv("PYTHONFAULTHANDLER=");
|
putenv("PYTHONFAULTHANDLER=");
|
||||||
putenv("PYTHONMALLOC=");
|
putenv("PYTHONMALLOC=");
|
||||||
config.dev_mode = 1;
|
config.dev_mode = 1;
|
||||||
|
@ -1302,13 +1243,9 @@ static int test_audit_run_file(void)
|
||||||
|
|
||||||
static int run_audit_run_test(int argc, wchar_t **argv, void *test)
|
static int run_audit_run_test(int argc, wchar_t **argv, void *test)
|
||||||
{
|
{
|
||||||
PyStatus status;
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
|
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
config.argv.length = argc;
|
config.argv.length = argc;
|
||||||
config.argv.items = argv;
|
config.argv.items = argv;
|
||||||
config.parse_argv = 1;
|
config.parse_argv = 1;
|
||||||
|
@ -1320,7 +1257,7 @@ static int run_audit_run_test(int argc, wchar_t **argv, void *test)
|
||||||
|
|
||||||
PySys_AddAuditHook(_audit_hook_run, test);
|
PySys_AddAuditHook(_audit_hook_run, test);
|
||||||
|
|
||||||
status = Py_InitializeFromConfig(&config);
|
PyStatus status = Py_InitializeFromConfig(&config);
|
||||||
if (PyStatus_Exception(status)) {
|
if (PyStatus_Exception(status)) {
|
||||||
Py_ExitStatusException(status);
|
Py_ExitStatusException(status);
|
||||||
}
|
}
|
||||||
|
@ -1353,11 +1290,7 @@ static int test_init_read_set(void)
|
||||||
{
|
{
|
||||||
PyStatus status;
|
PyStatus status;
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
status = PyConfig_SetBytesString(&config, &config.program_name,
|
status = PyConfig_SetBytesString(&config, &config.program_name,
|
||||||
"./init_read_set");
|
"./init_read_set");
|
||||||
|
@ -1402,12 +1335,7 @@ static int test_init_sys_add(void)
|
||||||
PySys_AddWarnOption(L"ignore:::sysadd_warnoption");
|
PySys_AddWarnOption(L"ignore:::sysadd_warnoption");
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
PyStatus status;
|
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
wchar_t* argv[] = {
|
wchar_t* argv[] = {
|
||||||
L"python3",
|
L"python3",
|
||||||
|
@ -1419,6 +1347,7 @@ static int test_init_sys_add(void)
|
||||||
config_set_argv(&config, Py_ARRAY_LENGTH(argv), argv);
|
config_set_argv(&config, Py_ARRAY_LENGTH(argv), argv);
|
||||||
config.parse_argv = 1;
|
config.parse_argv = 1;
|
||||||
|
|
||||||
|
PyStatus status;
|
||||||
status = PyWideStringList_Append(&config.xoptions,
|
status = PyWideStringList_Append(&config.xoptions,
|
||||||
L"config_xoption");
|
L"config_xoption");
|
||||||
if (PyStatus_Exception(status)) {
|
if (PyStatus_Exception(status)) {
|
||||||
|
@ -1494,11 +1423,8 @@ static int test_init_setpath_config(void)
|
||||||
putenv("TESTPATH=");
|
putenv("TESTPATH=");
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
|
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
config_set_string(&config, &config.program_name, L"conf_program_name");
|
config_set_string(&config, &config.program_name, L"conf_program_name");
|
||||||
config_set_string(&config, &config.executable, L"conf_executable");
|
config_set_string(&config, &config.executable, L"conf_executable");
|
||||||
init_from_config_clear(&config);
|
init_from_config_clear(&config);
|
||||||
|
@ -1534,24 +1460,20 @@ static int test_init_setpythonhome(void)
|
||||||
|
|
||||||
static int test_init_warnoptions(void)
|
static int test_init_warnoptions(void)
|
||||||
{
|
{
|
||||||
PyStatus status;
|
|
||||||
putenv("PYTHONWARNINGS=ignore:::env1,ignore:::env2");
|
putenv("PYTHONWARNINGS=ignore:::env1,ignore:::env2");
|
||||||
|
|
||||||
PySys_AddWarnOption(L"ignore:::PySys_AddWarnOption1");
|
PySys_AddWarnOption(L"ignore:::PySys_AddWarnOption1");
|
||||||
PySys_AddWarnOption(L"ignore:::PySys_AddWarnOption2");
|
PySys_AddWarnOption(L"ignore:::PySys_AddWarnOption2");
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
config.dev_mode = 1;
|
config.dev_mode = 1;
|
||||||
config.bytes_warning = 1;
|
config.bytes_warning = 1;
|
||||||
|
|
||||||
config_set_program_name(&config);
|
config_set_program_name(&config);
|
||||||
|
|
||||||
|
PyStatus status;
|
||||||
status = PyWideStringList_Append(&config.warnoptions,
|
status = PyWideStringList_Append(&config.warnoptions,
|
||||||
L"ignore:::PyConfig_BeforeRead");
|
L"ignore:::PyConfig_BeforeRead");
|
||||||
if (PyStatus_Exception(status)) {
|
if (PyStatus_Exception(status)) {
|
||||||
|
@ -1606,13 +1528,9 @@ static void configure_init_main(PyConfig *config)
|
||||||
|
|
||||||
static int test_init_run_main(void)
|
static int test_init_run_main(void)
|
||||||
{
|
{
|
||||||
PyStatus status;
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
|
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
configure_init_main(&config);
|
configure_init_main(&config);
|
||||||
init_from_config_clear(&config);
|
init_from_config_clear(&config);
|
||||||
|
|
||||||
|
@ -1622,13 +1540,9 @@ static int test_init_run_main(void)
|
||||||
|
|
||||||
static int test_init_main(void)
|
static int test_init_main(void)
|
||||||
{
|
{
|
||||||
PyStatus status;
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
|
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
configure_init_main(&config);
|
configure_init_main(&config);
|
||||||
config._init_main = 0;
|
config._init_main = 0;
|
||||||
init_from_config_clear(&config);
|
init_from_config_clear(&config);
|
||||||
|
@ -1642,7 +1556,7 @@ static int test_init_main(void)
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
status = _Py_InitializeMain();
|
PyStatus status = _Py_InitializeMain();
|
||||||
if (PyStatus_Exception(status)) {
|
if (PyStatus_Exception(status)) {
|
||||||
Py_ExitStatusException(status);
|
Py_ExitStatusException(status);
|
||||||
}
|
}
|
||||||
|
@ -1653,14 +1567,8 @@ static int test_init_main(void)
|
||||||
|
|
||||||
static int test_run_main(void)
|
static int test_run_main(void)
|
||||||
{
|
{
|
||||||
PyStatus status;
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
PyConfig_InitPythonConfig(&config);
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
PyConfig_Clear(&config);
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
wchar_t *argv[] = {L"python3", L"-c",
|
wchar_t *argv[] = {L"python3", L"-c",
|
||||||
(L"import sys; "
|
(L"import sys; "
|
||||||
|
|
|
@ -40,11 +40,7 @@ Py_FrozenMain(int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
status = PyConfig_InitPythonConfig(&config);
|
PyConfig_InitPythonConfig(&config);
|
||||||
if (PyStatus_Exception(status)) {
|
|
||||||
PyConfig_Clear(&config);
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
config.pathconfig_warnings = 0; /* Suppress errors from getpath.c */
|
config.pathconfig_warnings = 0; /* Suppress errors from getpath.c */
|
||||||
|
|
||||||
if ((p = Py_GETENV("PYTHONINSPECT")) && *p != '\0')
|
if ((p = Py_GETENV("PYTHONINSPECT")) && *p != '\0')
|
||||||
|
|
|
@ -569,7 +569,7 @@ PyConfig_Clear(PyConfig *config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PyStatus
|
void
|
||||||
_PyConfig_InitCompatConfig(PyConfig *config)
|
_PyConfig_InitCompatConfig(PyConfig *config)
|
||||||
{
|
{
|
||||||
memset(config, 0, sizeof(*config));
|
memset(config, 0, sizeof(*config));
|
||||||
|
@ -603,17 +603,13 @@ _PyConfig_InitCompatConfig(PyConfig *config)
|
||||||
#ifdef MS_WINDOWS
|
#ifdef MS_WINDOWS
|
||||||
config->legacy_windows_stdio = -1;
|
config->legacy_windows_stdio = -1;
|
||||||
#endif
|
#endif
|
||||||
return _PyStatus_OK();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static PyStatus
|
static void
|
||||||
config_init_defaults(PyConfig *config)
|
config_init_defaults(PyConfig *config)
|
||||||
{
|
{
|
||||||
PyStatus status = _PyConfig_InitCompatConfig(config);
|
_PyConfig_InitCompatConfig(config);
|
||||||
if (_PyStatus_EXCEPTION(status)) {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
config->isolated = 0;
|
config->isolated = 0;
|
||||||
config->use_environment = 1;
|
config->use_environment = 1;
|
||||||
|
@ -632,35 +628,24 @@ config_init_defaults(PyConfig *config)
|
||||||
#ifdef MS_WINDOWS
|
#ifdef MS_WINDOWS
|
||||||
config->legacy_windows_stdio = 0;
|
config->legacy_windows_stdio = 0;
|
||||||
#endif
|
#endif
|
||||||
return _PyStatus_OK();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PyStatus
|
void
|
||||||
PyConfig_InitPythonConfig(PyConfig *config)
|
PyConfig_InitPythonConfig(PyConfig *config)
|
||||||
{
|
{
|
||||||
PyStatus status = config_init_defaults(config);
|
config_init_defaults(config);
|
||||||
if (_PyStatus_EXCEPTION(status)) {
|
|
||||||
_PyStatus_UPDATE_FUNC(status);
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
config->_config_init = (int)_PyConfig_INIT_PYTHON;
|
config->_config_init = (int)_PyConfig_INIT_PYTHON;
|
||||||
config->configure_c_stdio = 1;
|
config->configure_c_stdio = 1;
|
||||||
config->parse_argv = 1;
|
config->parse_argv = 1;
|
||||||
|
|
||||||
return _PyStatus_OK();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PyStatus
|
void
|
||||||
PyConfig_InitIsolatedConfig(PyConfig *config)
|
PyConfig_InitIsolatedConfig(PyConfig *config)
|
||||||
{
|
{
|
||||||
PyStatus status = config_init_defaults(config);
|
config_init_defaults(config);
|
||||||
if (_PyStatus_EXCEPTION(status)) {
|
|
||||||
_PyStatus_UPDATE_FUNC(status);
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
config->_config_init = (int)_PyConfig_INIT_ISOLATED;
|
config->_config_init = (int)_PyConfig_INIT_ISOLATED;
|
||||||
config->isolated = 1;
|
config->isolated = 1;
|
||||||
|
@ -675,8 +660,6 @@ PyConfig_InitIsolatedConfig(PyConfig *config)
|
||||||
#ifdef MS_WINDOWS
|
#ifdef MS_WINDOWS
|
||||||
config->legacy_windows_stdio = 0;
|
config->legacy_windows_stdio = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return _PyStatus_OK();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -432,16 +432,11 @@ _PyConfig_InitPathConfig(PyConfig *config)
|
||||||
static PyStatus
|
static PyStatus
|
||||||
pathconfig_global_read(_PyPathConfig *pathconfig)
|
pathconfig_global_read(_PyPathConfig *pathconfig)
|
||||||
{
|
{
|
||||||
PyStatus status;
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
_PyConfig_InitCompatConfig(&config);
|
||||||
status = _PyConfig_InitCompatConfig(&config);
|
|
||||||
if (_PyStatus_EXCEPTION(status)) {
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Call _PyConfig_InitPathConfig() */
|
/* Call _PyConfig_InitPathConfig() */
|
||||||
status = PyConfig_Read(&config);
|
PyStatus status = PyConfig_Read(&config);
|
||||||
if (_PyStatus_EXCEPTION(status)) {
|
if (_PyStatus_EXCEPTION(status)) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
|
@ -847,11 +847,7 @@ pyinit_core(_PyRuntimeState *runtime,
|
||||||
}
|
}
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
_PyConfig_InitCompatConfig(&config);
|
||||||
status = _PyConfig_InitCompatConfig(&config);
|
|
||||||
if (_PyStatus_EXCEPTION(status)) {
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
|
|
||||||
status = _PyConfig_Copy(&config, src_config);
|
status = _PyConfig_Copy(&config, src_config);
|
||||||
if (_PyStatus_EXCEPTION(status)) {
|
if (_PyStatus_EXCEPTION(status)) {
|
||||||
|
@ -1073,11 +1069,7 @@ Py_InitializeEx(int install_sigs)
|
||||||
}
|
}
|
||||||
|
|
||||||
PyConfig config;
|
PyConfig config;
|
||||||
|
_PyConfig_InitCompatConfig(&config);
|
||||||
status = _PyConfig_InitCompatConfig(&config);
|
|
||||||
if (_PyStatus_EXCEPTION(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
config.install_signal_handlers = install_sigs;
|
config.install_signal_handlers = install_sigs;
|
||||||
|
|
||||||
|
|
|
@ -205,14 +205,7 @@ PyInterpreterState_New(void)
|
||||||
memset(interp, 0, sizeof(*interp));
|
memset(interp, 0, sizeof(*interp));
|
||||||
interp->id_refcount = -1;
|
interp->id_refcount = -1;
|
||||||
|
|
||||||
PyStatus status = PyConfig_InitPythonConfig(&interp->config);
|
PyConfig_InitPythonConfig(&interp->config);
|
||||||
if (_PyStatus_EXCEPTION(status)) {
|
|
||||||
/* Don't report status to caller: PyConfig_InitPythonConfig()
|
|
||||||
can only fail with a memory allocation error. */
|
|
||||||
PyConfig_Clear(&interp->config);
|
|
||||||
PyMem_RawFree(interp);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
interp->eval_frame = _PyEval_EvalFrameDefault;
|
interp->eval_frame = _PyEval_EvalFrameDefault;
|
||||||
#ifdef HAVE_DLOPEN
|
#ifdef HAVE_DLOPEN
|
||||||
|
|
Loading…
Reference in New Issue