[Python-checkins] r77505 - in python/trunk: Lib/warnings.py Misc/NEWS Python/_warnings.c
brett.cannon
python-checkins at python.org
Thu Jan 14 21:00:29 CET 2010
Author: brett.cannon
Date: Thu Jan 14 21:00:28 2010
New Revision: 77505
Log:
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.
Modified:
python/trunk/Lib/warnings.py
python/trunk/Misc/NEWS
python/trunk/Python/_warnings.c
Modified: python/trunk/Lib/warnings.py
==============================================================================
--- python/trunk/Lib/warnings.py (original)
+++ python/trunk/Lib/warnings.py Thu Jan 14 21:00:28 2010
@@ -383,8 +383,11 @@
# 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"
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS (original)
+++ python/trunk/Misc/NEWS Thu Jan 14 21:00:28 2010
@@ -21,7 +21,8 @@
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.
Modified: python/trunk/Python/_warnings.c
==============================================================================
--- python/trunk/Python/_warnings.c (original)
+++ python/trunk/Python/_warnings.c Thu Jan 14 21:00:28 2010
@@ -839,31 +839,37 @@
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;
More information about the Python-checkins
mailing list