summaryrefslogtreecommitdiff
path: root/Python/_warnings.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/_warnings.c')
-rw-r--r--Python/_warnings.c73
1 files changed, 22 insertions, 51 deletions
diff --git a/Python/_warnings.c b/Python/_warnings.c
index 29370369e2..7b2bdd5462 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -11,9 +11,9 @@ MODULE_NAME " provides basic warning filtering support.\n"
_Py_IDENTIFIER(argv);
_Py_IDENTIFIER(stderr);
+#ifndef Py_DEBUG
_Py_IDENTIFIER(ignore);
-_Py_IDENTIFIER(error);
-_Py_static_string(PyId_default, "default");
+#endif
static int
check_matched(PyObject *obj, PyObject *arg)
@@ -1156,6 +1156,7 @@ static PyMethodDef warnings_functions[] = {
};
+#ifndef Py_DEBUG
static PyObject *
create_filter(PyObject *category, _Py_Identifier *id)
{
@@ -1168,70 +1169,40 @@ create_filter(PyObject *category, _Py_Identifier *id)
return PyTuple_Pack(5, action_str, Py_None,
category, Py_None, _PyLong_Zero);
}
+#endif
+
static PyObject *
init_filters(const _PyCoreConfig *config)
{
- int dev_mode = config->dev_mode;
-
- Py_ssize_t count = 2;
- if (dev_mode) {
- count++;
- }
-#ifndef Py_DEBUG
- if (!dev_mode) {
- count += 3;
- }
-#endif
- PyObject *filters = PyList_New(count);
- if (filters == NULL)
- return NULL;
-
- size_t pos = 0; /* Post-incremented in each use. */
-#ifndef Py_DEBUG
- if (!dev_mode) {
- PyList_SET_ITEM(filters, pos++,
- create_filter(PyExc_DeprecationWarning, &PyId_ignore));
- PyList_SET_ITEM(filters, pos++,
- create_filter(PyExc_PendingDeprecationWarning, &PyId_ignore));
- PyList_SET_ITEM(filters, pos++,
- create_filter(PyExc_ImportWarning, &PyId_ignore));
- }
-#endif
-
- _Py_Identifier *bytes_action;
- if (Py_BytesWarningFlag > 1)
- bytes_action = &PyId_error;
- else if (Py_BytesWarningFlag)
- bytes_action = &PyId_default;
- else
- bytes_action = &PyId_ignore;
- PyList_SET_ITEM(filters, pos++, create_filter(PyExc_BytesWarning,
- bytes_action));
-
- _Py_Identifier *resource_action;
- /* resource usage warnings are enabled by default in pydebug mode */
#ifdef Py_DEBUG
- resource_action = &PyId_default;
+ /* Py_DEBUG builds show all warnings by default */
+ return PyList_New(0);
#else
- resource_action = (dev_mode ? &PyId_default: &PyId_ignore);
-#endif
- PyList_SET_ITEM(filters, pos++, create_filter(PyExc_ResourceWarning,
- resource_action));
-
- if (dev_mode) {
- PyList_SET_ITEM(filters, pos++,
- create_filter(PyExc_Warning, &PyId_default));
+ /* Other builds ignore a number of warning categories by default */
+ PyObject *filters = PyList_New(4);
+ if (filters == NULL) {
+ return NULL;
}
+ size_t pos = 0; /* Post-incremented in each use. */
+ PyList_SET_ITEM(filters, pos++,
+ create_filter(PyExc_DeprecationWarning, &PyId_ignore));
+ PyList_SET_ITEM(filters, pos++,
+ create_filter(PyExc_PendingDeprecationWarning, &PyId_ignore));
+ PyList_SET_ITEM(filters, pos++,
+ create_filter(PyExc_ImportWarning, &PyId_ignore));
+ PyList_SET_ITEM(filters, pos++,
+ create_filter(PyExc_ResourceWarning, &PyId_ignore));
+
for (size_t x = 0; x < pos; x++) {
if (PyList_GET_ITEM(filters, x) == NULL) {
Py_DECREF(filters);
return NULL;
}
}
-
return filters;
+#endif
}
static struct PyModuleDef warningsmodule = {