[Python-3000-checkins] r55610 - python/branches/py3k-struni/Lib/xmlrpclib.py

guido.van.rossum python-3000-checkins at python.org
Sun May 27 11:17:50 CEST 2007


Author: guido.van.rossum
Date: Sun May 27 11:17:48 2007
New Revision: 55610

Modified:
   python/branches/py3k-struni/Lib/xmlrpclib.py
Log:
Make xmlrpclib fail less (test_sundry passes).


Modified: python/branches/py3k-struni/Lib/xmlrpclib.py
==============================================================================
--- python/branches/py3k-struni/Lib/xmlrpclib.py	(original)
+++ python/branches/py3k-struni/Lib/xmlrpclib.py	Sun May 27 11:17:48 2007
@@ -144,11 +144,6 @@
 # Internal stuff
 
 try:
-    str
-except NameError:
-    str = None # unicode support not available
-
-try:
     import datetime
 except ImportError:
     datetime = None
@@ -160,7 +155,7 @@
 
 def _decode(data, encoding, is8bit=re.compile("[\x80-\xff]").search):
     # decode non-ascii string (if possible)
-    if str and encoding and is8bit(data):
+    if encoding and is8bit(data):
         data = str(data, encoding)
     return data
 
@@ -169,15 +164,11 @@
     s = s.replace("<", "&lt;")
     return s.replace(">", "&gt;",)
 
-if str:
-    def _stringify(string):
-        # convert to 7-bit ascii if possible
-        try:
-            return string.encode("ascii")
-        except UnicodeError:
-            return string
-else:
-    def _stringify(string):
+def _stringify(string):
+    # convert to 7-bit ascii if possible
+    try:
+        return string.encode("ascii")
+    except UnicodeError:
         return string
 
 __version__ = "1.0.1"
@@ -306,7 +297,7 @@
     """
 
     def __init__(self, value=0):
-        if not isinstance(value, StringType):
+        if not isinstance(value, basestring):
             if datetime and isinstance(value, datetime.datetime):
                 self.value = value.strftime("%Y%m%dT%H:%M:%S")
                 return
@@ -627,15 +618,14 @@
         write("<value><string>")
         write(escape(value))
         write("</string></value>\n")
-    dispatch[StringType] = dump_string
+    dispatch[str8] = dump_string
 
-    if str:
-        def dump_unicode(self, value, write, escape=escape):
-            value = value.encode(self.encoding)
-            write("<value><string>")
-            write(escape(value))
-            write("</string></value>\n")
-        dispatch[UnicodeType] = dump_unicode
+    def dump_unicode(self, value, write, escape=escape):
+        value = value.encode(self.encoding)
+        write("<value><string>")
+        write(escape(value))
+        write("</string></value>\n")
+    dispatch[str] = dump_unicode
 
     def dump_array(self, value, write):
         i = id(value)
@@ -660,11 +650,10 @@
         write("<value><struct>\n")
         for k, v in value.items():
             write("<member>\n")
-            if type(k) is not StringType:
-                if str and type(k) is UnicodeType:
-                    k = k.encode(self.encoding)
-                else:
-                    raise TypeError, "dictionary key must be string"
+            if isinstance(k, basestring):
+                k = k.encode(self.encoding)
+            else:
+                raise TypeError, "dictionary key must be string"
             write("<name>%s</name>\n" % escape(k))
             dump(v, write)
             write("</member>\n")
@@ -1044,7 +1033,7 @@
     # standard XML-RPC wrappings
     if methodname:
         # a method call
-        if not isinstance(methodname, StringType):
+        if not isinstance(methodname, basestring):
             methodname = methodname.encode(encoding)
         data = (
             xmlheader,


More information about the Python-3000-checkins mailing list