[Python-projects] Py3k port

Sylvain Thénault sylvain.thenault at logilab.fr
Mon Sep 6 11:09:08 CEST 2010

On 01 septembre 11:35, Emile Anclin wrote:
> On Monday 16 August 2010 14:08:25 Tshepang Lekhonkhobe wrote:
> > On Thu, Aug 12, 2010 at 23:03, Tshepang Lekhonkhobe <tshepang at gmail.com> 
> wrote:
> > > Hi,
> > >
> > > So where do I start if I want Pylint ported to Py3k? Is there a
> > > branch somewhere?
> >
> > Thanks for the great responses. It's a little confusing though, so can
> > you guys create some page (wiki?) somewhere on your site on what
> > actually needs to be done by a wannabe like me (with a link tothe
> > ticket: http://www.logilab.org/ticket/19645).
> I had some thoughts on the py3k port:
> * as I understand it, pylint for python 2.X will only run against 2.X
> and pylint3 will have to run against 3.X: the reason is that the _ast 
> module used for astng will parse the code as 2.X / 3.X, and throws 
> SyntaxErrors if the code is not acceptable for the running python 
> version.

> * imho, the py3k branch in logilab-common is not very usefull: it is just 
> passing 2to3 on the whole package. Following the python doc,
> http://docs.python.org/release/3.0.1/whatsnew/3.0.html#porting-to-python-3-0
> we should not go along this way.

py3k branch of logilab.common was a try out that should eventually be
discarded. At least for lgc, I would like a solution where running 2to3 
is enough.

> I'll try to propose a plan corresponding to what is explained on python 
> doc:
> 1) make logilab-common run on py3k (i.e. make the tests work).
>    this should also make pytest run on python3.X
>    I believe we need that to run the tests on astng and pylint;

no, as I said I don't want to bother with pytest/testlib in the py3k port
since those both module are a dead end. And they represent 25% of lgc's code...
> 2) astng:
>    a) we will have some work to make the old tests pass, related to this:
>    b) quote my mail from Mon Apr 12 10:58:24 CEST 2010:
> """
> we will have to parse new kind of nodes (Nonlocal, Dict/SetGenerator, 
> Starred (at least for extended literal unpacking), SetComp etc. hence a 
> lot of new 'visit_%' methods in astng
> """
>    c) deal with 'print' as a function and the other modifications

I don't think we need anything special to deal with print as a function.
It will simply be treated as other functions.

>    *) there is actually not that much stuff concerning python <=2.4,
>   just one module, hence not much work to save...
though things could be fairly simplified by dropping that compiler/_ast

> 3) pylint; make tests pass with py3k, write new visit_* methods and 
> test...

there should be no need for new visit_* methods, beside if we want
new functionnalities. 
> Fully Automated conversion will not work. We have more than syntactic 
> changes to do: we have different trees with new nodes, nodes that 
> disappear...

We already deal with this kind of pb with different python versions, so
that should not be the show stopper.

Sylvain Thénault                               LOGILAB, Paris (France)
Formations Python, Debian, Méth. Agiles: http://www.logilab.fr/formations
Développement logiciel sur mesure:       http://www.logilab.fr/services
CubicWeb, the semantic web framework:    http://www.cubicweb.org

More information about the Python-Projects mailing list