News for hackers. Stuff that matters.
Re:Django and Python 3 by koenigdavidmj on Thursday February 17, 2011 @11:57AM (#2231646)
The problem there is that 2.4's exception statements and 3.0's have two different meanings.

2.4 only supports this:

    try:
        do stuff
    except FooError, e:
        do stuff with e
3.0 and up choke on this; they interpret it as "catch exceptions of type FooError or e and do not give the exception object a name".

2.5 through 2.7 interpret like 2.4 but also support explicit parentheses to do what Python 3 does:

    try:
        do stuff
    except (FooError, BarError) as e:
        do stuff
    except (BazError, QuxError):
        do other stuff
2to3 requires that you use the new exception syntax only, to avoid confusion.
Re:Django and Python 3 by briancurtin on Thursday February 17, 2011 @12:16PM (#2231743)
The following will work across 3 and 2 versions going back pretty far. It's necessary if you want to support pre-2.5 versions (where `as` was introduced):

    import sys
    try:
        fn()
    except (IOError, TypeError):
        err = sys.exc_info()[1]
        print(err)
http://docs.pythonsprints.com/python3_porting/py-porting.htm...
Re:Django and Python 3 by koenigdavidmj on Friday February 18, 2011 @12:47AM (#2234401)
Still kind of ugly, and not something which you want to litter than Django sources. Especially if you are going to put them all back when 2.4 support is dropped.