[PyQt] PyQt and integer overflows

Florian Bruhin me at the-compiler.org
Wed May 14 14:50:35 BST 2014


I think the exception PyQt prints when passing an integer value which
is too big for the underlying C function is rather confusing:

    >>> from PyQt5.QtCore import QSize
    >>> QSize(2**64, 0)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: arguments did not match any overloaded call:
      QSize(int, int): argument 1 has unexpected type 'int'

I think if possible it should detect the *type* is in fact correct,
and raise an OverflowError or so instead.

Also, how can I detect what the largest value is I can safely pass in?
It seems to be different on my Windows and Linux system (both 64 bit
though). On Windows, 2**32 / 2 - 1 is the largest value, on Linux
2**64 instead. I tried using struct to get the size of an int, but
that's the same on both platforms:

    >>> struct.calcsize('@i') * 8
    >>> 32


() ascii ribbon campaign - stop html mail    www.asciiribbon.org
/\ www.the-compiler.org  | I love long mails http://email.is-not-s.ms/
Giving money and power to governments is like giving whiskey and car keys to 
teenage boys. -- P.J. O'Rourke 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20140514/0ee0069d/attachment.sig>

More information about the PyQt mailing list