Python's xmlrpc decoder understands the i8 tag that comes from the ws-xmlrpc spec [1], but the encoder will not emit it. Unfortunately, 32 bits is just not enough anymore.
In these changes, Tomas and I have modified the encoder to emit i8 tags when necessary. We were already using a modified encoder in the hub code. Now, we have generalized this and moved it into the library (so that clients can send large ints to the hub too).
We have stopped using encode_int() in client code, allowing clients to send the large ints as i8. Even old hubs will be able to decode these. However, we have kept encode_int() is the few places it was used in the hub for backwards api compatibility.
Most of the new code is in the new koji.xmlrpcplus lib, which has full unit test coverage.
Python's xmlrpc decoder understands the i8 tag that comes from the ws-xmlrpc spec [1], but the encoder will not emit it. Unfortunately, 32 bits is just not enough anymore.
In these changes, Tomas and I have modified the encoder to emit i8 tags when necessary. We were already using a modified encoder in the hub code. Now, we have generalized this and moved it into the library (so that clients can send large ints to the hub too).
We have stopped using
encode_int()in client code, allowing clients to send the large ints as i8. Even old hubs will be able to decode these. However, we have keptencode_int()is the few places it was used in the hub for backwards api compatibility.Most of the new code is in the new
koji.xmlrpcpluslib, which has full unit test coverage.These changes should fix #464
[1] https://ws.apache.org/xmlrpc/types.html