----- Original Message -----
> From: "Robbie Gemmell" <robbie.gemm...@gmail.com>
> To: proton@qpid.apache.org
> 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 <robbie.gemm...@gmail.com> wrote:
> > On 16 April 2015 at 20:38, Ken Giusti <kgiu...@redhat.com> 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" <kgiu...@redhat.com>
> >>> To: proton@qpid.apache.org
> >>> Cc: "Dominic Evans" <dominic.ev...@uk.ibm.com>
> >>> 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

Reply via email to