summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/_collectionsmodule.c14
-rw-r--r--Objects/dictobject.c4
-rw-r--r--Objects/setobject.c16
3 files changed, 31 insertions, 3 deletions
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 @@ defdict_copy(defdictobject *dd)
{
/* 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 @@ defdict_reduce(defdictobject *dd)
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 @@ PyDict_Merge(PyObject *a, PyObject *b, int override)
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 @@ set_copy(PySetObject *so)
}
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 @@ static PyMethodDef set_methods[] = {
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},