The silencing of DeprecationWarning was not taking -3 into consideration. Since
Py3K warnings are DeprecationWarning by default this was causing -3 to essentially be a no-op. Now DeprecationWarning is only silenced if -3 is not used. Closes issue #7700. Thanks Ezio Melotti and Florent Xicluna for patch help.
This commit is contained in:
parent
efdddd3370
commit
3ffa43db48
|
@ -383,8 +383,11 @@ except ImportError:
|
|||
# Module initialization
|
||||
_processoptions(sys.warnoptions)
|
||||
if not _warnings_defaults:
|
||||
for cls in (DeprecationWarning, PendingDeprecationWarning, ImportWarning):
|
||||
simplefilter("ignore", category=cls, append=True)
|
||||
silence = [ImportWarning, PendingDeprecationWarning]
|
||||
if not sys.py3kwarning: # Don't silence DeprecationWarning if -3 was used.
|
||||
silence.append(DeprecationWarning)
|
||||
for cls in silence:
|
||||
simplefilter("ignore", category=cls)
|
||||
bytes_warning = sys.flags.bytes_warning
|
||||
if bytes_warning > 1:
|
||||
bytes_action = "error"
|
||||
|
|
|
@ -21,7 +21,8 @@ Core and Builtins
|
|||
values. Also fix a number of bugs in dtoa.c that could lead to
|
||||
incorrectly rounded results when converting strings to floats.
|
||||
|
||||
- Issue #7319: Silence DeprecationWarning by default.
|
||||
- Issue #7319, #7770: Silence DeprecationWarning by default when -3 is not
|
||||
used.
|
||||
|
||||
- Issue #2335: Backport set literals syntax from Python 3.x.
|
||||
|
||||
|
|
|
@ -839,31 +839,37 @@ create_filter(PyObject *category, const char *action)
|
|||
static PyObject *
|
||||
init_filters(void)
|
||||
{
|
||||
PyObject *filters = PyList_New(4);
|
||||
// Don't silence DeprecationWarning if -3 was used.
|
||||
PyObject *filters = PyList_New(Py_Py3kWarningFlag ? 3 : 4);
|
||||
unsigned int pos = 0; // Post-incremented in each use.
|
||||
unsigned int x;
|
||||
const char *bytes_action;
|
||||
|
||||
if (filters == NULL)
|
||||
return NULL;
|
||||
|
||||
PyList_SET_ITEM(filters, 0,
|
||||
create_filter(PyExc_DeprecationWarning, "ignore"));
|
||||
PyList_SET_ITEM(filters, 1,
|
||||
if (!Py_Py3kWarningFlag) {
|
||||
PyList_SET_ITEM(filters, pos++,
|
||||
create_filter(PyExc_DeprecationWarning, "ignore"));
|
||||
}
|
||||
PyList_SET_ITEM(filters, pos++,
|
||||
create_filter(PyExc_PendingDeprecationWarning, "ignore"));
|
||||
PyList_SET_ITEM(filters, 2, create_filter(PyExc_ImportWarning, "ignore"));
|
||||
PyList_SET_ITEM(filters, pos++,
|
||||
create_filter(PyExc_ImportWarning, "ignore"));
|
||||
if (Py_BytesWarningFlag > 1)
|
||||
bytes_action = "error";
|
||||
else if (Py_BytesWarningFlag)
|
||||
bytes_action = "default";
|
||||
else
|
||||
bytes_action = "ignore";
|
||||
PyList_SET_ITEM(filters, 3, create_filter(PyExc_BytesWarning,
|
||||
PyList_SET_ITEM(filters, pos++, create_filter(PyExc_BytesWarning,
|
||||
bytes_action));
|
||||
|
||||
if (PyList_GET_ITEM(filters, 0) == NULL ||
|
||||
PyList_GET_ITEM(filters, 1) == NULL ||
|
||||
PyList_GET_ITEM(filters, 2) == NULL ||
|
||||
PyList_GET_ITEM(filters, 3) == NULL) {
|
||||
Py_DECREF(filters);
|
||||
return NULL;
|
||||
for (x = 0; x < pos; x += 1) {
|
||||
if (PyList_GET_ITEM(filters, x) == NULL) {
|
||||
Py_DECREF(filters);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return filters;
|
||||
|
|
Loading…
Reference in New Issue