diff --git a/Lib/test/test_strop.py b/Lib/test/test_strop.py
index 9130088..74a2bb6 100644
--- a/Lib/test/test_strop.py
+++ b/Lib/test/test_strop.py
@@ -1,4 +1,6 @@
 from test_support import verbose
+import warnings
+warnings.filterwarnings("ignore", "", DeprecationWarning, __name__)
 import strop, sys
 
 def test(name, input, output, *args):
diff --git a/Misc/NEWS b/Misc/NEWS
index d69c45f..f9f1855 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -87,6 +87,10 @@
 
 Library
 
+- strop is now *really* obsolete (this was announced before with 1.6),
+  and issues DeprecationWarning when used (except for the four items
+  that are still imported into string.py).
+
 - Cookie.py now sorts key+value pairs by key in output strings.
 
 - pprint.isrecursive(object) didn't correctly identify recursive objects.
diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c
index 312e0dc..bd56ee0 100644
--- a/Modules/stropmodule.c
+++ b/Modules/stropmodule.c
@@ -12,6 +12,10 @@
 /* XXX This file assumes that the <ctype.h> is*() functions
    XXX are defined for all 8-bit characters! */
 
+#define WARN if (PyErr_Warn(PyExc_DeprecationWarning, \
+		       "strop functions are obsolete; use string methods")) \
+	     return NULL
+
 /* The lstrip(), rstrip() and strip() functions are implemented
    in do_strip(), which uses an additional parameter to indicate what
    type of strip should occur. */
@@ -95,6 +99,7 @@
 	char *s, *sub;
 	PyObject *list, *item;
 
+	WARN;
 	sub = NULL;
 	n = 0;
 	splitcount = 0;
@@ -167,6 +172,7 @@
 	char* p = NULL;
 	intargfunc getitemfunc;
 
+	WARN;
 	if (!PyArg_ParseTuple(args, "O|t#:join", &seq, &sep, &seplen))
 		return NULL;
 	if (sep == NULL) {
@@ -292,6 +298,7 @@
 	char *s, *sub;
 	int len, n, i = 0, last = INT_MAX;
 
+	WARN;
 	if (!PyArg_ParseTuple(args, "t#t#|ii:find", &s, &len, &sub, &n, &i, &last))
 		return NULL;
 
@@ -335,6 +342,7 @@
 	int len, n, j;
 	int i = 0, last = INT_MAX;
 
+	WARN;
 	if (!PyArg_ParseTuple(args, "t#t#|ii:rfind", &s, &len, &sub, &n, &i, &last))
 		return NULL;
 
@@ -404,6 +412,7 @@
 static PyObject *
 strop_strip(PyObject *self, PyObject *args)
 {
+	WARN;
 	return do_strip(args, BOTHSTRIP);
 }
 
@@ -416,6 +425,7 @@
 static PyObject *
 strop_lstrip(PyObject *self, PyObject *args)
 {
+	WARN;
 	return do_strip(args, LEFTSTRIP);
 }
 
@@ -428,6 +438,7 @@
 static PyObject *
 strop_rstrip(PyObject *self, PyObject *args)
 {
+	WARN;
 	return do_strip(args, RIGHTSTRIP);
 }
 
@@ -445,6 +456,7 @@
 	PyObject *new;
 	int changed;
 
+	WARN;
 	if (!PyArg_Parse(args, "t#", &s, &n))
 		return NULL;
 	new = PyString_FromStringAndSize(NULL, n);
@@ -483,6 +495,7 @@
 	PyObject *new;
 	int changed;
 
+	WARN;
 	if (!PyArg_Parse(args, "t#", &s, &n))
 		return NULL;
 	new = PyString_FromStringAndSize(NULL, n);
@@ -522,6 +535,7 @@
 	PyObject *new;
 	int changed;
 
+	WARN;
 	if (!PyArg_Parse(args, "t#", &s, &n))
 		return NULL;
 	new = PyString_FromStringAndSize(NULL, n);
@@ -577,6 +591,7 @@
 	int stringlen;
 	int tabsize = 8;
 
+	WARN;
 	/* Get arguments */
 	if (!PyArg_ParseTuple(args, "s#|i:expandtabs", &string, &stringlen, &tabsize))
 		return NULL;
@@ -642,6 +657,7 @@
 	int i = 0, last = INT_MAX;
 	int m, r;
 
+	WARN;
 	if (!PyArg_ParseTuple(args, "t#t#|ii:count", &s, &len, &sub, &n, &i, &last))
 		return NULL;
 	if (last > len)
@@ -685,6 +701,7 @@
 	PyObject *new;
 	int changed;
 
+	WARN;
 	if (!PyArg_Parse(args, "t#", &s, &n))
 		return NULL;
 	new = PyString_FromStringAndSize(NULL, n);
@@ -733,6 +750,7 @@
 	long x;
 	char buffer[256]; /* For errors */
 
+	WARN;
 	if (!PyArg_ParseTuple(args, "s|i:atoi", &s, &base))
 		return NULL;
 
@@ -786,6 +804,7 @@
 	PyObject *x;
 	char buffer[256]; /* For errors */
 
+	WARN;
 	if (!PyArg_ParseTuple(args, "s|i:atol", &s, &base))
 		return NULL;
 
@@ -830,6 +849,7 @@
 	double x;
 	char buffer[256]; /* For errors */
 
+	WARN;
 	if (!PyArg_ParseTuple(args, "s:atof", &s))
 		return NULL;
 	while (*s && isspace(Py_CHARMASK(*s)))
@@ -913,6 +933,7 @@
 	PyObject *result;
 	int trans_table[256];
 
+	WARN;
 	if (!PyArg_ParseTuple(args, "St#|t#:translate", &input_obj,
 			      &table1, &tablen, &del_table, &dellen))
 		return NULL;
@@ -1124,6 +1145,7 @@
 	int count = -1;
 	PyObject *new;
 
+	WARN;
 	if (!PyArg_ParseTuple(args, "t#t#t#|i:replace",
 			      &str, &len, &pat, &pat_len, &sub, &sub_len,
 			      &count))
