mirror of
https://github.com/python/cpython
synced 2026-09-29 12:10:30 +03:00
Issue #20355: -W command line options now have higher priority than the PYTHONWARNINGS environment variable. Patch by Arfrever.
This commit is contained in:
parent
7fae75a415
commit
6999441d62
3 changed files with 35 additions and 3 deletions
|
|
@ -343,6 +343,8 @@ Py_Main(int argc, wchar_t **argv)
|
|||
int version = 0;
|
||||
int saw_unbuffered_flag = 0;
|
||||
PyCompilerFlags cf;
|
||||
PyObject *warning_option = NULL;
|
||||
PyObject *warning_options = NULL;
|
||||
|
||||
cf.cf_flags = 0;
|
||||
|
||||
|
|
@ -465,7 +467,15 @@ Py_Main(int argc, wchar_t **argv)
|
|||
break;
|
||||
|
||||
case 'W':
|
||||
PySys_AddWarnOption(_PyOS_optarg);
|
||||
if (warning_options == NULL)
|
||||
warning_options = PyList_New(0);
|
||||
if (warning_options == NULL)
|
||||
Py_FatalError("failure in handling of -W argument");
|
||||
warning_option = PyUnicode_FromWideChar(_PyOS_optarg, -1);
|
||||
if (warning_option == NULL)
|
||||
Py_FatalError("failure in handling of -W argument");
|
||||
PyList_Append(warning_options, warning_option);
|
||||
Py_DECREF(warning_option);
|
||||
break;
|
||||
|
||||
case 'X':
|
||||
|
|
@ -559,6 +569,12 @@ Py_Main(int argc, wchar_t **argv)
|
|||
PyMem_RawFree(buf);
|
||||
}
|
||||
#endif
|
||||
if (warning_options != NULL) {
|
||||
Py_ssize_t i;
|
||||
for (i = 0; i < PyList_GET_SIZE(warning_options); i++) {
|
||||
PySys_AddWarnOptionUnicode(PyList_GET_ITEM(warning_options, i));
|
||||
}
|
||||
}
|
||||
|
||||
if (command == NULL && module == NULL && _PyOS_optind < argc &&
|
||||
wcscmp(argv[_PyOS_optind], L"-") != 0)
|
||||
|
|
@ -652,6 +668,7 @@ Py_Main(int argc, wchar_t **argv)
|
|||
Py_SetProgramName(argv[0]);
|
||||
#endif
|
||||
Py_Initialize();
|
||||
Py_XDECREF(warning_options);
|
||||
|
||||
if (!Py_QuietFlag && (Py_VerboseFlag ||
|
||||
(command == NULL && filename == NULL &&
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue