Opened 4 years ago

Closed 4 years ago

#18558 closed enhancement (fixed)

Test all installed optional packages by default

Reported by: ncohen Owned by:
Priority: major Milestone: sage-6.8
Component: doctest framework Keywords:
Cc: vbraun, jdemeyer, tmonteil, slabbe Merged in:
Authors: Nathann Cohen, Jeroen Demeyer Reviewers: Jeroen Demeyer, Karl-Dieter Crisman, John Palmieri
Report Upstream: N/A Work issues:
Branch: 82f3eec (Commits) Commit: 82f3eec7a275f4f250b699633339bcb391b00b1e
Dependencies: #18456, #18124, #18559, #18563, #18579, #18581 Stopgaps:

Description (last modified by jdemeyer)

With this branch, running "sage -t" will automatically involve testing all installed up-to-date new-style optional Sage packages.

Change History (143)

comment:1 Changed 4 years ago by ncohen

  • Branch set to u/ncohen/18558
  • Commit set to dd586b9a4ce39bc27542263c8f91d5d84780d598
  • Description modified (diff)
  • Status changed from new to needs_review

New commits:

a3402c9trac #18456: Re-Fix standard_packages(), optional_packages(), and experimental_packages()
dd586b9trac #18558: Test all (installed) optional packages by default

comment:2 follow-up: Changed 4 years ago by jdemeyer

See also #13540.

comment:3 in reply to: ↑ 2 ; follow-up: Changed 4 years ago by ncohen

See also #13540.

Cool, a 3 years old ticket without a branch. I will drop them a line.

Nathann

Last edited 4 years ago by ncohen (previous) (diff)

comment:4 in reply to: ↑ 3 ; follow-up: Changed 4 years ago by jdemeyer

Replying to ncohen:

See also #13540.

Cool, a 3 years old ticket without a branch.

Well, there is a patch.

comment:5 Changed 4 years ago by jdemeyer

Note that tests for the cbc package are marked # optional - Coin so I guess this needs to be fixed.

comment:6 in reply to: ↑ 4 Changed 4 years ago by ncohen

Well, there is a patch.

It is two years old only. Which do you prefer to review, theirs or mine? :-P

Note that tests for the cbc package are marked # optional - Coin so I guess this needs to be fixed.

True, I will create another ticket in a second (done: #18559)

Nathann

Last edited 4 years ago by ncohen (previous) (diff)

comment:7 Changed 4 years ago by jdemeyer

  • Status changed from needs_review to needs_work

Instead of patching sage-runtests, patch the doctest framework, and add some doctests.

comment:8 Changed 4 years ago by jdemeyer

And instead of naming the option sage_and_installed_packages, I would prefer to have an option like alloptional (all installed optional packages), so one can do --optional=sage,alloptional,internet (which is not possible with your patch).

comment:9 follow-ups: Changed 4 years ago by ncohen

I did not patch the doctest framework because the default value of 'optional' is systematically overwritten by sage-runtests. As for 'add some doctest', I do not understand what you mean so be more specific.

comment:10 in reply to: ↑ 9 ; follow-up: Changed 4 years ago by jdemeyer

Replying to ncohen:

I did not patch the doctest framework because the default value of 'optional' is systematically overwritten by sage-runtests.

What do you mean with this? The sage-runtests script is really a very thin front-end for the doctest framework in the Sage library, it doesn't parse the value of the --optional option.

comment:11 in reply to: ↑ 9 Changed 4 years ago by jdemeyer

Replying to ncohen:

As for 'add some doctest', I do not understand what you mean so be more specific.

I meant "add a doctest in the doctest framework", but I admit I haven't thought much about what this should be.

comment:12 Changed 4 years ago by jdemeyer

On the topic of the option name: make it just optional instead of alloptional. So the default value should be --optional=sage,optional.

comment:13 in reply to: ↑ 10 Changed 4 years ago by ncohen

What do you mean with this? The sage-runtests script is really a very thin front-end for the doctest framework in the Sage library, it doesn't parse the value of the --optional option.

I mean that I was surprised to find that the DocTestDefaults class is not even instanciated when you run doctests.

comment:14 Changed 4 years ago by git

  • Commit changed from dd586b9a4ce39bc27542263c8f91d5d84780d598 to e45591ade00e925ecfb4ad08191c95add7dd5c84

Branch pushed to git repo; I updated commit sha1. New commits:

e45591atrac #18558: now with an 'installed_optional' keyword

comment:15 Changed 4 years ago by ncohen

  • Status changed from needs_work to needs_review

There is now an installed_optional tag which gets replaced by the list of all (installed) optional packages. The replacement is done in doctest.py.

Nathann

comment:16 Changed 4 years ago by jdemeyer

  • Dependencies changed from #18456 to #18456, #18124

comment:17 Changed 4 years ago by vbraun

Is there going to be a separate installed_experimental keyword? If not then it would be better to shorten it; Just --optional=optional (somewhat confusing) or --optional=installed. Imho the latter is best since its obvious enough that it refers to packages installed by Sage. It would also fit nicely with auto-detection on #13540, which would then be --optional=auto.

comment:18 Changed 4 years ago by jdemeyer

What are you going to do with all the current failing optional tests? Mark them as # known bug, open tickets to fix them,...?

comment:19 follow-up: Changed 4 years ago by vbraun

Imho: let them fail, its not the job of this ticket to clear that up. Also, will only fail if you actually install optional packages. And you can switch it off with --optional=sage.

comment:20 in reply to: ↑ 19 ; follow-up: Changed 4 years ago by jdemeyer

Replying to vbraun:

its not the job of this ticket to clear that up.

No, but it's the job of every ticket to ensure that the ticket does not make doctests fail. I think it will be very confusing when we get lots of reports that make ptest fails just somebody installed an optional package. At least, those make targets should use --optional=sage then. Alternatively, mark failing tests as # known bug.

comment:21 Changed 4 years ago by jdemeyer

  • Status changed from needs_review to needs_work
sage -t --long src/sage/geometry/triangulation/point_configuration.py
**********************************************************************
File "src/sage/geometry/triangulation/point_configuration.py", line 88, in sage.geometry.triangulation.point_configuration
Failed example:
    regular = p.restrict_to_regular_triangulations(True).triangulations_list()      # optional - TOPCOM
Exception raised:
    Traceback (most recent call last):
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 496, in _run
        self.compile_and_execute(example, compiler, test.globs)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 858, in compile_and_execute
        exec(compiled, globs)
      File "<doctest sage.geometry.triangulation.point_configuration[19]>", line 1, in <module>
        regular = p.restrict_to_regular_triangulations(True).triangulations_list()      # optional - TOPCOM
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/geometry/triangulation/point_configuration.py", line 1016, in triangulations_list
        return list(self.triangulations(verbose))
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/geometry/triangulation/point_configuration.py", line 983, in triangulations
        raise ValueError('Need TOPCOM to test for regularity.')
    ValueError: Need TOPCOM to test for regularity.
**********************************************************************
File "src/sage/geometry/triangulation/point_configuration.py", line 89, in sage.geometry.triangulation.point_configuration
Failed example:
    nonregular = p.restrict_to_regular_triangulations(False).triangulations_list()  # optional - TOPCOM
Exception raised:
    Traceback (most recent call last):
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 496, in _run
        self.compile_and_execute(example, compiler, test.globs)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 858, in compile_and_execute
        exec(compiled, globs)
      File "<doctest sage.geometry.triangulation.point_configuration[20]>", line 1, in <module>
        nonregular = p.restrict_to_regular_triangulations(False).triangulations_list()  # optional - TOPCOM
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/geometry/triangulation/point_configuration.py", line 1016, in triangulations_list
        return list(self.triangulations(verbose))
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/geometry/triangulation/point_configuration.py", line 983, in triangulations
        raise ValueError('Need TOPCOM to test for regularity.')
    ValueError: Need TOPCOM to test for regularity.
**********************************************************************
File "src/sage/geometry/triangulation/point_configuration.py", line 90, in sage.geometry.triangulation.point_configuration
Failed example:
    len(regular)     # optional - TOPCOM
Exception raised:
    Traceback (most recent call last):
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 496, in _run
        self.compile_and_execute(example, compiler, test.globs)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 858, in compile_and_execute
        exec(compiled, globs)
      File "<doctest sage.geometry.triangulation.point_configuration[21]>", line 1, in <module>
        len(regular)     # optional - TOPCOM
    NameError: name 'regular' is not defined
**********************************************************************
File "src/sage/geometry/triangulation/point_configuration.py", line 92, in sage.geometry.triangulation.point_configuration
Failed example:
    len(nonregular)  # optional - TOPCOM
Exception raised:
    Traceback (most recent call last):
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 496, in _run
        self.compile_and_execute(example, compiler, test.globs)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 858, in compile_and_execute
        exec(compiled, globs)
      File "<doctest sage.geometry.triangulation.point_configuration[22]>", line 1, in <module>
        len(nonregular)  # optional - TOPCOM
    NameError: name 'nonregular' is not defined
**********************************************************************
File "src/sage/geometry/triangulation/point_configuration.py", line 94, in sage.geometry.triangulation.point_configuration
Failed example:
    nonregular[0].plot(aspect_ratio=1, axes=False)   # optional - TOPCOM
Exception raised:
    Traceback (most recent call last):
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 496, in _run
        self.compile_and_execute(example, compiler, test.globs)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 858, in compile_and_execute
        exec(compiled, globs)
      File "<doctest sage.geometry.triangulation.point_configuration[23]>", line 1, in <module>
        nonregular[Integer(0)].plot(aspect_ratio=Integer(1), axes=False)   # optional - TOPCOM
    NameError: name 'nonregular' is not defined
**********************************************************************
File "src/sage/geometry/triangulation/point_configuration.py", line 687, in sage.geometry.triangulation.point_configuration.PointConfiguration._TOPCOM_triangulations
Failed example:
    next(iter)     # optional - TOPCOM
Expected:
    #### TOPCOM input ####
    # points2triangs
    # [[0,0,1],[0,1,1],[1,0,1],[1,1,1],[-1,-1,1]]
    #### TOPCOM output ####
    # T[1]:=[5,3:{{0,1,2},{1,2,3},{0,2,4},{0,1,4}}];
    (<0,1,2>, <0,1,4>, <0,2,4>, <1,2,3>)
Got:
    #### TOPCOM input ####
    # points2triangs
    # [[0,0,1],[0,1,1],[1,0,1],[1,1,1],[-1,-1,1]]
    #### TOPCOM output ####
    # T[0]:=[0->5,3:{{0,1,2},{1,2,3},{0,2,4},{0,1,4}}];
    (<0,1,2>, <0,1,4>, <0,2,4>, <1,2,3>)
**********************************************************************
File "src/sage/geometry/triangulation/point_configuration.py", line 783, in sage.geometry.triangulation.point_configuration.PointConfiguration.restrict_to_regular_triangulations
Failed example:
    len(p_regular.triangulations_list())               # optional - TOPCOM
Exception raised:
    Traceback (most recent call last):
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 496, in _run
        self.compile_and_execute(example, compiler, test.globs)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 858, in compile_and_execute
        exec(compiled, globs)
      File "<doctest sage.geometry.triangulation.point_configuration.PointConfiguration.restrict_to_regular_triangulations[4]>", line 1, in <module>
        len(p_regular.triangulations_list())               # optional - TOPCOM
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/geometry/triangulation/point_configuration.py", line 1016, in triangulations_list
        return list(self.triangulations(verbose))
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/geometry/triangulation/point_configuration.py", line 983, in triangulations
        raise ValueError('Need TOPCOM to test for regularity.')
    ValueError: Need TOPCOM to test for regularity.
**********************************************************************
File "src/sage/geometry/triangulation/point_configuration.py", line 826, in sage.geometry.triangulation.point_configuration.PointConfiguration.restrict_to_connected_triangulations
Failed example:
    len(p_all.triangulations_list())                                 # optional - TOPCOM
Exception raised:
    Traceback (most recent call last):
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 496, in _run
        self.compile_and_execute(example, compiler, test.globs)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 858, in compile_and_execute
        exec(compiled, globs)
      File "<doctest sage.geometry.triangulation.point_configuration.PointConfiguration.restrict_to_connected_triangulations[4]>", line 1, in <module>
        len(p_all.triangulations_list())                                 # optional - TOPCOM
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/geometry/triangulation/point_configuration.py", line 1016, in triangulations_list
        return list(self.triangulations(verbose))
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/geometry/triangulation/point_configuration.py", line 981, in triangulations
        raise ValueError('Need TOPCOM to find disconnected triangulations.')
    ValueError: Need TOPCOM to find disconnected triangulations.
**********************************************************************
4 items had failures:
   5 of  33 in sage.geometry.triangulation.point_configuration
   1 of   4 in sage.geometry.triangulation.point_configuration.PointConfiguration._TOPCOM_triangulations
   1 of   7 in sage.geometry.triangulation.point_configuration.PointConfiguration.restrict_to_connected_triangulations
   1 of   7 in sage.geometry.triangulation.point_configuration.PointConfiguration.restrict_to_regular_triangulations
    [239 tests, 8 failures, 23.36 s]
sage -t --long src/doc/en/thematic_tutorials/sandpile.rst
**********************************************************************
File "src/doc/en/thematic_tutorials/sandpile.rst", line 695, in doc.en.thematic_tutorials.sandpile
Failed example:
    p[0] # optional - 4ti2
Expected:
    [{0: -8, 1: 5, 2: 4, 3: 1},
     Simplicial complex with vertex set (0, 1, 2, 3) and facets {(1, 2), (3,)}]
Got:
    [{0: -8, 1: 5, 2: 4, 3: 1},
     Simplicial complex with vertex set (1, 2, 3) and facets {(1, 2), (3,)}]
**********************************************************************
File "src/doc/en/thematic_tutorials/sandpile.rst", line 706, in doc.en.thematic_tutorials.sandpile
Failed example:
    D.Dcomplex() # optional - 4ti2
Expected:
    Simplicial complex with vertex set (0, 1, 2, 3) and facets {(1, 2), (3,)}
Got:
    Simplicial complex with vertex set (1, 2, 3) and facets {(1, 2), (3,)}
**********************************************************************
File "src/doc/en/thematic_tutorials/sandpile.rst", line 1078, in doc.en.thematic_tutorials.sandpile
Failed example:
    p[0] # optional - 4ti2
Expected:
    [{0: -8, 1: 5, 2: 4, 3: 1},
     Simplicial complex with vertex set (0, 1, 2, 3) and facets {(1, 2), (3,)}]
Got:
    [{0: -8, 1: 5, 2: 4, 3: 1},
     Simplicial complex with vertex set (1, 2, 3) and facets {(1, 2), (3,)}]
**********************************************************************
File "src/doc/en/thematic_tutorials/sandpile.rst", line 3623, in doc.en.thematic_tutorials.sandpile
Failed example:
    D.effective_div() # optional - 4ti2
Expected:
    [{0: 1, 1: 0, 2: 0, 3: 1, 4: 0, 5: 0},
     {0: 0, 1: 0, 2: 1, 3: 1, 4: 0, 5: 0},
     {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 2}]
Got:
    [{0: 0, 1: 0, 2: 1, 3: 1, 4: 0, 5: 0},
     {0: 1, 1: 0, 2: 0, 3: 1, 4: 0, 5: 0},
     {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 2}]
**********************************************************************
File "src/doc/en/thematic_tutorials/sandpile.rst", line 3627, in doc.en.thematic_tutorials.sandpile
Failed example:
    D.effective_div(False) # optional - 4ti2
Expected:
    [[1, 0, 0, 1, 0, 0], [0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 0, 2]]
Got:
    [[0, 0, 1, 1, 0, 0], [1, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 2]]
**********************************************************************
File "src/doc/en/thematic_tutorials/sandpile.rst", line 3779, in doc.en.thematic_tutorials.sandpile
Failed example:
    D.linear_system() # optional - 4ti2
Expected:
    {'inhomog': [[0, 0, -1, -1, 0, -2], [0, 0, 0, 0, 0, -1], [0, 0, 0, 0, 0, 0]],
    'num_inhomog': 3, 'num_homog': 2, 'homog': [[1, 0, 0, 0, 0, 0],
    [-1, 0, 0, 0, 0, 0]]}
Got:
    {'homog': [[1, 0, 0, 0, 0, 0], [-1, 0, 0, 0, 0, 0]],
     'inhomog': [[0, 0, 0, 0, 0, -1], [0, 0, -1, -1, 0, -2], [0, 0, 0, 0, 0, 0]],
     'num_homog': 2,
     'num_inhomog': 3}
**********************************************************************
1 item had failures:
   6 of 584 in doc.en.thematic_tutorials.sandpile
    [583 tests, 6 failures, 26.44 s]
sage -t --long src/sage/symbolic/integration/integral.py
**********************************************************************
File "src/sage/symbolic/integration/integral.py", line 528, in sage.symbolic.integration.integral.integrate
Failed example:
    integrate(f(x), x, algorithm="fricas")      # optional - fricas
Expected:
    2*sqrt(x + sqrt(x^2 + 1)) + log(sqrt(x + sqrt(x^2 + 1)) - 1)
    - log(sqrt(x + sqrt(x^2 + 1)) + 1) - 2*arctan(sqrt(x + sqrt(x^2 + 1)))
Got:
    2*sqrt(x + sqrt(x^2 + 1)) - 2*arctan(sqrt(x + sqrt(x^2 + 1))) - log(sqrt(x + sqrt(x^2 + 1)) + 1) + log(sqrt(x + sqrt(x^2 + 1)) - 1)
**********************************************************************
File "src/sage/symbolic/integration/integral.py", line 541, in sage.symbolic.integration.integral.integrate
Failed example:
    integrate(f(x), x, 1, 2, algorithm="fricas")  # optional - fricas
Expected:
    -1/2*pi + arctan(1/2) + arctan(2) + arctan(5) + arctan(8)
Got:
    -1/2*pi + arctan(8) + arctan(5) + arctan(2) + arctan(1/2)
**********************************************************************
1 item had failures:
   2 of 118 in sage.symbolic.integration.integral.integrate
    [161 tests, 2 failures, 23.00 s]
sage -t --long src/sage/graphs/graph_generators.py
**********************************************************************
File "src/sage/graphs/graph_generators.py", line 1145, in sage.graphs.graph_generators.GraphGenerators.fullerenes
Failed example:
    g.plot3d(layout='spring')  # optional buckygen
Expected nothing
Got:
    Graphics3d Object
**********************************************************************
1 item had failures:
   1 of  11 in sage.graphs.graph_generators.GraphGenerators.fullerenes
    [140 tests, 1 failure, 24.39 s]
sage -t --long src/sage/coding/linear_code.py
**********************************************************************
File "src/sage/coding/linear_code.py", line 1457, in sage.coding.linear_code.AbstractLinearCode.decode
Failed example:
    C.decode(v, algorithm="guava")  # optional - gap_packages (Guava package)
Exception raised:
    Traceback (most recent call last):
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 496, in _run
        self.compile_and_execute(example, compiler, test.globs)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 858, in compile_and_execute
        exec(compiled, globs)
      File "<doctest sage.coding.linear_code.AbstractLinearCode.decode[20]>", line 1, in <module>
        C.decode(v, algorithm="guava")  # optional - gap_packages (Guava package)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/coding/linear_code.py", line 1481, in decode
        result = gap.Decodeword(code, right_word)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/interfaces/interface.py", line 534, in __call__
        return self._parent.function_call(self._name, list(args), kwds)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/interfaces/gap.py", line 893, in function_call
        ['%s=%s'%(key,value.name()) for key, value in kwds.items()])))
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/interfaces/gap.py", line 568, in eval
        result = Expect.eval(self, input_line, **kwds)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/interfaces/expect.py", line 1221, in eval
        for L in code.split('\n') if L != ''])
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/interfaces/gap.py", line 766, in _eval_line
        raise RuntimeError(message)
    RuntimeError: Gap produced error output
    Error, List Element: <list>[2] must have an assigned value

       executing Decodeword($sage26,$sage24);
**********************************************************************
File "src/sage/coding/linear_code.py", line 2356, in sage.coding.linear_code.AbstractLinearCode.permutation_automorphism_group
Failed example:
    C.permutation_automorphism_group(algorithm="gap")  # optional - gap_packages (Guava package)
Exception raised:
    Traceback (most recent call last):
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 496, in _run
        self.compile_and_execute(example, compiler, test.globs)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 858, in compile_and_execute
        exec(compiled, globs)
      File "<doctest sage.coding.linear_code.AbstractLinearCode.permutation_automorphism_group[27]>", line 1, in <module>
        C.permutation_automorphism_group(algorithm="gap")  # optional - gap_packages (Guava package)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/coding/linear_code.py", line 2397, in permutation_automorphism_group
        A = gap("MatrixAutomorphisms(matCwt)")
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/interfaces/interface.py", line 170, in __call__
        return cls(self, x, name=name)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/interfaces/expect.py", line 1304, in __init__
        self._name = parent._create(value, name=name)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/interfaces/interface.py", line 360, in _create
        self.set(name, value)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/interfaces/gap.py", line 1298, in set
        self._eval_line(cmd, allow_use_file=True)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/interfaces/gap.py", line 766, in _eval_line
        raise RuntimeError(message)
    TypeError: Gap produced error output
    Error, no method found! For debugging hints type ?Recovery from NoMethodFound
    Error, no 1st choice method found for `MatrixAutomorphisms' on 1 arguments

       executing $sage30:=MatrixAutomorphisms(matCwt);;
**********************************************************************
File "src/sage/coding/linear_code.py", line 2358, in sage.coding.linear_code.AbstractLinearCode.permutation_automorphism_group
Failed example:
    C.permutation_automorphism_group(algorithm="gap")  # optional - gap_packages (Guava package)
Exception raised:
    Traceback (most recent call last):
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 496, in _run
        self.compile_and_execute(example, compiler, test.globs)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 858, in compile_and_execute
        exec(compiled, globs)
      File "<doctest sage.coding.linear_code.AbstractLinearCode.permutation_automorphism_group[29]>", line 1, in <module>
        C.permutation_automorphism_group(algorithm="gap")  # optional - gap_packages (Guava package)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/coding/linear_code.py", line 2397, in permutation_automorphism_group
        A = gap("MatrixAutomorphisms(matCwt)")
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/interfaces/interface.py", line 170, in __call__
        return cls(self, x, name=name)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/interfaces/expect.py", line 1304, in __init__
        self._name = parent._create(value, name=name)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/interfaces/interface.py", line 360, in _create
        self.set(name, value)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/interfaces/gap.py", line 1298, in set
        self._eval_line(cmd, allow_use_file=True)
      File "/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/interfaces/gap.py", line 766, in _eval_line
        raise RuntimeError(message)
    TypeError: Gap produced error output
    Error, no method found! For debugging hints type ?Recovery from NoMethodFound
    Error, no 1st choice method found for `MatrixAutomorphisms' on 1 arguments

       executing $sage17:=MatrixAutomorphisms(matCwt);;
**********************************************************************
2 items had failures:
   1 of  23 in sage.coding.linear_code.AbstractLinearCode.decode
   2 of  31 in sage.coding.linear_code.AbstractLinearCode.permutation_automorphism_group
    [456 tests, 3 failures, 9.84 s]
sage -t --long src/sage/rings/real_mpfr.pyx
**********************************************************************
File "src/sage/rings/real_mpfr.pyx", line 3012, in sage.rings.real_mpfr.RealNumber._axiom_
Failed example:
    fricas(R(pi)) # optional - fricas
Expected:
    3.1415926535 8979323846 26433833
Got:
    3.1415926535_8979323846_26433833
**********************************************************************
1 item had failures:
   1 of   4 in sage.rings.real_mpfr.RealNumber._axiom_
    [957 tests, 1 failure, 2.88 s]
sage -t --long src/sage/rings/infinity.py
**********************************************************************
File "src/sage/rings/infinity.py", line 277, in sage.rings.infinity.AnInfinity._fricas_init_
Failed example:
    fricas(-oo)           # optional - fricas
Expected:
    %minusInfinity
Got:
    - infinity
**********************************************************************
1 item had failures:
   1 of   3 in sage.rings.infinity.AnInfinity._fricas_init_
    [280 tests, 1 failure, 2.42 s]
sage -t --long src/sage/geometry/polyhedron/base_ZZ.py
**********************************************************************
File "src/sage/geometry/polyhedron/base_ZZ.py", line 223, in sage.geometry.polyhedron.base_ZZ.Polyhedron_ZZ.?
Failed example:
    p = P.ehrhart_polynomial(maxdet=5, verbose=True)  # optional - latte_int
Expected:
    This is LattE integrale 1.7.2
    ...
    Invocation: count --ehrhart-polynomial '--redundancy-check=none' '--maxdet=5' --cdd ...
    ...
Got:
    This is LattE integrale 1.7.3
    Available from http://www.math.ucdavis.edu/~latte/
    <BLANKLINE>
    Invocation: count --ehrhart-polynomial '--redundancy-check=none' '--maxdet=5' --cdd /home/jdemeyer/.sage/temp/tamiyo/6258/tmp_GWXqbS.ine 
    Warning: Not performing check for empty polytope, because it is unimplemented for the CDD-style input format. 
    size = 4 x 4
    Number Type = rational
    Ax <= b, given as (b|-A):
    =========================
    [1 -1 1 0]
    [-1 2 -1 0]
    [1 1 -2 0]
    <BLANKLINE>
    Ax = b, given as (b|-A):
    ========================
    [-1 2 -1 -3]
    <BLANKLINE>
    Computing hermitean normal form.
    sol:
    [-1 0 0]
    Particular solution:
    Basis:
    New inequalities:
    [0 1 -3 0]
    [0 0 3 0]
    [3 -3 6 0]
    Time for reading and preprocessing: 0 sec
    The polytope has 3 vertices.
    Time for computing vertices and supporting cones: 0 sec
    Time for dualizing general cones: 0 sec
    Dualizing all cones...All cones are now dualized.
    Time for dualizing general cones: 0 sec
    Triangulating cone... done.
    0 vertex cones done. 
    Triangulating cone... done.
    1 vertex cones done. 
    Triangulating cone... done.
    2 vertex cones done. 
    <BLANKLINE>
    Ehrhart polynomial: Total time: 0 sec
**********************************************************************
File "src/sage/geometry/polyhedron/base_ZZ.py", line 231, in sage.geometry.polyhedron.base_ZZ.Polyhedron_ZZ.?
Failed example:
    p = P.ehrhart_polynomial(dual=True, verbose=True)  # optional - latte_int
Expected:
    This is LattE integrale 1.7.2
    ...
    Invocation: count --ehrhart-polynomial '--redundancy-check=none' --dual --cdd ...
    ...
Got:
    This is LattE integrale 1.7.3
    Available from http://www.math.ucdavis.edu/~latte/
    <BLANKLINE>
    Invocation: count --ehrhart-polynomial '--redundancy-check=none' --dual --cdd /home/jdemeyer/.sage/temp/tamiyo/6258/tmp_61Y455.ine 
    Warning: Not performing check for empty polytope, because it is unimplemented for the CDD-style input format. 
    size = 4 x 4
    Number Type = rational
    Ax <= b, given as (b|-A):
    =========================
    [1 -1 1 0]
    [-1 2 -1 0]
    [1 1 -2 0]
    <BLANKLINE>
    Ax = b, given as (b|-A):
    ========================
    [-1 2 -1 -3]
    <BLANKLINE>
    Computing hermitean normal form.
    sol:
    [-1 0 0]
    Particular solution:
    Basis:
    New inequalities:
    [0 1 -3 0]
    [0 0 3 0]
    [3 -3 6 0]
    Time for reading and preprocessing: 0 sec
    The polytope has 3 vertices.
    Time for computing vertices and supporting cones: 0 sec
    Time for dualizing general cones: 0 sec
    Dualizing all cones...All cones are now dualized.
    Time for dualizing general cones: 0 sec
    Triangulating cone... done.
    0 vertex cones done. 
    Triangulating cone... done.
    1 vertex cones done. 
    Triangulating cone... done.
    2 vertex cones done. 
    <BLANKLINE>
    Ehrhart polynomial: Total time: 0 sec
**********************************************************************
File "src/sage/geometry/polyhedron/base_ZZ.py", line 239, in sage.geometry.polyhedron.base_ZZ.Polyhedron_ZZ.?
Failed example:
    p = P.ehrhart_polynomial(irrational_primal=True, verbose=True)   # optional - latte_int
Expected:
    This is LattE integrale 1.7.2
    ...
    Invocation: count --ehrhart-polynomial '--redundancy-check=none' --irrational-primal --cdd ...
    ...
Got:
    This is LattE integrale 1.7.3
    Available from http://www.math.ucdavis.edu/~latte/
    <BLANKLINE>
    Invocation: count --ehrhart-polynomial '--redundancy-check=none' --irrational-primal --cdd /home/jdemeyer/.sage/temp/tamiyo/6258/tmp_WjZNI4.ine 
    Warning: Not performing check for empty polytope, because it is unimplemented for the CDD-style input format. 
    size = 4 x 4
    Number Type = rational
    Ax <= b, given as (b|-A):
    =========================
    [1 -1 1 0]
    [-1 2 -1 0]
    [1 1 -2 0]
    <BLANKLINE>
    Ax = b, given as (b|-A):
    ========================
    [-1 2 -1 -3]
    <BLANKLINE>
    Computing hermitean normal form.
    sol:
    [-1 0 0]
    Particular solution:
    Basis:
    New inequalities:
    [0 1 -3 0]
    [0 0 3 0]
    [3 -3 6 0]
    Time for reading and preprocessing: 0 sec
    The polytope has 3 vertices.
    Time for computing vertices and supporting cones: 0 sec
    Time for dualizing general cones: 0 sec
    Dualizing all cones...All cones are now dualized.
    Time for dualizing general cones: 0 sec
    Triangulating cone... done.
    0 vertex cones done. 
    Triangulating cone... done.
    1 vertex cones done. 
    Triangulating cone... done.
    2 vertex cones done. 
    <BLANKLINE>
    Ehrhart polynomial: Total time: 0 sec
**********************************************************************
File "src/sage/geometry/polyhedron/base_ZZ.py", line 247, in sage.geometry.polyhedron.base_ZZ.Polyhedron_ZZ.?
Failed example:
    p = P.ehrhart_polynomial(irrational_all_primal=True, verbose=True)  # optional - latte_int
Expected:
    This is LattE integrale 1.7.2
    ...
    Invocation: count --ehrhart-polynomial '--redundancy-check=none' --irrational-all-primal --cdd ...
Got:
    This is LattE integrale 1.7.3
    Available from http://www.math.ucdavis.edu/~latte/
    <BLANKLINE>
    Invocation: count --ehrhart-polynomial '--redundancy-check=none' --irrational-all-primal --cdd /home/jdemeyer/.sage/temp/tamiyo/6258/tmp_Lhrv_b.ine 
    Warning: Not performing check for empty polytope, because it is unimplemented for the CDD-style input format. 
    size = 4 x 4
    Number Type = rational
    Ax <= b, given as (b|-A):
    =========================
    [1 -1 1 0]
    [-1 2 -1 0]
    [1 1 -2 0]
    <BLANKLINE>
    Ax = b, given as (b|-A):
    ========================
    [-1 2 -1 -3]
    <BLANKLINE>
    Computing hermitean normal form.
    sol:
    [-1 0 0]
    Particular solution:
    Basis:
    New inequalities:
    [0 1 -3 0]
    [0 0 3 0]
    [3 -3 6 0]
    Time for reading and preprocessing: 0 sec
    The polytope has 3 vertices.
    Time for computing vertices and supporting cones: 0 sec
    Time for dualizing general cones: 0 sec
    Irrationalizing polyhedral cones... (First computing their rays... Dualizing all cones...All cones are now dualized.
    Time for dualizing general cones: 0 sec
    Dualizing all cones...All cones are now dualized.
    Time for dualizing general cones: 0 sec
    done; sorry for the interruption.) Time for irrationalizing general cones: 0 sec
    Triangulating cone... done.
    0 vertex cones done. 
    Triangulating cone... done.
    1 vertex cones done. 
    Triangulating cone... done.
    2 vertex cones done. 
    <BLANKLINE>
    Ehrhart polynomial: Total time: 0 sec
**********************************************************************
1 item had failures:
   4 of  27 in sage.geometry.polyhedron.base_ZZ.Polyhedron_ZZ.?
    [67 tests, 4 failures, 1.39 s]
sage -t --long src/sage/symbolic/integration/external.py
**********************************************************************
File "src/sage/symbolic/integration/external.py", line 86, in sage.symbolic.integration.external.fricas_integrator
Failed example:
    fricas_integrator(1/(x^2-2), x, 0, 1)                             # optional - fricas
Expected:
    1/4*(log(3*sqrt(2) - 4) - log(sqrt(2)))*sqrt(2)
Got:
    1/4*sqrt(2)*(log(3*sqrt(2) - 4) - log(sqrt(2)))
**********************************************************************
File "src/sage/symbolic/integration/external.py", line 88, in sage.symbolic.integration.external.fricas_integrator
Failed example:
    fricas_integrator(1/(x^2+6), x, -oo, oo)                          # optional - fricas
Expected:
    1/6*pi*sqrt(6)
Got:
    1/6*sqrt(6)*pi
**********************************************************************
1 item had failures:
   2 of   6 in sage.symbolic.integration.external.fricas_integrator
    [14 tests, 2 failures, 2.28 s]
sage -t --long src/doc/en/thematic_tutorials/algebraic_combinatorics/rsk.rst
**********************************************************************
File "src/doc/en/thematic_tutorials/algebraic_combinatorics/rsk.rst", line 23, in doc.en.thematic_tutorials.algebraic_combinatorics.rsk
Failed example:
    view(H)      # optional - dot2tex
