[Python-checkins] python/nondist/sandbox/datetime doc.txt,1.46,1.47 obj_timetz.c,1.15,1.16 test_both.py,1.63,1.64 test_datetime.py,1.64,1.65
tim_one@users.sourceforge.net
tim_one@users.sourceforge.net
Wed, 11 Dec 2002 18:55:19 -0800
- Previous message: [Python-checkins] python/nondist/sandbox/datetime obj_timetz.c,1.14,1.15 test_both.py,1.62,1.63 test_datetime.py,1.63,1.64
- Next message: [Python-checkins] python/nondist/sandbox/datetime datetime.py,1.93,1.94 test_both.py,1.64,1.65
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/python/python/nondist/sandbox/datetime
In directory sc8-pr-cvs1:/tmp/cvs-serv6799
Modified Files:
doc.txt obj_timetz.c test_both.py test_datetime.py
Log Message:
Implemented the timetz tzinfo convenience functions, and beefed up their
tests.
Index: doc.txt
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/datetime/doc.txt,v
retrieving revision 1.46
retrieving revision 1.47
diff -C2 -d -r1.46 -r1.47
*** doc.txt 12 Dec 2002 00:30:15 -0000 1.46
--- doc.txt 12 Dec 2002 02:55:16 -0000 1.47
***************
*** 832,835 ****
--- 832,844 ----
XXX Sheesh. This needs an example.
+ - utcoffset()
+ If self.tzinfo is None, returns None, else self.tzinfo.utcoffset(self).
+
+ - tzname():
+ If self.tzinfo is None, returns None, else self.tzinfo.tzname(self).
+
+ - dst()
+ If self.tzinfo is None, returns None, else self.tzinfo.dst(self).
+
class datetimetz
Index: obj_timetz.c
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/datetime/obj_timetz.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** obj_timetz.c 12 Dec 2002 02:19:43 -0000 1.15
--- obj_timetz.c 12 Dec 2002 02:55:16 -0000 1.16
***************
*** 61,64 ****
--- 61,97 ----
}
+ /* Indirect access to tzinfo methods. One more "convenience function" and
+ * it won't be possible to find the useful methods anymore <0.5 wink>.
+ */
+ static PyObject *
+ timetz_convienience(PyDateTime_TimeTZ *self, char *name)
+ {
+ PyObject *result;
+
+ if (self->tzinfo == Py_None) {
+ result = Py_None;
+ Py_INCREF(result);
+ }
+ else
+ result = PyObject_CallMethod(self->tzinfo, name, "O", self);
+ return result;
+ }
+
+ /* These are all METH_NOARGS, so don't need to check the arglist. */
+ static PyObject *
+ timetz_utcoffset(PyDateTime_TimeTZ *self, PyObject *unused) {
+ return timetz_convienience(self, "utcoffset");
+ }
+
+ static PyObject *
+ timetz_tzname(PyDateTime_TimeTZ *self, PyObject *unused) {
+ return timetz_convienience(self, "tzname");
+ }
+
+ static PyObject *
+ timetz_dst(PyDateTime_TimeTZ *self, PyObject *unused) {
+ return timetz_convienience(self, "dst");
+ }
+
/* Various ways to turn a timetz into a string. */
***************
*** 350,353 ****
--- 383,395 ----
PyDoc_STR("format -> strftime() style string.")},
+ {"utcoffset", (PyCFunction)timetz_utcoffset, METH_NOARGS,
+ PyDoc_STR("Return self.tzinfo.utcoffset(self).")},
+
+ {"tzname", (PyCFunction)timetz_tzname, METH_NOARGS,
+ PyDoc_STR("Return self.tzinfo.tzname(self).")},
+
+ {"dst", (PyCFunction)timetz_dst, METH_NOARGS,
+ PyDoc_STR("Return self.tzinfo.dst(self).")},
+
{"__setstate__", (PyCFunction)timetz_setstate, METH_O,
PyDoc_STR("__setstate__(state)")},
***************
*** 356,359 ****
--- 398,402 ----
PyDoc_STR("__getstate__() -> state")},
{NULL, NULL}
+
};
Index: test_both.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/datetime/test_both.py,v
retrieving revision 1.63
retrieving revision 1.64
diff -C2 -d -r1.63 -r1.64
*** test_both.py 12 Dec 2002 02:19:43 -0000 1.63
--- test_both.py 12 Dec 2002 02:55:16 -0000 1.64
***************
*** 64,70 ****
class FixedOffset(tzinfo):
! def __init__(self, offset, name):
self.__offset = offset
self.__name = name
def __repr__(self):
return self.__name.lower()
--- 64,71 ----
class FixedOffset(tzinfo):
! def __init__(self, offset, name, dstoffset=42):
self.__offset = offset
self.__name = name
+ self.__dstoffset = dstoffset
def __repr__(self):
return self.__name.lower()
***************
*** 74,78 ****
return self.__name
def dst(self, dt):
! return 0
class TestTZInfo(unittest.TestCase):
--- 75,79 ----
return self.__name
def dst(self, dt):
! return self.__dstoffset
class TestTZInfo(unittest.TestCase):
***************
*** 97,101 ****
self.assertEqual(fo.utcoffset(dt), 3)
self.assertEqual(fo.tzname(dt), "Three")
! self.assertEqual(fo.dst(dt), 0)
#############################################################################
--- 98,102 ----
self.assertEqual(fo.utcoffset(dt), 3)
self.assertEqual(fo.tzname(dt), "Three")
! self.assertEqual(fo.dst(dt), 42)
#############################################################################
***************
*** 1477,1505 ****
def test_zones(self):
! est = FixedOffset(-300, "EST")
! utc = FixedOffset(0, "UTC")
! met = FixedOffset(60, "MET")
t1 = timetz( 7, 47, tzinfo=est)
t2 = timetz(12, 47, tzinfo=utc)
t3 = timetz(13, 47, tzinfo=met)
self.assertEqual(t1.tzinfo, est)
self.assertEqual(t2.tzinfo, utc)
self.assertEqual(t3.tzinfo, met)
! # XXX The commented-out tests are still in test_datetime.py.
! # self.assertEqual(t1.utcoffset(), -300)
! # self.assertEqual(t2.utcoffset(), 0)
! # self.assertEqual(t3.utcoffset(), 60)
! # self.assertEqual(t1.tzname(), "EST")
! # self.assertEqual(t2.tzname(), "UTC")
! # self.assertEqual(t3.tzname(), "MET")
self.assertEqual(hash(t1), hash(t2))
self.assertEqual(hash(t1), hash(t3))
self.assertEqual(hash(t2), hash(t3))
self.assertEqual(t1, t2)
self.assertEqual(t1, t3)
self.assertEqual(t2, t3)
self.assertEqual(str(t1), "07:47:00-05:00")
self.assertEqual(str(t2), "12:47:00+00:00")
self.assertEqual(str(t3), "13:47:00+01:00")
if TESTING_C:
d = '_datetime.'
--- 1478,1534 ----
def test_zones(self):
! est = FixedOffset(-300, "EST", 1)
! utc = FixedOffset(0, "UTC", -2)
! met = FixedOffset(60, "MET", 3)
t1 = timetz( 7, 47, tzinfo=est)
t2 = timetz(12, 47, tzinfo=utc)
t3 = timetz(13, 47, tzinfo=met)
+ t4 = timetz(microsecond=40)
+ t5 = timetz(microsecond=40, tzinfo=utc)
+
self.assertEqual(t1.tzinfo, est)
self.assertEqual(t2.tzinfo, utc)
self.assertEqual(t3.tzinfo, met)
! self.failUnless(t4.tzinfo is None)
! self.assertEqual(t5.tzinfo, utc)
!
! self.assertEqual(t1.utcoffset(), -300)
! self.assertEqual(t2.utcoffset(), 0)
! self.assertEqual(t3.utcoffset(), 60)
! self.failUnless(t4.utcoffset() is None)
! self.assertRaises(TypeError, t1.utcoffset, "no args")
!
! self.assertEqual(t1.tzname(), "EST")
! self.assertEqual(t2.tzname(), "UTC")
! self.assertEqual(t3.tzname(), "MET")
! self.failUnless(t4.tzname() is None)
! self.assertRaises(TypeError, t1.tzname, "no args")
!
! self.assertEqual(t1.dst(), 1)
! self.assertEqual(t2.dst(), -2)
! self.assertEqual(t3.dst(), 3)
! self.failUnless(t4.dst() is None)
! self.assertRaises(TypeError, t1.dst, "no args")
!
self.assertEqual(hash(t1), hash(t2))
self.assertEqual(hash(t1), hash(t3))
self.assertEqual(hash(t2), hash(t3))
+
self.assertEqual(t1, t2)
self.assertEqual(t1, t3)
self.assertEqual(t2, t3)
+
self.assertEqual(str(t1), "07:47:00-05:00")
self.assertEqual(str(t2), "12:47:00+00:00")
self.assertEqual(str(t3), "13:47:00+01:00")
+ self.assertEqual(str(t4), "00:00:00.000040")
+ self.assertEqual(str(t5), "00:00:00.000040+00:00")
+
+ self.assertEqual(t1.isoformat(), "07:47:00-05:00")
+ self.assertEqual(t2.isoformat(), "12:47:00+00:00")
+ self.assertEqual(t3.isoformat(), "13:47:00+01:00")
+ self.assertEqual(t4.isoformat(), "00:00:00.000040")
+ self.assertEqual(t5.isoformat(), "00:00:00.000040+00:00")
+
if TESTING_C:
d = '_datetime.'
***************
*** 1509,1515 ****
self.assertEqual(repr(t2), d + "timetz(12, 47, tzinfo=utc)")
self.assertEqual(repr(t3), d + "timetz(13, 47, tzinfo=met)")
! self.assertEqual(t1.isoformat(), "07:47:00-05:00")
! self.assertEqual(t2.isoformat(), "12:47:00+00:00")
! self.assertEqual(t3.isoformat(), "13:47:00+01:00")
# self.assertEqual(t1.strftime("%H:%M:%S %Z %z"), "07:47:00 EST -0500")
# self.assertEqual(t2.strftime("%H:%M:%S %Z %z"), "12:47:00 UTC +0000")
--- 1538,1545 ----
self.assertEqual(repr(t2), d + "timetz(12, 47, tzinfo=utc)")
self.assertEqual(repr(t3), d + "timetz(13, 47, tzinfo=met)")
! self.assertEqual(repr(t4), d + "timetz(0, 0, 0, 40)")
! self.assertEqual(repr(t5), d + "timetz(0, 0, 0, 40, tzinfo=utc)")
!
! # XXX The commented-out tests are still in test_datetime.py.
# self.assertEqual(t1.strftime("%H:%M:%S %Z %z"), "07:47:00 EST -0500")
# self.assertEqual(t2.strftime("%H:%M:%S %Z %z"), "12:47:00 UTC +0000")
Index: test_datetime.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/datetime/test_datetime.py,v
retrieving revision 1.64
retrieving revision 1.65
diff -C2 -d -r1.64 -r1.65
*** test_datetime.py 12 Dec 2002 02:19:43 -0000 1.64
--- test_datetime.py 12 Dec 2002 02:55:16 -0000 1.65
***************
*** 27,31 ****
return self.__name
def dst(self, dt):
! return 0
--- 27,31 ----
return self.__name
def dst(self, dt):
! return 42
***************
*** 42,51 ****
t3 = timetz(13, 47, tzinfo=met)
# XXX Most of the tests here have moved into test_both.py.
- self.assertEqual(t1.utcoffset(), -300)
- self.assertEqual(t2.utcoffset(), 0)
- self.assertEqual(t3.utcoffset(), 60)
- self.assertEqual(t1.tzname(), "EST")
- self.assertEqual(t2.tzname(), "UTC")
- self.assertEqual(t3.tzname(), "MET")
self.assertEqual(t1.strftime("%H:%M:%S %Z %z"), "07:47:00 EST -0500")
self.assertEqual(t2.strftime("%H:%M:%S %Z %z"), "12:47:00 UTC +0000")
--- 42,45 ----
- Previous message: [Python-checkins] python/nondist/sandbox/datetime obj_timetz.c,1.14,1.15 test_both.py,1.62,1.63 test_datetime.py,1.63,1.64
- Next message: [Python-checkins] python/nondist/sandbox/datetime datetime.py,1.93,1.94 test_both.py,1.64,1.65
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]