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

Reply via email to