130130import base64
131131import sys
132132import time
133+ from datetime import datetime
133134import http .client
134135from xml .parsers import expat
135136import socket
143144# --------------------------------------------------------------------
144145# Internal stuff
145146
146- try :
147- import datetime
148- except ImportError :
149- datetime = None
150-
151147def escape (s ):
152148 s = s .replace ("&" , "&" )
153149 s = s .replace ("<" , "<" )
@@ -264,11 +260,8 @@ def __repr__(self):
264260# tuple, or a integer time value.
265261
266262def _strftime (value ):
267- if datetime :
268- if isinstance (value , datetime .datetime ):
269- return "%04d%02d%02dT%02d:%02d:%02d" % (
270- value .year , value .month , value .day ,
271- value .hour , value .minute , value .second )
263+ if isinstance (value , datetime ):
264+ return value .strftime ("%Y%m%dT%H:%M:%S" )
272265
273266 if not isinstance (value , (tuple , time .struct_time )):
274267 if value == 0 :
@@ -293,7 +286,7 @@ def make_comparable(self, other):
293286 if isinstance (other , DateTime ):
294287 s = self .value
295288 o = other .value
296- elif datetime and isinstance (other , datetime . datetime ):
289+ elif isinstance (other , datetime ):
297290 s = self .value
298291 o = other .strftime ("%Y%m%dT%H:%M:%S" )
299292 elif isinstance (other , str ):
@@ -363,8 +356,7 @@ def _datetime(data):
363356 return value
364357
365358def _datetime_type (data ):
366- t = time .strptime (data , "%Y%m%dT%H:%M:%S" )
367- return datetime .datetime (* tuple (t )[:6 ])
359+ return datetime .strptime (data , "%Y%m%dT%H:%M:%S" )
368360
369361##
370362# Wrapper for binary data. This can be used to transport any kind
@@ -584,12 +576,11 @@ def dump_struct(self, value, write, escape=escape):
584576 del self .memo [i ]
585577 dispatch [dict ] = dump_struct
586578
587- if datetime :
588- def dump_datetime (self , value , write ):
589- write ("<value><dateTime.iso8601>" )
590- write (_strftime (value ))
591- write ("</dateTime.iso8601></value>\n " )
592- dispatch [datetime .datetime ] = dump_datetime
579+ def dump_datetime (self , value , write ):
580+ write ("<value><dateTime.iso8601>" )
581+ write (_strftime (value ))
582+ write ("</dateTime.iso8601></value>\n " )
583+ dispatch [datetime ] = dump_datetime
593584
594585 def dump_instance (self , value , write ):
595586 # check for special wrappers
@@ -632,8 +623,6 @@ def __init__(self, use_datetime=False):
632623 self ._encoding = "utf-8"
633624 self .append = self ._stack .append
634625 self ._use_datetime = use_datetime
635- if use_datetime and not datetime :
636- raise ValueError ("the datetime module is not available" )
637626
638627 def close (self ):
639628 # return response tuple and target method
@@ -862,8 +851,6 @@ def getparser(use_datetime=False):
862851 Create an instance of the fastest available parser, and attach it
863852 to an unmarshalling object. Return both objects.
864853 """
865- if use_datetime and not datetime :
866- raise ValueError ("the datetime module is not available" )
867854 if FastParser and FastUnmarshaller :
868855 if use_datetime :
869856 mkdatetime = _datetime_type
0 commit comments