RELEASED Python 2.3 (final)

Bengt Richter bokr at oz.net
Thu Jul 31 14:55:40 EDT 2003


On Thu, 31 Jul 2003 12:09:09 +0100, Robin Becker <robin at jessikat.fsnet.co.uk> wrote:

>I've been testing reportlab with 2.3 and although it's a lot faster I
>get some ominous warnings and complaints from the future.
>
>1) SyntaxWarning: assignment to None
>   eg for None, name in colorNamePairs:
>   what is the preferred way to do this nowadays? It's fairly
>   trivial to go through and change these to for notUsed, x in ....
>   but is there a nicer way.
I don't know of one, but sometimes I've wanted a way to filter sequence unpacking, e.g,
       a,*,c = 1,2,3 # <=> a=1; c=3
and maybe letting ** in the tail position mean dump the rest.


>2) FutureWarning: hex/oct constants > sys.maxint will return positive  
>   values in Python 2.4 and up
>   eg self.assertEquals(ttf.read_ulong(), 0x81020304) # big-endian
>   Is there no way to preserve the clarity of the above in future?
>   We have quite a lot of code that deals with low level binary 
>   formatted stuff. Changing will move it further away from the
>   original C definitions.

How about just defining a C integer class that works as desired?
You could do it in C ;-)

>
>   The same applies to
>
>   FutureWarning: x<<y losing bits or changing sign will return a long 
>   in Python 2.4 and up
>   eg sum = (hi << 16) | (lo & 0xFFFF)
>
>   Is Python moving away from the machinery? Are there efficient
>   recipes for doing these 32 bit operations? Certainly cut and
>   paste to and from java/c/c++ will be a lot harder.
>
IWT a C extension could be quite efficient. The question would be how
to minimize the editing for cut/pasted stuff. Mostly I guess it would
be wrapping C literals so x = 0x80000000 becomes x = Cint('0x80000000') or such.

>Apart from these minor troubles seems pretty solid.
Sounds good.

Regards,
Bengt Richter




More information about the Python-list mailing list