[Python-Dev] Re: [Python-checkins] CVS: python/dist/src/Lib xmlrpclib.py,1.11,1.12 (original) (raw)

Skip Montanaro skip@pobox.com (Skip Montanaro)
Wed, 10 Oct 2001 14:09:41 -0500


SM> xmlrpclib.py
SM> Log Message: allow long ints to be marshalled as ints - no check
SM> is made to the incoming value, so the programmer will have to
SM> catch OverflowError.

Jeremy> How does the other end unmarshal it?  You shouldn't get overflow
Jeremy> errors any more.

Jeremy> Oh, well, actually you do still get overflow and value errors
Jeremy> from the builtin int().

The receiving end will unmarshal the object into an int. This is no worse than the way xmlrpclib treats tuples. XML-RPC only has an type, which both lists and tuples marshal into. On the receiving end values are always unmarshalled into lists.

Jeremy> I wonder if there should be a generic number-from-string
Jeremy> conversion function that returns either a long or an int as
Jeremy> needed.  If an integer literal in your program text can produce
Jeremy> a long, why can't builtin int()?

Not sure what you're getting at here. You do have to pass in something that smells like an int. "123" would obviously smell like a string and get marshalled as such. The XML-RPC spec also indicates that the tag is restricted to the value that can be represented by a four-byte signed integer. It has no type that would marshal a Python long or a native int that is larger than sys.maxint. Adding that would be difficult to get past Dave Winer on the grounds of interoperability.

Skip