Expected nothing
Got:
    An error occurred.
    This is pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012) (format=pdflatex 2014.3.17)  31 MAY 2015 15:44
    entering extended mode
     restricted \write18 enabled.
     %&-line parsing enabled.
    **\nonstopmode \input{sage.tex}
    (./sage.tex (/usr/share/texmf-dist/tex/latex/base/article.cls
    Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
    (/usr/share/texmf-dist/tex/latex/base/size10.clo
    File: size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
    )
    \c@part=\count79
    \c@section=\count80
    \c@subsection=\count81
    \c@subsubsection=\count82
    \c@paragraph=\count83
    \c@subparagraph=\count84
    \c@figure=\count85
    \c@table=\count86
    \abovecaptionskip=\skip41
    \belowcaptionskip=\skip42
    \bibindent=\dimen102
    )
    (/usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty
    Package: amsmath 2000/07/18 v2.13 AMS math features
    \@mathmargin=\skip43
    <BLANKLINE>
    For additional information on amsmath, use the `?' option.
    (/usr/share/texmf-dist/tex/latex/amsmath/amstext.sty
    Package: amstext 2000/06/29 v2.01
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty
    File: amsgen.sty 1999/11/30 v2.0
    \@emptytoks=\toks14
    \ex@=\dimen103
    ))
    (/usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty
    Package: amsbsy 1999/11/29 v1.2d
    \pmbraise@=\dimen104
    )
    (/usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty
    Package: amsopn 1999/12/14 v2.01 operator names
    )
    \inf@bad=\count87
    LaTeX Info: Redefining \frac on input line 211.
    \uproot@=\count88
    \leftroot@=\count89
    LaTeX Info: Redefining \overline on input line 307.
    \classnum@=\count90
    \DOTSCASE@=\count91
    LaTeX Info: Redefining \ldots on input line 379.
    LaTeX Info: Redefining \dots on input line 382.
    LaTeX Info: Redefining \cdots on input line 467.
    \Mathstrutbox@=\box26
    \strutbox@=\box27
    \big@size=\dimen105
    LaTeX Font Info:    Redeclaring font encoding OML on input line 567.
    LaTeX Font Info:    Redeclaring font encoding OMS on input line 568.
    \macc@depth=\count92
    \c@MaxMatrixCols=\count93
    \dotsspace@=\muskip10
    \c@parentequation=\count94
    \dspbrk@lvl=\count95
    \tag@help=\toks15
    \row@=\count96
    \column@=\count97
    \maxfields@=\count98
    \andhelp@=\toks16
    \eqnshift@=\dimen106
    \alignsep@=\dimen107
    \tagshift@=\dimen108
    \tagwidth@=\dimen109
    \totwidth@=\dimen110
    \lineht@=\dimen111
    \@envbody=\toks17
    \multlinegap=\skip44
    \multlinetaggap=\skip45
    \mathdisplay@stack=\toks18
    LaTeX Info: Redefining \[ on input line 2666.
    LaTeX Info: Redefining \] on input line 2667.
    )
    (/usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty
    Package: amssymb 2009/06/22 v3.00
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty
    Package: amsfonts 2009/06/22 v3.00 Basic AMSFonts support
    \symAMSa=\mathgroup4
    \symAMSb=\mathgroup5
    LaTeX Font Info:    Overwriting math alphabet `\mathfrak' in version `bold'
    (Font)                  U/euf/m/n --> U/euf/b/n on input line 96.
    ))
    (/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty
    Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/graphics/keyval.sty
    Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
    \KV@toks@=\toks19
    )
    (/usr/share/texmf-dist/tex/latex/graphics/graphics.sty
    Package: graphics 2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR)
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/graphics/trig.sty
    Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
    )
    (/usr/share/texmf-dist/tex/latex/latexconfig/graphics.cfg
    File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live
    )
    Package graphics Info: Driver file: pdftex.def on input line 91.
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/pdftex-def/pdftex.def
    File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/generic/oberdiek/infwarerr.sty
    Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO)
    )
    (/usr/share/texmf-dist/tex/generic/oberdiek/ltxcmds.sty
    Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO)
    )
    \Gread@gobject=\count99
    ))
    \Gin@req@height=\dimen112
    \Gin@req@width=\dimen113
    )
    (/usr/share/texmf-dist/tex/latex/jknapltx/mathrsfs.sty
    Package: mathrsfs 1996/01/01 Math RSFS package v1.0 (jk)
    \symrsfs=\mathgroup6
    )
    (/usr/share/texmf-dist/tex/latex/base/inputenc.sty
    Package: inputenc 2008/03/30 v1.1d Input encoding file
    \inpenc@prehook=\toks20
    \inpenc@posthook=\toks21
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/base/utf8.def
    File: utf8.def 2008/04/05 v1.1m UTF-8 support for inputenc
    Now handling font encoding OML ...
    ... no UTF-8 mapping file for font encoding OML
    Now handling font encoding T1 ...
    ... processing UTF-8 mapping file for font encoding T1
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/base/t1enc.dfu
    File: t1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
       defining Unicode char U+00A1 (decimal 161)
       defining Unicode char U+00A3 (decimal 163)
       defining Unicode char U+00AB (decimal 171)
       defining Unicode char U+00BB (decimal 187)
       defining Unicode char U+00BF (decimal 191)
       defining Unicode char U+00C0 (decimal 192)
       defining Unicode char U+00C1 (decimal 193)
       defining Unicode char U+00C2 (decimal 194)
       defining Unicode char U+00C3 (decimal 195)
       defining Unicode char U+00C4 (decimal 196)
       defining Unicode char U+00C5 (decimal 197)
       defining Unicode char U+00C6 (decimal 198)
       defining Unicode char U+00C7 (decimal 199)
       defining Unicode char U+00C8 (decimal 200)
       defining Unicode char U+00C9 (decimal 201)
       defining Unicode char U+00CA (decimal 202)
       defining Unicode char U+00CB (decimal 203)
       defining Unicode char U+00CC (decimal 204)
       defining Unicode char U+00CD (decimal 205)
       defining Unicode char U+00CE (decimal 206)
       defining Unicode char U+00CF (decimal 207)
       defining Unicode char U+00D0 (decimal 208)
       defining Unicode char U+00D1 (decimal 209)
       defining Unicode char U+00D2 (decimal 210)
       defining Unicode char U+00D3 (decimal 211)
       defining Unicode char U+00D4 (decimal 212)
       defining Unicode char U+00D5 (decimal 213)
       defining Unicode char U+00D6 (decimal 214)
       defining Unicode char U+00D8 (decimal 216)
       defining Unicode char U+00D9 (decimal 217)
       defining Unicode char U+00DA (decimal 218)
       defining Unicode char U+00DB (decimal 219)
       defining Unicode char U+00DC (decimal 220)
       defining Unicode char U+00DD (decimal 221)
       defining Unicode char U+00DE (decimal 222)
       defining Unicode char U+00DF (decimal 223)
       defining Unicode char U+00E0 (decimal 224)
       defining Unicode char U+00E1 (decimal 225)
       defining Unicode char U+00E2 (decimal 226)
       defining Unicode char U+00E3 (decimal 227)
       defining Unicode char U+00E4 (decimal 228)
       defining Unicode char U+00E5 (decimal 229)
       defining Unicode char U+00E6 (decimal 230)
       defining Unicode char U+00E7 (decimal 231)
       defining Unicode char U+00E8 (decimal 232)
       defining Unicode char U+00E9 (decimal 233)
       defining Unicode char U+00EA (decimal 234)
       defining Unicode char U+00EB (decimal 235)
       defining Unicode char U+00EC (decimal 236)
       defining Unicode char U+00ED (decimal 237)
       defining Unicode char U+00EE (decimal 238)
       defining Unicode char U+00EF (decimal 239)
       defining Unicode char U+00F0 (decimal 240)
       defining Unicode char U+00F1 (decimal 241)
       defining Unicode char U+00F2 (decimal 242)
       defining Unicode char U+00F3 (decimal 243)
       defining Unicode char U+00F4 (decimal 244)
       defining Unicode char U+00F5 (decimal 245)
       defining Unicode char U+00F6 (decimal 246)
       defining Unicode char U+00F8 (decimal 248)
       defining Unicode char U+00F9 (decimal 249)
       defining Unicode char U+00FA (decimal 250)
       defining Unicode char U+00FB (decimal 251)
       defining Unicode char U+00FC (decimal 252)
       defining Unicode char U+00FD (decimal 253)
       defining Unicode char U+00FE (decimal 254)
       defining Unicode char U+00FF (decimal 255)
       defining Unicode char U+0102 (decimal 258)
       defining Unicode char U+0103 (decimal 259)
       defining Unicode char U+0104 (decimal 260)
       defining Unicode char U+0105 (decimal 261)
       defining Unicode char U+0106 (decimal 262)
       defining Unicode char U+0107 (decimal 263)
       defining Unicode char U+010C (decimal 268)
       defining Unicode char U+010D (decimal 269)
       defining Unicode char U+010E (decimal 270)
       defining Unicode char U+010F (decimal 271)
       defining Unicode char U+0110 (decimal 272)
       defining Unicode char U+0111 (decimal 273)
       defining Unicode char U+0118 (decimal 280)
       defining Unicode char U+0119 (decimal 281)
       defining Unicode char U+011A (decimal 282)
       defining Unicode char U+011B (decimal 283)
       defining Unicode char U+011E (decimal 286)
       defining Unicode char U+011F (decimal 287)
       defining Unicode char U+0130 (decimal 304)
       defining Unicode char U+0131 (decimal 305)
       defining Unicode char U+0132 (decimal 306)
       defining Unicode char U+0133 (decimal 307)
       defining Unicode char U+0139 (decimal 313)
       defining Unicode char U+013A (decimal 314)
       defining Unicode char U+013D (decimal 317)
       defining Unicode char U+013E (decimal 318)
       defining Unicode char U+0141 (decimal 321)
       defining Unicode char U+0142 (decimal 322)
       defining Unicode char U+0143 (decimal 323)
       defining Unicode char U+0144 (decimal 324)
       defining Unicode char U+0147 (decimal 327)
       defining Unicode char U+0148 (decimal 328)
       defining Unicode char U+014A (decimal 330)
       defining Unicode char U+014B (decimal 331)
       defining Unicode char U+0150 (decimal 336)
       defining Unicode char U+0151 (decimal 337)
       defining Unicode char U+0152 (decimal 338)
       defining Unicode char U+0153 (decimal 339)
       defining Unicode char U+0154 (decimal 340)
       defining Unicode char U+0155 (decimal 341)
       defining Unicode char U+0158 (decimal 344)
       defining Unicode char U+0159 (decimal 345)
       defining Unicode char U+015A (decimal 346)
       defining Unicode char U+015B (decimal 347)
       defining Unicode char U+015E (decimal 350)
       defining Unicode char U+015F (decimal 351)
       defining Unicode char U+0160 (decimal 352)
       defining Unicode char U+0161 (decimal 353)
       defining Unicode char U+0162 (decimal 354)
       defining Unicode char U+0163 (decimal 355)
       defining Unicode char U+0164 (decimal 356)
       defining Unicode char U+0165 (decimal 357)
       defining Unicode char U+016E (decimal 366)
       defining Unicode char U+016F (decimal 367)
       defining Unicode char U+0170 (decimal 368)
       defining Unicode char U+0171 (decimal 369)
       defining Unicode char U+0178 (decimal 376)
       defining Unicode char U+0179 (decimal 377)
       defining Unicode char U+017A (decimal 378)
       defining Unicode char U+017B (decimal 379)
       defining Unicode char U+017C (decimal 380)
       defining Unicode char U+017D (decimal 381)
       defining Unicode char U+017E (decimal 382)
       defining Unicode char U+200C (decimal 8204)
       defining Unicode char U+2013 (decimal 8211)
       defining Unicode char U+2014 (decimal 8212)
       defining Unicode char U+2018 (decimal 8216)
       defining Unicode char U+2019 (decimal 8217)
       defining Unicode char U+201A (decimal 8218)
       defining Unicode char U+201C (decimal 8220)
       defining Unicode char U+201D (decimal 8221)
       defining Unicode char U+201E (decimal 8222)
       defining Unicode char U+2030 (decimal 8240)
       defining Unicode char U+2031 (decimal 8241)
       defining Unicode char U+2039 (decimal 8249)
       defining Unicode char U+203A (decimal 8250)
       defining Unicode char U+2423 (decimal 9251)
    )
    Now handling font encoding OT1 ...
    ... processing UTF-8 mapping file for font encoding OT1
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/base/ot1enc.dfu
    File: ot1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
       defining Unicode char U+00A1 (decimal 161)
       defining Unicode char U+00A3 (decimal 163)
       defining Unicode char U+00B8 (decimal 184)
       defining Unicode char U+00BF (decimal 191)
       defining Unicode char U+00C5 (decimal 197)
       defining Unicode char U+00C6 (decimal 198)
       defining Unicode char U+00D8 (decimal 216)
       defining Unicode char U+00DF (decimal 223)
       defining Unicode char U+00E6 (decimal 230)
       defining Unicode char U+00EC (decimal 236)
       defining Unicode char U+00ED (decimal 237)
       defining Unicode char U+00EE (decimal 238)
       defining Unicode char U+00EF (decimal 239)
       defining Unicode char U+00F8 (decimal 248)
       defining Unicode char U+0131 (decimal 305)
       defining Unicode char U+0141 (decimal 321)
       defining Unicode char U+0142 (decimal 322)
       defining Unicode char U+0152 (decimal 338)
       defining Unicode char U+0153 (decimal 339)
       defining Unicode char U+2013 (decimal 8211)
       defining Unicode char U+2014 (decimal 8212)
       defining Unicode char U+2018 (decimal 8216)
       defining Unicode char U+2019 (decimal 8217)
       defining Unicode char U+201C (decimal 8220)
       defining Unicode char U+201D (decimal 8221)
    )
    Now handling font encoding OMS ...
    ... processing UTF-8 mapping file for font encoding OMS
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/base/omsenc.dfu
    File: omsenc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
       defining Unicode char U+00A7 (decimal 167)
       defining Unicode char U+00B6 (decimal 182)
       defining Unicode char U+00B7 (decimal 183)
       defining Unicode char U+2020 (decimal 8224)
       defining Unicode char U+2021 (decimal 8225)
       defining Unicode char U+2022 (decimal 8226)
    )
    Now handling font encoding OMX ...
    ... no UTF-8 mapping file for font encoding OMX
    Now handling font encoding U ...
    ... no UTF-8 mapping file for font encoding U
       defining Unicode char U+00A9 (decimal 169)
       defining Unicode char U+00AA (decimal 170)
       defining Unicode char U+00AE (decimal 174)
       defining Unicode char U+00BA (decimal 186)
       defining Unicode char U+02C6 (decimal 710)
       defining Unicode char U+02DC (decimal 732)
       defining Unicode char U+200C (decimal 8204)
       defining Unicode char U+2026 (decimal 8230)
       defining Unicode char U+2122 (decimal 8482)
       defining Unicode char U+2423 (decimal 9251)
    ))
    (/usr/share/texmf-dist/tex/latex/base/fontenc.sty
    Package: fontenc 2005/09/27 v1.99g Standard LaTeX package
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/base/t1enc.def
    File: t1enc.def 2005/09/27 v1.99g Standard LaTeX file
    LaTeX Font Info:    Redeclaring font encoding T1 on input line 43.
    ))
    (/usr/share/texmf-site/tex/latex/pgf/frontendlayer/tikz.sty
    (/usr/share/texmf-site/tex/latex/pgf/basiclayer/pgf.sty
    (/usr/share/texmf-site/tex/latex/pgf/utilities/pgfrcs.sty
    (/usr/share/texmf-site/tex/generic/pgf/utilities/pgfutil-common.tex
    \pgfutil@everybye=\toks22
    )
    (/usr/share/texmf-site/tex/generic/pgf/utilities/pgfutil-latex.def
    \pgfutil@abb=\box28
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/ms/everyshi.sty
    Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS)
    ))
    (/usr/share/texmf-site/tex/generic/pgf/utilities/pgfrcs.code.tex
    Package: pgfrcs 2010/10/25 v2.10 (rcs-revision 1.24)
    ))
    Package: pgf 2008/01/15 v2.10 (rcs-revision 1.12)
    <BLANKLINE>
    (/usr/share/texmf-site/tex/latex/pgf/basiclayer/pgfcore.sty
    (/usr/share/texmf-site/tex/latex/pgf/systemlayer/pgfsys.sty
    (/usr/share/texmf-site/tex/generic/pgf/systemlayer/pgfsys.code.tex
    Package: pgfsys 2010/06/30 v2.10 (rcs-revision 1.37)
    <BLANKLINE>
    (/usr/share/texmf-site/tex/generic/pgf/utilities/pgfkeys.code.tex
    \pgfkeys@pathtoks=\toks23
    \pgfkeys@temptoks=\toks24
    <BLANKLINE>
    (/usr/share/texmf-site/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex
    \pgfkeys@tmptoks=\toks25
    ))
    \pgf@x=\dimen114
    \pgf@y=\dimen115
    \pgf@xa=\dimen116
    \pgf@ya=\dimen117
    \pgf@xb=\dimen118
    \pgf@yb=\dimen119
    \pgf@xc=\dimen120
    \pgf@yc=\dimen121
    \w@pgf@writea=\write3
    \r@pgf@reada=\read1
    \c@pgf@counta=\count100
    \c@pgf@countb=\count101
    \c@pgf@countc=\count102
    \c@pgf@countd=\count103
    <BLANKLINE>
    (/usr/share/texmf-site/tex/generic/pgf/systemlayer/pgf.cfg
    File: pgf.cfg 2008/05/14  (rcs-revision 1.7)
    )
    Package pgfsys Info: Driver file for pgf: pgfsys-pdftex.def on input line 900.
    <BLANKLINE>
    (/usr/share/texmf-site/tex/generic/pgf/systemlayer/pgfsys-pdftex.def
    File: pgfsys-pdftex.def 2009/05/22  (rcs-revision 1.26)
    <BLANKLINE>
    (/usr/share/texmf-site/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def
    File: pgfsys-common-pdf.def 2008/05/19  (rcs-revision 1.10)
    )))
    (/usr/share/texmf-site/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
    File: pgfsyssoftpath.code.tex 2008/07/18  (rcs-revision 1.7)
    \pgfsyssoftpath@smallbuffer@items=\count104
    \pgfsyssoftpath@bigbuffer@items=\count105
    )
    (/usr/share/texmf-site/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
    File: pgfsysprotocol.code.tex 2006/10/16  (rcs-revision 1.4)
    ))
    (/usr/share/texmf-site/tex/latex/xcolor/xcolor.sty
    Package: xcolor 2007/01/21 v2.11 LaTeX color extensions (UK)
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/latexconfig/color.cfg
    File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive
    )
    Package xcolor Info: Driver file: pdftex.def on input line 225.
    Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1337.
    Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1341.
    Package xcolor Info: Model `RGB' extended on input line 1353.
    Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1355.
    Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1356.
    Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1357.
    Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1358.
    Package xcolor Info: Model `Gray' substituted by `gray' on input line 1359.
    Package xcolor Info: Model `wave' substituted by `hsb' on input line 1360.
    )
    (/usr/share/texmf-site/tex/generic/pgf/basiclayer/pgfcore.code.tex
    Package: pgfcore 2010/04/11 v2.10 (rcs-revision 1.7)
    <BLANKLINE>
    (/usr/share/texmf-site/tex/generic/pgf/math/pgfmath.code.tex
    (/usr/share/texmf-site/tex/generic/pgf/math/pgfmathcalc.code.tex
    (/usr/share/texmf-site/tex/generic/pgf/math/pgfmathutil.code.tex)
    (/usr/share/texmf-site/tex/generic/pgf/math/pgfmathparser.code.tex
    \pgfmath@dimen=\dimen122
    \pgfmath@count=\count106
    \pgfmath@box=\box29
    \pgfmath@toks=\toks26
    \pgfmath@stack@operand=\toks27
    \pgfmath@stack@operation=\toks28
    )
    (/usr/share/texmf-site/tex/generic/pgf/math/pgfmathfunctions.code.tex
    (/usr/share/texmf-site/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex)
    (/usr/share/texmf-site/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code
    .tex)
    (/usr/share/texmf-site/tex/generic/pgf/math/pgfmathfunctions.random.code.tex)
    (/usr/share/texmf-site/tex/generic/pgf/math/pgfmathfunctions.comparison.code.te
    x) (/usr/share/texmf-site/tex/generic/pgf/math/pgfmathfunctions.base.code.tex)
    (/usr/share/texmf-site/tex/generic/pgf/math/pgfmathfunctions.round.code.tex)
    (/usr/share/texmf-site/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex)))
    (/usr/share/texmf-site/tex/generic/pgf/math/pgfmathfloat.code.tex
    \c@pgfmathroundto@lastzeros=\count107
    ))
    (/usr/share/texmf-site/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex
    File: pgfcorepoints.code.tex 2010/04/09  (rcs-revision 1.20)
    \pgf@picminx=\dimen123
    \pgf@picmaxx=\dimen124
    \pgf@picminy=\dimen125
    \pgf@picmaxy=\dimen126
    \pgf@pathminx=\dimen127
    \pgf@pathmaxx=\dimen128
    \pgf@pathminy=\dimen129
    \pgf@pathmaxy=\dimen130
    \pgf@xx=\dimen131
    \pgf@xy=\dimen132
    \pgf@yx=\dimen133
    \pgf@yy=\dimen134
    \pgf@zx=\dimen135
    \pgf@zy=\dimen136
    )
    (/usr/share/texmf-site/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex
    File: pgfcorepathconstruct.code.tex 2010/08/03  (rcs-revision 1.24)
    \pgf@path@lastx=\dimen137
    \pgf@path@lasty=\dimen138
    ) (/usr/share/texmf-site/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex
    File: pgfcorepathusage.code.tex 2008/04/22  (rcs-revision 1.12)
    \pgf@shorten@end@additional=\dimen139
    \pgf@shorten@start@additional=\dimen140
    )
    (/usr/share/texmf-site/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex
    File: pgfcorescopes.code.tex 2010/09/08  (rcs-revision 1.34)
    \pgfpic=\box30
    \pgf@hbox=\box31
    \pgf@layerbox@main=\box32
    \pgf@picture@serial@count=\count108
    )
    (/usr/share/texmf-site/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex
    File: pgfcoregraphicstate.code.tex 2008/04/22  (rcs-revision 1.9)
    \pgflinewidth=\dimen141
    )
    (/usr/share/texmf-site/tex/generic/pgf/basiclayer/pgfcoretransformations.code.t
    ex
    File: pgfcoretransformations.code.tex 2009/06/10  (rcs-revision 1.11)
    \pgf@pt@x=\dimen142
    \pgf@pt@y=\dimen143
    \pgf@pt@temp=\dimen144
    ) (/usr/share/texmf-site/tex/generic/pgf/basiclayer/pgfcorequick.code.tex
    File: pgfcorequick.code.tex 2008/10/09  (rcs-revision 1.3)
    )
    (/usr/share/texmf-site/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex
    File: pgfcoreobjects.code.tex 2006/10/11  (rcs-revision 1.2)
    )
    (/usr/share/texmf-site/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.te
    x
    File: pgfcorepathprocessing.code.tex 2008/10/09  (rcs-revision 1.8)
    ) (/usr/share/texmf-site/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex
    File: pgfcorearrows.code.tex 2008/04/23  (rcs-revision 1.11)
    )
    (/usr/share/texmf-site/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex
    File: pgfcoreshade.code.tex 2008/11/23  (rcs-revision 1.13)
    \pgf@max=\dimen145
    \pgf@sys@shading@range@num=\count109
    )
    (/usr/share/texmf-site/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex
    File: pgfcoreimage.code.tex 2010/03/25  (rcs-revision 1.16)
    <BLANKLINE>
    (/usr/share/texmf-site/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex
    File: pgfcoreexternal.code.tex 2010/09/01  (rcs-revision 1.17)
    \pgfexternal@startupbox=\box33
    ))
    (/usr/share/texmf-site/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex
    File: pgfcorelayers.code.tex 2010/08/27  (rcs-revision 1.2)
    )
    (/usr/share/texmf-site/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex
    File: pgfcoretransparency.code.tex 2008/01/17  (rcs-revision 1.2)
    ) (/usr/share/texmf-site/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex
    File: pgfcorepatterns.code.tex 2009/07/02  (rcs-revision 1.3)
    )))
    (/usr/share/texmf-site/tex/generic/pgf/modules/pgfmoduleshapes.code.tex
    File: pgfmoduleshapes.code.tex 2010/09/09  (rcs-revision 1.13)
    \pgfnodeparttextbox=\box34
    )
    (/usr/share/texmf-site/tex/generic/pgf/modules/pgfmoduleplot.code.tex
    File: pgfmoduleplot.code.tex 2010/10/22  (rcs-revision 1.8)
    )
    (/usr/share/texmf-site/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
    Package: pgfcomp-version-0-65 2007/07/03 v2.10 (rcs-revision 1.7)
    \pgf@nodesepstart=\dimen146
    \pgf@nodesepend=\dimen147
    )
    (/usr/share/texmf-site/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
    Package: pgfcomp-version-1-18 2007/07/23 v2.10 (rcs-revision 1.1)
    ))
    (/usr/share/texmf-site/tex/latex/pgf/utilities/pgffor.sty
    (/usr/share/texmf-site/tex/latex/pgf/utilities/pgfkeys.sty
    (/usr/share/texmf-site/tex/generic/pgf/utilities/pgfkeys.code.tex))
    (/usr/share/texmf-site/tex/generic/pgf/utilities/pgffor.code.tex
    Package: pgffor 2010/03/23 v2.10 (rcs-revision 1.18)
    \pgffor@iter=\dimen148
    \pgffor@skip=\dimen149
    \pgffor@stack=\toks29
    \pgffor@toks=\toks30
    ))
    (/usr/share/texmf-site/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
    Package: tikz 2010/10/13 v2.10 (rcs-revision 1.76)
    <BLANKLINE>
    (/usr/share/texmf-site/tex/generic/pgf/libraries/pgflibraryplothandlers.code.te
    x
    File: pgflibraryplothandlers.code.tex 2010/05/31 v2.10 (rcs-revision 1.15)
    \pgf@plot@mark@count=\count110
    \pgfplotmarksize=\dimen150
    )
    \tikz@lastx=\dimen151
    \tikz@lasty=\dimen152
    \tikz@lastxsaved=\dimen153
    \tikz@lastysaved=\dimen154
    \tikzleveldistance=\dimen155
    \tikzsiblingdistance=\dimen156
    \tikz@figbox=\box35
    \tikz@tempbox=\box36
    \tikztreelevel=\count111
    \tikznumberofchildren=\count112
    \tikznumberofcurrentchild=\count113
    \tikz@fig@count=\count114
     (/usr/share/texmf-site/tex/generic/pgf/modules/pgfmodulematrix.code.tex
    File: pgfmodulematrix.code.tex 2010/08/24  (rcs-revision 1.4)
    \pgfmatrixcurrentrow=\count115
    \pgfmatrixcurrentcolumn=\count116
    \pgf@matrix@numberofcolumns=\count117
    )
    \tikz@expandcount=\count118
    <BLANKLINE>
    (/usr/share/texmf-site/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary
    topaths.code.tex
    File: tikzlibrarytopaths.code.tex 2008/06/17 v2.10 (rcs-revision 1.2)
    ))) (/usr/share/texmf-dist/tex/latex/tkz-graph/tkz-graph.sty
    Package: tkz-graph 2011/06/01 ctan v 1.00 base for graphs
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/etex-pkg/etex.sty
    Package: etex 1998/03/26 v2.0 eTeX basic definition package (PEB)
    \et@xins=\count119
    )
    (/usr/share/texmf-dist/tex/latex/base/ifthen.sty
    Package: ifthen 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC)
    )
    (/usr/share/texmf-dist/tex/latex/xkeyval/xkeyval.sty
    Package: xkeyval 2008/08/13 v2.6a package option processing (HA)
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/generic/xkeyval/xkeyval.tex
    \XKV@toks=\toks31
    \XKV@tempa@toks=\toks32
    \XKV@depth=\count120
    File: xkeyval.tex 2008/08/13 v2.6a key=value parser (HA)
    ))
    (/usr/share/texmf-site/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary
    arrows.code.tex
    File: tikzlibraryarrows.code.tex 2008/01/09 v2.10 (rcs-revision 1.1)
    <BLANKLINE>
    (/usr/share/texmf-site/tex/generic/pgf/libraries/pgflibraryarrows.code.tex
    File: pgflibraryarrows.code.tex 2008/10/27 v2.10 (rcs-revision 1.9)
    \arrowsize=\dimen157
    ))
    \c@tkz@gr@a=\count121
    \c@tkz@gr@b=\count122
    \c@tkz@gr@c=\count123
    \c@tkz@gr@e=\count124
    \c@tkz@gr@d=\count125
    \c@tkz@gr@p=\count126
    \c@tkz@gr@i=\count127
    \c@tkz@gr@n=\count128
    \c@tkz@gr@ta=\count129
    \c@tkz@gr@tb=\count130
    )
    (/usr/share/texmf-dist/tex/latex/tkz-berge/tkz-berge.sty
    Package: tkz-berge 2011/06/01 1.00 c tkz-berge for named graphs
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/tkz-berge/tkz-arith.sty
    Package: tkz-arith 2011/02/28 v 1.00 c integers numbers
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/tkz-base/tkz-tools-arith.tex
    File: tkz-tool-arith.tex tkz-tool-arith 1.161 c
    ))
    \c@tkz@bg@cnt=\count131
    \c@tkza@tmp=\count132
    )
    (/usr/share/texmf-site/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary
    shapes.code.tex
    File: tikzlibraryshapes.code.tex 2008/01/09 v2.10 (rcs-revision 1.1)
    <BLANKLINE>
    (/usr/share/texmf-site/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary
    shapes.geometric.code.tex
    File: tikzlibraryshapes.geometric.code.tex 2008/01/09 v2.10 (rcs-revision 1.1)
    <BLANKLINE>
    (/usr/share/texmf-site/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geomet
    ric.code.tex
    File: pgflibraryshapes.geometric.code.tex 2008/06/26 v2.10 (rcs-revision 1.1)
    ))
    (/usr/share/texmf-site/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary
    shapes.misc.code.tex
    File: tikzlibraryshapes.misc.code.tex 2008/01/09 v2.10 (rcs-revision 1.1)
    <BLANKLINE>
    (/usr/share/texmf-site/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.c
    ode.tex
    File: pgflibraryshapes.misc.code.tex 2008/10/07 v2.10 (rcs-revision 1.3)
    ))
    (/usr/share/texmf-site/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary
    shapes.symbols.code.tex
    File: tikzlibraryshapes.symbols.code.tex 2008/01/09 v2.10 (rcs-revision 1.1)
    <BLANKLINE>
    (/usr/share/texmf-site/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbol
    s.code.tex
    File: pgflibraryshapes.symbols.code.tex 2009/10/27 v2.10 (rcs-revision 1.3)
    ))
    (/usr/share/texmf-site/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary
    shapes.arrows.code.tex
    File: tikzlibraryshapes.arrows.code.tex 2008/01/09 v2.10 (rcs-revision 1.1)
    <BLANKLINE>
    (/usr/share/texmf-site/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows
    .code.tex
    File: pgflibraryshapes.arrows.code.tex 2008/06/26 v2.10 (rcs-revision 1.1)
    ))
    (/usr/share/texmf-site/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary
    shapes.callouts.code.tex
    (/usr/share/texmf-site/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callou
    ts.code.tex))
    (/usr/share/texmf-site/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary
    shapes.multipart.code.tex
    File: tikzlibraryshapes.multipart.code.tex 2008/01/09 v2.10 (rcs-revision 1.1)
    <BLANKLINE>
    (/usr/share/texmf-site/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multip
    art.code.tex
    File: pgflibraryshapes.multipart.code.tex 2010/01/07 v2.10 (rcs-revision 1.2)
    \pgfnodepartlowerbox=\box37
    \pgfnodeparttwobox=\box38
    \pgfnodepartthreebox=\box39
    \pgfnodepartfourbox=\box40
    \pgfnodeparttwentybox=\box41
    \pgfnodepartnineteenbox=\box42
    \pgfnodeparteighteenbox=\box43
    \pgfnodepartseventeenbox=\box44
    \pgfnodepartsixteenbox=\box45
    \pgfnodepartfifteenbox=\box46
    \pgfnodepartfourteenbox=\box47
    \pgfnodepartthirteenbox=\box48
    \pgfnodeparttwelvebox=\box49
    \pgfnodepartelevenbox=\box50
    \pgfnodeparttenbox=\box51
    \pgfnodepartninebox=\box52
    \pgfnodeparteightbox=\box53
    \pgfnodepartsevenbox=\box54
    \pgfnodepartsixbox=\box55
    \pgfnodepartfivebox=\box56
    )))
    No file sage.aux.
    \openout1 = `sage.aux'.
    <BLANKLINE>
    LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 41.
    LaTeX Font Info:    ... okay on input line 41.
    LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 41.
    LaTeX Font Info:    ... okay on input line 41.
    LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 41.
    LaTeX Font Info:    ... okay on input line 41.
    LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 41.
    LaTeX Font Info:    ... okay on input line 41.
    LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 41.
    LaTeX Font Info:    ... okay on input line 41.
    LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 41.
    LaTeX Font Info:    ... okay on input line 41.
    (/usr/share/texmf-dist/tex/context/base/supp-pdf.mkii
    [Loading MPS to PDF converter (version 2006.09.02).]
    \scratchcounter=\count133
    \scratchdimen=\dimen158
    \scratchbox=\box57
    \nofMPsegments=\count134
    \nofMParguments=\count135
    \everyMPshowfont=\toks33
    \MPscratchCnt=\count136
    \MPscratchDim=\dimen159
    \MPnumerator=\count137
    \makeMPintoPDFobject=\count138
    \everyMPtoPDFconversion=\toks34
    ) (/usr/share/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty
    Package: pdftexcmds 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO
    )
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/generic/oberdiek/ifluatex.sty
    Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO)
    Package ifluatex Info: LuaTeX not detected.
    )
    (/usr/share/texmf-dist/tex/generic/oberdiek/ifpdf.sty
    Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO)
    Package ifpdf Info: pdfTeX in PDF mode is detected.
    )
    Package pdftexcmds Info: LuaTeX not detected.
    Package pdftexcmds Info: \pdf@primitive is available.
    Package pdftexcmds Info: \pdf@ifprimitive is available.
    Package pdftexcmds Info: \pdfdraftmode found.
    )
    (/usr/share/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
    Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/oberdiek/grfext.sty
    Package: grfext 2010/08/19 v1.1 Manage graphics extensions (HO)
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty
    Package: kvdefinekeys 2011/04/07 v1.3 Define keys (HO)
    ))
    (/usr/share/texmf-dist/tex/latex/oberdiek/kvoptions.sty
    Package: kvoptions 2011/06/30 v3.11 Key value format for package options (HO)
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty
    Package: kvsetkeys 2012/04/25 v1.16 Key value parser (HO)
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/generic/oberdiek/etexcmds.sty
    Package: etexcmds 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO)
    Package etexcmds Info: Could not find \expanded.
    (etexcmds)             That can mean that you are not using pdfTeX 1.50 or
    (etexcmds)             that some package has redefined \expanded.
    (etexcmds)             In the latter case, load this package earlier.
    )))
    Package grfext Info: Graphics extension search list:
    (grfext)             [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE
    G,.JBIG2,.JB2,.eps]
    (grfext)             \AppendGraphicsExtensions on input line 452.
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
    File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
    e
    ))
    ABD: EveryShipout initializing macros
    LaTeX Font Info:    Try loading font information for U+msa on input line 43.
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/amsfonts/umsa.fd
    File: umsa.fd 2009/06/22 v3.00 AMS symbols A
    )
    LaTeX Font Info:    Try loading font information for U+msb on input line 43.
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/amsfonts/umsb.fd
    File: umsb.fd 2009/06/22 v3.00 AMS symbols B
    )
    LaTeX Font Info:    Try loading font information for U+rsfs on input line 43.
    <BLANKLINE>
    (/usr/share/texmf-dist/tex/latex/jknapltx/ursfs.fd
    File: ursfs.fd 1998/03/24 rsfs font definition file (jk)
    )
    ! Illegal parameter number in definition of \cmdGR@vertex@L.
    <to be read again> 
                       1
    l.136 }$},x=3.9835cm,y=3.3045cm]{v1}
    <BLANKLINE>
    You meant to type ## instead of #, right?
    Or maybe a } was forgotten somewhere earlier, and things
    are all screwed up? I'm going to assume that you meant ##.
    <BLANKLINE>
    ! Illegal parameter number in definition of \cmdGR@vertex@L.
    <to be read again> 
                       1
    l.136 }$},x=3.9835cm,y=3.3045cm]{v1}
    <BLANKLINE>
    You meant to type ## instead of #, right?
    Or maybe a } was forgotten somewhere earlier, and things
    are all screwed up? I'm going to assume that you meant ##.
    <BLANKLINE>
    ! Undefined control sequence.
    \cmdGR@vertex@L ->\hbox {${\def \lr 
                                        ##1{\multicolumn {1}{|@{\hspace {.6ex}}c...
    l.136 }$},x=3.9835cm,y=3.3045cm]{v1}
    <BLANKLINE>
    The control sequence at the end of the top line
    of your error message was never \def'ed. If you have
    misspelled it (e.g., `\hobx'), type `I' and the correct
    spelling (e.g., `I\hbox'). Otherwise just continue,
    and I'll forget about whatever was undefined.
    <BLANKLINE>
    ! Illegal parameter number in definition of \@gtempa.
    <to be read again> 
                       1
    l.136 }$},x=3.9835cm,y=3.3045cm]{v1}
    <BLANKLINE>
    You meant to type ## instead of #, right?
    Or maybe a } was forgotten somewhere earlier, and things
    are all screwed up? I'm going to assume that you meant ##.
    <BLANKLINE>
    ! Undefined control sequence.
    l.137 ...=circle},LabelOut=false,L=\hbox{${\def\lr
                                                      #1{\multicolumn{1}{|@{\hsp...
    The control sequence at the end of the top line
    of your error message was never \def'ed. If you have
    misspelled it (e.g., `\hobx'), type `I' and the correct
    spelling (e.g., `I\hbox'). Otherwise just continue,
    and I'll forget about whatever was undefined.
    <BLANKLINE>
    ! Illegal parameter number in definition of \@gtempa.
    <to be read again> 
                       1
    l.137 ...ircle},LabelOut=false,L=\hbox{${\def\lr#1
                                                      {\multicolumn{1}{|@{\hspac...
    You meant to type ## instead of #, right?
    Or maybe a } was forgotten somewhere earlier, and things
    are all screwed up? I'm going to assume that you meant ##.
    <BLANKLINE>
    )
    ! Incomplete \iffalse; all text was ignored after line 137.
    <inserted text> 
                    \fi 
    <*> \nonstopmode \input{sage.tex}
    <BLANKLINE>
    The file ended while I was skipping conditional text.
    This kind of error happens when you say `\if...' and forget
    the matching `\fi'. I've inserted a `\fi'; this might work.
    <BLANKLINE>
    ! Emergency stop.
    <*> \nonstopmode \input{sage.tex}
    <BLANKLINE>
    *** (job aborted, no legal \end found)
    <BLANKLINE>
    <BLANKLINE>
    Here is how much of TeX's memory you used:
     14162 strings out of 494769
     271297 string characters out of 3177877
     359551 words of memory out of 3000000
     17043 multiletter control sequences out of 15000+200000
     8140 words of font info for 28 fonts, out of 3000000 for 9000
     238 hyphenation exceptions out of 8191
     57i,7n,63p,437b,808s stack positions out of 5000i,500n,10000p,200000b,50000s
    !  ==> Fatal error occurred, no output PDF file produced!
    <BLANKLINE>
    Latex error
**********************************************************************

comment:22 follow-up: Changed 4 years ago by vbraun

Well I'm happy to let you work on this ticket. But if nobody steps up to fix the failures: its better to fail and show an error (=this ticket) than to silently fail (without this ticket).

comment:23 in reply to: ↑ 22 ; follow-up: Changed 4 years ago by ncohen

Well I'm happy to let you work on this ticket. But if nobody steps up to fix the failures: its better to fail and show an error (=this ticket) than to silently fail (without this ticket).

Amen to that.

Technically, this ticket does not break doctests. It just reports doctests which were already broken. And of course you can run sage -t --optional=sage as before (all doctests will pass), the same way that you can run sage -t --optional=<your_packages> in the latest beta to see all broken doctests.

I cannot fix all broken doctests of all optional packages in Sage, and I doubt that anybody can. If you set this ticket to needs_work until this is done you will just kill the ticket, and achieve nothing. If this ticket is merged, we will at last see the bugs that we missed until now, and fix them progressively. We cannot keep hiding bugs, and pretend that they do not exist just because we never run the optional doctests.

Nathann

comment:24 Changed 4 years ago by git

  • Commit changed from e45591ade00e925ecfb4ad08191c95add7dd5c84 to 1ffc3c1a7a909b1d75653f9951da869371cc1039

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

1ffc3c1trac #18558: now with an 'installed' keyword

comment:25 follow-up: Changed 4 years ago by ncohen

(changed the keyword from installed_optional to installed. It now includes all installed packages. Even the standard ones, but that does not matter much.)

comment:26 in reply to: ↑ 20 ; follow-up: Changed 4 years ago by SimonKing

Replying to jdemeyer:

Replying to vbraun:

its not the job of this ticket to clear that up.

+1

No, but it's the job of every ticket to ensure that the ticket does not make doctests fail. I think it will be very confusing when we get lots of reports that make ptest fails just somebody installed an optional package. At least, those make targets should use --optional=sage then.

-1, don't shoot the messenger. The ticket does not make doctests fail, but it makes them being executed.

Alternatively, mark failing tests as # known bug.

That might be in the scope of this ticket.

On the other hand: Detecting failing tests (so that they can be marked) would require running make ptest on a Sage installation with all optional packages. Or perhaps even one Sage installation for each subset of optional packages, since I could imagine that optional package A makes tests fail that work fine if additionally optional package B is installed. That doesn't seem feasible.

comment:27 Changed 4 years ago by ncohen

  • Description modified (diff)
  • Summary changed from Test all (installed) optional packages by default to Test all installed packages by default

comment:28 Changed 4 years ago by ncohen

  • Status changed from needs_work to needs_review

comment:29 in reply to: ↑ 23 ; follow-up: Changed 4 years ago by jdemeyer

Replying to ncohen:

If you set this ticket to needs_work until this is done you will just kill the ticket

...for good reasons. Merging this ticket as-is will massively decrease the usefulness of make ptest(long). That's what I'm worried about.

I believe very strongly that no ticket should be merged if it is known to make make ptestlong fail on systems where it used to pass. I am willing to shoot the messenger if needed, that's why # known bug exists.

I'm not setting this to needs_work because it seems I am alone with this opinion, but please think of the consequences of doing this.

Last edited 4 years ago by jdemeyer (previous) (diff)

comment:30 in reply to: ↑ 26 Changed 4 years ago by jdemeyer

Replying to SimonKing:

Detecting failing tests (so that they can be marked) would require running make ptest on a Sage installation with all optional packages.

That's not hard actually. See 21

comment:31 in reply to: ↑ 29 ; follow-up: Changed 4 years ago by ncohen

...for good reasons. Merging this ticket as-is will massively decrease the usefulness of make ptest(long). That's what I'm worried about.

My hope is that it will only last momentarily. That whoever sees broken doctests will fix them, and that eventually we will fix those bugs instead of hiding them.

The only guys who run doctests (well, except bots) are developers. They are assumed to know that a beta release is "experimental" to some extent (big red warning on our website, and when you run sage).

Then there is the advertisement: we should probably wait for a beta0 release to merge this ticket (it can be reviewed before :-P), and when we do add a message (on sage-release, and why not in sage-banner) explaining a bit what happens. A "fix-optional-doctests" release, so that less persons have to wonder why doctests break all of a sudden. And help us fix them.

I'm not setting this to needs_work because it seems I am alone with this opinion, but please think of the consequences of doing this.

Well, it will be messy at first, I can't deny that. Then it will be less and less, until the problems are solved, and also we will not add more to the existing ones. Among the consequences, I also see that in the long run Sage will be tested better than it is today.

Nathann

comment:32 in reply to: ↑ 31 Changed 4 years ago by jdemeyer

Intentionally releasing something with known failures is not a good strategy to have those failures fixed.

comment:33 in reply to: ↑ 25 ; follow-up: Changed 4 years ago by jdemeyer

Replying to ncohen:

It now includes all installed packages.

Even worse. Now you just killed all experimental packages. I think there should be a place in Sage for things that are known to be broken but that people still care about.

Actually, a good compromise for this ticket might be: test only optional packages, move the known-broken packages (like 4ti2) to experimental.

If you want, you can create tickets for each of these broken packages and advertise them on sage-devel. If people care, they can fix the package and move it back to optional. If people don't care, there is nothing lost either.

comment:34 in reply to: ↑ 33 ; follow-ups: Changed 4 years ago by ncohen

Even worse. Now you just killed all experimental packages.

Hey, don't you think you are going a bit far? I "killed all experimental packages"? Seriously?

I think there should be a place in Sage for things that are known to be broken but that people still care about.

Experimental packages are *advertised* as broken [1]. Why would you expect them to pass tests? Addtionally, doctests can be removed if we need to. We can do that during the release cycle that will merge this branch.

Actually, a good compromise for this ticket might be: test only optional packages

This is what the first version of this branch did. This change was requested in 17.

If you want, you can create tickets for each of these broken packages and advertise them on sage-devel.

I don't believe in opening tickets. I believe in written code. Advertising the bugs to the developers who use the package is what this branch does.

Nathann

[1] http://mirror.switch.ch/mirror/sagemath/spkg/experimental/

Last edited 4 years ago by ncohen (previous) (diff)

comment:35 in reply to: ↑ 34 Changed 4 years ago by tmonteil

While this ticket is a good step towards a more tested system, i understand Jeroen's concerns that it might lead to a less tested one. I can witness that recurrent failing doctest lead to not caring anymore. For example, when i build a massive amount of binaries, i frequently randomly have broken unreproducible doctest for src/sage/interfaces/expect.py, the consequence is that i stopped to double check them, so if some real problem appears on this file, i will not see it because it will look like the random one. With a huge list of broken doctests, people won't check if some new bugs are reported within the list, and the effect of the ticket will be the opposite of it aim.

Replying to jdemeyer:

Actually, a good compromise for this ticket might be: test only optional packages, move the known-broken packages (like 4ti2) to experimental.

+1, this is the difference between optional and experimental packages, and we keep the best of both points of views. I will add : "propose a way to test all installed (experimental) packages as well".

Replying to ncohen:

Experimental packages are *advertised* as broken [1]. Why would you expect them to pass tests?

This will be a requirement to let them enter the optional list.

Advertising the bugs to whoever uses the packages is the whole point of this branch.

You claimed yourself that "The only guys who run doctests (well, except bots) are developers", hence if we want to advertize those bugs to users, this is not the appropriate way, we should write stopgaps instead.

comment:36 follow-up: Changed 4 years ago by ncohen

Okay guys, let's do something. You either ask me something *doable* and *reasonable* or you kill this ticket. All you are achieving now is blocking an attempt to improve this software's quality. I will not fight for weeks here, and I will not spend my week-ends or night on it either. Either you start being constructive, or you keep arguing until everybody's energy is wasted. And it will not happen again, because there is only so much you can do when you know that all you will get when you are done implementing an improvement are endless complaints against *change*.

Nathann

Last edited 4 years ago by ncohen (previous) (diff)

comment:37 in reply to: ↑ 34 ; follow-up: Changed 4 years ago by jdemeyer

Replying to ncohen:

Even worse. Now you just killed all experimental packages.

Hey, don't you think you are going a bit far? I "killed all experimental packages"?

I only used that wording because you said that I was killing your ticket.

Experimental packages are *advertised* as broken [1]. Why would you expect them to pass tests?

I don't expect them to pass tests. In fact, that was the whole point of my argument. They are known to fail tests, but so be it. Just don't force everybody to see those failures.

Addtionally, doctests can be removed if we need to.

They should not be removed, unless the doctest itself (not the code that it tests or the result) is somehow bad. That's what # known bug is for: to be able to keep the doctest but not see the failure in every make ptest run. My idea with experimental packages is that marking a package as "experimental" acts like adding # known bug to every optional doctest of that package.

comment:38 in reply to: ↑ 36 Changed 4 years ago by jdemeyer

Replying to ncohen:

Okay guys, let's do something. You either ask me something *doable* and *reasonable* or you kill this ticket. All you are achieving now is blocking an attempt to improve this software's quality. I will not fight for weeks here, and I will not spend my week-ends or night on it either. Either you start being constructive, or you keep arguing until everybody's energy is wasted.

I am trying to solve this in a constructive way. I proposed several alternative solutions (such as marking tests as # known bug or testing only optional packages) which would make this ticket acceptable for me and which are "*doable* and *reasonable*".

comment:39 in reply to: ↑ 37 ; follow-up: Changed 4 years ago by ncohen

I don't expect them to pass tests. In fact, that was the whole point of my argument. They are known to fail tests, but so be it. Just don't force everybody to see those failures.

Everybody wil not. Only the *developers* who *run the doctests* and *have the expermental package installed* will see them. And that's precisely the guys who should fix it.

They should not be removed, unless the doctest itself (not the code that it tests or the result) is somehow bad. That's what # known bug is for: to be able to keep the doctest but not see the failure in every make ptest run.

Fine. You are allowed to flag a doctest as "known bug" whenever you want. This branch does not change that.

My idea with experimental packages is that marking a package as "experimental" acts like adding # known bug to every optional doctest of that package.

What is the point of doctests then? O_o (edit: see next comment->you cannot 'detect' experimental packages without internet access)

I am trying to solve this in a constructive way. I proposed several alternative solutions (such as marking tests as # known bug or testing only optional packages) which would make this ticket acceptable for me and which are "*doable* and *reasonable*".

Marking all tests as known bug is dangerous: we want to find the bugs, and we want to fix them. Testing optional packages only is what this branch did at first, until I was asked to make it otherwise. Agree with yourselves, and I will update the ticket, but I don't want to keep changing branches forever.

Addtionally, I cannot by myself go over all optional/experimental packages and make changes to all of them. You can't ask me that, this is not *reasonable*. That's why I mentionned merged this branch in a beta0, so that everybody can participate to the effort until the next release. This, on the other hand, is a good outcome, and will ensure that the job is done properly.

Nathann

Last edited 4 years ago by ncohen (previous) (diff)

comment:40 follow-up: Changed 4 years ago by ncohen

Another precision: one advantage of 'installed' over 'installed_optional' and 'installed_experimental' is that it is currently impossible to get (without internet access) the list of all optional/experimental packages.

What can be listed 'locally':

  • All installed packages
  • All new-style packages filtered by type (standard/optional)

Thus, I can only write a branch which test all new-style optional packages (there are no experimental new-style packages). If an old-style spkg is installed, I have no way to 'detect' its category.

It can be either 'installed' or 'new-style optional'.

Nathann

Last edited 4 years ago by ncohen (previous) (diff)

comment:41 Changed 4 years ago by jdemeyer

  • Dependencies changed from #18456, #18124 to #18456, #18124, #18559

comment:42 in reply to: ↑ 39 ; follow-up: Changed 4 years ago by jdemeyer

Replying to ncohen:

I don't expect them to pass tests. In fact, that was the whole point of my argument. They are known to fail tests, but so be it. Just don't force everybody to see those failures.

Everybody wil not. Only the *developers* who *run the doctests* and *have the expermental package installed* will see them. And that's precisely the guys who should fix it.

Nobody should fix anything. The fact that I am a Sage developer who happens to have some experimental package installed does not mean that I should fix it.

comment:43 in reply to: ↑ 42 ; follow-up: Changed 4 years ago by ncohen

Nobody should fix anything. The fact that I am a Sage developer who happens to have some experimental package installed does not mean that I should fix it.

Agreed. In fact you have many options: 1) not care 2) remove the doctest 3) flag it as 'known bug'

Last edited 4 years ago by ncohen (previous) (diff)

comment:44 in reply to: ↑ 40 ; follow-up: Changed 4 years ago by jdemeyer

Replying to ncohen:

It can be either 'installed' or 'new-style optional'.

OK, then I prefer 'new-style optional' like in the first version of this ticket.

Addtionally, I cannot by myself go over all optional/experimental packages and make changes to all of them. You can't ask me that, this is not *reasonable*.

I'm willing to do that (for optional packages), if you agree that it's a good idea to do that.

comment:45 in reply to: ↑ 43 Changed 4 years ago by jdemeyer

Replying to ncohen:

Nobody should fix anything. The fact that I am a Sage developer who happens to have some experimental package installed does not mean that I should fix it.

Agreed. In fact you have many options: 1) not care 2) remove the doctest 3) flag it as 'known bug'

