mirror of https://github.com/python/cpython
dict.copy() rises from the ashes. Revert r60687.
This commit is contained in:
parent
dad88dc159
commit
a37430a0ce
|
@ -1186,22 +1186,12 @@ 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)
|
||||
{
|
||||
|
@ -1251,7 +1241,7 @@ defdict_reduce(defdictobject *dd)
|
|||
static PyMethodDef defdict_methods[] = {
|
||||
{"__missing__", (PyCFunction)defdict_missing, METH_O,
|
||||
defdict_missing_doc},
|
||||
{"copy", (PyCFunction)defdict_copy_method, METH_NOARGS,
|
||||
{"copy", (PyCFunction)defdict_copy, METH_NOARGS,
|
||||
defdict_copy_doc},
|
||||
{"__copy__", (PyCFunction)defdict_copy, METH_NOARGS,
|
||||
defdict_copy_doc},
|
||||
|
|
|
@ -1528,10 +1528,6 @@ 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);
|
||||
}
|
||||
|
||||
|
|
|
@ -1130,23 +1130,9 @@ set_copy(PySetObject *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 *
|
||||
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;
|
||||
|
@ -1925,7 +1911,7 @@ static PyMethodDef set_methods[] = {
|
|||
clear_doc},
|
||||
{"__contains__",(PyCFunction)set_direct_contains, METH_O | METH_COEXIST,
|
||||
contains_doc},
|
||||
{"copy", (PyCFunction)set_copy_method, METH_NOARGS,
|
||||
{"copy", (PyCFunction)set_copy, METH_NOARGS,
|
||||
copy_doc},
|
||||
{"discard", (PyCFunction)set_discard, METH_O,
|
||||
discard_doc},
|
||||
|
|
Loading…
Reference in New Issue