----- Original Message ----- > From: "Robbie Gemmell" <[email protected]> > To: [email protected] > Sent: Thursday, April 16, 2015 6:28:18 PM > Subject: Re: [RFC] Strategy for porting Proton to Python 3 > > On 16 April 2015 at 23:03, Robbie Gemmell <[email protected]> wrote: > > On 16 April 2015 at 20:38, Ken Giusti <[email protected]> wrote: > >> And within moments, I hit my first Really Big Problem: > >> > >> Jython > >> > >> Yep, turns out Jython can't parse 'futurized' python code. Especially > >> dislikes the > >> > >> except <exception>, <var> ---> except <exception> as <var> > >> > >> change. Which isn't very helpful, since the 'as' variant is the only > >> syntax supported by Python 3 (that comma-syntax has been removed). > >> > >> This makes porting the python unit tests to python3 a no go. The non-test > >> python stuff, like the bindings and examples, are not run under jython so > >> it's not a problem there. > >> > >> So what to do? > >> > >> Here's a couple of options that I can think of: > >> > >> 1) don't port the tests to python 3. > >> > >> 2) create two copies of the python tests, one 'old' copy for running under > >> jython, and a new copy for running under python2 and 3. Remove the old > >> tests once jython can handle the modern syntax. > >> > >> 3) Stop running jython tests > >> > >> 4) A better idea I haven't thought of yet. > >> > >> I'm pretty much against option 1 - we need to be able to test the bindings > >> under python 3. I'm open to the others, especially #4. > >> > >> Opinions? > >> > >> -K > >> > >> > > > > We are using jython 2.5.3, which is the current 'final' release,
Ugh - these python2->python3 wrapper modules (like six and future) only work with 2.6+ - at least according to their docs. We'll see how far I can go with those wrappers & jython. /me remembers answering "Yes I do!" when interviewing for this position and being asked "Do you enjoy a challenge?" Damn... > > however on checking the site there have been a couple of RCs for 2.7 > > in the last month that suggest it might actually be nearing completion > > (it has been baking slowly for a couple of years since an initial > > beta), so perhaps we could look to upgrade to bring support for 'as'. > > > > I just tried it out for giggles. I cleared out my checkout, flipped > the version to 2.7-rc2, ran the build, and went to get a drink while > the ~3x sized jar downloaded. I returned to 211 test failures, > seemingly from lots of "TypeError: Type not compatible with array > type", so there is possibly a little bit of work needed to make such a > switch. Some of them passed at least :) > > I also noticed that Jython 2.7 requires Java 7, so the tests would no > longer work on Java 6 if we used it. I'm fine with dropping support > for it entirely, but would dislike leaving the compiler target set for > Java 6 (as it is now) if we cant actually run the tests on it. > > >> > >> > >> ----- Original Message ----- > >>> From: "Ken Giusti" <[email protected]> > >>> To: [email protected] > >>> Cc: "Dominic Evans" <[email protected]> > >>> Sent: Thursday, April 16, 2015 9:54:35 AM > >>> Subject: [RFC] Strategy for porting Proton to Python 3 > >>> > >>> > >>> Hi all, > >>> > >>> I'm building on the work done by Dominic and Mickael to get all the > >>> proton > >>> python bits to work under both python2 and python3. See [1]. > >>> > >>> I think this will entail a lot of little changes to the python sources > >>> and > >>> the unit tests. Rather than check in a single huge patch, I'm going to > >>> break it up over several patches. > >>> > >>> The first bunch of patches will simply 'modernize' the existing python > >>> code. > >>> Old style syntax that is not forward compatible with python 3 will be > >>> replaced (eg. print "foo" --> print("foo"), etc). I'll use a tool called > >>> 'futurize' which is part of the python future toolset [2], [3]. > >>> > >>> Once all python code is updated, then I'll begin introducing python 3 > >>> specific patches, including the work already done by Dominic and Mickael. > >>> Of course I'll verify that none of these changes will break python 2. > >>> I've got a local CI system that can build/test in both environments. > >>> > >>> From a discussion with Dominic, we agreed that it would be A Good Thing > >>> to > >>> use one of the existing Py2 <--> Py3 abstraction libraries. These > >>> libraries > >>> provide utilities for writing code that works under both python versions. > >>> I've used 'six' in the past [4] and found it quite helpful - it will > >>> eliminate a lot of the messy conditional code one has to hack in order to > >>> support both languages. > >>> > >>> However, this library is not part of the standard python library. This > >>> means > >>> introducing a new dependency. > >>> > >>> Personally, I don't think this is a big deal - use of 'six' is ubiquitous > >>> among python packages. It's available freely via pypi, and though most > >>> distros. > >>> > >>> So that's the Big Question - is everyone comfortable with this additional > >>> dependency? Does anyone have a better alternative? Has anyone ported > >>> other large python codebases - what was your experience? > >>> > >>> thanks, > >>> > >>> -K > >>> > >>> > >>> [1] https://issues.apache.org/jira/browse/PROTON-490 > >>> [2] http://python-future.org/index.html > >>> [3] http://python-future.org/futurize_cheatsheet.html > >>> [4] https://pythonhosted.org/six/ > >>> > >>> -- > >>> -K > >>> > >> > >> -- > >> -K > -- -K