No, this ticket removes option 1) in practice.

comment:46 in reply to: ↑ 44 ; follow-up: Changed 4 years ago by ncohen

OK, then I prefer 'new-style optional' like in the first version of this ticket.

Okay, I will re-update the commit shortly.

I'm willing to do that (for optional packages), if you agree that it's a good idea to do that.

What is it exactly that you want to do?

Nathann

comment:47 in reply to: ↑ 46 ; follow-up: Changed 4 years ago by jdemeyer

  • Dependencies changed from #18456, #18124, #18559 to #18456, #18124, #18559, #18563

Replying to ncohen:

What is it exactly that you want to do?

See #18563.

comment:48 Changed 4 years ago by git

  • Commit changed from 1ffc3c1a7a909b1d75653f9951da869371cc1039 to 5954ba919ef1e504bd8c09ee18cac62094f06db0

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

5954ba9trac #18558: 'optional' keyword

comment:49 Changed 4 years ago by ncohen

Done.

comment:50 in reply to: ↑ 47 ; follow-up: Changed 4 years ago by ncohen

See #18563.

Just change their type? Okay, no problem. When do you think it will be ready for review?

comment:51 in reply to: ↑ 50 ; follow-up: Changed 4 years ago by jdemeyer

Replying to ncohen:

See #18563.

