diff --git a/Doc/api/exceptions.tex b/Doc/api/exceptions.tex index 01c0aaf6bda..8676963d83d 100644 --- a/Doc/api/exceptions.tex +++ b/Doc/api/exceptions.tex @@ -296,16 +296,6 @@ error indicator for each thread. command line documentation. There is no C API for warning control. \end{cfuncdesc} -\begin{cfuncdesc}{int}{PyErr_Warn}{PyObject *category, char *message} - Issue a warning message. The \var{category} argument is a warning - category (see below) or \NULL; the \var{message} argument is a - message string. The warning will appear to be issued from the function - calling \cfunction{PyErr_Warn()}, equivalent to calling - \cfunction{PyErr_WarnEx()} with a \var{stacklevel} of 1. - - Deprecated; use \cfunction{PyErr_WarnEx()} instead. -\end{cfuncdesc} - \begin{cfuncdesc}{int}{PyErr_WarnExplicit}{PyObject *category, const char *message, const char *filename, int lineno, const char *module, PyObject *registry} diff --git a/Include/pyerrors.h b/Include/pyerrors.h index b494bb646bf..b1cc4291975 100644 --- a/Include/pyerrors.h +++ b/Include/pyerrors.h @@ -213,9 +213,6 @@ PyAPI_FUNC(int) PyErr_WarnEx(PyObject *category, const char *msg, PyAPI_FUNC(int) PyErr_WarnExplicit(PyObject *, const char *, const char *, int, const char *, PyObject *); -/* PyErr_Warn is only for backwards compatability and will be removed. - Use PyErr_WarnEx instead. */ -#define PyErr_Warn(category, msg) PyErr_WarnEx(category, msg, 1) /* In sigcheck.c or signalmodule.c */ PyAPI_FUNC(int) PyErr_CheckSignals(void); diff --git a/Modules/_bsddb.c b/Modules/_bsddb.c index d03999ff131..149cd986913 100644 --- a/Modules/_bsddb.c +++ b/Modules/_bsddb.c @@ -546,7 +546,7 @@ static int makeDBError(int err) } _db_errmsg[0] = 0; #ifdef HAVE_WARNINGS - exceptionRaised = PyErr_Warn(PyExc_RuntimeWarning, errTxt); + exceptionRaised = PyErr_WarnEx(PyExc_RuntimeWarning, errTxt, 1); #else fprintf(stderr, errTxt); fprintf(stderr, "\n"); @@ -859,8 +859,10 @@ DB_dealloc(DBObject* self) MYDB_END_ALLOW_THREADS; #ifdef HAVE_WARNINGS } else { - PyErr_Warn(PyExc_RuntimeWarning, - "DB could not be closed in destructor: DBEnv already closed"); + PyErr_WarnEx(PyExc_RuntimeWarning, + "DB could not be closed in destructor:" + " DBEnv already closed", + 1); #endif } self->db = NULL; @@ -1031,8 +1033,10 @@ DBTxn_dealloc(DBTxnObject* self) txn_abort(self->txn); #endif MYDB_END_ALLOW_THREADS; - PyErr_Warn(PyExc_RuntimeWarning, - "DBTxn aborted in destructor. No prior commit() or abort()."); + PyErr_WarnEx(PyExc_RuntimeWarning, + "DBTxn aborted in destructor. " + " No prior commit() or abort().", + 1); } #endif diff --git a/Modules/_ctypes/callbacks.c b/Modules/_ctypes/callbacks.c index 59154552b6a..a1a0e0ddaf5 100644 --- a/Modules/_ctypes/callbacks.c +++ b/Modules/_ctypes/callbacks.c @@ -225,8 +225,9 @@ if (x == NULL) _AddTraceback(what, __FILE__, __LINE__ - 1), PyErr_Print() else if (keep == Py_None) /* Nothing to keep */ Py_DECREF(keep); else if (setfunc != getentry("O")->setfunc) { - if (-1 == PyErr_Warn(PyExc_RuntimeWarning, - "memory leak in callback function.")) + if (-1 == PyErr_WarnEx(PyExc_RuntimeWarning, + "memory leak in callback function.", + 1)) PyErr_WriteUnraisable(callable); } } diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c index 269ac900b44..1626d726a78 100644 --- a/Modules/mmapmodule.c +++ b/Modules/mmapmodule.c @@ -998,8 +998,9 @@ new_mmap_object(PyObject *self, PyObject *args, PyObject *kwdict) XXX: fileno == 0 is a valid fd, but was accepted prior to 2.5. XXX: Should this code be added? if (fileno == 0) - PyErr_Warn(PyExc_DeprecationWarning, - "don't use 0 for anonymous memory"); + PyErr_WarnEx(PyExc_DeprecationWarning, + "don't use 0 for anonymous memory", + 1); */ if (fileno != -1 && fileno != 0) { fh = (HANDLE)_get_osfhandle(fileno); diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 61ac4e64825..d710a7366e4 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -5344,8 +5344,9 @@ posix_tempnam(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "|zz:tempnam", &dir, &pfx)) return NULL; - if (PyErr_Warn(PyExc_RuntimeWarning, - "tempnam is a potential security risk to your program") < 0) + if (PyErr_WarnEx(PyExc_RuntimeWarning, + "tempnam is a potential security risk to your program", + 1) < 0) return NULL; #ifdef MS_WINDOWS @@ -5391,8 +5392,9 @@ posix_tmpnam(PyObject *self, PyObject *noargs) char buffer[L_tmpnam]; char *name; - if (PyErr_Warn(PyExc_RuntimeWarning, - "tmpnam is a potential security risk to your program") < 0) + if (PyErr_WarnEx(PyExc_RuntimeWarning, + "tmpnam is a potential security risk to your program", + 1) < 0) return NULL; #ifdef USE_TMPNAM_R diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 8288f1ebead..6b27adb73c5 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -5990,15 +5990,16 @@ PyObject *PyUnicode_RichCompare(PyObject *left, if (!PyErr_ExceptionMatches(PyExc_UnicodeDecodeError)) return NULL; PyErr_Clear(); - if (PyErr_Warn(PyExc_UnicodeWarning, - (op == Py_EQ) ? - "Unicode equal comparison " - "failed to convert both arguments to Unicode - " - "interpreting them as being unequal" : - "Unicode unequal comparison " - "failed to convert both arguments to Unicode - " - "interpreting them as being unequal" - ) < 0) + if (PyErr_WarnEx(PyExc_UnicodeWarning, + (op == Py_EQ) ? + "Unicode equal comparison " + "failed to convert both arguments to Unicode - " + "interpreting them as being unequal" + : + "Unicode unequal comparison " + "failed to convert both arguments to Unicode - " + "interpreting them as being unequal", + 1) < 0) return NULL; result = (op == Py_NE); return PyBool_FromLong(result); diff --git a/Python/errors.c b/Python/errors.c index 37705227352..62e63ab91e8 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -670,17 +670,6 @@ PyErr_WarnEx(PyObject *category, const char *message, Py_ssize_t stack_level) } } -/* PyErr_Warn is only for backwards compatability and will be removed. - Use PyErr_WarnEx instead. */ - -#undef PyErr_Warn - -PyAPI_FUNC(int) -PyErr_Warn(PyObject *category, char *message) -{ - return PyErr_WarnEx(category, message, 1); -} - /* Warning with explicit origin */ int PyErr_WarnExplicit(PyObject *category, const char *message, diff --git a/Python/import.c b/Python/import.c index bb40b685a57..7ac9e2a8f13 100644 --- a/Python/import.c +++ b/Python/import.c @@ -1320,8 +1320,8 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf, sprintf(warnstr, "Not importing directory " "'%.*s': missing __init__.py", MAXPATHLEN, buf); - if (PyErr_Warn(PyExc_ImportWarning, - warnstr)) { + if (PyErr_WarnEx(PyExc_ImportWarning, + warnstr, 1)) { return NULL; } } @@ -1339,8 +1339,8 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf, sprintf(warnstr, "Not importing directory " "'%.*s': missing __init__.py", MAXPATHLEN, buf); - if (PyErr_Warn(PyExc_ImportWarning, - warnstr)) { + if (PyErr_WarnEx(PyExc_ImportWarning, + warnstr, 1)) { return NULL; } } diff --git a/Python/modsupport.c b/Python/modsupport.c index d29fe9b0a74..8f25ed2e19a 100644 --- a/Python/modsupport.c +++ b/Python/modsupport.c @@ -42,7 +42,7 @@ Py_InitModule4(const char *name, PyMethodDef *methods, const char *doc, api_version_warning, name, PYTHON_API_VERSION, name, module_api_version); - if (PyErr_Warn(PyExc_RuntimeWarning, message)) + if (PyErr_WarnEx(PyExc_RuntimeWarning, message, 1)) return NULL; } /* Make sure name is fully qualified. diff --git a/Python/structmember.c b/Python/structmember.c index e0014c4a7de..3eb72183a1e 100644 --- a/Python/structmember.c +++ b/Python/structmember.c @@ -90,10 +90,10 @@ PyMember_GetOne(const char *addr, PyMemberDef *l) return v; } -#define WARN(msg) \ - do { \ - if (PyErr_Warn(PyExc_RuntimeWarning, msg) < 0) \ - return -1; \ +#define WARN(msg) \ + do { \ + if (PyErr_WarnEx(PyExc_RuntimeWarning, msg, 1) < 0) \ + return -1; \ } while (0) int