[Python-Dev] Incompatible changes to xmlrpclib
M.-A. Lemburg
mal@lemburg.com
Fri, 19 Jul 2002 12:00:42 +0200
Fredrik Lundh wrote:
> mal wrote:
>
>
>>>Any news on this one ?
>>
>>If noone objects, I'd like to restore the old interface.
>
> the dump methods are an internal implementation details, and are
> only accessed through an internal dispatcher table. even if you
> override them, the marshaller won't use your new methods.
If I subclass the Marshaller and Unmarshaller and
then use the subclasses, it would :-)
> so what exactly is your use case?
I needed to adapt the type mapping in xmlrpclib a
bit to better fit our needs. This is done by
adding a few more methods to the Marshaller
and Unmarshaller (it's a hack, but the module doesn't
allow any other method, AFAIK):
def install_xmlrpclib_addons(xmlrpclib):
m = xmlrpclib.Marshaller
m.dump_datetime = _dump_datetime
m.dispatch[DateTime.DateTimeType] = m.dump_datetime
m.dump_buffer = _dump_buffer
m.dispatch[types.BufferType] = m.dump_buffer
m.dump_int = _dump_int
m.dispatch[types.IntType] = m.dump_int
u = xmlrpclib.Unmarshaller
u.end_dateTime = _load_datetime
u.dispatch['dateTime.iso8601'] = u.end_dateTime
u.end_base64 = _load_buffer
u.dispatch['base64'] = u.end_base64
u.end_boolean = _load_boolean
u.dispatch['boolean'] = u.end_boolean
> (and whatever you did to make that use case work, how do I stop
> you from doing the same thing with some other internal part of the
> standard library? ;-)
It would be nice to open up the module a little
more so that hacks like the one above are not necessary,
e.g. by making the used classes parameters to the
loads/dumps functions.
Then you'd run into the same problem, though, since now
subclasses would need to access the dump/load methods.
PS: Standard support for None would be nice to have
in xmlrpclib... at least for the Marshalling side, since
this is a very common problem with xmlrpc.
--
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
_______________________________________________________________________
eGenix.com -- Makers of the Python mx Extensions: mxDateTime,mxODBC,...
Python Consulting: http://www.egenix.com/
Python Software: http://www.egenix.com/files/python/