Just change their type? Okay, no problem. When do you think it will be ready for review?

Well, I need to actually install all new-style optional packages and test with #18558.

comment:52 Changed 4 years ago by jdemeyer

  • Status changed from needs_review to needs_work

Should

if 'installed' in options.optional:

actually be

if 'optional' in options.optional:

comment:53 in reply to: ↑ 51 ; follow-up: Changed 4 years ago by ncohen

Well, I need to actually install all new-style optional packages and test with #18558.

Okay, shouldn't take long.

You can get the list of those packages with sage -optional --local --no-version

comment:54 Changed 4 years ago by git

  • Commit changed from 5954ba919ef1e504bd8c09ee18cac62094f06db0 to 374a17f4d1e344d3befbd72cb44bf9acc41bc659

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

374a17ftrac #18558: 'optional' keyword

comment:55 Changed 4 years ago by ncohen

  • Status changed from needs_work to needs_review

comment:56 Changed 4 years ago by jdemeyer

  • Summary changed from Test all installed packages by default to Test all installed optional packages by default

comment:57 in reply to: ↑ 53 ; follow-up: Changed 4 years ago by jdemeyer

Replying to ncohen:

Well, I need to actually install all new-style optional packages and test with #18558.

Okay, shouldn't take long.

I guess you never tried to install all optional packages...

