Use PyErr_WarnPy3k throughout
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index a77fd7d..a2b454a 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -1257,10 +1257,8 @@
 static PyObject *
 array_fromfile_as_read(arrayobject *self, PyObject *args)
 {
-	if (Py_Py3kWarningFlag &&
-	    PyErr_Warn(PyExc_DeprecationWarning,
-		       "array.read() not supported in 3.x; "
-		       "use array.fromfile()") < 0)
+	if (PyErr_WarnPy3k("array.read() not supported in 3.x; "
+		       "use array.fromfile()", 1) < 0)
 		return NULL;
 	return array_fromfile(self, args);
 }
@@ -1298,10 +1296,8 @@
 static PyObject *
 array_tofile_as_write(arrayobject *self, PyObject *f)
 {
-	if (Py_Py3kWarningFlag &&
-	    PyErr_Warn(PyExc_DeprecationWarning,
-		       "array.write() not supported in 3.x; "
-		       "use array.tofile()") < 0)
+	if (PyErr_WarnPy3k("array.write() not supported in 3.x; "
+		       "use array.tofile()", 1) < 0)
 		return NULL;
 	return array_tofile(self, f);
 }
diff --git a/Objects/bufferobject.c b/Objects/bufferobject.c
index f4c69a0..37d9bcb 100644
--- a/Objects/bufferobject.c
+++ b/Objects/bufferobject.c
@@ -233,9 +233,7 @@
 	Py_ssize_t offset = 0;
 	Py_ssize_t size = Py_END_OF_BUFFER;
 
-	if (Py_Py3kWarningFlag &&
-	    PyErr_WarnEx(PyExc_DeprecationWarning,
-			 "buffer() not supported in 3.x; "
+	if (PyErr_WarnPy3k("buffer() not supported in 3.x; "
 			 "use memoryview()", 1) < 0)
 		return NULL;
 	
diff --git a/Objects/cellobject.c b/Objects/cellobject.c
index 46955ab..e2a8d29 100644
--- a/Objects/cellobject.c
+++ b/Objects/cellobject.c
@@ -55,9 +55,8 @@
 cell_compare(PyCellObject *a, PyCellObject *b)
 {
 	/* Py3K warning for comparisons  */
-	if (Py_Py3kWarningFlag &&
-	    PyErr_Warn(PyExc_DeprecationWarning,
-		       "cell comparisons not supported in 3.x") < 0) {
+	if (PyErr_WarnPy3k("cell comparisons not supported in 3.x",
+                           1) < 0) {
 		return -2;
 	}
 
diff --git a/Objects/codeobject.c b/Objects/codeobject.c
index 33b4610..815135d 100644
--- a/Objects/codeobject.c
+++ b/Objects/codeobject.c
@@ -340,10 +340,8 @@
 
 		/* Py3K warning if types are not equal and comparison
                    isn't == or !=  */
-		if (Py_Py3kWarningFlag &&
-		    PyErr_Warn(PyExc_DeprecationWarning,
-			       "code inequality comparisons not supported "
-			       "in 3.x") < 0) {
+		if (PyErr_WarnPy3k("code inequality comparisons not supported "
+			       "in 3.x", 1) < 0) {
 			return NULL;
 		}
 
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index d552098..2291524 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -1778,10 +1778,8 @@
 	}
 	else {
 		/* Py3K warning if comparison isn't == or !=  */
-		if (Py_Py3kWarningFlag &&
-		    PyErr_Warn(PyExc_DeprecationWarning,
-			       "dict inequality comparisons not supported "
-			       "in 3.x") < 0) {
+		if (PyErr_WarnPy3k("dict inequality comparisons not supported "
+			       "in 3.x", 1) < 0) {
 			return NULL;
 		}
 		res = Py_NotImplemented;
@@ -1811,10 +1809,8 @@
 static PyObject *
 dict_has_key(register PyDictObject *mp, PyObject *key)
 {
-	if (Py_Py3kWarningFlag &&
-	    PyErr_Warn(PyExc_DeprecationWarning, 
-		       "dict.has_key() not supported in 3.x; "
-		       "use the in operator") < 0)
+	if (PyErr_WarnPy3k("dict.has_key() not supported in 3.x; "
+		       "use the in operator", 1) < 0)
 		return NULL;
 	return dict_contains(mp, key);
 }
diff --git a/Objects/exceptions.c b/Objects/exceptions.c
index 2451a91..4a9eba1 100644
--- a/Objects/exceptions.c
+++ b/Objects/exceptions.c
@@ -189,12 +189,9 @@
 static PyObject *
 BaseException_getitem(PyBaseExceptionObject *self, Py_ssize_t index)
 {
-    if (Py_Py3kWarningFlag) {
-        if (PyErr_Warn(PyExc_DeprecationWarning,
-                       "__getitem__ not supported for exception "
-                       "classes in 3.x; use args attribute") == -1)
-            return NULL;
-    }
+    if (PyErr_WarnPy3k("__getitem__ not supported for exception "
+                       "classes in 3.x; use args attribute", 1) < 0)
+        return NULL;
     return PySequence_GetItem(self->args, index);
 }
 
@@ -202,12 +199,9 @@
 BaseException_getslice(PyBaseExceptionObject *self,
 			Py_ssize_t start, Py_ssize_t stop)
 {
-    if (Py_Py3kWarningFlag) {
-        if (PyErr_Warn(PyExc_DeprecationWarning,
-                       "__getslice__ not supported for exception "
-                       "classes in 3.x; use args attribute") == -1)
-            return NULL;
-    }
+    if (PyErr_WarnPy3k("__getslice__ not supported for exception "
+                       "classes in 3.x; use args attribute", 1) < 0)
+        return NULL;
     return PySequence_GetSlice(self->args, start, stop);
 }
 
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index d61e6a0..ef03232 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -1910,9 +1910,7 @@
 static PyObject *
 get_softspace(PyFileObject *f, void *closure)
 {
-	if (Py_Py3kWarningFlag &&
-	    PyErr_Warn(PyExc_DeprecationWarning,
-		       "file.softspace not supported in 3.x") < 0)
+	if (PyErr_WarnPy3k("file.softspace not supported in 3.x", 1) < 0)
 		return NULL;
 	return PyInt_FromLong(f->f_softspace);
 }
@@ -1921,9 +1919,7 @@
 set_softspace(PyFileObject *f, PyObject *value)
 {
 	int new;
-	if (Py_Py3kWarningFlag &&
-	    PyErr_Warn(PyExc_DeprecationWarning,
-		       "file.softspace not supported in 3.x") < 0)
+	if (PyErr_WarnPy3k("file.softspace not supported in 3.x", 1) < 0)
 		return -1;
 
 	if (value == NULL) {
diff --git a/Objects/listobject.c b/Objects/listobject.c
index 81617e4..e4e8ae4 100644
--- a/Objects/listobject.c
+++ b/Objects/listobject.c
@@ -2038,9 +2038,7 @@
 	if (compare == Py_None)
 		compare = NULL;
 	if (compare != NULL && 
-            Py_Py3kWarningFlag &&
-	    PyErr_Warn(PyExc_DeprecationWarning, 
-		       "the cmp argument is not supported in 3.x") < 0)
+            PyErr_WarnPy3k("the cmp argument is not supported in 3.x", 1) < 0)
 		return NULL;
 	if (keyfunc == Py_None)
 		keyfunc = NULL;
diff --git a/Objects/methodobject.c b/Objects/methodobject.c
index e641df1..240cc05 100644
--- a/Objects/methodobject.c
+++ b/Objects/methodobject.c
@@ -235,10 +235,8 @@
 	    !PyCFunction_Check(other))
 	{
 		/* Py3K warning if types are not equal and comparison isn't == or !=  */
-		if (Py_Py3kWarningFlag &&
-		    PyErr_Warn(PyExc_DeprecationWarning,
-			       "builtin_function_or_method inequality "
-			       "comparisons not supported in 3.x") < 0) {
+		if (PyErr_WarnPy3k("builtin_function_or_method inequality "
+			       "comparisons not supported in 3.x", 1) < 0) {
 			return NULL;
 		}
 
diff --git a/Objects/object.c b/Objects/object.c
index e7d84ad..f77f552 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -868,9 +868,9 @@
 		/* Py3K warning if types are not equal and comparison isn't == or !=  */
 		if (Py_Py3kWarningFlag &&
 		    v->ob_type != w->ob_type && op != Py_EQ && op != Py_NE &&
-		    PyErr_Warn(PyExc_DeprecationWarning,
+		    PyErr_WarnEx(PyExc_DeprecationWarning,
 			       "comparing unequal types not supported "
-			       "in 3.x") < 0) {
+			       "in 3.x", 1) < 0) {
 			return NULL;
 		}
 
@@ -1691,9 +1691,9 @@
 		if (Py_Py3kWarningFlag &&
 		    (strcmp(attrname, "__members__") == 0 ||
 		     strcmp(attrname, "__methods__") == 0)) {
-			if (PyErr_Warn(PyExc_DeprecationWarning, 
+			if (PyErr_WarnEx(PyExc_DeprecationWarning, 
 				       "__members__ and __methods__ not "
-				       "supported in 3.x") < 0) {
+				       "supported in 3.x", 1) < 0) {
 				Py_XDECREF(list);
 				return -1;
 			}
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 6b732dd..54ad714 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -608,9 +608,9 @@
 
 	/* Py3K warning if comparison isn't == or !=  */
 	if (Py_Py3kWarningFlag && op != Py_EQ && op != Py_NE &&
-		PyErr_Warn(PyExc_DeprecationWarning,
+		PyErr_WarnEx(PyExc_DeprecationWarning,
 			   "type inequality comparisons not supported "
-			   "in 3.x") < 0) {
+			   "in 3.x", 1) < 0) {
 		return NULL;
 	}
 
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index bcdcda6..5d191a6 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -165,10 +165,8 @@
 	PyObject *func, *alist = NULL, *kwdict = NULL;
 	PyObject *t = NULL, *retval = NULL;
 
-	if (Py_Py3kWarningFlag &&
-	    PyErr_Warn(PyExc_DeprecationWarning, 
-		       "apply() not supported in 3.x; "
-		       "use func(*args, **kwargs)") < 0)
+	if (PyErr_WarnPy3k("apply() not supported in 3.x; "
+		       "use func(*args, **kwargs)", 1) < 0)
 		return NULL;
 
 	if (!PyArg_UnpackTuple(args, "apply", 1, 3, &func, &alist, &kwdict))
@@ -225,10 +223,8 @@
 static PyObject *
 builtin_callable(PyObject *self, PyObject *v)
 {
-	if (Py_Py3kWarningFlag &&
-	    PyErr_Warn(PyExc_DeprecationWarning, 
-		       "callable() not supported in 3.x; "
-		       "use hasattr(o, '__call__')") < 0)
+	if (PyErr_WarnPy3k("callable() not supported in 3.x; "
+		       "use hasattr(o, '__call__')", 1) < 0)
 		return NULL;
 	return PyBool_FromLong((long)PyCallable_Check(v));
 }
@@ -438,9 +434,7 @@
 	PyObject *v, *w;
 	PyObject *res;
 
-	if (Py_Py3kWarningFlag &&
-	    PyErr_Warn(PyExc_DeprecationWarning, 
-		       "coerce() not supported in 3.x") < 0)
+	if (PyErr_WarnPy3k("coerce() not supported in 3.x", 1) < 0)
 		return NULL;
 
 	if (!PyArg_UnpackTuple(args, "coerce", 2, 2, &v, &w))
@@ -709,9 +703,8 @@
 	PyCompilerFlags cf;
 	int exists;
 
-	if (Py_Py3kWarningFlag &&
-	    PyErr_Warn(PyExc_DeprecationWarning, 
-		       "execfile() not supported in 3.x; use exec()") < 0)
+	if (PyErr_WarnPy3k("execfile() not supported in 3.x; use exec()",
+                           1) < 0)
 		return NULL;
 
 	if (!PyArg_ParseTuple(args, "s|O!O:execfile",
@@ -937,10 +930,8 @@
 	n--;
 
 	if (func == Py_None) {
-		if (Py_Py3kWarningFlag &&
-		    PyErr_Warn(PyExc_DeprecationWarning, 
-			       "map(None, ...) not supported in 3.x; "
-			       "use list(...)") < 0)
+		if (PyErr_WarnPy3k("map(None, ...) not supported in 3.x; "
+			       "use list(...)", 1) < 0)
 			return NULL;
 		if (n == 1) {
 			/* map(None, S) is the same as list(S). */
@@ -1967,10 +1958,8 @@
 {
 	PyObject *seq, *func, *result = NULL, *it;
 
-	if (Py_Py3kWarningFlag &&
-	    PyErr_Warn(PyExc_DeprecationWarning, 
-		       "reduce() not supported in 3.x; "
-		       "use functools.reduce()") < 0)
+	if (PyErr_WarnPy3k("reduce() not supported in 3.x; "
+		       "use functools.reduce()", 1) < 0)
 		return NULL;
 
 	if (!PyArg_UnpackTuple(args, "reduce", 2, 3, &func, &seq, &result))
@@ -2045,9 +2034,8 @@
 static PyObject *
 builtin_reload(PyObject *self, PyObject *v)
 {
-	if (Py_Py3kWarningFlag &&
-	    PyErr_Warn(PyExc_DeprecationWarning, 
-		       "reload() not supported in 3.x; use imp.reload()") < 0)
+	if (PyErr_WarnPy3k("In 3.x, reload() is renamed to imp.reload()",
+                           1) < 0)
 		return NULL;
 
 	return PyImport_ReloadModule(v);
diff --git a/Python/ceval.c b/Python/ceval.c
index 7c7116c..c085851 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -3164,9 +3164,9 @@
 
 	assert(PyExceptionClass_Check(type));
 	if (Py_Py3kWarningFlag && PyClass_Check(type)) {
-		if (PyErr_Warn(PyExc_DeprecationWarning,
+		if (PyErr_WarnEx(PyExc_DeprecationWarning,
 			       "exceptions must derive from BaseException "
-			       "in 3.x") == -1)
+			       "in 3.x", 1) == -1)
 			goto raise_error;
 	}
 
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index 8c82d45..83d7d68 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -172,10 +172,8 @@
 	PyThreadState *tstate;
 	PyObject *tmp_type, *tmp_value, *tmp_tb;
 
-	if (Py_Py3kWarningFlag &&
-	    PyErr_Warn(PyExc_DeprecationWarning,
-		       "sys.exc_clear() not supported in 3.x; "
-		       "use except clauses") < 0)
+	if (PyErr_WarnPy3k("sys.exc_clear() not supported in 3.x; "
+		       "use except clauses", 1) < 0)
 		return NULL;
 
 	tstate = PyThreadState_GET();