diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2016-11-21 22:30:32 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2016-11-21 22:30:32 (GMT) |
commit | e425bd95e9f3ceb767e1894cce8cc01a63e7013b (patch) | |
tree | 8435dbd2639fe696b8c65fcb728a1281717daff7 /Modules | |
parent | 4ea37703acae519fcf0bcd23a6821e2972993789 (diff) | |
parent | 546ce65968921f52f1c79a7218e57dc237dbe436 (diff) | |
download | cpython-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.c | 34 |
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} }; |