dict.copy() rises from the ashes. Revert r60687.

This commit is contained in:
Raymond Hettinger 2008-02-12 19:05:36 +00:00
parent dad88dc159
commit a37430a0ce
3 changed files with 3 additions and 31 deletions

View File

@ -1186,22 +1186,12 @@ defdict_copy(defdictobject *dd)
{ {
/* This calls the object's class. That only works for subclasses /* This calls the object's class. That only works for subclasses
whose class constructor has the same signature. Subclasses that 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), return PyObject_CallFunctionObjArgs((PyObject*)Py_TYPE(dd),
dd->default_factory, dd, NULL); 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 * static PyObject *
defdict_reduce(defdictobject *dd) defdict_reduce(defdictobject *dd)
{ {
@ -1251,7 +1241,7 @@ defdict_reduce(defdictobject *dd)
static PyMethodDef defdict_methods[] = { static PyMethodDef defdict_methods[] = {
{"__missing__", (PyCFunction)defdict_missing, METH_O, {"__missing__", (PyCFunction)defdict_missing, METH_O,
defdict_missing_doc}, defdict_missing_doc},
{"copy", (PyCFunction)defdict_copy_method, METH_NOARGS, {"copy", (PyCFunction)defdict_copy, METH_NOARGS,
defdict_copy_doc}, defdict_copy_doc},
{"__copy__", (PyCFunction)defdict_copy, METH_NOARGS, {"__copy__", (PyCFunction)defdict_copy, METH_NOARGS,
defdict_copy_doc}, defdict_copy_doc},

View File

@ -1528,10 +1528,6 @@ PyDict_Merge(PyObject *a, PyObject *b, int override)
static PyObject * static PyObject *
dict_copy(register PyDictObject *mp) 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); return PyDict_Copy((PyObject*)mp);
} }

View File

@ -1130,23 +1130,9 @@ set_copy(PySetObject *so)
return make_new_set(Py_TYPE(so), (PyObject *)so); return make_new_set(Py_TYPE(so), (PyObject *)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 * static PyObject *
frozenset_copy(PySetObject *so) 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)) { if (PyFrozenSet_CheckExact(so)) {
Py_INCREF(so); Py_INCREF(so);
return (PyObject *)so; return (PyObject *)so;
@ -1925,7 +1911,7 @@ static PyMethodDef set_methods[] = {
clear_doc}, clear_doc},
{"__contains__",(PyCFunction)set_direct_contains, METH_O | METH_COEXIST, {"__contains__",(PyCFunction)set_direct_contains, METH_O | METH_COEXIST,
contains_doc}, contains_doc},
{"copy", (PyCFunction)set_copy_method, METH_NOARGS, {"copy", (PyCFunction)set_copy, METH_NOARGS,
copy_doc}, copy_doc},
{"discard", (PyCFunction)set_discard, METH_O, {"discard", (PyCFunction)set_discard, METH_O,
discard_doc}, discard_doc},