FWIW, I created a pull request that improves FIAT and removes almost all of ScientificPython, cf. <https://bitbucket.org/fenics-project/fiat/pull-request/2/remove-almost-all-of-scientificpython/diff>. If this gets reviewed (and possibly improved) soon, we might get to Python3-ready FEniCS quiet quick.
Cheers, Nico On Fri, Jun 27, 2014 at 4:44 PM, Martin Sandve Alnæs <[email protected]> wrote: > Hi Aslak, > > - Python modules and dependencies must be installed with each python version > on your system. I.e. run "py3 setup.py install > --prefix=/path/to/your/py3/modules" for UFL. For now ignore dolfin. > > - Ignore 3.1. > > - Changing the type example could be ok or it could be a delicate thing, > those expressions do not mean exactly the same. Try it, but make sure you > have a clear commit message for that change showing what you did so it's > easy to review. If the tests pass consider it ok, if not skip it. > > - Is (a,b) a problem in python 3 or is this just convention? I don't mind. > > - The six module becomes a new FEniCS dependency, each user must install it > like any other python module. Johannes already did on the buildbots. > > Martin > > > > On 27 June 2014 09:21, Aslak Bergersen <[email protected]> wrote: >> >> Hi! >> >> I have some questions about the supporting to python 3.x. You can take a >> look at the changes I have done if you want (or need). >> >> Testing with python 3.3 >> I have installed python 3.3 such that I can use it when I want (e.g. py3 >> script.py). However, when I'm running the tests all the dependencies are >> missing (For now I'm running python -3). So how do I build it with python 3? >> >> Support python 3.1 >> callable() returned in python 3.2, so there is no need to change it, >> unless we want to support python 3.1? >> >> Changing idioms >> 2py3 changes idioms that are "outdated". When running the script it >> changes type(t) != type(q) to not isinstance(t, type(q)). Is this this >> something I should do? >> >> Python syntax >> The 2to3 scripts have the possibility to change the comma-syntax to >> correct python syntax. For example, it changes (a,b) to (a, b). Should I run >> this on the files as well? >> >> Six module >> I have used the six modules to make it compatible with 2.x and 3.x, but >> I'm a bit unsure where to put it, or how to properly include it to the >> project such that all files have access. >> >> -- >> Mvh >> Aslak Bergersen >> 993 22 848 >> >> >> 2014-05-23 12:56 GMT+02:00 Martin Sandve Alnæs <[email protected]>: >> >>> UFL doesn't use __metaclass__ but it uses __new__, is the behaviour of >>> that the same? I'd like to clean up those parts at some point but I won't >>> have time before the summer. >>> >>> If we have to change behaviour of Expression we should consider doing >>> that simultaneously with the introduction of an Expression-like ufl type >>> which will have several advantages. >>> >>> Martin >>> >>> >>> On 23 May 2014 12:24, Johan Hake <[email protected]> wrote: >>>> >>>> And then there is the change of syntax for metaclasses in Python3... >>>> Just goggle metaclass python 3 and there are several pointers to the >>>> different syntax. >>>> >>>> Maybe this will be a good point to throw out the usage of metaclasses in >>>> DOLFIN? What we need is to add a distinction between CompiledExpression and >>>> Expression. I have tried this before with no luck ;) >>>> >>>> Johan >>>> >>>> >>>> On Thu, May 22, 2014 at 11:40 AM, Martin Sandve Alnæs >>>> <[email protected]> wrote: >>>>> >>>>> Yes, and if we're lucky we can get to that point without as much work >>>>> as sympy, since we don't have as much code. >>>>> >>>>> The 2to3 tool can do selective changes like change print "" to >>>>> print("") and fix exception syntax, which are compatible with 2.7. >>>>> >>>>> It can also do things like change "a = dict.iteritems()" into "a = >>>>> dict.items()" which changes the memory usage when run on 2.7. These >>>>> differences can instead be resolved by using the python module "six" which >>>>> implements cross-compatible helper functions for a lot of things. >>>>> >>>>> Btw when we switch we should go straight to python 3.3-3.4. >>>>> Supporting 3.0-3.2 side by side with 2.7 is apparently harder. >>>>> >>>>> (Note to Aslak: read the link from Jan!) >>>>> >>>>> Martin >>>>> >>>>> >>>>> On 22 May 2014 11:22, Jan Blechta <[email protected]> wrote: >>>>>> >>>>>> Note that there is also an approach of having simultaneously 2.x and >>>>>> 3.x >>>>>> compatible codebase without a need of using 2to3. Allegedly, this is >>>>>> used in SymPy, NumPy and SciPy projects. See >>>>>> >>>>>> http://ondrejcertik.blogspot.cz/2013/08/how-to-support-both-python-2-and-3.html >>>>>> >>>>>> Jan >>>>>> >>>>>> >>>>>> On Thu, 22 May 2014 11:05:43 +0200 >>>>>> Martin Sandve Alnæs <[email protected]> wrote: >>>>>> >>>>>> > The plan for the initial work here is to keep the code python 2.7 >>>>>> > compatible but ready for a later swift switch to 3 only. I suggest >>>>>> > we >>>>>> > release fenics 1.5 with python 2.7 compatibility intact but >>>>>> > convertible to python 3 by just running py2to3. Otherwise there will >>>>>> > be too much simultaneous breakage. Then we can discuss whether we >>>>>> > leave python 2.7 behind in fenics 1.6 or not. >>>>>> > >>>>>> > However, I haven't thought about the swig side in dolfin, and as >>>>>> > Johan >>>>>> > mentions keeping the Python CAPI code compatible is not covered by >>>>>> > py2to3. I'll discuss this with Johan and Aslak. >>>>>> > >>>>>> > Martin >>>>>> > >>>>>> > >>>>>> > On 22 May 2014 10:49, Garth N. Wells <[email protected]> wrote: >>>>>> > >>>>>> > > Nice. Do we want to support Python 2.7 and 3, or would it be more >>>>>> > > sustainable to go all Python 3? My preference is for simplicity >>>>>> > > and >>>>>> > > low maintenance, which points to Python 3 only support. >>>>>> > > >>>>>> > > Garth >>>>>> > > On Thu, 22 May, 2014 at 9:39 AM, Martin Sandve Alnæs >>>>>> > > <[email protected]> wrote: >>>>>> > > >>>>>> > >> We have a summer intern at Simula, Aslak Bergersen, >>>>>> > >> who will work on preparations for python 3 support in FEniCS, >>>>>> > >> as well as some other FEniCS tasks, from late June and >>>>>> > >> throughout July. >>>>>> > >> >>>>>> > >> The preparations for python 3 involves mainly: >>>>>> > >> - Replacing ScientificPython for AD in FIAT >>>>>> > >> - Applying and committing backwards compatible parts of py2to3 >>>>>> > >> - Replacing several functions such as dict.iteritems with >>>>>> > >> six.iteritems in UFL and possibly FFC to make sure we keep the >>>>>> > >> same performance and memory behaviour with python 2 and 3. >>>>>> > >> >>>>>> > >> I will be on vacation part of his time here so please >>>>>> > >> help him out if he has questions to the list. >>>>>> > >> >>>>>> > >> Martin >>>>>> > >> >>>>>> > > >>>>>> > > >>>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> fenics mailing list >>>>> [email protected] >>>>> http://fenicsproject.org/mailman/listinfo/fenics >>>>> >>>> >>> >> >> >> >> -- >> Mvh >> Aslak Bergersen >> 993 22 848 >> > > > _______________________________________________ > fenics mailing list > [email protected] > http://fenicsproject.org/mailman/listinfo/fenics > _______________________________________________ fenics mailing list [email protected] http://fenicsproject.org/mailman/listinfo/fenics
