Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b6f019a

Browse files
committed
Let's assume that the datetime module is always available.
1 parent f45dee9 commit b6f019a

1 file changed

Lines changed: 10 additions & 23 deletions

File tree

Lib/xmlrpc/client.py

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@
130130
import base64
131131
import sys
132132
import time
133+
from datetime import datetime
133134
import http.client
134135
from xml.parsers import expat
135136
import socket
@@ -143,11 +144,6 @@
143144
# --------------------------------------------------------------------
144145
# Internal stuff
145146

146-
try:
147-
import datetime
148-
except ImportError:
149-
datetime = None
150-
151147
def escape(s):
152148
s = s.replace("&", "&")
153149
s = s.replace("<", "&lt;")
@@ -264,11 +260,8 @@ def __repr__(self):
264260
# tuple, or a integer time value.
265261

266262
def _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

365358
def _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

Comments
 (0)