bpo-36763: PyConfig_Read() handles PySys_AddXOption() (GH-15431)
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.
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -2293,7 +2301,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;
|
||||
}
|
||||
@@ -2403,6 +2412,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;
|
||||
|
||||
Reference in New Issue
Block a user