mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
more xmlrpclib tweaks: fixed repr(Fault()); enable UTF-8 parsing in
xmllib (on 2.0 and later)
This commit is contained in:
parent
7a50f2536e
commit
b0e8e9b72f
1 changed files with 17 additions and 12 deletions
|
@ -166,11 +166,13 @@ __version__ = "1.0b3"
|
||||||
|
|
||||||
class Error(Exception):
|
class Error(Exception):
|
||||||
"""Base class for client errors."""
|
"""Base class for client errors."""
|
||||||
pass
|
def __str__(self):
|
||||||
|
return repr(self)
|
||||||
|
|
||||||
class ProtocolError(Error):
|
class ProtocolError(Error):
|
||||||
"""Indicates an HTTP protocol error."""
|
"""Indicates an HTTP protocol error."""
|
||||||
def __init__(self, url, errcode, errmsg, headers):
|
def __init__(self, url, errcode, errmsg, headers):
|
||||||
|
Error.__init__(self)
|
||||||
self.url = url
|
self.url = url
|
||||||
self.errcode = errcode
|
self.errcode = errcode
|
||||||
self.errmsg = errmsg
|
self.errmsg = errmsg
|
||||||
|
@ -188,12 +190,13 @@ class ResponseError(Error):
|
||||||
class Fault(Error):
|
class Fault(Error):
|
||||||
"""Indicates an XML-RPC fault package."""
|
"""Indicates an XML-RPC fault package."""
|
||||||
def __init__(self, faultCode, faultString, **extra):
|
def __init__(self, faultCode, faultString, **extra):
|
||||||
|
Error.__init__(self)
|
||||||
self.faultCode = faultCode
|
self.faultCode = faultCode
|
||||||
self.faultString = faultString
|
self.faultString = faultString
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return (
|
return (
|
||||||
"<Fault %s: %s>" %
|
"<Fault %s: %s>" %
|
||||||
(repr(self.faultCode), repr(self.faultString))
|
(self.faultCode, repr(self.faultString))
|
||||||
)
|
)
|
||||||
|
|
||||||
# --------------------------------------------------------------------
|
# --------------------------------------------------------------------
|
||||||
|
@ -399,8 +402,10 @@ class SlowParser:
|
||||||
self.unknown_starttag = target.start
|
self.unknown_starttag = target.start
|
||||||
self.handle_data = target.data
|
self.handle_data = target.data
|
||||||
self.unknown_endtag = target.end
|
self.unknown_endtag = target.end
|
||||||
xmllib.XMLParser.__init__(self)
|
try:
|
||||||
|
xmllib.XMLParser.__init__(self, accept_utf8=1)
|
||||||
|
except TypeError:
|
||||||
|
xmllib.XMLParser.__init__(self) # pre-2.0
|
||||||
|
|
||||||
# --------------------------------------------------------------------
|
# --------------------------------------------------------------------
|
||||||
# XML-RPC marshalling and unmarshalling code
|
# XML-RPC marshalling and unmarshalling code
|
||||||
|
@ -521,11 +526,11 @@ class Marshaller:
|
||||||
|
|
||||||
class Unmarshaller:
|
class Unmarshaller:
|
||||||
"""Unmarshal an XML-RPC response, based on incoming XML event
|
"""Unmarshal an XML-RPC response, based on incoming XML event
|
||||||
messages (start, data, end). Call close to get the resulting
|
messages (start, data, end). Call close() to get the resulting
|
||||||
data structure.
|
data structure.
|
||||||
|
|
||||||
Note that this reader is fairly tolerant, and gladly accepts
|
Note that this reader is fairly tolerant, and gladly accepts bogus
|
||||||
bogus XML-RPC data without complaining (but not bogus XML).
|
XML-RPC data without complaining (but not bogus XML).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# and again, if you don't understand what's going on in here,
|
# and again, if you don't understand what's going on in here,
|
||||||
|
@ -688,8 +693,8 @@ class Unmarshaller:
|
||||||
def getparser():
|
def getparser():
|
||||||
"""getparser() -> parser, unmarshaller
|
"""getparser() -> parser, unmarshaller
|
||||||
|
|
||||||
Create an instance of the fastest available parser, and attach
|
Create an instance of the fastest available parser, and attach it
|
||||||
it to an unmarshalling object. Return both objects.
|
to an unmarshalling object. Return both objects.
|
||||||
"""
|
"""
|
||||||
if FastParser and FastUnmarshaller:
|
if FastParser and FastUnmarshaller:
|
||||||
target = FastUnmarshaller(True, False, binary, datetime)
|
target = FastUnmarshaller(True, False, binary, datetime)
|
||||||
|
@ -712,8 +717,8 @@ def dumps(params, methodname=None, methodresponse=None, encoding=None):
|
||||||
Convert an argument tuple or a Fault instance to an XML-RPC
|
Convert an argument tuple or a Fault instance to an XML-RPC
|
||||||
request (or response, if the methodresponse option is used).
|
request (or response, if the methodresponse option is used).
|
||||||
|
|
||||||
In addition to the data object, the following options can be
|
In addition to the data object, the following options can be given
|
||||||
given as keyword arguments:
|
as keyword arguments:
|
||||||
|
|
||||||
methodname: the method name for a methodCall packet
|
methodname: the method name for a methodCall packet
|
||||||
|
|
||||||
|
@ -725,7 +730,7 @@ def dumps(params, methodname=None, methodresponse=None, encoding=None):
|
||||||
|
|
||||||
All 8-bit strings in the data structure are assumed to use the
|
All 8-bit strings in the data structure are assumed to use the
|
||||||
packet encoding. Unicode strings are automatically converted,
|
packet encoding. Unicode strings are automatically converted,
|
||||||
as necessary.
|
where necessary.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
assert isinstance(params, TupleType) or isinstance(params, Fault),\
|
assert isinstance(params, TupleType) or isinstance(params, Fault),\
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue