Let's assume that the datetime module is always available.

This commit is contained in:
Florent Xicluna 2011-10-30 23:54:17 +01:00
parent f45dee998f
commit b6f019a080

View file

@ -130,6 +130,7 @@ Exported functions:
import base64 import base64
import sys import sys
import time import time
from datetime import datetime
import http.client import http.client
from xml.parsers import expat from xml.parsers import expat
import socket import socket
@ -143,11 +144,6 @@ except ImportError:
# -------------------------------------------------------------------- # --------------------------------------------------------------------
# Internal stuff # Internal stuff
try:
import datetime
except ImportError:
datetime = None
def escape(s): def escape(s):
s = s.replace("&", "&") s = s.replace("&", "&")
s = s.replace("<", "&lt;") s = s.replace("<", "&lt;")
@ -264,11 +260,8 @@ boolean = Boolean = bool
# tuple, or a integer time value. # tuple, or a integer time value.
def _strftime(value): def _strftime(value):
if datetime: if isinstance(value, datetime):
if isinstance(value, datetime.datetime): return value.strftime("%Y%m%dT%H:%M:%S")
return "%04d%02d%02dT%02d:%02d:%02d" % (
value.year, value.month, value.day,
value.hour, value.minute, value.second)
if not isinstance(value, (tuple, time.struct_time)): if not isinstance(value, (tuple, time.struct_time)):
if value == 0: if value == 0:
@ -293,7 +286,7 @@ class DateTime:
if isinstance(other, DateTime): if isinstance(other, DateTime):
s = self.value s = self.value
o = other.value o = other.value
elif datetime and isinstance(other, datetime.datetime): elif isinstance(other, datetime):
s = self.value s = self.value
o = other.strftime("%Y%m%dT%H:%M:%S") o = other.strftime("%Y%m%dT%H:%M:%S")
elif isinstance(other, str): elif isinstance(other, str):
@ -363,8 +356,7 @@ def _datetime(data):
return value return value
def _datetime_type(data): def _datetime_type(data):
t = time.strptime(data, "%Y%m%dT%H:%M:%S") return datetime.strptime(data, "%Y%m%dT%H:%M:%S")
return datetime.datetime(*tuple(t)[:6])
## ##
# Wrapper for binary data. This can be used to transport any kind # Wrapper for binary data. This can be used to transport any kind
@ -584,12 +576,11 @@ class Marshaller:
del self.memo[i] del self.memo[i]
dispatch[dict] = dump_struct dispatch[dict] = dump_struct
if datetime: def dump_datetime(self, value, write):
def dump_datetime(self, value, write): write("<value><dateTime.iso8601>")
write("<value><dateTime.iso8601>") write(_strftime(value))
write(_strftime(value)) write("</dateTime.iso8601></value>\n")
write("</dateTime.iso8601></value>\n") dispatch[datetime] = dump_datetime
dispatch[datetime.datetime] = dump_datetime
def dump_instance(self, value, write): def dump_instance(self, value, write):
# check for special wrappers # check for special wrappers
@ -632,8 +623,6 @@ class Unmarshaller:
self._encoding = "utf-8" self._encoding = "utf-8"
self.append = self._stack.append self.append = self._stack.append
self._use_datetime = use_datetime self._use_datetime = use_datetime
if use_datetime and not datetime:
raise ValueError("the datetime module is not available")
def close(self): def close(self):
# return response tuple and target method # return response tuple and target method
@ -862,8 +851,6 @@ def getparser(use_datetime=False):
Create an instance of the fastest available parser, and attach it Create an instance of the fastest available parser, and attach it
to an unmarshalling object. Return both objects. to an unmarshalling object. Return both objects.
""" """
if use_datetime and not datetime:
raise ValueError("the datetime module is not available")
if FastParser and FastUnmarshaller: if FastParser and FastUnmarshaller:
if use_datetime: if use_datetime:
mkdatetime = _datetime_type mkdatetime = _datetime_type