Even better. Nice to see the tests passing!

--Nico

On Fri, Jul 25, 2014 at 11:37 AM, Aslak Bergersen
<[email protected]> wrote:
> By suggestion for Martin I moved your fix to
> LineExpansionSet.tabulate_derivatives. All test passed.
>
> https://bitbucket.org/aslakbergersen/fiat/commits/bf1b47699928b31351704aae2a8cedd4c58685f9?at=aslakbergersen/topic-prepare-py3
>
>
>
> 2014-07-25 10:34 GMT+02:00 Aslak Bergersen <[email protected]>:
>
>> Well, it passes for the 1D tests, but it fails for all 2D tests and most
>> of the 3D tests. I get
>>
>> ```
>> IndexError: tuple index out of range
>> ```
>>
>> Both the tests in fiat and ffc fails.
>>
>> Aslak
>>
>>
>> 2014-07-24 23:53 GMT+02:00 Nico Schlömer <[email protected]>:
>>
>>> I just pushed
>>>
>>>
>>> https://bitbucket.org/nschloe/fiat/commits/4e8dab41de10545d671921a722199e78d25a878e
>>>
>>> which should hopefully do the trick. Aslak, can you try it out?
>>>
>>> --Nico
>>>
>>> On Thu, Jul 24, 2014 at 8:40 PM, Aslak Bergersen
>>> <[email protected]> wrote:
>>> > No, it's:
>>> >
>>> > FIAT tests:
>>> >                       1D      2D      3D
>>> > FIAT master    pass  pass   pass
>>> > [2]                  fail     pass   pass
>>> >
>>> > FFC tests:
>>> >                       1D      2D      3D
>>> > FIAT master    pass  pass   pass
>>> > [2]                  fail     pass    pass
>>> >
>>> > Note that this with [5] and python 2, but I don't think that matters.
>>> > The
>>> > result is the same for python 3 and [6]. And that the 1D FIAT test is
>>> > the
>>> > one that I implemented.
>>> >
>>> > [5]
>>> >
>>> > https://bitbucket.org/aslakbergersen/ffc/branch/aslakbergersen/topic-prepare-py3
>>> > [6] https://bitbucket.org/fenics/ffc/
>>> >
>>> > Den torsdag 24. juli 2014 skrev Nico Schlömer
>>> > <[email protected]>
>>> > følgende:
>>> >>
>>> >> > By SP-removal branch you mean [4]?
>>> >>
>>> >>
>>> >> No sorry, [4] is a misnomer and should have been removed (which I did
>>> >> just now). [1]/[2] is the actual SP-removal branch.
>>> >> Could you run the FFC and FIAT tests on [2] again? If I understand
>>> >> correctly, the outcome i:
>>> >>
>>> >> FIAT tests:
>>> >>                       1D      2D      3D
>>> >> FIAT master    pass  pass   pass
>>> >> [2]                  fail     pass   pass
>>> >>
>>> >> FFC tests:
>>> >>                       1D      2D      3D
>>> >> FIAT master    pass  pass   pass
>>> >> [2]                  fail     fail      fail
>>> >>
>>> >> Correct?
>>> >>
>>> >> --Nico
>>> >>
>>> >> [1] https://bitbucket.org/nschloe/fiat/branch/improve-tests
>>> >> [2]
>>> >>
>>> >> https://bitbucket.org/aslakbergersen/fiat/branch/aslakbergersen/topic-prepare-py3
>>> >> [4]
>>> >> https://bitbucket.org/nschloe/fiat/branch/replace-scientific-python
>>> >>
>>> >>
>>> >>
>>> >> On Thu, Jul 24, 2014 at 8:12 PM, Aslak Bergersen
>>> >> <[email protected]> wrote:
>>> >> > By SP-removal branch you mean [4]?
>>> >> >
>>> >> > I run ffc with [4] and it passes for 1D and 3D but not 2D.
>>> >> > The test that I implemented in FIAT is not possible to run.
>>> >> >
>>> >> > If you mean [1] by SP-removal, then yes the test that I just
>>> >> > implemented
>>> >> > in
>>> >> > FIAT gives the same error as the tests in ffc and passes for the
>>> >> > fenics/master branch.
>>> >> >
>>> >> >
>>> >> > [4]
>>> >> > https://bitbucket.org/nschloe/fiat/branch/replace-scientific-python
>>> >> >
>>> >> >
>>> >> > 2014-07-24 19:45 GMT+02:00 Nico Schlömer <[email protected]>:
>>> >> >
>>> >> >> Okay, then this is a problem. Do you know if your 1D test captures
>>> >> >> a
>>> >> >> difference in behavior between FIAT master and the SP-removal
>>> >> >> branch?
>>> >> >>
>>> >> >> --Nico
>>> >> >>
>>> >> >> On Thu, Jul 24, 2014 at 7:31 PM, Aslak Bergersen
>>> >> >> <[email protected]> wrote:
>>> >> >> > No, for [3] all tests passes in ffc.
>>> >> >> >
>>> >> >> >
>>> >> >> > [3] https://bitbucket.org/fenics-project/fiat
>>> >> >> >
>>> >> >> >
>>> >> >> > 2014-07-24 19:28 GMT+02:00 Nico Schlömer
>>> >> >> > <[email protected]>:
>>> >> >> >
>>> >> >> >> Do those tests fail with the latest FIAT master, too?
>>> >> >> >>
>>> >> >> >> --Nico
>>> >> >> >>
>>> >> >> >> On Thu, Jul 24, 2014 at 7:27 PM, Aslak Bergersen
>>> >> >> >> <[email protected]> wrote:
>>> >> >> >> > If you run ffc with this version of fiat then all 1D tests
>>> >> >> >> > fails
>>> >> >> >> > with
>>> >> >> >> > both
>>> >> >> >> > python 2 and python 3. Isn't that a problem that
>>> >> >> >> > needs to be addressed now? Try running the following (got this
>>> >> >> >> > from
>>> >> >> >> > Martin):
>>> >> >> >> >
>>> >> >> >> > $ more test.ufl
>>> >> >> >> > element = FiniteElement("Lagrange", interval, 1)
>>> >> >> >> >
>>> >> >> >> > ffc --verbose test.ufl
>>> >> >> >> >
>>> >> >> >> > Aslak
>>> >> >> >> >
>>> >> >> >> >
>>> >> >> >> > 2014-07-24 19:14 GMT+02:00 Nico Schlömer
>>> >> >> >> > <[email protected]>:
>>> >> >> >> >
>>> >> >> >> >> Okay, so the issue seems to be that the API for 1D differs
>>> >> >> >> >> from
>>> >> >> >> >> 2D
>>> >> >> >> >> and
>>> >> >> >> >> 3D. Consequently, the test needs to look differently, too.
>>> >> >> >> >>
>>> >> >> >> >> The 1D `tabulate_derivatives()` says:
>>> >> >> >> >>         """Returns a tuple of length one (A,) such that
>>> >> >> >> >>         A[i,j] = D phi_i(pts[j]).  The tuple is returned for
>>> >> >> >> >>         compatibility with the interfaces of the triangle and
>>> >> >> >> >>         tetrahedron expansions."""
>>> >> >> >> >>
>>> >> >> >> >> 2D and 3D say:
>>> >> >> >> >>         # Put data in the required data structure, i.e.,
>>> >> >> >> >>         # k-tuples which contain the value, and the k-1
>>> >> >> >> >> derivatives
>>> >> >> >> >>         # (gradient, Hessian, ...)
>>> >> >> >> >>
>>> >> >> >> >> This should probably be aligned, but the API will break. I
>>> >> >> >> >> would
>>> >> >> >> >> say
>>> >> >> >> >> that this needs to be addressed at some point, but the
>>> >> >> >> >> removal of
>>> >> >> >> >> ScientificPython/Python3 operability is a different issue.
>>> >> >> >> >> For
>>> >> >> >> >> now,
>>> >> >> >> >> you could just adjust the test for 1D.
>>> >> >> >> >>
>>> >> >> >> >> Cheers,
>>> >> >> >> >> Nico
>>> >> >> >> >>
>>> >> >> >> >>
>>> >> >> >> >> On Thu, Jul 24, 2014 at 6:06 PM, Aslak Bergersen
>>> >> >> >> >> <[email protected]> wrote:
>>> >> >> >> >> > I have added a test for 1D now, you can see it in [2].
>>> >> >> >> >> >
>>> >> >> >> >> > Yes, I was talking about [1].
>>> >> >> >> >> >
>>> >> >> >> >> > Aslak
>>> >> >> >> >> >
>>> >> >> >> >> > [2]
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> > https://bitbucket.org/aslakbergersen/fiat/branch/aslakbergersen/topic-prepare-py3
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> > 2014-07-24 17:31 GMT+02:00 Nico Schlömer
>>> >> >> >> >> > <[email protected]>:
>>> >> >> >> >> >
>>> >> >> >> >> >> > The code is a little opaque and the returned data
>>> >> >> >> >> >> > structure
>>> >> >> >> >> >> > is
>>> >> >> >> >> >> > a
>>> >> >> >> >> >> > mix
>>> >> >> >> >> >> > of
>>> >> >> >> >> >> > lists and tuples and
>>> >> >> >> >> >> > numpy arrays that differ between 2D and 1D and is not
>>> >> >> >> >> >> > documented
>>> >> >> >> >> >> > well.
>>> >> >> >> >> >>
>>> >> >> >> >> >> Indeed! When I dived into the code it was hard to figure
>>> >> >> >> >> >> out
>>> >> >> >> >> >> what
>>> >> >> >> >> >> data
>>> >> >> >> >> >> structure is needed since everything seems quite
>>> >> >> >> >> >> convoluted at
>>> >> >> >> >> >> first.
>>> >> >> >> >> >> Cleanup and documentation is needed here.
>>> >> >> >> >> >>
>>> >> >> >> >> >> --Nico
>>> >> >> >> >> >>
>>> >> >> >> >> >> On Wed, Jul 23, 2014 at 3:28 PM, Martin Sandve Alnæs
>>> >> >> >> >> >> <[email protected]>
>>> >> >> >> >> >> wrote:
>>> >> >> >> >> >> > Note: This is about 1D elements, not linear.
>>> >> >> >> >> >> >
>>> >> >> >> >> >> > Aslak, can you link to the bitbucket branch where you've
>>> >> >> >> >> >> > fixed
>>> >> >> >> >> >> > some
>>> >> >> >> >> >> > of
>>> >> >> >> >> >> > the
>>> >> >> >> >> >> > other issues with Nicos branch, so others can download
>>> >> >> >> >> >> > it
>>> >> >> >> >> >> > and
>>> >> >> >> >> >> > get
>>> >> >> >> >> >> > to
>>> >> >> >> >> >> > the
>>> >> >> >> >> >> > issue?
>>> >> >> >> >> >> >
>>> >> >> >> >> >> > Basically the tabulate_derivative method doesn't return
>>> >> >> >> >> >> > a
>>> >> >> >> >> >> > data
>>> >> >> >> >> >> > structure
>>> >> >> >> >> >> > in
>>> >> >> >> >> >> > the right format so indexing errors occur. The code is a
>>> >> >> >> >> >> > little
>>> >> >> >> >> >> > opaque
>>> >> >> >> >> >> > and
>>> >> >> >> >> >> > the returned data structure is a mix of lists and tuples
>>> >> >> >> >> >> > and
>>> >> >> >> >> >> > numpy
>>> >> >> >> >> >> > arrays
>>> >> >> >> >> >> > that differ between 2D and 1D and is not documented
>>> >> >> >> >> >> > well.
>>> >> >> >> >> >> >
>>> >> >> >> >> >> > Martin
>>> >> >> >> >> >> >
>>> >> >> >> >> >> >
>>> >> >> >> >> >> >
>>> >> >> >> >> >> > On 23 July 2014 13:59, Aslak Bergersen
>>> >> >> >> >> >> > <[email protected]>
>>> >> >> >> >> >> > wrote:
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> Hi!
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> I found an error in your implementation in fiat, Nico.
>>> >> >> >> >> >> >> And
>>> >> >> >> >> >> >> I'm
>>> >> >> >> >> >> >> having
>>> >> >> >> >> >> >> some
>>> >> >> >> >> >> >> trouble removing it. It is an error for all linear
>>> >> >> >> >> >> >> elements
>>> >> >> >> >> >> >> (which
>>> >> >> >> >> >> >> is
>>> >> >> >> >> >> >> not
>>> >> >> >> >> >> >> tested by fiat), and can be easy be reconstructed by
>>> >> >> >> >> >> >> running
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> element = FiniteElement("Lagrange", interval, 1)
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> The problem seems to be that tabulate_derivative in
>>> >> >> >> >> >> >> LineExpansionSet
>>> >> >> >> >> >> >> is
>>> >> >> >> >> >> >> not changed to return the same as tabulate_derivative
>>> >> >> >> >> >> >> in
>>> >> >> >> >> >> >> TriangleExpansionSet and TetrahedronExpansionSet. Is
>>> >> >> >> >> >> >> there
>>> >> >> >> >> >> >> an
>>> >> >> >> >> >> >> easy
>>> >> >> >> >> >> >> fix
>>> >> >> >> >> >> >> for
>>> >> >> >> >> >> >> this?
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> Aslak
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> 2014-06-29 22:31 GMT+02:00 Nico Schlömer
>>> >> >> >> >> >> >> <[email protected]>:
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >>> > 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?
>>> >> >> >> >> >> >>>
>>> >> >> >> >> >> >>> Those are things that Python2 linters like
>>> >> >> >> >> >> >>>
>>> >> >> >> >> >> >>> pep8
>>> >> >> >> >> >> >>> pyflakes
>>> >> >> >> >> >> >>> flake8
>>> >> >> >> >> >> >>>
>>> >> >> >> >> >> >>> usually bring up too. I would say that getting FEniCS
>>> >> >> >> >> >> >>> clean
>>> >> >> >> >> >> >>> w.r.t.
>>> >> >> >> >> >> >>> to
>>> >> >> >> >> >> >>> those three (largely overlapping) improves the code
>>> >> >> >> >> >> >>> readability
>>> >> >> >> >> >> >>> and
>>> >> >> >> >> >> >>> quality.
>>> >> >> >> >> >> >>>
>>> >> >> >> >> >> >>> Cheers,
>>> >> >> >> >> >> >>> Nico
>>> >> >> >> >> >> >>>
>>> >> >> >> >> >> >>>
>>> >> >> >> >> >> >>> On Fri, Jun 27, 2014 at 9:21 AM, 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
>>> >> >> >> >> >> >>> >
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> --
>>> >> >> >> >> >> >> Mvh
>>> >> >> >> >> >> >> Aslak Bergersen
>>> >> >> >> >> >> >> 993 22 848
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> > --
>>> >> >> >> >> > Mvh
>>> >> >> >> >> > Aslak Bergersen
>>> >> >> >> >> > 993 22 848
>>> >> >> >> >> >
>>> >> >> >> >
>>> >> >> >> >
>>> >> >> >> >
>>> >> >> >> >
>>> >> >> >> > --
>>> >> >> >> > Mvh
>>> >> >> >> > Aslak Bergersen
>>> >> >> >> > 993 22 848
>>> >> >> >> >
>>> >> >> >
>>> >> >> >
>>> >> >> >
>>> >> >> >
>>> >> >> > --
>>> >> >> > Mvh
>>> >> >> > Aslak Bergersen
>>> >> >> > 993 22 848
>>> >> >> >
>>> >> >
>>> >> >
>>> >> >
>>> >> >
>>> >> > --
>>> >> > Mvh
>>> >> > Aslak Bergersen
>>> >> > 993 22 848
>>> >> >
>>> >
>>> >
>>> >
>>> > --
>>> > Mvh
>>> > Aslak Bergersen
>>> > 993 22 848
>>> >
>>> >
>>
>>
>>
>>
>> --
>> Mvh
>> Aslak Bergersen
>> 993 22 848
>>
>
>
>
> --
> Mvh
> Aslak Bergersen
> 993 22 848
>
_______________________________________________
fenics mailing list
[email protected]
http://fenicsproject.org/mailman/listinfo/fenics

Reply via email to