[PyQt] Missing method for QByteArray and Python3?

Phil Thompson phil at riverbankcomputing.com
Sun Jan 10 13:59:12 GMT 2010


On Sun, 10 Jan 2010 14:05:36 +0100, detlev <detlev at die-offenbachs.de>
wrote:
> On Sonntag, 10. Januar 2010, Phil Thompson wrote:
>> On Sat, 9 Jan 2010 18:33:32 +0100, detlev <detlev at die-offenbachs.de>
>> wrote:
>> > Hi,
>> >
>> > really often I have this kind of code in my application when it comes
>> > to
>> > converting a QByteArray to s string under Python 3.1.
>> >
>> > s = bytes(QByteArray).decode()
>> >
>> > In Python 2 one could use
>> >
>> > s = unicode(QByteArray)
>> >
>> > to get the same result. Did I miss something or could QByteArray get a
>> > decode() method to make it similar to a Python3 bytes or bytearray
>> > type?
>> 
>> The Python3 way to do it is...
>> 
>> s = str(QByteArray, encoding='ascii')
>> 
>> ...or whatever encoding is used.
>> 
>> It would be possible to change things so that...
>> 
>> s = str(QByteArray)
>> 
>> ...automatically uses the default encoding. However that would then make
>> it
>> inconsistent with the behaviour of...
>> 
>> s = str(bytes)
>> 
>> ...and I'm not sure that that is a good idea.
>> 
>> Phil
>> _______________________________________________
>> PyQt mailing list    PyQt at riverbankcomputing.com
>> http://www.riverbankcomputing.com/mailman/listinfo/pyqt
>> 
> 
> Maybe QByteArray should be changed to a mapped type and bytearray should
be
> 
> used (like the QString change).

I've been thinking about that as well, but...

- Qt uses QByteArray to represent binary data *and* C-style strings. It
might not be appropriate to convert the latter to bytearray.

- are there places in Qt that a QByteArray is being used to hold a large
amount of data, and so the overhead of the conversion may be significant?

- I would want the conversion to bytearray to be the default for Python v3
(although changeable with sip.setapi()). Is it too late to be introducing
incompatible changes to the Python v3 support?

Phil


More information about the PyQt mailing list