changeset 63c5ffec46df in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset&node=63c5ffec46df
description:
Use biginteger for integer overflowing XML-RPC integer dumper
issue10732
review363891002
diffstat:
trytond/protocols/xmlrpc.py | 10 ++++++++++
trytond/tests/test_protocols.py | 4 ++++
2 files changed, 14 insertions(+), 0 deletions(-)
diffs (38 lines):
diff -r 598bc200808c -r 63c5ffec46df trytond/protocols/xmlrpc.py
--- a/trytond/protocols/xmlrpc.py Thu Sep 16 09:00:16 2021 +0200
+++ b/trytond/protocols/xmlrpc.py Sun Sep 19 00:04:57 2021 +0200
@@ -55,10 +55,20 @@
self.dump_struct(value, write)
+def dump_long(self, value, write):
+ try:
+ self.dump_long(value, write)
+ except OverflowError:
+ write('<value><biginteger>')
+ write(str(int(value)))
+ write('</biginteger></value>\n')
+
+
client.Marshaller.dispatch[Decimal] = dump_decimal
client.Marshaller.dispatch[datetime.date] = dump_date
client.Marshaller.dispatch[datetime.time] = dump_time
client.Marshaller.dispatch[datetime.timedelta] = dump_timedelta
+client.Marshaller.dispatch[int] = dump_long
def dump_struct(self, value, write, escape=client.escape):
diff -r 598bc200808c -r 63c5ffec46df trytond/tests/test_protocols.py
--- a/trytond/tests/test_protocols.py Thu Sep 16 09:00:16 2021 +0200
+++ b/trytond/tests/test_protocols.py Sun Sep 19 00:04:57 2021 +0200
@@ -100,6 +100,10 @@
'Test time'
self.dumps_loads(datetime.datetime.now().time())
+ def test_biginteger(self):
+ "Test BigInteger"
+ self.dumps_loads(client.MAXINT + 1)
+
def test_immutable_dict(self):
"Test ImmutableDict"
self.dumps_loads(ImmutableDict(foo='bar'))