summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2016-11-21 22:30:32 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2016-11-21 22:30:32 (GMT)
commite425bd95e9f3ceb767e1894cce8cc01a63e7013b (patch)
tree8435dbd2639fe696b8c65fcb728a1281717daff7 /Modules
parent4ea37703acae519fcf0bcd23a6821e2972993789 (diff)
parent546ce65968921f52f1c79a7218e57dc237dbe436 (diff)
downloadcpython-e425bd95e9f3ceb767e1894cce8cc01a63e7013b.zip
cpython-e425bd95e9f3ceb767e1894cce8cc01a63e7013b.tar.gz
cpython-e425bd95e9f3ceb767e1894cce8cc01a63e7013b.tar.bz2
Issue #28752: Restored the __reduce__() methods of datetime objects.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_datetimemodule.c34
1 files changed, 26 insertions, 8 deletions
diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c
index 6597fda..c14aa4f 100644
--- a/Modules/_datetimemodule.c
+++ b/Modules/_datetimemodule.c
@@ -3954,15 +3954,21 @@ time_getstate(PyDateTime_Time *self, int proto)
}
static PyObject *
-time_reduce(PyDateTime_Time *self, PyObject *args)
+time_reduce_ex(PyDateTime_Time *self, PyObject *args)
{
- int proto = 0;
- if (!PyArg_ParseTuple(args, "|i:__reduce_ex__", &proto))
+ int proto;
+ if (!PyArg_ParseTuple(args, "i:__reduce_ex__", &proto))
return NULL;
return Py_BuildValue("(ON)", Py_TYPE(self), time_getstate(self, proto));
}
+static PyObject *
+time_reduce(PyDateTime_Time *self, PyObject *arg)
+{
+ return Py_BuildValue("(ON)", Py_TYPE(self), time_getstate(self, 2));
+}
+
static PyMethodDef time_methods[] = {
{"isoformat", (PyCFunction)time_isoformat, METH_VARARGS | METH_KEYWORDS,
@@ -3988,9 +3994,12 @@ static PyMethodDef time_methods[] = {
{"replace", (PyCFunction)time_replace, METH_VARARGS | METH_KEYWORDS,
PyDoc_STR("Return time with new specified fields.")},
- {"__reduce_ex__", (PyCFunction)time_reduce, METH_VARARGS,
+ {"__reduce_ex__", (PyCFunction)time_reduce_ex, METH_VARARGS,
PyDoc_STR("__reduce_ex__(proto) -> (cls, state)")},
+ {"__reduce__", (PyCFunction)time_reduce, METH_NOARGS,
+ PyDoc_STR("__reduce__() -> (cls, state)")},
+
{NULL, NULL}
};
@@ -5419,15 +5428,21 @@ datetime_getstate(PyDateTime_DateTime *self, int proto)
}
static PyObject *
-datetime_reduce(PyDateTime_DateTime *self, PyObject *args)
+datetime_reduce_ex(PyDateTime_DateTime *self, PyObject *args)
{
- int proto = 0;
- if (!PyArg_ParseTuple(args, "|i:__reduce_ex__", &proto))
+ int proto;
+ if (!PyArg_ParseTuple(args, "i:__reduce_ex__", &proto))
return NULL;
return Py_BuildValue("(ON)", Py_TYPE(self), datetime_getstate(self, proto));
}
+static PyObject *
+datetime_reduce(PyDateTime_DateTime *self, PyObject *arg)
+{
+ return Py_BuildValue("(ON)", Py_TYPE(self), datetime_getstate(self, 2));
+}
+
static PyMethodDef datetime_methods[] = {
/* Class methods: */
@@ -5502,9 +5517,12 @@ static PyMethodDef datetime_methods[] = {
{"astimezone", (PyCFunction)datetime_astimezone, METH_VARARGS | METH_KEYWORDS,
PyDoc_STR("tz -> convert to local time in new timezone tz\n")},
- {"__reduce_ex__", (PyCFunction)datetime_reduce, METH_VARARGS,
+ {"__reduce_ex__", (PyCFunction)datetime_reduce_ex, METH_VARARGS,
PyDoc_STR("__reduce_ex__(proto) -> (cls, state)")},
+ {"__reduce__", (PyCFunction)datetime_reduce, METH_NOARGS,
+ PyDoc_STR("__reduce__() -> (cls, state)")},
+
{NULL, NULL}
};