summaryrefslogtreecommitdiffstats
path: root/Lib/xmlrpc/client.py
diff options
context:
space:
mode:
authorAlexandre Vassalotti <alexandre@peadrop.com>2009-07-22 02:32:34 (GMT)
committerAlexandre Vassalotti <alexandre@peadrop.com>2009-07-22 02:32:34 (GMT)
commite671fd206b1fe31fdad7a9ec570fffe390ec56ee (patch)
treead070ca6586b09e982c124e797edd7bbc99e9e65 /Lib/xmlrpc/client.py
parentfc477048e1dee78a1b4376584cac052be1b4752d (diff)
downloadcpython-e671fd206b1fe31fdad7a9ec570fffe390ec56ee.zip
cpython-e671fd206b1fe31fdad7a9ec570fffe390ec56ee.tar.gz
cpython-e671fd206b1fe31fdad7a9ec570fffe390ec56ee.tar.bz2
Issue #6360: Simplify string decoding in xmlrpc.client.
Diffstat (limited to 'Lib/xmlrpc/client.py')
-rw-r--r--Lib/xmlrpc/client.py21
1 files changed, 4 insertions, 17 deletions
diff --git a/Lib/xmlrpc/client.py b/Lib/xmlrpc/client.py
index 549006b..d9962aa 100644
--- a/Lib/xmlrpc/client.py
+++ b/Lib/xmlrpc/client.py
@@ -152,24 +152,11 @@ try:
except ImportError:
datetime = None
-def _decode(data, encoding, is8bit=re.compile("[\x80-\xff]").search):
- # decode non-ascii string (if possible)
- if encoding and is8bit(data):
- data = str(data, encoding)
- return data
-
def escape(s):
s = s.replace("&", "&amp;")
s = s.replace("<", "&lt;")
return s.replace(">", "&gt;",)
-def _stringify(string):
- # convert to 7-bit ascii if possible
- try:
- return string.decode("ascii")
- except (UnicodeError, TypeError, AttributeError):
- return string
-
__version__ = "1.0.1"
# xmlrpc integer limits
@@ -755,8 +742,8 @@ class Unmarshaller:
def end_string(self, data):
if self._encoding:
- data = _decode(data, self._encoding)
- self.append(_stringify(data))
+ data = data.decode(self._encoding)
+ self.append(data)
self._value = 0
dispatch["string"] = end_string
dispatch["name"] = end_string # struct keys are always strings
@@ -774,7 +761,7 @@ class Unmarshaller:
dict = {}
items = self._stack[mark:]
for i in range(0, len(items), 2):
- dict[_stringify(items[i])] = items[i+1]
+ dict[items[i]] = items[i+1]
self._stack[mark:] = [dict]
self._value = 0
dispatch["struct"] = end_struct
@@ -811,7 +798,7 @@ class Unmarshaller:
def end_methodName(self, data):
if self._encoding:
- data = _decode(data, self._encoding)
+ data = data.decode(self._encoding)
self._methodname = data
self._type = "methodName" # no params
dispatch["methodName"] = end_methodName