? .DS_Store
? .gdb_history
? @test
? autom4te.cache
? build.dbg
? build.opt
? pyconfig.h.in.save
? test_decorators.py-
? Doc/pyvm
? Doc/api/pyobject_track.tex
? Doc/ref/ref.log
? Include/object.h.track_globals.diff
? Include/opcode.h.save
? Include/opcode.h.track_globals.diff
? Include/stringobject.h.save
? Include/stringobject.h.views
? Lib/_strptime.py.save
? Lib/optimize.py
? Lib/encodings/html_entities.py
? Lib/plat-mac/errors.rsrc.df.rsrc
? Lib/test/bcb_tests.sh
? Lib/test/bcbempty.out.exp
? Lib/test/bcbetc.out.exp
? Lib/test/bcbetchosts.out.exp
? Lib/test/bcbexists.out.exp
? Lib/test/bcbnone.out.exp
? Lib/test/bcbtmp.out.exp
? Lib/test/foo
? Lib/test/test_atexitnew.py
? Lib/test/test_file.py.save
? Mac/Tools/IDE/PythonIDE.rsrc.df.rsrc
? Mac/scripts/BuildApplet.rsrc.df.rsrc
? Modules/041531.html
? Objects/041532.html
? Objects/fileobject.c.save
? Objects/object.patch
? Objects/stringobject.c.save
? Objects/stringobject.c.views
? Objects/weakrefobject.patch
? Python/ceval.c.track_globals.diff
? Python/compile.c.save
? Python/marshal.c.file-like
Index: Lib/xmlrpclib.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/xmlrpclib.py,v
retrieving revision 1.41
diff -u -r1.41 xmlrpclib.py
--- Lib/xmlrpclib.py 14 May 2005 20:54:15 -0000 1.41
+++ Lib/xmlrpclib.py 22 Oct 2005 20:58:03 -0000
@@ -357,13 +357,6 @@
if datetime and isinstance(value, datetime.datetime):
self.value = value.strftime("%Y%m%dT%H:%M:%S")
return
- if datetime and isinstance(value, datetime.date):
- self.value = value.strftime("%Y%m%dT%H:%M:%S")
- return
- if datetime and isinstance(value, datetime.time):
- today = datetime.datetime.now().strftime("%Y%m%d")
- self.value = value.strftime(today+"T%H:%M:%S")
- return
if not isinstance(value, (TupleType, time.struct_time)):
if value == 0:
value = time.time()
@@ -371,10 +364,57 @@
value = time.strftime("%Y%m%dT%H:%M:%S", value)
self.value = value
- def __cmp__(self, other):
+ def make_comparable(self, other):
if isinstance(other, DateTime):
- other = other.value
- return cmp(self.value, other)
+ s = self.value
+ o = other.value
+ elif datetime and isinstance(other, datetime.datetime):
+ s = self.value
+ o = other.strftime("%Y%m%dT%H:%M:%S")
+ elif isinstance(other, (str, unicode)):
+ s = self.value
+ o = other
+ elif hasattr(other, "timetuple"):
+ s = self.timetuple()
+ o = other.timetuple()
+ else:
+ otype = (hasattr(other, "__class__")
+ and other.__class__.__name__
+ or type(other))
+ raise TypeError("Can't compare %s and %s" %
+ (self.__class__.__name__, otype))
+ return s, o
+
+ def __lt__(self, other):
+ s, o = self.make_comparable(other)
+ return s < o
+
+ def __le__(self, other):
+ s, o = self.make_comparable(other)
+ return s <= o
+
+ def __gt__(self, other):
+ s, o = self.make_comparable(other)
+ return s > o
+
+ def __ge__(self, other):
+ s, o = self.make_comparable(other)
+ return s >= o
+
+ def __eq__(self, other):
+ s, o = self.make_comparable(other)
+ return s == o
+
+ def __ne__(self, other):
+ s, o = self.make_comparable(other)
+ return s != o
+
+ def timetuple(self):
+ return time.strptime(self.value, "%Y%m%dT%H:%M:%S")
+
+ def __cmp__(self, other):
+ s, o = self.make_comparable(other)
+ return cmp(s, o)
##
# Get date/time value.
@@ -725,19 +765,6 @@
write("\n")
dispatch[datetime.datetime] = dump_datetime
- def dump_date(self, value, write):
- write("")
- write(value.strftime("%Y%m%dT00:00:00"))
- write("\n")
- dispatch[datetime.date] = dump_date
-
- def dump_time(self, value, write):
- write("")
- write(datetime.datetime.now().date().strftime("%Y%m%dT"))
- write(value.strftime("%H:%M:%S"))
- write("\n")
- dispatch[datetime.time] = dump_time
-
def dump_instance(self, value, write):
# check for special wrappers
if value.__class__ in WRAPPERS:
Index: Lib/test/test_xmlrpc.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_xmlrpc.py,v
retrieving revision 1.9
diff -u -r1.9 test_xmlrpc.py
--- Lib/test/test_xmlrpc.py 14 May 2005 20:54:16 -0000 1.9
+++ Lib/test/test_xmlrpc.py 22 Oct 2005 20:58:04 -0000
@@ -1,7 +1,11 @@
-import datetime
import sys
import unittest
import xmlrpclib
+try:
+ import datetime
+except ImportError:
+ datetime = None
+
from test import test_support
try:
@@ -23,58 +27,41 @@
'datetime1': xmlrpclib.DateTime('20050210T11:41:23'),
'datetime2': xmlrpclib.DateTime(
(2005, 02, 10, 11, 41, 23, 0, 1, -1)),
- 'datetime3': xmlrpclib.DateTime(
- datetime.datetime(2005, 02, 10, 11, 41, 23)),
}]
+if datetime:
+ alist[0]['datetime3'] = xmlrpclib.DateTime(
+ datetime.datetime(2005, 02, 10, 11, 41, 23))
+
class XMLRPCTestCase(unittest.TestCase):
def test_dump_load(self):
self.assertEquals(alist,
xmlrpclib.loads(xmlrpclib.dumps((alist,)))[0][0])
- def test_dump_bare_datetime(self):
- # This checks that an unwrapped datetime.date object can be handled
- # by the marshalling code. This can't be done via test_dump_load()
- # since with use_datetime set to 1 the unmarshaller would create
- # datetime objects for the 'datetime[123]' keys as well
- dt = datetime.datetime(2005, 02, 10, 11, 41, 23)
- s = xmlrpclib.dumps((dt,))
- (newdt,), m = xmlrpclib.loads(s, use_datetime=1)
- self.assertEquals(newdt, dt)
- self.assertEquals(m, None)
-
- (newdt,), m = xmlrpclib.loads(s, use_datetime=0)
- self.assertEquals(newdt, xmlrpclib.DateTime('20050210T11:41:23'))
-
- def test_dump_bare_date(self):
- # This checks that an unwrapped datetime.date object can be handled
- # by the marshalling code. This can't be done via test_dump_load()
- # since the unmarshaller produces a datetime object
- d = datetime.datetime(2005, 02, 10, 11, 41, 23).date()
- s = xmlrpclib.dumps((d,))
- (newd,), m = xmlrpclib.loads(s, use_datetime=1)
- self.assertEquals(newd.date(), d)
- self.assertEquals(newd.time(), datetime.time(0, 0, 0))
- self.assertEquals(m, None)
-
- (newdt,), m = xmlrpclib.loads(s, use_datetime=0)
- self.assertEquals(newdt, xmlrpclib.DateTime('20050210T00:00:00'))
-
- def test_dump_bare_time(self):
- # This checks that an unwrapped datetime.time object can be handled
- # by the marshalling code. This can't be done via test_dump_load()
- # since the unmarshaller produces a datetime object
- t = datetime.datetime(2005, 02, 10, 11, 41, 23).time()
- s = xmlrpclib.dumps((t,))
- (newt,), m = xmlrpclib.loads(s, use_datetime=1)
- today = datetime.datetime.now().date().strftime("%Y%m%d")
- self.assertEquals(newt.time(), t)
- self.assertEquals(newt.date(), datetime.datetime.now().date())
- self.assertEquals(m, None)
-
- (newdt,), m = xmlrpclib.loads(s, use_datetime=0)
- self.assertEquals(newdt, xmlrpclib.DateTime('%sT11:41:23'%today))
+ if datetime:
+ def test_dump_bare_datetime(self):
+ # This checks that an unwrapped datetime.date object can be handled
+ # by the marshalling code. This can't be done via test_dump_load()
+ # since with use_datetime set to 1 the unmarshaller would create
+ # datetime objects for the 'datetime[123]' keys as well
+ dt = datetime.datetime(2005, 02, 10, 11, 41, 23)
+ s = xmlrpclib.dumps((dt,))
+ (newdt,), m = xmlrpclib.loads(s, use_datetime=1)
+ self.assertEquals(newdt, dt)
+ self.assertEquals(m, None)
+
+ (newdt,), m = xmlrpclib.loads(s, use_datetime=0)
+ self.assertEquals(newdt, xmlrpclib.DateTime('20050210T11:41:23'))
+
+ def test_cmp_datetime_DateTime(self):
+ now = datetime.datetime.now()
+ dt = xmlrpclib.DateTime(now.timetuple())
+ self.assert_(dt == now)
+ self.assert_(now == dt)
+ then = now + datetime.timedelta(seconds=4)
+ self.assert_(then >= dt)
+ self.assert_(dt < then)
def test_dump_big_long(self):
self.assertRaises(OverflowError, xmlrpclib.dumps, (2L**99,))