Update of /cvsroot/python/python/dist/src/Modules In directory sc8-pr-cvs1:/tmp/cvs-serv4868/python/Modules Modified Files: datetimemodule.c Log Message: Implemented .replace() methods for date, datetime, datetimetz, time and timetz. Index: datetimemodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Modules/datetimemodule.c,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** datetimemodule.c 23 Dec 2002 16:17:39 -0000 1.13 --- datetimemodule.c 24 Dec 2002 05:41:27 -0000 1.14 *************** *** 2144,2147 **** --- 2144,2149 ---- /* Constructors. */ + static char *date_kws[] = {"year", "month", "day", NULL}; + static PyObject * date_new(PyTypeObject *type, PyObject *args, PyObject *kw) *************** *** 2152,2160 **** int day; ! static char *keywords[] = { ! "year", "month", "day", NULL ! }; ! ! if (PyArg_ParseTupleAndKeywords(args, kw, "iii", keywords, &year, &month, &day)) { if (check_date_args(year, month, day) < 0) --- 2154,2158 ---- int day; ! if (PyArg_ParseTupleAndKeywords(args, kw, "iii", date_kws, &year, &month, &day)) { if (check_date_args(year, month, day) < 0) *************** *** 2455,2458 **** --- 2453,2476 ---- } + static PyObject * + date_replace(PyDateTime_Date *self, PyObject *args, PyObject *kw) + { + PyObject *clone; + PyObject *tuple; + int year = GET_YEAR(self); + int month = GET_MONTH(self); + int day = GET_DAY(self); + + if (! PyArg_ParseTupleAndKeywords(args, kw, "|iii:replace", date_kws, + &year, &month, &day)) + return NULL; + tuple = Py_BuildValue("iii", year, month, day); + if (tuple == NULL) + return NULL; + clone = date_new(self->ob_type, tuple, NULL); + Py_DECREF(tuple); + return clone; + } + static PyObject *date_getstate(PyDateTime_Date *self); *************** *** 2603,2606 **** --- 2621,2627 ---- "Monday == 0 ... Sunday == 6")}, + {"replace", (PyCFunction)date_replace, METH_KEYWORDS, + PyDoc_STR("Return date with new specified fields.")}, + {"__setstate__", (PyCFunction)date_setstate, METH_O, PyDoc_STR("__setstate__(state)")}, *************** *** 2713,2716 **** --- 2734,2742 ---- /* Constructors. */ + + static char *datetime_kws[] = {"year", "month", "day", + "hour", "minute", "second", "microsecond", + NULL}; + static PyObject * datetime_new(PyTypeObject *type, PyObject *args, PyObject *kw) *************** *** 2725,2734 **** int usecond = 0; ! static char *keywords[] = { ! "year", "month", "day", "hour", "minute", "second", ! "microsecond", NULL ! }; ! ! if (PyArg_ParseTupleAndKeywords(args, kw, "iii|iiii", keywords, &year, &month, &day, &hour, &minute, &second, &usecond)) { --- 2751,2755 ---- int usecond = 0; ! if (PyArg_ParseTupleAndKeywords(args, kw, "iii|iiii", datetime_kws, &year, &month, &day, &hour, &minute, &second, &usecond)) { *************** *** 3202,3205 **** --- 3223,3251 ---- static PyObject * + datetime_replace(PyDateTime_DateTime *self, PyObject *args, PyObject *kw) + { + PyObject *clone; + PyObject *tuple; + int y = GET_YEAR(self); + int m = GET_MONTH(self); + int d = GET_DAY(self); + int hh = DATE_GET_HOUR(self); + int mm = DATE_GET_MINUTE(self); + int ss = DATE_GET_SECOND(self); + int us = DATE_GET_MICROSECOND(self); + + if (! PyArg_ParseTupleAndKeywords(args, kw, "|iiiiiii:replace", + datetime_kws, + &y, &m, &d, &hh, &mm, &ss, &us)) + return NULL; + tuple = Py_BuildValue("iiiiiii", y, m, d, hh, mm, ss, us); + if (tuple == NULL) + return NULL; + clone = datetime_new(self->ob_type, tuple, NULL); + Py_DECREF(tuple); + return clone; + } + + static PyObject * datetime_timetuple(PyDateTime_DateTime *self) { *************** *** 3349,3352 **** --- 3395,3401 ---- "to 'T'.")}, + {"replace", (PyCFunction)datetime_replace, METH_KEYWORDS, + PyDoc_STR("Return datetime with new specified fields.")}, + {"__setstate__", (PyCFunction)datetime_setstate, METH_O, PyDoc_STR("__setstate__(state)")}, *************** *** 3458,3461 **** --- 3507,3512 ---- /* Constructors. */ + static char *time_kws[] = {"hour", "minute", "second", "microsecond", NULL}; + static PyObject * time_new(PyTypeObject *type, PyObject *args, PyObject *kw) *************** *** 3467,3475 **** int usecond = 0; - static char *keywords[] = { - "hour", "minute", "second", "microsecond", NULL - }; ! if (PyArg_ParseTupleAndKeywords(args, kw, "|iiii", keywords, &hour, &minute, &second, &usecond)) { if (check_time_args(hour, minute, second, usecond) < 0) --- 3518,3523 ---- int usecond = 0; ! if (PyArg_ParseTupleAndKeywords(args, kw, "|iiii", time_kws, &hour, &minute, &second, &usecond)) { if (check_time_args(hour, minute, second, usecond) < 0) *************** *** 3670,3673 **** --- 3718,3743 ---- } + static PyObject * + time_replace(PyDateTime_Time *self, PyObject *args, PyObject *kw) + { + PyObject *clone; + PyObject *tuple; + int hh = TIME_GET_HOUR(self); + int mm = TIME_GET_MINUTE(self); + int ss = TIME_GET_SECOND(self); + int us = TIME_GET_MICROSECOND(self); + + if (! PyArg_ParseTupleAndKeywords(args, kw, "|iiii:replace", + time_kws, + &hh, &mm, &ss, &us)) + return NULL; + tuple = Py_BuildValue("iiii", hh, mm, ss, us); + if (tuple == NULL) + return NULL; + clone = time_new(self->ob_type, tuple, NULL); + Py_DECREF(tuple); + return clone; + } + static int time_nonzero(PyDateTime_Time *self) *************** *** 3760,3763 **** --- 3830,3836 ---- PyDoc_STR("format -> strftime() style string.")}, + {"replace", (PyCFunction)time_replace, METH_KEYWORDS, + PyDoc_STR("Return datetime with new specified fields.")}, + {"__setstate__", (PyCFunction)time_setstate, METH_O, PyDoc_STR("__setstate__(state)")}, *************** *** 3978,3981 **** --- 4051,4057 ---- */ + static char *timetz_kws[] = {"hour", "minute", "second", "microsecond", + "tzinfo", NULL}; + static PyObject * timetz_new(PyTypeObject *type, PyObject *args, PyObject *kw) *************** *** 3988,3996 **** PyObject *tzinfo = Py_None; ! static char *keywords[] = { ! "hour", "minute", "second", "microsecond", "tzinfo", NULL ! }; ! ! if (PyArg_ParseTupleAndKeywords(args, kw, "|iiiiO", keywords, &hour, &minute, &second, &usecond, &tzinfo)) { --- 4064,4068 ---- PyObject *tzinfo = Py_None; ! if (PyArg_ParseTupleAndKeywords(args, kw, "|iiiiO", timetz_kws, &hour, &minute, &second, &usecond, &tzinfo)) { *************** *** 4079,4082 **** --- 4151,4177 ---- /* Note: tp_richcompare and tp_hash are inherited from time. */ + static PyObject * + timetz_replace(PyDateTime_TimeTZ *self, PyObject *args, PyObject *kw) + { + PyObject *clone; + PyObject *tuple; + int hh = TIME_GET_HOUR(self); + int mm = TIME_GET_MINUTE(self); + int ss = TIME_GET_SECOND(self); + int us = TIME_GET_MICROSECOND(self); + PyObject *tzinfo = self->tzinfo; + + if (! PyArg_ParseTupleAndKeywords(args, kw, "|iiiiO:replace", + timetz_kws, + &hh, &mm, &ss, &us, &tzinfo)) + return NULL; + tuple = Py_BuildValue("iiiiO", hh, mm, ss, us, tzinfo); + if (tuple == NULL) + return NULL; + clone = timetz_new(self->ob_type, tuple, NULL); + Py_DECREF(tuple); + return clone; + } + static int timetz_nonzero(PyDateTime_TimeTZ *self) *************** *** 4205,4208 **** --- 4300,4306 ---- PyDoc_STR("Return self.tzinfo.dst(self).")}, + {"replace", (PyCFunction)timetz_replace, METH_KEYWORDS, + PyDoc_STR("Return timetz with new specified fields.")}, + {"__setstate__", (PyCFunction)timetz_setstate, METH_O, PyDoc_STR("__setstate__(state)")}, *************** *** 4315,4318 **** --- 4413,4421 ---- } + static char *datetimetz_kws[] = { + "year", "month", "day", "hour", "minute", "second", + "microsecond", "tzinfo", NULL + }; + static PyObject * datetimetz_new(PyTypeObject *type, PyObject *args, PyObject *kw) *************** *** 4328,4337 **** PyObject *tzinfo = Py_None; ! static char *keywords[] = { ! "year", "month", "day", "hour", "minute", "second", ! "microsecond", "tzinfo", NULL ! }; ! ! if (PyArg_ParseTupleAndKeywords(args, kw, "iii|iiiiO", keywords, &year, &month, &day, &hour, &minute, &second, &usecond, &tzinfo)) { --- 4431,4435 ---- PyObject *tzinfo = Py_None; ! if (PyArg_ParseTupleAndKeywords(args, kw, "iii|iiiiO", datetimetz_kws, &year, &month, &day, &hour, &minute, &second, &usecond, &tzinfo)) { *************** *** 4573,4576 **** --- 4671,4701 ---- static PyObject * + datetimetz_replace(PyDateTime_DateTimeTZ *self, PyObject *args, PyObject *kw) + { + PyObject *clone; + PyObject *tuple; + int y = GET_YEAR(self); + int m = GET_MONTH(self); + int d = GET_DAY(self); + int hh = DATE_GET_HOUR(self); + int mm = DATE_GET_MINUTE(self); + int ss = DATE_GET_SECOND(self); + int us = DATE_GET_MICROSECOND(self); + PyObject *tzinfo = self->tzinfo; + + if (! PyArg_ParseTupleAndKeywords(args, kw, "|iiiiiiiO:replace", + datetimetz_kws, + &y, &m, &d, &hh, &mm, &ss, &us, + &tzinfo)) + return NULL; + tuple = Py_BuildValue("iiiiiiiO", y, m, d, hh, mm, ss, us, tzinfo); + if (tuple == NULL) + return NULL; + clone = datetimetz_new(self->ob_type, tuple, NULL); + Py_DECREF(tuple); + return clone; + } + + static PyObject * datetimetz_timetuple(PyDateTime_DateTimeTZ *self) { *************** *** 4780,4783 **** --- 4905,4911 ---- {"dst", (PyCFunction)datetimetz_dst, METH_NOARGS, PyDoc_STR("Return self.tzinfo.dst(self).")}, + + {"replace", (PyCFunction)datetimetz_replace, METH_KEYWORDS, + PyDoc_STR("Return datetimetz with new specified fields.")}, {"__setstate__", (PyCFunction)datetimetz_setstate, METH_O,
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4