diff --git a/Doc/api/exceptions.tex b/Doc/api/exceptions.tex
index 01c0aaf..8676963 100644
--- a/Doc/api/exceptions.tex
+++ b/Doc/api/exceptions.tex
@@ -296,16 +296,6 @@
   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 b494bb6..b1cc429 100644
--- a/Include/pyerrors.h
+++ b/Include/pyerrors.h
@@ -213,9 +213,6 @@
 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 d03999f..149cd98 100644
--- a/Modules/_bsddb.c
+++ b/Modules/_bsddb.c
@@ -546,7 +546,7 @@
             }
             _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 @@
             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 @@
         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 5915455..a1a0e0d 100644
--- a/Modules/_ctypes/callbacks.c
+++ b/Modules/_ctypes/callbacks.c
@@ -225,8 +225,9 @@
 		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 269ac90..1626d72 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -998,8 +998,9 @@
 	   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 61ac4e6..d710a73 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -5344,8 +5344,9 @@
     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 @@
     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 8288f1e..6b27adb 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -5990,15 +5990,16 @@
     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 3770522..62e63ab 100644
--- a/Python/errors.c
+++ b/Python/errors.c
@@ -670,17 +670,6 @@
 	}
 }
 
-/* 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 bb40b68..7ac9e2a 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -1320,8 +1320,8 @@
 				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 @@
 				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 d29fe9b..8f25ed2 100644
--- a/Python/modsupport.c
+++ b/Python/modsupport.c
@@ -42,7 +42,7 @@
 			      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 e0014c4..3eb7218 100644
--- a/Python/structmember.c
+++ b/Python/structmember.c
@@ -90,10 +90,10 @@
 	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
