diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c
index 67700de..9cdabdf 100644
--- a/Modules/_collectionsmodule.c
+++ b/Modules/_collectionsmodule.c
@@ -1186,13 +1186,23 @@
 {
 	/* This calls the object's class.  That only works for subclasses
 	   whose class constructor has the same signature.  Subclasses that
-	   define a different constructor signature must override copy().
+	   define a different constructor signature must override __copy__().
 	*/
 	return PyObject_CallFunctionObjArgs((PyObject*)Py_TYPE(dd),
 					    dd->default_factory, dd, NULL);
 }
 
 static PyObject *
+defdict_copy_method(defdictobject *dd)
+{
+	if (Py_Py3kWarningFlag &&
+	    PyErr_Warn(PyExc_DeprecationWarning, 
+		       "defaultdict.copy() not supported in 3.x") < 0)
+		return NULL;
+	return defdict_copy(dd);
+}
+
+static PyObject *
 defdict_reduce(defdictobject *dd)
 {
 	/* __reduce__ must return a 5-tuple as follows:
@@ -1241,7 +1251,7 @@
 static PyMethodDef defdict_methods[] = {
 	{"__missing__", (PyCFunction)defdict_missing, METH_O,
 	 defdict_missing_doc},
-	{"copy", (PyCFunction)defdict_copy, METH_NOARGS,
+	{"copy", (PyCFunction)defdict_copy_method, METH_NOARGS,
 	 defdict_copy_doc},
 	{"__copy__", (PyCFunction)defdict_copy, METH_NOARGS,
 	 defdict_copy_doc},
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index eaa490e..165221e 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -1528,6 +1528,10 @@
 static PyObject *
 dict_copy(register PyDictObject *mp)
 {
+	if (Py_Py3kWarningFlag &&
+	    PyErr_Warn(PyExc_DeprecationWarning, 
+		       "dict.copy() not supported in 3.x") < 0)
+		return NULL;
 	return PyDict_Copy((PyObject*)mp);
 }
 
diff --git a/Objects/setobject.c b/Objects/setobject.c
index cc2c2ee..3869b3b 100644
--- a/Objects/setobject.c
+++ b/Objects/setobject.c
@@ -1131,8 +1131,22 @@
 }
 
 static PyObject *
+set_copy_method(PySetObject *so)
+{
+	if (Py_Py3kWarningFlag &&
+	    PyErr_Warn(PyExc_DeprecationWarning, 
+		       "set.copy() not supported in 3.x") < 0)
+		return NULL;
+	return make_new_set(Py_TYPE(so), (PyObject *)so);
+}
+
+static PyObject *
 frozenset_copy(PySetObject *so)
 {
+	if (Py_Py3kWarningFlag &&
+	    PyErr_Warn(PyExc_DeprecationWarning, 
+		       "frozenset.copy() not supported in 3.x") < 0)
+		return NULL;
 	if (PyFrozenSet_CheckExact(so)) {
 		Py_INCREF(so);
 		return (PyObject *)so;
@@ -1911,7 +1925,7 @@
 	 clear_doc},
 	{"__contains__",(PyCFunction)set_direct_contains,	METH_O | METH_COEXIST,
 	 contains_doc},
-	{"copy",	(PyCFunction)set_copy,		METH_NOARGS,
+	{"copy",	(PyCFunction)set_copy_method,	METH_NOARGS,
 	 copy_doc},
 	{"discard",	(PyCFunction)set_discard,	METH_O,
 	 discard_doc},
