Compiler, ast and forwards/backwards compatibility

Orestis Markou orestis at orestis.gr
Tue Oct 7 13:17:46 EDT 2008


On Tue, Oct 7, 2008 at 5:39 PM, Terry Reedy <tjreedy at udel.edu> wrote:
> Orestis Markou wrote:
>>
>> Hello,
>>
>> I'm the developer of PySmell ( http://github.com/orestis/pysmell ), a
>> static analysis/intellisense provider for Python. I am targeting
>> Python 2.4 code so I'm using the compiler package.
>>
>> I've been toying around yesterday with the ast module in Python 2.6
>> and it seems much more cleaner. One thing I don't understand is how
>> should one handle backwards and forwards compatibility.
>
> My impression is that the 2.6 ast package is quite different from the 2.4
> compiler package, but I have not looked at it (in its 3.0 version) yet.  If
> the 2.4 code you are analyzing is syntactically and sematically valid as 2.6
> code, which I believe is usual, then of course there is no problem.  If it
> is not, then I would not be sure.

The ast module is indeed very different from the compiler package, as
it depends on the exact grammar definition that the interpreter is
using, rather a re-implementation (which I understand the compiler.ast
is).

My confusion starts with the fact that I'm not sure if all Python 2.4
code is going to be syntactically valid 2.6 code. I guess 2.3 is valid
2.4 is valid 2.5, which should be valid 2.6 (but not valid 3.0) - I
think it's the lockstep of 2.6 and 3.0 that's misleading me...
>
>> I guess that Python 2.6 can target Python 2.3-6, and with specific
>> compiler flags it can also target 3.0, so it seems that the correct
>> thing to do is to use that.
>
> If you want to target 2.3 to 3.0, 2.6 is the only option as far as I know.
>  I expect you will want to run your code through 2to3 (still being improved)
> and run under 3.0 to properly handle 3.0 code.

That sounds correct. It's annoying that I have to require Python 2.6
for this - I guess that since the compiler module is there in 2.6 I'm
not compelled to use ast until I want to run under 3.0...
>
> Maybe someone else can give a better answer.
>
> tjr
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>



-- 
orestis at orestis.gr
http://orestis.gr



More information about the Python-list mailing list