Add -3 warnings that set.copy(), dict.copy(), and defaultdict.copy() will go away in Py3.x
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},