bpo-36763: PyConfig_Read() handles PySys_AddXOption() (GH-15431) (GH-15435)

PyConfig_Read() is now responsible to handle early calls to
PySys_AddXOption() and PySys_AddWarnOption().

Options added by PySys_AddXOption() are now handled the same way than
PyConfig.xoptions and command line -X options.

For example, PySys_AddXOption(L"faulthandler") enables faulthandler
as expected.

(cherry picked from commit 120b707a6d)
This commit is contained in:
Victor Stinner 2019-08-23 21:16:51 +02:00 committed by GitHub
parent 3921d12174
commit af84a88ef8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 116 additions and 31 deletions

View file

@ -2069,6 +2069,7 @@ config_init_warnoptions(PyConfig *config,
/* The priority order for warnings configuration is (highest precedence
* first):
*
* - early PySys_AddWarnOption() calls
* - the BytesWarning filter, if needed ('-b', '-bb')
* - any '-W' command line options; then
* - the 'PYTHONWARNINGS' environment variable; then
@ -2124,6 +2125,13 @@ config_init_warnoptions(PyConfig *config,
return status;
}
}
/* Handle early PySys_AddWarnOption() calls */
status = _PySys_ReadPreinitWarnOptions(config);
if (_PyStatus_EXCEPTION(status)) {
return status;
}
return _PyStatus_OK();
}
@ -2246,7 +2254,8 @@ config_read_cmdline(PyConfig *config)
}
status = config_init_warnoptions(config,
&cmdline_warnoptions, &env_warnoptions);
&cmdline_warnoptions,
&env_warnoptions);
if (_PyStatus_EXCEPTION(status)) {
goto done;
}
@ -2356,6 +2365,12 @@ PyConfig_Read(PyConfig *config)
goto done;
}
/* Handle early PySys_AddXOption() calls */
status = _PySys_ReadPreinitXOptions(config);
if (_PyStatus_EXCEPTION(status)) {
goto done;
}
status = config_read(config);
if (_PyStatus_EXCEPTION(status)) {
goto done;