[Python-checkins] python/nondist/sandbox/datetime datetime.c,1.58,1.59 obj_timetz.c,1.10,1.11
tim_one@users.sourceforge.net
tim_one@users.sourceforge.net
Wed, 11 Dec 2002 17:11:11 -0800
Update of /cvsroot/python/python/nondist/sandbox/datetime
In directory sc8-pr-cvs1:/tmp/cvs-serv11692
Modified Files:
datetime.c obj_timetz.c
Log Message:
Whatever. It still compiles <wink>.
Index: datetime.c
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/datetime/datetime.c,v
retrieving revision 1.58
retrieving revision 1.59
diff -C2 -d -r1.58 -r1.59
*** datetime.c 11 Dec 2002 21:47:38 -0000 1.58
--- datetime.c 12 Dec 2002 01:11:08 -0000 1.59
***************
*** 813,818 ****
init_datetime(void)
{
! PyObject *m;
! PyObject *d, *dt;
/* Types that use __reduce__ for pickling need to set the following
* magical attr in the type dict, with a true value.
--- 813,820 ----
init_datetime(void)
{
! PyObject *m; /* a module object */
! PyObject *d; /* its dict */
! PyObject *x;
!
/* Types that use __reduce__ for pickling need to set the following
* magical attr in the type dict, with a true value.
***************
*** 842,913 ****
return;
! dt = new_delta(0, 0, 1, 0);
! if (dt == NULL || PyDict_SetItemString(d, "resolution", dt) < 0)
return;
! Py_DECREF(dt);
! dt = new_delta(-MAX_DELTA_DAYS, 0, 0, 0);
! if (dt == NULL || PyDict_SetItemString(d, "min", dt) < 0)
return;
! Py_DECREF(dt);
! dt = new_delta(MAX_DELTA_DAYS, 24*3600-1, 1000000-1, 0);
! if (dt == NULL || PyDict_SetItemString(d, "max", dt) < 0)
return;
! Py_DECREF(dt);
/* date values */
d = PyDateTime_DateType.tp_dict;
! dt = new_date(1, 1, 1);
! if (dt == NULL || PyDict_SetItemString(d, "min", dt) < 0)
return;
! Py_DECREF(dt);
! dt = new_date(MAXYEAR, 12, 31);
! if (dt == NULL || PyDict_SetItemString(d, "max", dt) < 0)
return;
! Py_DECREF(dt);
! dt = new_delta(1, 0, 0, 0);
! if (dt == NULL || PyDict_SetItemString(d, "resolution", dt) < 0)
return;
! Py_DECREF(dt);
/* datetime values */
d = PyDateTime_DateTimeType.tp_dict;
! dt = new_datetime(1, 1, 1, 0, 0, 0, 0);
! if (dt == NULL || PyDict_SetItemString(d, "min", dt) < 0)
return;
! Py_DECREF(dt);
! dt = new_datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999);
! if (dt == NULL || PyDict_SetItemString(d, "max", dt) < 0)
return;
! Py_DECREF(dt);
! dt = new_delta(0, 0, 1, 0);
! if (dt == NULL || PyDict_SetItemString(d, "resolution", dt) < 0)
return;
! Py_DECREF(dt);
/* time values */
d = PyDateTime_TimeType.tp_dict;
! dt = new_time(0, 0, 0, 0);
! if (dt == NULL || PyDict_SetItemString(d, "min", dt) < 0)
return;
! Py_DECREF(dt);
! dt = new_time(23, 59, 59, 999999);
! if (dt == NULL || PyDict_SetItemString(d, "max", dt) < 0)
return;
! Py_DECREF(dt);
! dt = new_delta(0, 0, 1, 0);
! if (dt == NULL || PyDict_SetItemString(d, "resolution", dt) < 0)
return;
! Py_DECREF(dt);
Py_DECREF(safepickle);
--- 844,933 ----
return;
! x = new_delta(0, 0, 1, 0);
! if (x == NULL || PyDict_SetItemString(d, "resolution", x) < 0)
return;
! Py_DECREF(x);
! x = new_delta(-MAX_DELTA_DAYS, 0, 0, 0);
! if (x == NULL || PyDict_SetItemString(d, "min", x) < 0)
return;
! Py_DECREF(x);
! x = new_delta(MAX_DELTA_DAYS, 24*3600-1, 1000000-1, 0);
! if (x == NULL || PyDict_SetItemString(d, "max", x) < 0)
return;
! Py_DECREF(x);
/* date values */
d = PyDateTime_DateType.tp_dict;
! x = new_date(1, 1, 1);
! if (x == NULL || PyDict_SetItemString(d, "min", x) < 0)
return;
! Py_DECREF(x);
! x = new_date(MAXYEAR, 12, 31);
! if (x == NULL || PyDict_SetItemString(d, "max", x) < 0)
return;
! Py_DECREF(x);
! x = new_delta(1, 0, 0, 0);
! if (x == NULL || PyDict_SetItemString(d, "resolution", x) < 0)
return;
! Py_DECREF(x);
/* datetime values */
d = PyDateTime_DateTimeType.tp_dict;
! x = new_datetime(1, 1, 1, 0, 0, 0, 0);
! if (x == NULL || PyDict_SetItemString(d, "min", x) < 0)
return;
! Py_DECREF(x);
! x = new_datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999);
! if (x == NULL || PyDict_SetItemString(d, "max", x) < 0)
return;
! Py_DECREF(x);
! x = new_delta(0, 0, 1, 0);
! if (x == NULL || PyDict_SetItemString(d, "resolution", x) < 0)
return;
! Py_DECREF(x);
/* time values */
d = PyDateTime_TimeType.tp_dict;
! x = new_time(0, 0, 0, 0);
! if (x == NULL || PyDict_SetItemString(d, "min", x) < 0)
return;
! Py_DECREF(x);
! x = new_time(23, 59, 59, 999999);
! if (x == NULL || PyDict_SetItemString(d, "max", x) < 0)
return;
! Py_DECREF(x);
! x = new_delta(0, 0, 1, 0);
! if (x == NULL || PyDict_SetItemString(d, "resolution", x) < 0)
return;
! Py_DECREF(x);
!
! /* timetz values */
! d = PyDateTime_TimeTZType.tp_dict;
!
! x = new_timetz(0, 0, 0, 0, Py_None);
! if (x == NULL || PyDict_SetItemString(d, "min", x) < 0)
! return;
! Py_DECREF(x);
!
! x = new_timetz(23, 59, 59, 999999, Py_None);
! if (x == NULL || PyDict_SetItemString(d, "max", x) < 0)
! return;
! Py_DECREF(x);
!
! x = new_delta(0, 0, 1, 0);
! if (x == NULL || PyDict_SetItemString(d, "resolution", x) < 0)
! return;
! Py_DECREF(x);
Py_DECREF(safepickle);
Index: obj_timetz.c
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/datetime/obj_timetz.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** obj_timetz.c 11 Dec 2002 22:20:17 -0000 1.10
--- obj_timetz.c 12 Dec 2002 01:11:09 -0000 1.11
***************
*** 117,120 ****
--- 117,121 ----
}
+ /* XXX This one's going to be a PITA. */
static PyObject *
timetz_strftime(PyDateTime_TimeTZ *self, PyObject *format)
***************
*** 144,157 ****
timetz_richcompare(PyDateTime_TimeTZ *self, PyObject *other, int op)
{
long diff;
if (!PyType_IsSubtype(other->ob_type, &PyDateTime_TimeType)) {
PyErr_Format(PyExc_TypeError,
! "can't compare time to %s instance",
other->ob_type->tp_name);
return NULL;
}
! diff = memcmp(self->data, ((PyDateTime_TimeTZ *)other)->data,
! _PyDateTime_TIME_DATASIZE);
return diff_to_bool(diff, op);
}
--- 145,219 ----
timetz_richcompare(PyDateTime_TimeTZ *self, PyObject *other, int op)
{
+ PyObject *self_tzinfo;
+ PyObject *other_tzinfo;
+ long self_offset;
+ long other_offset;
+ int self_none;
+ int other_none;
long diff;
if (!PyType_IsSubtype(other->ob_type, &PyDateTime_TimeType)) {
PyErr_Format(PyExc_TypeError,
! "can't compare 'timetz' to '%s'",
other->ob_type->tp_name);
return NULL;
}
!
! self_tzinfo = self->tzinfo;
! other_tzinfo = PyType_IsSubtype(other->ob_type,
! &PyDateTime_TimeTZType) ?
! ((PyDateTime_TimeTZ *)other)->tzinfo :
! Py_None;
!
! if (self_tzinfo == other_tzinfo)
! return time_richcompare((PyDateTime_Time *)self, other, op);
!
! if (self_tzinfo == Py_None) {
! self_offset = 0;
! self_none = 1;
! }
! else {
! self_offset = get_utcoffset(self_tzinfo,
! (PyObject *)self,
! &self_none);
! if (self_offset == -1 && PyErr_Occurred())
! return NULL;
! }
!
! if (other_tzinfo == Py_None) {
! other_offset = 0;
! other_none = 1;
! }
! else {
! other_offset = get_utcoffset(other_tzinfo,
! (PyObject *)other,
! &other_none);
! if (other_offset == -1 && PyErr_Occurred())
! return NULL;
! }
!
! if (self_none ^ other_none) {
! PyErr_SetString(PyExc_TypeError,
! "can't compare naive and timezone-aware "
! "times");
! return NULL;
! }
!
! if (self_offset == other_offset)
! return time_richcompare((PyDateTime_Time *)self, other, op);
!
! /* Convert everything except microseconds to seconds. These can't
! * overflow.
! */
! self_offset = TIME_GET_HOUR(self) * 3600 +
! (TIME_GET_MINUTE(self) - self_offset) * 60 +
! TIME_GET_SECOND(self);
! other_offset = TIME_GET_HOUR(other) * 3600 +
! (TIME_GET_MINUTE(other) - other_offset) * 60 +
! TIME_GET_SECOND(other);
! diff = self_offset - other_offset;
! if (diff == 0)
! diff = TIME_GET_MICROSECOND(self) -
! TIME_GET_MICROSECOND(other);
return diff_to_bool(diff, op);
}