Re: ListStore & python3
- From: Patate Crude <crudepatate gmail com>
- To: python-hackers-list gnome org
- Subject: Re: ListStore & python3
- Date: Thu, 04 Aug 2016 16:49:58 -0000
Here there is an example:
http://termbin.com/vxl8
the last 2 rows show incorrect behaviour under python3.
python2's behaviour can be made correct by adding `long` casts, that are
not possible in python3.
Il 04/08/2016 17:30, Patate Crude ha scritto:
Hi,
I'm trying to have my application run under both python2 and 3, and I'm
having a surprising problem.
I have a gtk.ListStore with a column that has to hold integers between
2^32 and 2^64, what would be long's in python2.
If I build it with gtk.ListStore(int, ...) in python3 my int's get
chopped to 32bits, which is pretty surprising, because in python2 a
ListStore(long,...) does the correct thing.
So I used GObject.TYPE_UINT64 and I can add rows with
ls.append(big_integer_value) in both versions.
The problem is that it's pretty slow, so I dug
.insert_with_valuesv(-1,[0,...], [big_integer_value,...]) from the API.
On python2, this is perfectly fine, I give it a long, and in the
ListStore I get a guint64 with the right value.
On python3, I give an int (between 2^32 and 2^64) and in the ListStore I
get a guint64 truncated at 32bit, which is BAD, and definitely not what
I expected.
I can get around this with an explicit cast:
Object.Value(GObject.TYPE_UINT64, addr)
but this way I lose all the speed I gained, while python2 manages to do
the right thing without any expensive cast.
Did I get something wrong?
Thanks.
[
Date Prev][Date Next] [
Thread Prev][Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]