comment:58 in reply to: ↑ 57 Changed 4 years ago by ncohen

I guess you never tried to install all optional packages...

Ahahahah. Well, surely none is worse than atlas? :-P

I was thinking 'one day at most'. But I expect that it can take time indeed ^^;

Nathann

comment:59 follow-up: Changed 4 years ago by jdemeyer

For information, this is a list of all optional tags with count (assuming #18124 and #18559):

    302 
     59 4ti2
    622 arb
    114 axiom
      7 benzene
     31 bliss
     10 buckygen
    209 cbc
     25 chevie
     33 CHomP
    383 coxeter3
    185 CPLEX
    185 cryptominisat
      1 CryptoMiniSat
      4 cunningham
     11 CVXOPT
     24 database_cremona_ellcurve
    112 database_gap
     14 database_jones_numfield
      2 database_kohel
      3 database_odlyzko_zeta
      8 database_pari
     28 database_stein_watkins
     13 database_symbolic_data
      1 debug
      3 dot2tex
     31 dot2tex graphviz
     43 FES
      8 ffmpeg
     65 fricas
     51 frobby
    115 gambit
     93 gap3
      2 gap3chevie
     67 gap_packages
      5 gdb
    142 giac
      2 ginv
      1 gnuplot
     19 gperftools
    201 Gurobi
      6 GUROBI
      1 Hmisc R package
     72 ImageMagick
    272 internet
      2 java
      2 java internet
    109 kash
      8 latex
     29 latte_int
      1 libjpeg
     96 lie
      9 long time
     30 lrs
      2 M2
     15 macaulay2
    660 magma
    151 maple
      2 Maple
    119 mathematica
     59 matlab
      4 mcqd
     10 modular_decomposition
     79 mupad
      2 MuPAD
     20 nauty
    157 Nonexistent_LP_solver
     61 octave
     69 phc
     35 plantri
     15 polymake
      5 polytopes_db_4d
    180 qepcad
      1 random
      2 requires maple
     11 rgraphics
      2 runsnake
     98 scilab
      5 sloane_database
     16 souvigner
      3 surf
      4 tides
      8 time
     40 TOPCOM
      3 webbrowser
Last edited 4 years ago by jdemeyer (previous) (diff)

comment:60 Changed 4 years ago by ncohen

My dear old Nonexistent_LP_solver.

comment:61 follow-up: Changed 4 years ago by ncohen

It seems that you missed mupad-Combinat

Last edited 4 years ago by ncohen (previous) (diff)

comment:62 in reply to: ↑ 61 Changed 4 years ago by jdemeyer

Replying to ncohen:

It seems that you missed mupad-Combinat

No, I did not because # optional - mupad-Combinat is really parsed as # optional mupad # Combinat.

comment:63 Changed 4 years ago by jdemeyer

  • Branch changed from u/ncohen/18558 to u/jdemeyer/18558

comment:64 follow-up: Changed 4 years ago by jdemeyer

  • Commit changed from 374a17f4d1e344d3befbd72cb44bf9acc41bc659 to 732f2f8fd2e1b7dac4eea6ee2b52d491b5518261

New commits:

732f2f8Show optional tags in the doctest log

comment:65 follow-up: Changed 4 years ago by git

  • Commit changed from 732f2f8fd2e1b7dac4eea6ee2b52d491b5518261 to 59af6983b05b6581ef1282cdec41d6e63ad82459

Branch pushed to git repo; I updated commit sha1. New commits:

59af698Fix passing optional tags to gdb/valgrind doctesting

comment:66 follow-up: Changed 4 years ago by ncohen

Jeroen, please move this commit to another ticket. And the previous one as well, if you think that the two are tied together.

comment:67 in reply to: ↑ 66 ; follow-up: Changed 4 years ago by jdemeyer

Replying to ncohen:

Jeroen, please move this commit to another ticket.

Why? If I do that, there will surely be merge conflicts.

comment:68 in reply to: ↑ 67 ; follow-up: Changed 4 years ago by ncohen

Why? If I do that, there will surely be merge conflicts.

Why? Just make your other ticket depend on this one.

comment:69 in reply to: ↑ 68 ; follow-up: Changed 4 years ago by jdemeyer

Replying to ncohen:

Why? Just make your other ticket depend on this one.

That's the wrong way. This ticket would need the bugfix of the "other ticket".

Please, these two tickets belong together, let's not make things more complicated.

comment:70 in reply to: ↑ 69 ; follow-up: Changed 4 years ago by ncohen

That's the wrong way. This ticket would need the bugfix of the "other ticket".

Please, these two tickets belong together, let's not make things more complicated.

If you cared to explain what you do and why, perhaps we could talk about it. You have been pushing commits here without a single word.

comment:71 follow-up: Changed 4 years ago by ncohen

And I really feel that you behave a bit boldly here. As the ticket's author I have to answer any request made by a reviewer if I want to get my ticket reviewed. At the same time, you just push things without asking for my opinion, and as a result I am forced to agree with whatever you do here if I want my code to pass.

Nathann

Last edited 4 years ago by ncohen (previous) (diff)

comment:72 Changed 4 years ago by ncohen

Let me also mention that you consider anything related to this ticket as a dependency of it, which you thus add as a dependency of this ticket. Forcing me to review them. This, without reviewing this ticket's main dependency: #18456.

Last edited 4 years ago by ncohen (previous) (diff)

comment:73 in reply to: ↑ 70 ; follow-up: Changed 4 years ago by jdemeyer

Replying to ncohen:

If you cared to explain what you do and why, perhaps we could talk about it. You have been pushing commits here without a single word.

Well, you can start by reading the commit message or looking at the commits. I felt that the message Fix passing optional tags to gdb/valgrind doctesting would make it clear that your patch broke doctesting under gdb or valgrind. I can explain later if you want, I'll answer your other complaints first.

comment:74 in reply to: ↑ 73 ; follow-up: Changed 4 years ago by ncohen

Well, you can start by reading the commit message or looking at the commits. I felt that the message Fix passing optional tags to gdb/valgrind doctesting would make it clear that your patch broke doctesting under gdb or valgrind.

I fail to see how, so please illustrate it.

Nathann

comment:75 in reply to: ↑ 74 ; follow-ups: Changed 4 years ago by kcrisman

Well, you can start by reading the commit message or looking at the commits. I felt that the message Fix passing optional tags to gdb/valgrind doctesting would make it clear that your patch broke doctesting under gdb or valgrind.

I fail to see how, so please illustrate it.

Valgrind can have relatively system-dependent output, or so I've been led to believe.


Sorry for butting in, I was just wondering if this all had a way to check whether someone had the most recent version of an optional package. Especially for some that are quite independent of Sage it could be possible someone didn't notice that the optional package had been updated and then got an error that's really because of their version, not an actual failure. If this is answered somewhere above I apologize - there are a lot of comments but I didn't see it, nor when searching the page for relevant terms like 'version'.

comment:76 in reply to: ↑ 71 ; follow-up: Changed 4 years ago by jdemeyer

  • Authors changed from Nathann Cohen to Nathann Cohen, Jeroen Demeyer

Replying to ncohen:

At the same time, you just push things without asking for my opinion

That's true, but you can still give your opinion after seeing the commit. I am currently testing this ticket. It's easier for me to fix bugs right away instead of first explaining the problem on the ticket and then waiting for you to fix it before I can continue testing.

and as a result I am forced to agree with whatever you do here if I want my code to pass.

You're not forced to agree with anything. I you don't agree, you tell me or you change it. No problem.

you consider anything related to this ticket as a dependency of it

  • About #18124 and #18563: those are needed because otherwise all doctests would not pass.
  • About #18559: I added that as a dependency only after it got positive_review (and you're the author so I assume you agree with that ticket), so it won't slow down this ticket.

This, without reviewing this ticket's main dependency: #18456.

It seems that there are already other reviewers on that ticket. In any case, it's not because I help you with this ticket, that I should be forced to review its dependencies.

comment:77 in reply to: ↑ 75 ; follow-up: Changed 4 years ago by jdemeyer

Replying to kcrisman:

Especially for some that are quite independent of Sage it could be possible someone didn't notice that the optional package had been updated and then got an error that's really because of their version, not an actual failure.

I say it would be an actual failure. If upgrading the optional package would make the failure go away, then the user should upgrade to the newest version.

comment:78 in reply to: ↑ 75 Changed 4 years ago by ncohen

Sorry for butting in, I was just wondering if this all had a way to check whether someone had the most recent version of an optional package.

You should ask about this in #18456 (needs review) which is more related. If you apply and type sage -optional you will see on your screen the installed version of each package, and the latest 'online' version. There is no tool to tell you which ones should be upgraded, but that can be added rather easily.

There is something to be aware of, hwoever: you may be surprised to find that the 'online' version of a package is older than the one installed on your computer. This is because the distant list of packages can contain the *same* package as an upstream (new-style) package and as an old spkg. When the mirrors will be updated, that will be reliable again.

Nathann

comment:79 in reply to: ↑ 64 Changed 4 years ago by jdemeyer

Replying to jdemeyer:

732f2f8Show optional tags in the doctest log

This is just useful information for logging. When running the tests, it shows the optional tags in the log:

Running doctests with ID 2015-06-01-16-36-29-dcf185f8.
Git branch: HEAD
Optional tags: arb,autotools,benzene,bliss,buckygen,cbc,compilerwrapper,cryptominisat,d3js,database_cremona_ellcurve,database_gap,database_odlyzko_zeta,database_pari,database_stein_watkins,database_stein_watkins_mini,database_symbolic_data,dot2tex,gambit,gcc,gdb,git_trac,libogg,libtheora,lidia,mcqd,modular_decomposition,mpir,nauty,normaliz,nose,openssl,plantri,python2,sage,sage_mode,termcap,threejs,tides
Doctesting 2 files.

comment:80 in reply to: ↑ 65 Changed 4 years ago by jdemeyer

Replying to git:

59af698Fix passing optional tags to gdb/valgrind doctesting

This is needed because ./sage -t --gdb --optional=sage,otherpackage has always been broken. I know you didn't introduce this bug, but you made it visible because now there are more optional tags enabled by default.

I also added some cosmetic changes, like making ./sage -t --optional=all,something,else equivalent to ./sage -t --optional=all and deprecating ./sage -t --optional=true.

comment:81 Changed 4 years ago by jdemeyer

I finished testing this (and its dependencies) and my Linux laptop with all new-style optional packages installed and all tests pass. I am also doing the same on OS X 10.10, but that will take some more time.

comment:82 in reply to: ↑ 76 ; follow-ups: Changed 4 years ago by ncohen

That's true, but you can still give your opinion after seeing the commit. I am currently testing this ticket. It's easier for me to fix bugs right away instead of first explaining the problem on the ticket and then waiting for you to fix it before I can continue testing.

Of course. It would be more pleasant (for me at last) if you could say exactly what you are doing when you push commits (especially when the branch's name is not public/...).

You're not forced to agree with anything. I you don't agree, you tell me or you change it. No problem.

I would like to know what exactly you fix. I would like to understand why you consider it as a dependency of this ticket.

It seems that there are already other reviewers on that ticket.

I have many tickets on which many people come to make me change a lot of things, but nobody ends up taking the time to review it completely.

In any case, it's not because I help you with this ticket, that I should be forced to review its dependencies.

You are under no obligation to, it is true. I am also free to find that behaviour unpleasant.

Nathann

comment:83 in reply to: ↑ 82 Changed 4 years ago by jdemeyer

Replying to ncohen:

Of course. It would be more pleasant (for me at last) if you could say exactly what you are doing when you push commits (especially when the branch's name is not public/...).

Maybe you're just a bit too impatient. My first priority was to have a functioning branch without doctest failures. Now that this is the case on at least one system, we can discuss.

comment:84 in reply to: ↑ 82 ; follow-up: Changed 4 years ago by jdemeyer

Replying to ncohen:

I would like to know what exactly you fix. I would like to understand why you consider it as a dependency of this ticket.

Is that now cleared up by the comments above?

comment:85 in reply to: ↑ 84 Changed 4 years ago by ncohen

Is that now cleared up by the comments above?

Granted. Do you notice, however, that you ended up forcing this ticket to only be merged if all tests pass when all optional packages are installed? I did not agree with this 'dependency' at first, and neither did others.

No doubt that the result is better now. But I felt forced, at every step, to follow with what you were doing if I wanted my ticket reviewed.

Nathann

comment:86 Changed 4 years ago by ncohen

Okay, I reviewed this latest commit of yours.

comment:87 in reply to: ↑ 77 ; follow-up: Changed 4 years ago by kcrisman

Especially for some that are quite independent of Sage it could be possible someone didn't notice that the optional package had been updated and then got an error that's really because of their version, not an actual failure.

I say it would be an actual failure. If upgrading the optional package would make the failure go away, then the user should upgrade to the newest version.

Right, except would the user actually know that the solution to the failure was upgrading? In principle we don't want a sage-release or other email to come in unless there is an actual failure. If this gives a clear message to that effect (upgrade package so-and-so) then it's no problem.

comment:88 in reply to: ↑ 87 ; follow-up: Changed 4 years ago by ncohen

Right, except would the user actually know that the solution to the failure was upgrading?

This is an interesting discussion, but this is not the place. There is still work going on here. I will answer by email.

Nathann

comment:89 in reply to: ↑ 88 ; follow-up: Changed 4 years ago by kcrisman

Right, except would the user actually know that the solution to the failure was upgrading?

This is an interesting discussion, but this is not the place.

I disagree, because this means that the (old) default behavior of not getting doctest failures will be replaced (possibly) by lots of perhaps-very-confusing doctest errors, with this branch.

But I don't have any specific ideas on how to solve the problem, just wondering how it is/will be dealt with.

comment:90 in reply to: ↑ 89 ; follow-up: Changed 4 years ago by ncohen

I disagree, because this means that the (old) default behavior of not getting doctest failures will be replaced (possibly) by lots of perhaps-very-confusing doctest errors, with this branch.

Okay. So let us have this conversation here. For a start, do we agree that we are talking about users running doctests with optional packages installed? If so, we cannot call them beginners.

Since you insist on having this conversation here, I also wonder why you think that it is doctest-related. If you are thinking of users running an old version of a package, which would thus break Sage code, then clearly it is a problem of a much wider scope than doctest testing, isn't it ?

In particular, I do not believe that there is anything related to that which can be dealt with at the level of doctest. What you request is a way to detect that the installed package is too old to be used for this or that feature, and such a feature cannot be implemented without knowing each package individually.

If such a thing should be implemented, then we would need the is_package_installed function to be able to deal with version numbers, and thus be able to check whether the current version is sufficiently new.

But I don't have any specific ideas on how to solve the problem, just wondering how it is/will be dealt with.

It is a question for sage-devel, unless you have strong reasons to believe that it should be addressed by this ticket.

Nathann

comment:91 in reply to: ↑ 90 ; follow-up: Changed 4 years ago by kcrisman

I disagree, because this means that the (old) default behavior of not getting doctest failures will be replaced (possibly) by lots of perhaps-very-confusing doctest errors, with this branch.

Okay. So let us have this conversation here. For a start, do we agree that we are talking about users running doctests with optional packages installed? If so, we cannot call them beginners.

Disagree already. There are lots of places it warns people to run doctests to check that Sage works, and likewise there are a number of optional packages that people "just need". In R certainly optional packages are pretty much the whole point of using the system - not so much in Sage, but for instance I can very easily imagine someone using #18536 installing gambit brainlessly for the sole purpose of solving non-cooperative games.

Since you insist on having this conversation here, I also wonder why you think that it is doctest-related. If you are thinking of users running an old version of a package, which would thus break Sage code, then clearly it is a problem of a much wider scope than doctest testing, isn't it ?

?? Not at all; using an old version of a package might not at all break any existing Sage code. It might only change something like (again using the game example) the example decimal representation of a specific answer, for instance, and one that would only be noted if one were using that optional package.

In particular, I do not believe that there is anything related to that which can be dealt with at the level of doctest. What you request is a way to detect that the installed package is too old to be used for this or that feature, and such a feature cannot be implemented without knowing each package individually.

Maybe... I think instead I am imagining that Sage could detect whether the latest version (for a given version of Sage) was installed. R does this all the time. But maybe that is too hard now because we don't really have a concept of "version of Sage required for this version of optional package X" or vice versa.

If such a thing should be implemented, then we would need the is_package_installed function to be able to deal with version numbers, and thus be able to check whether the current version is sufficiently new.

Yes, or something analogous to that. After all, aren't the current package numbers already in build/pkgs/pkg_name/version or something? It could just check that the packages which are installed match. (Not necessarily for old-style, but that is presumably yet another snag.)

It is a question for sage-devel, unless you have strong reasons to believe that it should be addressed by this ticket.

The only reason I think it belongs on this ticket is because this ticket would expose the problem. I would say it would do so rather dramatically except I don't have any evidence for it. But again, here is what I anticipate:

  1. User occasionally runs doctests because is told it's a good idea to make sure their Sage works.
  2. User updates Sage but not some package they use, because that wasn't announced somewhere they saw it (git logs are not announcements)
  3. User runs doctests and gets mysterious failures that seem to be related to updating Sage, but are actually related to not updating package.
  4. User sends email to sage-devel or sage-release or sage-support or ask.sagemath or whatever.
  5. Someone whose time is better spent on real bugs has to figure out what the heck happened.

Without this ticket, that is much less likely to happen, since the person would have to be running optional doctests - and I would agree that such a person is not so likely to be a beginner. But that's not what would happen here.

Anyway, if two people (e.g. you and Jeroen) feel like it's not worth dealing with here (and it probably would be a big change) I won't complain further, except to say "I told you so" if it happens and to be very happy if it turns out it doesn't. I did want to make sure it got raised, though.

comment:92 in reply to: ↑ 91 ; follow-up: Changed 4 years ago by ncohen

Maybe... I think instead I am imagining that Sage could detect whether the latest version (for a given version of Sage) was installed. R does this all the time.

Detecting whether "the local version of a package" is the latest available can be done easily from the output of sage-list-package (see #18456).

If what you want is to automatically detect, in doctests or when running Sage, that some errors are caused by an old version of a package, then it is a more complicated problem and you could help make this conversation more constructive by describing a specific behaviour that you would like. It is my belief that it is also, in this case, unrelated to this ticket.

Yes, or something analogous to that. After all, aren't the current package numbers already in build/pkgs/pkg_name/version or something? It could just check that the packages which are installed match. (Not necessarily for old-style, but that is presumably yet another snag.)

We can know the version of any installed packaged, be it new or old. See output of sage -installed in #18456. Detecting this is not a problem.

The only reason I think it belongs on this ticket is because this ticket would expose the problem.

This ticket cannot fix all the pre-existing bugs that it exposes. If everybody comes and say "this bug existed before, you must fix it or your code will not pass" I will give up very quickly.

  1. User occasionally runs doctests because is told it's a good idea to make sure their Sage works.

Jeroen made sure that all tests will pass. So that's not a problem.

  1. User updates Sage but not some package they use, because that wasn't announced somewhere they saw it (git logs are not announcements)

For new-style packages this is already done automatically.

  1. User runs doctests and gets mysterious failures that seem to be related to updating Sage, but are actually related to not updating package.

Again, only happens for old-style packages. Convert them to new-style to avoid this problem.

Without this ticket, that is much less likely to happen, since the person would have to be running optional doctests - and I would agree that such a person is not so likely to be a beginner. But that's not what would happen here.

Anyway, if two people (e.g. you and Jeroen) feel like it's not worth dealing with here (and it probably would be a big change) I won't complain further, except to say "I told you so" if it happens and to be very happy if it turns out it doesn't. I did want to make sure it got raised, though.

Thank you for your contribution. As you will see from looking at the logs, Jeroen installed all optional doctests to make sure that all tests will pass.

Nathann

comment:93 in reply to: ↑ 92 ; follow-ups: Changed 4 years ago by kcrisman

The only reason I think it belongs on this ticket is because this ticket would expose the problem.

This ticket cannot fix all the pre-existing bugs that it exposes. If everybody comes and say "this bug existed before, you must fix it or your code will not pass" I will give up very quickly.

Well, except it wasn't a pre-existing bug, really. It was just not exposed to anyone except "experts".

  1. User occasionally runs doctests because is told it's a good idea to make sure their Sage works.

Jeroen made sure that all tests will pass. So that's not a problem.

But the tests won't pass, will they, in my scenario?

  1. User updates Sage but not some package they use, because that wasn't announced somewhere they saw it (git logs are not announcements)

For new-style packages this is already done automatically.

And the optional packages are also automatically upgraded? Or just the meta-info in build/pkgs? (That is, does make not just make what's brought in, but also any currently installed optional packages?) If they are auto-upgraded, I think that would suffice for me, as for sure treating the old-style/new-style issue is separate from this ticket.

Thank you for your contribution.

Not sure if that was sarcastic but I will be generous and assume not.

As you will see from looking at the logs, Jeroen installed all optional doctests to make sure that all tests will pass.

That is not what I was asking about, however.


On a related note (certainly not to be dealt with here) would there be something that would auto test optional interfaces, which are also marked with # optional? Like Maple or Mma. That would be very useful for keeping those interfaces up-to-date.

comment:94 in reply to: ↑ 93 ; follow-up: Changed 4 years ago by ncohen

But the tests won't pass, will they, in my scenario?

Please state your scenario precisely, and I will try to answer. Right now, I simply do not understand what you are thinking about.

And the optional packages are also automatically upgraded?

My mistake. Indeed, they are not. This would be a nice improvement, which you are welcome to implement on another ticket.

Or just the meta-info in build/pkgs?

Indeed, this gets updated.

I think that would suffice for me, as for sure treating the old-style/new-style issue is separate from this ticket.

Auto-upgrading optional packages is, I assure you, totally unrelated from adding some keyword to "--optional" automatically when running doctests.

On a related note (certainly not to be dealt with here) would there be something that would auto test optional interfaces, which are also marked with # optional? Like Maple or Mma. That would be very useful for keeping those interfaces up-to-date.

Not that I know. I have the same problem with the LP solvers Gurobi and CPLEX, which have no associated packages.

Nathann

Last edited 4 years ago by ncohen (previous) (diff)

comment:95 in reply to: ↑ 94 Changed 4 years ago by kcrisman

Please state your scenario precisely, and I will try to answer. Right now, I simply do not understand what you are thinking about. Auto-upgrading optional packages is, I assure you, totally unrelated from adding some keyword to "--optional" automatically when running doctests.

I feel like you must be willfully misreading or something. I give five exact steps that lead to confusing doctest failure (again, in principle only at this point) in comment:91. Anyway, neither of us should waste any more time arguing about this until Jeroen or someone else weighs in, as we are clearly talking past each other, unfortunately.

comment:96 Changed 4 years ago by jhpalmieri

I should apologize first: I didn't have the energy to read all of the comments here. Nonetheless, I feel like some of the issues would be avoided if the doctest framework were changed regarding the reporting of results: if we are testing optional packages and there are failures, doctesting could report:

All standard tests pass!
Failures related to optional packages:
   blah blah blah
Failures related to experimental packages:
   blah blah blah

With reporting like that, users could understand why there were failures and also the relative importance of those failures.

comment:97 Changed 4 years ago by kcrisman

Boom, great solution.

Or, given things like # optional - Maple or gurobi maybe "Failures related to optional tag foo" works better?

comment:98 in reply to: ↑ 93 Changed 4 years ago by jdemeyer

Replying to kcrisman:

On a related note (certainly not to be dealt with here) would there be something that would auto test optional interfaces, which are also marked with # optional? Like Maple or Mma. That would be very useful for keeping those interfaces up-to-date.

There is some code at #13540 doing this, but it's not quite ready to use.

comment:99 in reply to: ↑ 93 Changed 4 years ago by jdemeyer

Replying to kcrisman:

And the optional packages are also automatically upgraded? Or just the meta-info in build/pkgs?

Just to confirm what Nathann said: the meta-info in $SAGE_ROOT/build is updated, but the optional packages are not reinstalled.

Last edited 4 years ago by jdemeyer (previous) (diff)

comment:100 Changed 4 years ago by jdemeyer

To solve the issue of non-up-to-date optional packages: here is a solution which is probably easy to actually implement: make --optional=optional only run tests for up-to-date optional packages.

This would need a change to #18456 to properly support version=True for old installed packages.

comment:101 Changed 4 years ago by jdemeyer

  • Dependencies changed from #18456, #18124, #18559, #18563 to #18456, #18124, #18559, #18563, #18579

comment:102 Changed 4 years ago by jdemeyer

Results of testing on OS X: after adding a few more fixes (#18579), all tests pass except two optional - gdb tests in src/sage/doctest/test.py

I don't really want to move gdb to experimental, since it's very useful on Linux where it passes all optional doctests. One solution would be to add a warning (analogous to #18566) to build/pkgs/gdb/spkg-install on OS X. Comments?

comment:103 Changed 4 years ago by jdemeyer

  • Dependencies changed from #18456, #18124, #18559, #18563, #18579 to #18456, #18124, #18559, #18563, #18579, #18581

comment:104 Changed 4 years ago by ncohen

Yet another ticket that I am forced to review ?

comment:105 follow-up: Changed 4 years ago by ncohen

#18579 is entitled "Minor latex-related optional doctest fixes". You added it as a dependency.

comment:106 Changed 4 years ago by ncohen

Okay man I am tired of this game.

I am trying to improve Sage's reliability, and you treat me like a slave, adding dependency after dependency that I am forced to review if I want this to pass, and none of which I consider a real one.

You are on your own, bye.

Nathann

Last edited 4 years ago by ncohen (previous) (diff)

comment:107 in reply to: ↑ 105 ; follow-up: Changed 4 years ago by jdemeyer

Replying to ncohen:

#18579 is entitled "Minor latex-related optional doctest fixes". You added it as a dependency.

In 102 I explained it was needed to fix a few more doctest failures I found while testing.

comment:108 in reply to: ↑ 107 ; follow-up: Changed 4 years ago by ncohen

In 102 I explained it was needed to fix a few more doctest failures I found while testing.

Because you insisted all along on making it a dependency of this ticket that Sage should pass all tests with all packages installed. I do not agree with this, and neither did others. You never cared, and kept on doing it.

Either way that does not concern me anymore.

Nathann

Last edited 4 years ago by ncohen (previous) (diff)

comment:109 in reply to: ↑ 108 Changed 4 years ago by jdemeyer

Replying to ncohen:

Because you insisted all along on making it a dependency of this ticket that Sage should pass all tests with all packages installed.

Yes, and I am willing to work to make that happen!

I don't understand why you feel that I am working against you when I feel that we are working together. You say you want to improve Sage's reliability and that's exactly what I also want.

The usual way to develop Sage is to merge only tickets which work properly (which includes make ptestlong passing). I don't like the philosophy of "let's just merge this and then fix whatever breaks" that you propose and I cannot recall that ever been done in Sage in recent years.

I think you are mostly being too impatient. Even if this ticket takes a while to get merged, that's not a disaster. You are proposing a very important change to Sage in this ticket, you cannot expect it to get merged in just a day.

comment:110 follow-up: Changed 4 years ago by jdemeyer

I added #18581 as dependency to address kcrisman's concerns about outdated optional packages. We should only run optional tests for up-to-date optional packages.

comment:111 in reply to: ↑ 110 ; follow-up: Changed 4 years ago by ncohen

I added #18581 as dependency to address kcrisman's concerns about outdated optional packages. We should only run optional tests for up-to-date optional packages.

I may not have said this enough times: you add dependencies which I do not consider dependencies, and you do this without asking first, without caring in any way.

I am not saying that it is not a good improvement. I am saying that I do not think it should be a dependency of this ticket. I also say that by adding them as a dependency of a ticket I created I cannot see my branch merged in Sage unless I also spend a lot of time on the dependencies, and for this reason I feel used and ignored.

So I give up, because the slave's whipping has lasted sufficiently.

Nathann

Last edited 4 years ago by ncohen (previous) (diff)

comment:112 in reply to: ↑ 111 Changed 4 years ago by kcrisman

I may not have said this enough times: you add dependencies which I do not consider dependencies, and you do this without asking first, without caring in any way.

This is just part of the development process. It is very natural that sometimes developers and reviewers will disagree on what is required for review. This is orthogonal to caring - I'd say it even shows care, because others might just say "needs work" and then not have a possible approach.

So I give up, because the slave's whipping has lasted sufficiently.

That is also part of the open development process; certainly there are plenty of times I've given up on either writing or reviewing because I either didn't understand or couldn't satisfy others. I don't think that anyone is saying you are required to work on any of the dependencies, or indeed required to work on this ticket! Perhaps the person who suggests the change is necessary can take the responsibility, or they may choose not to. That's the point of a volunteer project. Perhaps another reviewer would also have different standards or expectations, and they may come along and decide that adding some of these dependencies was in error.

Anyway, it sounds like #18456 is the most important one, and I don't think this or its dependency list is standing in the way, thankfully!

comment:113 Changed 4 years ago by jdemeyer

Now that #18581 is essentially done (it's needs_work but just trivial issues), we can look at this again and check versions of installed packages.

comment:114 Changed 4 years ago by git

  • Commit changed from 59af6983b05b6581ef1282cdec41d6e63ad82459 to 24db9dc2556b7da256e5ef7e0a127e460ad83979

Branch pushed to git repo; I updated commit sha1. New commits:

17bc8fatrac 18581: _package_lists_from_sage_output should output the
e9f2500trac 18581: new function package_versions
9178afctrac 18581: return None rather than 'not_installed' for version of uninstalled packages
3d04e05Merge commit '9178afcfa4e2b9288aa862dcfd84bc77b33ecabc' into t/18558/18558
24db9dcCheck versions of optional packages

comment:115 Changed 4 years ago by git

  • Commit changed from 24db9dc2556b7da256e5ef7e0a127e460ad83979 to e3f463d32d4d05a55f8cee4315bb01d9c5de2da2

Branch pushed to git repo; I updated commit sha1. New commits:

e3f463dMerge tag '6.8.beta3' into t/18558/18558

comment:116 Changed 4 years ago by jdemeyer

For me, this is good to go now...

comment:117 Changed 4 years ago by kcrisman

  • Reviewers set to Jeroen Demeyer, Karl-Dieter Crisman

Trying this out on my development Sage, which only has a couple optional packages.

Optional tags: cbc,database_odlyzko_zeta,gambit,gcc,mpir,python2,sage,scons

Hmm. I think not all of these are exactly optional.

Also, the individual commands it runs look like

sage -t src/sage/combinat/crystals/alcove_path.py

so it's not evident that they are running the optional ones - will that be clear if and when it hits a file that has optional tests it can run? I guess I will wait and see.

comment:118 Changed 4 years ago by slabbe

  • Cc slabbe added

comment:119 follow-ups: Changed 4 years ago by kcrisman

  • Status changed from needs_review to needs_work

I think we should find a way to remove optional tags that aren't actually optional (scons? python2?). It's just confusing.

The following doesn't provide me any way to tell that the problem was with a gambit optional test (it's not broken, I just broke it to test this.

sage -t src/sage/game_theory/gambit_docs.py
**********************************************************************
File "src/sage/game_theory/gambit_docs.py", line 124, in sage.game_theory.gambit_docs
Failed example:
    g[int(2), int(0)][int(0)] = int(0)  # optional - gambit
Exception raised:
<snip>
    IndexError: Provided strategy index 2 out of range for player 0
**********************************************************************
1 item had failures:
   1 of  13 in sage.game_theory.gambit_docs
    [12 tests, 1 failure, 0.14 s]
----------------------------------------------------------------------
sage -t src/sage/game_theory/gambit_docs.py  # 1 doctest failed
----------------------------------------------------------------------

I'm saying that this works, apparently, but doesn't give any indication that it failed due to an optional test. 'Needs work' or at least 'needs info'.

Do you have a suggestion for how to test http://git.sagemath.org/sage.git/commit/?id=24db9dc2556b7da256e5ef7e0a127e460ad83979 by the way? Do you have an optional package I could test that isn't up-to-date? I hate to regress to a previous Sage, install the package, then tediously build Sage back up to develop to try this...

comment:120 in reply to: ↑ 119 Changed 4 years ago by jhpalmieri

Replying to kcrisman:

Do you have a suggestion for how to test http://git.sagemath.org/sage.git/commit/?id=24db9dc2556b7da256e5ef7e0a127e460ad83979 by the way? Do you have an optional package I could test that isn't up-to-date? I hate to regress to a previous Sage, install the package, then tediously build Sage back up to develop to try this...

If I understand what you're asking, maybe you could just modify build/pkgs/gambit/package-version.txt (for example) so that Sage now thinks the installed version is not up-to-date.

comment:121 Changed 4 years ago by kcrisman

If that is how it's found, then yes, I guess that would work. Okay, I'll give that a spin.

comment:122 in reply to: ↑ 119 Changed 4 years ago by jdemeyer

Replying to kcrisman:

Do you have an optional package I could test that isn't up-to-date?

Install arb and merge #18560.

comment:123 Changed 4 years ago by kcrisman

  • Status changed from needs_work to needs_review

This seems to work very nicely in that way. I think this is certainly doing what I was hoping for.

Then, from my point of view, the question is just how to deal with alerting the user that it's an optional test. Or is that necessary, since the test itself says # optional - gambit. Maybe that's enough? At least it's enough to send to sage-devel or somewhere and then there is sufficient info for them - I changed my mind.

comment:124 in reply to: ↑ 119 ; follow-up: Changed 4 years ago by jdemeyer

Replying to kcrisman:

I think we should find a way to remove optional tags that aren't actually optional (scons? python2?). It's just confusing.

On the other hand, it allows tests only on python2 or python3, that might be actually useful. And scons was made optional just because the Python 3 porting people asked for that. I would just live with this, it's not really a problem anyway. It's only shown in the beginning of the doctest log.

The following doesn't provide me any way to tell that the problem was with a gambit optional test (it's not broken, I just broke it to test this.

sage -t src/sage/game_theory/gambit_docs.py
**********************************************************************
File "src/sage/game_theory/gambit_docs.py", line 124, in sage.game_theory.gambit_docs
Failed example:
    g[int(2), int(0)][int(0)] = int(0)  # optional - gambit
Exception raised:
<snip>
    IndexError: Provided strategy index 2 out of range for player 0
**********************************************************************
1 item had failures:
   1 of  13 in sage.game_theory.gambit_docs
    [12 tests, 1 failure, 0.14 s]
----------------------------------------------------------------------
sage -t src/sage/game_theory/gambit_docs.py  # 1 doctest failed
----------------------------------------------------------------------

I'm saying that this works, apparently, but doesn't give any indication that it failed due to an optional test. 'Needs work' or at least 'needs info'.

The "Failed example" shows # optional - gambit. Is that not clear enough?

comment:125 in reply to: ↑ 124 Changed 4 years ago by kcrisman

The "Failed example" shows # optional - gambit. Is that not clear enough?

See comment:123, where I realized that.

comment:126 Changed 4 years ago by was

+1000 that you guys are working on this ticket!

comment:127 in reply to: ↑ 59 Changed 4 years ago by jdemeyer

Replying to jdemeyer:

For information, this is a list of all optional tags with count (assuming #18124 and #18559):

    302 
     59 4ti2
    622 arb
    114 axiom
      7 benzene
     31 bliss
     10 buckygen
    209 cbc
     25 chevie
     33 CHomP
    383 coxeter3
    185 CPLEX
    185 cryptominisat
      1 CryptoMiniSat
      4 cunningham
     11 CVXOPT
     24 database_cremona_ellcurve
    112 database_gap
     14 database_jones_numfield
      2 database_kohel
      3 database_odlyzko_zeta
      8 database_pari
     28 database_stein_watkins
     13 database_symbolic_data
      1 debug
      3 dot2tex
     31 dot2tex graphviz
     43 FES
      8 ffmpeg
     65 fricas
     51 frobby
    115 gambit
     93 gap3
      2 gap3chevie
     67 gap_packages
      5 gdb
    142 giac
      2 ginv
      1 gnuplot
     19 gperftools
    201 Gurobi
      6 GUROBI
      1 Hmisc R package
     72 ImageMagick
    272 internet
      2 java
      2 java internet
    109 kash
      8 latex
     29 latte_int
      1 libjpeg
     96 lie
      9 long time
     30 lrs
      2 M2
     15 macaulay2
    660 magma
    151 maple
      2 Maple
    119 mathematica
     59 matlab
      4 mcqd
     10 modular_decomposition
     79 mupad
      2 MuPAD
     20 nauty
    157 Nonexistent_LP_solver
     61 octave
     69 phc
     35 plantri
     15 polymake
      5 polytopes_db_4d
    180 qepcad
      1 random
      2 requires maple
     11 rgraphics
      2 runsnake
     98 scilab
      5 sloane_database
     16 souvigner
      3 surf
      4 tides
      8 time
     40 TOPCOM
      3 webbrowser

I am fixing most mistakes in the above list in #18621 and #18637.

comment:128 follow-up: Changed 4 years ago by kcrisman

An interesting thing that comes up with #18637's fixes is that I don't think the internet optional doctests were tested in my run. It that something that your changes (or something) could also automatically assess? Those tests constantly are breaking, and it would be wonderful if that could be done here.

However, I recognize that may be orthogonal enough (or difficult enough) to not bother with here, and instead better to deal with elsewhere.

comment:129 in reply to: ↑ 128 Changed 4 years ago by jdemeyer

Replying to kcrisman:

An interesting thing that comes up with #18637's fixes is that I don't think the internet optional doctests were tested in my run.

They are not run automatically run. This ticket is only about optional Sage packages.

However, I recognize that may be orthogonal enough (or difficult enough) to not bother with here, and instead better to deal with elsewhere.

Yes, see #13540

comment:130 Changed 4 years ago by jhpalmieri

I think it's easy to automatically run the internet tests. I don't actually know if that's a good idea: how often will someone start doctesting with internet access (at which point the tag will get added to the list) and then lose it during doctesting (they lose their internet connection, they take their laptop outside, etc.)?

Adapted from #13540:

  • src/sage/doctest/control.py

    diff --git a/src/sage/doctest/control.py b/src/sage/doctest/control.py
    index ce846b2..7b07f2d 100644
    a b class DocTestController(SageObject): 
    256256                    for pkg, versions in optional_pkgs.items():
    257257                        if versions[0] == versions[1]:
    258258                            options.optional.add(pkg)
     259                    # If there is an internet connection, add
     260                    # 'internet' to the list of optional tags.
     261                    try:
     262                        import urllib2
     263                        urllib2.urlopen('http://sagemath.org/')
     264                        options.optional.add('internet')
     265                    except urllib2.URLError:
     266                        pass
    259267
    260268                # Check that all tags are valid
    261269                for o in options.optional:

I also expect lots of failing internet doctests, and I don't know how to fix all of them. For example, I don't understand the doctesting structure for the files in sage/dev in the first place.

Of course this all belongs on another ticket, either #13540 or a piece of it.

comment:131 Changed 4 years ago by jhpalmieri

Actually, for reasons I really don't understand, my previous code with urllib2 gave me a ton of segfaults when doctesting Sage (?!). In fact I was getting segfaults just from inserting the lines

import urllib2
urllib2.urlopen('http://sagemath.org/')

without the line options.optional.add('internet'). I must be doing something wrong, but I don't know what.

Anyway, the following doesn't produce segfaults (taken from stackoverflow):

  • src/sage/doctest/control.py

    diff --git a/src/sage/doctest/control.py b/src/sage/doctest/control.py
    index ce846b2..ff365dd 100644
    a b class DocTestController(SageObject): 
    256256                    for pkg, versions in optional_pkgs.items():
    257257                        if versions[0] == versions[1]:
    258258                            options.optional.add(pkg)
     259                    # If there is an internet connection, add
     260                    # 'internet' to the list of optional tags.
     261                    try:
     262                        import socket
     263                        host = socket.gethostbyname('sagemath.org')
     264                        socket.create_connection((host, 80), 2)
     265                        options.optional.add('internet')
     266                    except:
     267                        pass
    259268
    260269                # Check that all tags are valid
    261270                for o in options.optional:

comment:132 Changed 4 years ago by jhpalmieri

Finally, for the actual ticket under discussion, I am happy with it. Anyone have any remaining objections?

comment:133 Changed 4 years ago by jhpalmieri

My brain is not quite working today. I am almost happy with the current ticket. I am not sure about the message Optional tags: gcc,mpir,python2,sage,scons: I think this is open to misinterpretation. Maybe it could say instead something like Doctesting using '--optional=gcc,mpir,python2,sage,scons'?

comment:134 Changed 4 years ago by kcrisman

  • Reviewers changed from Jeroen Demeyer, Karl-Dieter Crisman to Jeroen Demeyer, Karl-Dieter Crisman, John Palmieri

That would suffice to address my very similar concern in comment:117 as well.

comment:135 follow-up: Changed 4 years ago by jdemeyer

How about

Using --optional=gcc,mpir,python2,sage,scons

comment:136 follow-up: Changed 4 years ago by slabbe

  • Status changed from needs_review to needs_work

Optional packages that are outside of sage (like graphviz and mathematica) are currently not detected as tags. With mathematica 10.0 and sage 6.8.beta3 and graphviz and this ticket I get:

$ sage -t src/sage/interfaces/mathematica.py 
----------------------------------------------------------------------
All tests passed!
----------------------------------------------------------------------

but

sage -t --optional=mathematica src/sage/interfaces/mathematica.py 
----------------------------------------------------------------------
sage -t src/sage/interfaces/mathematica.py  # 50 doctests failed
----------------------------------------------------------------------

Similarly, less tests are done because the tag graphviz is not detected:

$ sage -t src/sage/graphs/graph_latex.py
Git branch: t/18558
Optional tags: dot2tex,gcc,mpir,python2,sage,scons
Doctesting 1 file.
sage -t src/sage/graphs/graph_latex.py
    [186 tests, 0.17 s]
----------------------------------------------------------------------
All tests passed!
----------------------------------------------------------------------

compared to

$ sage -t --optional=graphviz,sage,dot2tex src/sage/graphs/graph_latex.py
Git branch: t/18558
Optional tags: dot2tex,graphviz,sage
Doctesting 1 file.
sage -t src/sage/graphs/graph_latex.py
    [190 tests, 2.48 s]
----------------------------------------------------------------------
All tests passed!
----------------------------------------------------------------------

comment:137 in reply to: ↑ 136 Changed 4 years ago by jdemeyer

  • Description modified (diff)
  • Status changed from needs_work to needs_review

Replying to slabbe:

Optional packages that are outside of sage (like graphviz and mathematica) are currently not detected as tags.

I know, but that's outside the scope of this ticket.

comment:138 follow-up: Changed 4 years ago by slabbe

Okay. I just installed as many optional packages that I could. Below is the list of my optional tags:

Optional tags: 
arb,benzene,bliss,buckygen,cbc,cryptominisat,
database_cremona_ellcurve,database_gap,database_odlyzko_zeta,database_pari,
database_stein_watkins,database_symbolic_data,dot2tex,gambit,gcc,gdb,mcqd,
modular_decomposition,mpir,nauty,plantri,python2,sage,scons,tides

I am starting a make ptestlong now and I will tell you tomorrow the result.

comment:139 in reply to: ↑ 135 Changed 4 years ago by jhpalmieri

Replying to jdemeyer:

How about

Using --optional=gcc,mpir,python2,sage,scons

Sounds okay to me.

comment:140 Changed 4 years ago by git

  • Commit changed from e3f463d32d4d05a55f8cee4315bb01d9c5de2da2 to 82f3eec7a275f4f250b699633339bcb391b00b1e

Branch pushed to git repo; I updated commit sha1. New commits:

82f3eecChange "Using --optional" message

comment:141 Changed 4 years ago by jdemeyer

  • Status changed from needs_review to positive_review

comment:142 in reply to: ↑ 138 Changed 4 years ago by slabbe

Replying to slabbe:

I am starting a make ptestlong now and I will tell you tomorrow the result.

Running doctests with ID 2015-06-09-16-25-45-44c48cbc.
Git branch: t/18558
Optional tags: arb,benzene,bliss,buckygen,cbc,cryptominisat,
database_cremona_ellcurve,database_gap,database_odlyzko_zeta,
database_pari,database_stein_watkins,database_symbolic_data,
dot2tex,gambit,gcc,gdb,mcqd,modular_decomposition,
mpir,nauty,plantri,python2,sage,scons,tides
Doctesting entire Sage library.
Sorting sources by runtime so that slower doctests are run first....
Doctesting 3135 files using 4 threads.
[...]
----------------------------------------------------------------------
All tests passed!
----------------------------------------------------------------------

comment:143 Changed 4 years ago by vbraun

  • Branch changed from u/jdemeyer/18558 to 82f3eec7a275f4f250b699633339bcb391b00b1e
  • Resolution set to fixed
  • Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.