mirror of
https://github.com/python/cpython.git
synced 2025-08-30 21:48:47 +00:00
accept datetime.datetime instances when marshalling;
dateTime.iso8601 elements still unmarshal into xmlrpclib.DateTime objects
This commit is contained in:
parent
bfd7d6a0ea
commit
ba613c3410
2 changed files with 33 additions and 1 deletions
|
@ -148,6 +148,11 @@ try:
|
|||
except NameError:
|
||||
unicode = None # unicode support not available
|
||||
|
||||
try:
|
||||
import datetime
|
||||
except ImportError:
|
||||
datetime = None
|
||||
|
||||
try:
|
||||
_bool_is_builtin = False.__class__.__name__ == "bool"
|
||||
except NameError:
|
||||
|
@ -349,7 +354,10 @@ class DateTime:
|
|||
|
||||
def __init__(self, value=0):
|
||||
if not isinstance(value, StringType):
|
||||
if not isinstance(value, (TupleType, time.struct_time)):
|
||||
if datetime and isinstance(value, datetime.datetime):
|
||||
self.value = value.strftime("%Y%m%dT%H:%M:%S")
|
||||
return
|
||||
elif not isinstance(value, (TupleType, time.struct_time)):
|
||||
if value == 0:
|
||||
value = time.time()
|
||||
value = time.localtime(value)
|
||||
|
@ -699,6 +707,13 @@ class Marshaller:
|
|||
del self.memo[i]
|
||||
dispatch[DictType] = dump_struct
|
||||
|
||||
if datetime:
|
||||
def dump_datetime(self, value, write):
|
||||
write("<value><dateTime.iso8601>")
|
||||
write(value.strftime("%Y%m%dT%H:%M:%S"))
|
||||
write("</dateTime.iso8601></value>\n")
|
||||
dispatch[datetime.datetime] = dump_datetime
|
||||
|
||||
def dump_instance(self, value, write):
|
||||
# check for special wrappers
|
||||
if value.__class__ in WRAPPERS:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue