Patch #1070046: Marshal new-style objects like InstanceType

in xmlrpclib.
This commit is contained in:
Martin v. Löwis 2006-11-19 18:51:54 +00:00
parent 9eec51c04f
commit 07529354db
4 changed files with 33 additions and 4 deletions

View file

@ -630,9 +630,19 @@ class Marshaller:
try:
f = self.dispatch[type(value)]
except KeyError:
raise TypeError, "cannot marshal %s objects" % type(value)
else:
f(self, value, write)
# check if this object can be marshalled as a structure
try:
value.__dict__
except:
raise TypeError, "cannot marshal %s objects" % type(value)
# check if this class is a sub-class of a basic type,
# because we don't know how to marshal these types
# (e.g. a string sub-class)
for type_ in type(value).__mro__:
if type_ in self.dispatch.keys():
raise TypeError, "cannot marshal %s objects" % type(value)
f = self.dispatch[InstanceType]
f(self, value, write)
def dump_nil (self, value, write):
if not self.allow_none: