152152except ImportError :
153153 datetime = None
154154
155- def _decode (data , encoding , is8bit = re .compile ("[\x80 -\xff ]" ).search ):
156- # decode non-ascii string (if possible)
157- if encoding and is8bit (data ):
158- data = str (data , encoding )
159- return data
160-
161155def escape (s ):
162156 s = s .replace ("&" , "&" )
163157 s = s .replace ("<" , "<" )
164158 return s .replace (">" , ">" ,)
165159
166- def _stringify (string ):
167- # convert to 7-bit ascii if possible
168- try :
169- return string .decode ("ascii" )
170- except (UnicodeError , TypeError , AttributeError ):
171- return string
172-
173160__version__ = "1.0.1"
174161
175162# xmlrpc integer limits
@@ -755,8 +742,8 @@ def end_double(self, data):
755742
756743 def end_string (self , data ):
757744 if self ._encoding :
758- data = _decode ( data , self ._encoding )
759- self .append (_stringify ( data ) )
745+ data = data . decode ( self ._encoding )
746+ self .append (data )
760747 self ._value = 0
761748 dispatch ["string" ] = end_string
762749 dispatch ["name" ] = end_string # struct keys are always strings
@@ -774,7 +761,7 @@ def end_struct(self, data):
774761 dict = {}
775762 items = self ._stack [mark :]
776763 for i in range (0 , len (items ), 2 ):
777- dict [_stringify ( items [i ]) ] = items [i + 1 ]
764+ dict [items [i ]] = items [i + 1 ]
778765 self ._stack [mark :] = [dict ]
779766 self ._value = 0
780767 dispatch ["struct" ] = end_struct
@@ -811,7 +798,7 @@ def end_fault(self, data):
811798
812799 def end_methodName (self , data ):
813800 if self ._encoding :
814- data = _decode ( data , self ._encoding )
801+ data = data . decode ( self ._encoding )
815802 self ._methodname = data
816803 self ._type = "methodName" # no params
817804 dispatch ["methodName" ] = end_methodName
0 commit comments