1. 27 Dec, 2017 1 commit
  2. 13 Dec, 2017 1 commit
  3. 11 Dec, 2017 38 commits
    • Release Manager's avatar
      Trac #24347: make Coxeter matrix groups know when they are commutative · e78d3697
      Release Manager authored
      by refining their category
      
      URL: https://trac.sagemath.org/24347
      Reported by: chapoton
      Ticket author(s): Frédéric Chapoton
      Reviewer(s): Travis Scrimshaw
      e78d3697
    • Release Manager's avatar
      Trac #24338: Remove pari_mod finite field implementation · ac7b0415
      Release Manager authored
      This was deprecated in #17297.
      
      Now, we allow `impl="pari"` as alias of `impl="pari_ffelt"`.
      
      URL: https://trac.sagemath.org/24338
      Reported by: jdemeyer
      Ticket author(s): Jeroen Demeyer
      Reviewer(s): Travis Scrimshaw
      ac7b0415
    • Release Manager's avatar
      Trac #24336: In Cython modules, always *c*import parent · 42faeb8c
      Release Manager authored
      `parent()` is a usually a very important function. For efficiency, it
      should be cimported (not Python imported) in Cython modules.
      
      URL: https://trac.sagemath.org/24336
      Reported by: jdemeyer
      Ticket author(s): Jeroen Demeyer
      Reviewer(s): Travis Scrimshaw
      42faeb8c
    • Release Manager's avatar
      Trac #24328: New module to implement generic_power · 0bd3ef31
      Release Manager authored
      Move `generic_power` to a new Cython module `sage.arith.power`.
      
      The old `generic_power` function in `sage.structure.element` is kept for
      now to avoid conflicts with other tickets, in particular #24247. It will
      be deprecated officially in #24256.
      
      URL: https://trac.sagemath.org/24328
      Reported by: jdemeyer
      Ticket author(s): Jeroen Demeyer
      Reviewer(s): Travis Scrimshaw
      0bd3ef31
    • Release Manager's avatar
      Trac #24325: manifolds: failing tests in options · 46ab1405
      Release Manager authored
      When the untested examples in `src/sage/manifolds/manifold.py` involving
      `GlobalOptions` are actually tested:
      {{{
      sage -t src/sage/manifolds/manifold.py
      **********************************************************************
      File "src/sage/manifolds/manifold.py", line 1802, in
      sage.manifolds.manifold.TopologicalManifold.options
      Failed example:
          f
      Expected:
          D[0](g)(x, y) + D[1](g)(x, y)
      Got:
          diff(g(x, y), x) + diff(g(x, y), y)
      **********************************************************************
      File "src/sage/manifolds/manifold.py", line 1804, in
      sage.manifolds.manifold.TopologicalManifold.options
      Failed example:
          latex(f)
      Expected:
          D[0]\left(g\right)\left(x, y\right) + D[1]\left(g\right)\left(x,
      y\right)
      Got:
          \frac{\partial}{\partial x}g\left(x, y\right) +
      \frac{\partial}{\partial y}g\left(x, y\right)
      **********************************************************************
      }}}
      
      URL: https://trac.sagemath.org/24325
      Reported by: jdemeyer
      Ticket author(s): Eric Gourgoulhon
      Reviewer(s): Travis Scrimshaw
      46ab1405
    • Release Manager's avatar
      Trac #24322: Use new-style GlobalOptions · 2cbaa170
      Release Manager authored
      The syntax
      {{{
      options=GlobalOptions(...
          doc="""
          EXAMPLES::
      
              sage: #doctest here
          """
      )
      }}}
      has the unfortunate effect that the doctests are not actually seen as
      doctests. They are just a string, nothing more. Ticket #23238 was
      created to allow a new syntax for `GlobalOptions`, which makes the
      doctests actually doctests.
      
      This ticket uses the new syntax in all cases. This enables some doctests
      which were not tested before. As expected, this uncovered various
      failures. Some trivial ones are fixed, others are marked as `# known
      bug` with the following tickets opened: #24323, #24324, #24325. #24326
      
      URL: https://trac.sagemath.org/24322
      Reported by: jdemeyer
      Ticket author(s): Jeroen Demeyer
      Reviewer(s): Travis Scrimshaw
      2cbaa170
    • Release Manager's avatar
      Trac #24318: Conversion failure CBF -> CDF · e71dc43b
      Release Manager authored
      It should be possible to convert complex balls to a complex double
      {{{
      sage: RDF(RBF(1))
      1.0
      sage: CDF(CBF(1))
      1.0
      sage: CDF(CBF(1+I))
      Traceback (most recent call last):
      ...
      TypeError: can't convert complex ball to float
      }}}
      (it works perfectly with `ComplexField`)
      
      See also the initial report from #24317.
      
      URL: https://trac.sagemath.org/24318
      Reported by: vdelecroix
      Ticket author(s): Vincent Delecroix
      Reviewer(s): Travis Scrimshaw
      e71dc43b
    • Release Manager's avatar
      Trac #24311: fix algdep when it finds a constant polynomial · 34a69e72
      Release Manager authored
      This problem:
      {{{
      sage: algdep(CC(-1)^(1/3),1)
      ValueError: min() arg is an empty sequence
      }}}
      It should just return some bogus polynomial of degree 1:
      {{{
      sage: algdep(CC(-1)^(1/7),1)
      x - 1
      }}}
      
      URL: https://trac.sagemath.org/24311
      Reported by: nbruin
      Ticket author(s): Nils Bruin
      Reviewer(s): Jeroen Demeyer
      34a69e72
    • Release Manager's avatar
      Trac #24308: accept polynomial ring to not implement characteristic for powering · 0efa5ebb
      Release Manager authored
      An annoying not implemented error
      {{{
      sage: kk.<a,b> = GF(2)[]
      sage: k.<y,w> = kk.quo(a^2+a+1)
      sage: K.<T> = k[]
      sage: (T*y)^21
      Traceback (most recent call last):
      ...
      NotImplementedError:
      }}}
      
      When the parent does not implement `.characteristic()` we simply
      fallback to generic powering.
      
      see https://groups.google.com/forum/#!topic/sage-support/gJhpFkdJ2J0
      
      URL: https://trac.sagemath.org/24308
      Reported by: vdelecroix
      Ticket author(s): Vincent Delecroix
      Reviewer(s): Travis Scrimshaw
      0efa5ebb
    • Release Manager's avatar
      Trac #24307: links to github sagetex repo · a5321f9d
      Release Manager authored
      URL: https://trac.sagemath.org/24307
      Reported by: chapoton
      Ticket author(s): Frédéric Chapoton
      Reviewer(s): Karl-Dieter Crisman
      a5321f9d
    • Release Manager's avatar
      Trac #24298: Improve Morphism.is_identity() · 48095031
      Release Manager authored
      Just make `phi.is_identity()` an alias of `phi ==
      phi.parent().identity()`
      
      URL: https://trac.sagemath.org/24298
      Reported by: jdemeyer
      Ticket author(s): Jeroen Demeyer
      Reviewer(s): Travis Scrimshaw
      48095031
    • Release Manager's avatar
      Trac #24293: Use integer_check_long to implement Integer.__mod__ · d1f59e6a
      Release Manager authored
      URL: https://trac.sagemath.org/24293
      Reported by: jdemeyer
      Ticket author(s): Jeroen Demeyer
      Reviewer(s): Travis Scrimshaw
      d1f59e6a
    • Release Manager's avatar
      Trac #24287: Issue with vertex cover for graphs with multiple edges · d386ef10
      Release Manager authored
      Several issues to fix for `vertex_cover` with multigraphs
      {{{
      sage: G = Graph([(0,1)]*5 + [(1,2)]*2, multiedges=True)
      sage: G.vertex_cover(reduction_rules=False, algorithm='MILP')
      [1]
      sage: G.vertex_cover(reduction_rules=True, algorithm='MILP')
      ------------------------------------------------------------------------
      ---
      ValueError                                Traceback (most recent call
      last)
      <ipython-input-47-3efdc00ac3e0> in <module>()
      ----> 1 G.vertex_cover(reduction_rules=True, algorithm='MILP')
      
      /Users/dcoudert/sage/local/lib/python2.7/site-
      packages/sage/graphs/graph.pyc in vertex_cover(self, algorithm,
      value_only, reduction_rules, solver, verbosity)
         6622
         6623                 elif du == 2:
      -> 6624                     v,w  = g.neighbors(u)
         6625
         6626                     if g.has_edge(v,w):
      
      ValueError: need more than 1 value to unpack
      sage: G.vertex_cover(reduction_rules=False)
      ------------------------------------------------------------------------
      ---
      ValueError                                Traceback (most recent call
      last)
      <ipython-input-48-5167d984b139> in <module>()
      ----> 1 G.vertex_cover(reduction_rules=False)
      
      /Users/dcoudert/sage/local/lib/python2.7/site-
      packages/sage/graphs/graph.pyc in vertex_cover(self, algorithm,
      value_only, reduction_rules, solver, verbosity)
         6674
         6675         elif algorithm == "Cliquer" or algorithm == "mcqd":
      -> 6676             independent =
      g.complement().clique_maximum(algorithm=algorithm)
         6677             if value_only:
         6678                 size_cover_g = g.order() - len(independent)
      
      /Users/dcoudert/sage/local/lib/python2.7/site-
      packages/sage/graphs/generic_graph.pyc in complement(self)
        17433
        17434         """
      > 17435         self._scream_if_not_simple()
        17436
        17437         G = self.copy(data_structure='dense')
      
      /Users/dcoudert/sage/local/lib/python2.7/site-
      packages/sage/graphs/generic_graph.pyc in _scream_if_not_simple(self,
      allow_loops, allow_multiple_edges)
         1298                    "meantime if you want to use it please
      disallow "+name+" using "+
         1299                    functions+".")
      -> 1300             raise ValueError(msg)
         1301
         1302     def networkx_graph(self, copy=True):
      
      ValueError: This method is not known to work on graphs with multiedges.
      Perhaps this method can be updated to handle them, but in the meantime
      if you want to use it please disallow multiedges using
      allow_multiple_edges().
      }}}
      
      URL: https://trac.sagemath.org/24287
      Reported by: dcoudert
      Ticket author(s): David Coudert
      Reviewer(s): Jori Mäntysalo
      d386ef10
    • Release Manager's avatar
      Trac #24285: cleaning reall and complex balls · b5e1445d
      Release Manager authored
      We perform some cleaning
      
      - move the conversion `number field -> ball` in the files relative to
      number fields (creation of methds `_arb_` and `_acb_` for that purpose)
      - remove c++ clumsy dependency (ntl for number fields)
      - `with X bits precision` -> `with X bits of precision` in string
      representation
      
      (follow up #24318)
      (this is part of the task ticket #24289)
      
      URL: https://trac.sagemath.org/24285
      Reported by: vdelecroix
      Ticket author(s): Vincent Delecroix
      Reviewer(s): Marc Mezzarobba, Travis Scrimshaw
      b5e1445d
    • Release Manager's avatar
      Trac #24282: BooleanFunction.truth_table(format="hex") returns wrong values · 637ec22f
      Release Manager authored
      Sometimes, especially with functions of 8 variables, the method
      `BooleanFunction.truth_table(format='hex")` returns incorrect values
      that are also too long.
      
      Example:
      
      {{{
      sage: from sage.rings.integer_ring import ZZ
      sage: from sage.crypto.boolean_function import BooleanFunction
      sage: hex_str =
      "0123456789112345678921234567893123456789412345678951234567896123"
      sage: len(hex_str)
      64
      sage: bf = BooleanFunction(hex_str)
      sage: bf.nvariables()
      8
      sage: bf_tt_hex = bf.truth_table(format="hex")
      sage: bf_tt_hex
      '12345678911234567892123456789312345678941234567012345678911234567892123
      4567893123456789412345678951234567896123'
      sage: len(bf_tt_hex)
      111
      sage: S = ZZ(bf.truth_table(), 2).str(16)
      sage: padding = "0" * ((1 << (bf.nvariables() - 2)) - len(S))
      sage: tt_hex = padding + S
      sage: tt_hex
      '0123456789112345678921234567893123456789412345678951234567896123'
      sage: len(tt_hex)
      64
      }}}
      
      The example also shows how the code in  https://github.com/sagemath/sage
      /blob/develop/src/sage/crypto/boolean_function.pyx lines 566 to 576
      should be fixed. A suggested patch is attached.
      
      The example can also be used as the basis for a test case once the patch
      has been applied.
      
      URL: https://trac.sagemath.org/24282
      Reported by: pleopardi
      Ticket author(s): Paul Leopardi
      Reviewer(s): Dima Pasechnik
      637ec22f
    • Release Manager's avatar
      Trac #24281: Fix comparison of morphisms · 83527e8e
      Release Manager authored
      Often, the same morphism can be created as different Python classes. For
      example, these are two versions of the identity map on `QQ`:
      {{{
      sage: H = End(QQ)
      sage: f = H.identity()
      sage: g = H(1)
      sage: type(f)
      <type 'sage.categories.morphism.IdentityMorphism'>
      sage: type(g)
      <type 'sage.rings.morphism.RingHomomorphism_im_gens'>
      }}}
      
      The problem is that these may not compare equal because most comparison
      functions for morphisms consider morphisms not equal if they have
      different types:
      {{{
      sage: g == f
      False
      sage: f == g
      True
      }}}
      
      The solution is to implement a generic comparison function for
      morphisms. We do this by checking whether two maps have the same image
      on the generators and recursively on the base ring.
      
      URL: https://trac.sagemath.org/24281
      Reported by: jdemeyer
      Ticket author(s): Jeroen Demeyer
      Reviewer(s): Travis Scrimshaw
      83527e8e
    • Release Manager's avatar
      Trac #24278: Simplify RingHomset_generic.__call__ · ff624e8e
      Release Manager authored
      Whenever `RingHomset_generic.__call__` fails, it gives a meaningless
      error message "images do not define a valid homomorphism". In this
      branch, we instead simply propagate the error message from the actual
      code, which is typically much more interesting.
      
      URL: https://trac.sagemath.org/24278
      Reported by: jdemeyer
      Ticket author(s): Jeroen Demeyer
      Reviewer(s): Travis Scrimshaw
      ff624e8e
    • Release Manager's avatar
      Trac #24276: Fix categories/examples/semigroups_cython.pyx · 5670b5d3
      Release Manager authored
      Several doctests in that file are marked `# todo: not implemented
      (binding; see __getattr__)`. It's not entirely clear to me what the file
      `semigroups_cython.pyx` is actually trying to do, but those tests can
      easily be fixed be using a standard Python class for `ElementMethods`
      instead of a `cdef class`.
      
      URL: https://trac.sagemath.org/24276
      Reported by: jdemeyer
      Ticket author(s): Jeroen Demeyer
      Reviewer(s): Travis Scrimshaw
      5670b5d3
    • Release Manager's avatar
      Trac #24274: Fix bare "except:" statements · 13710a98
      Release Manager authored
      This is bad:
      {{{
      except:
      }}}
      One should always catch specific exceptions instead.
      
      URL: https://trac.sagemath.org/24274
      Reported by: jdemeyer
      Ticket author(s): Jeroen Demeyer
      Reviewer(s): Travis Scrimshaw
      13710a98
    • Release Manager's avatar
      Trac #24271: py3: allow flexibility in exception message formatting in doctests on Python 3 · b797dd7d
      Release Manager authored
      On Python 2 exception messages are printed, along with the exception
      class name, like
      
      {{{
      SignError: cannot multiply infinity by zero
      }}}
      
      whereas on Python 3 they're printed with the exception class's fully
      qualified name (for non-builtin exceptions):
      
      {{{
      sage.rings.infinity.SignError: cannot multiply infinity by zero
      }}}
      
      Therefore any doctest that expects a traceback fails, due to this slight
      formatting difference.  One can go through all such tests and insert
      ellipses.  But it's simpler if we just normalize for this trivial
      formatting difference, similarly to #24258.
      
      Additionally, there were a few common exceptions (particularly `IOError`
      which [https://docs.python.org/3/library/exceptions.html#OSError as of
      Python 3.3] are just aliases for `OSError`, so we handle that case as
      well.
      
      In this case the fixup isn't done directly in the `OutputChecker` since,
      in order to make this normalization as restrictive as possible, we need
      access to the exception info which is not normally passed to
      `OutputChecker`.  So this is handled directly in `SageDocTestRunner`'s
      result handling.
      
      This made a lot of previously "failing" tests pass for me.  But it
      should be made clear that this normalization does not in any way take
      away from the validity of the tests.
      
      URL: https://trac.sagemath.org/24271
      Reported by: embray
      Ticket author(s): Erik Bray
      Reviewer(s): Jeroen Demeyer
      b797dd7d
    • Release Manager's avatar
      Trac #24270: Fix compiler warnings involving debug.refine_category_hash_check · e5cbdd83
      Release Manager authored
      My compiler is not able to prove that the value of
      `debug.refine_category_hash_check` does not change during the call
      `Parent._refine_category_`. This gives `-Wmaybe-uninitialized` warnings.
      
      I am working regularly on this file and this warning is always
      distracting me.
      
      URL: https://trac.sagemath.org/24270
      Reported by: jdemeyer
      Ticket author(s): Jeroen Demeyer
      Reviewer(s): Travis Scrimshaw
      e5cbdd83
    • Release Manager's avatar
      Trac #24267: Fix newton_sqrt() method · a2dffffc
      Release Manager authored
      The code does some strange things, like checking whether a variable name
      equals `"a"`. If it does, it tries to raise a string to an integer
      power.
      
      This code was introduced in #7927.
      
      In all doctests, the variable name is indeed `"a"` so we just cleanup
      the code with that assumption.
      
      URL: https://trac.sagemath.org/24267
      Reported by: jdemeyer
      Ticket author(s): Jeroen Demeyer
      Reviewer(s): Frédéric Chapoton
      a2dffffc
    • Release Manager's avatar
      Trac #24265: py3: fixes to sage.misc.fpickle module · c79bf6ed
      Release Manager authored
      Miscellaneous fixes to the `sage.misc.fpickle` module for Python 3
      support.
      
      I confirmed that all the module's tests passed on Python 3.  This also
      fixed some errors in tests that relied on this indirectly (e.g. through
      pickling of methods).
      
      URL: https://trac.sagemath.org/24265
      Reported by: embray
      Ticket author(s): Erik Bray
      Reviewer(s): Frédéric Chapoton
      c79bf6ed
    • Release Manager's avatar
      Trac #24248: Fix isinstance(x, int) calls in element.pyx · d1f34990
      Release Manager authored
      URL: https://trac.sagemath.org/24248
      Reported by: jdemeyer
      Ticket author(s): Jeroen Demeyer
      Reviewer(s): Travis Scrimshaw
      d1f34990
    • Release Manager's avatar
      Trac #24244: Fast check for C long · f027e2d7
      Release Manager authored
      Implement a fast variant of `pyobject_to_long`, which could be used to
      replace checks of the form `isinstance(x, int)`.
      
      The goal of these functions is to provide a single place to check for
      integers and convert them to a C `long` (at least in Cython code, where
      performance matters most). Various places in Sage check for integers in
      different ways. First of all, this is an inconsistency which should be
      fixed.
      
      In Python 3, the types `int`/`long` are changed, so many of the existing
      checks will need to be changed anyway. So we might as well provide one
      function which should be able to replace most of these checks. And
      ideally, we want to do this without losing too much performance. For
      that reason, I avoid `PyLong_FromLong` in favour of a hand-written
      implementation.
      
      The function `pyobject_to_long` has signature
      {{{
      cdef bint integer_check_long(x, long* value, int* err)
      }}}
      It does several things: first of all, it checks whether `x` is "integer-
      like". This means that it is either a Python `int` or `long`, a Sage
      `Integer` or it supports `__index__`. The return value of the function
      is whether or not it is an integer. If it is an integer, it tries to
      convert the value to a C `long` and stores it in `*value`. Errors are
      passed through the `*err` variable.
      
      This interface looks overcomplicated on first sight, but the complexity
      is needed to support the various use cases of this function. Also note
      that it is an `inline` function, so the compiler should be able to
      optimize away the unused variables.
      
      Use case 1: a function can take different kinds of input and want to
      check whether the input is an integer. Typically, this would be done
      with a long `if` chain like
      {{{
      if isinstance(x, ...):
          ...
      elif isinstance(x, ...):
          ...
      elif integer_check_long(x, &value, &err):
          # Process value and err as needed
      elif isinstance(x, ...):
          ...
      }}}
      
      Use case 2: convert an integer to a C `long` purely for performance. In
      this case, you want to treat overflow the same as the input not being an
      integer:
      {{{
      cdef int err = -1
      integer_check_long(x, &value, &err)
      if err == 0:
          # Conversion successful, use value
      }}}
      
      URL: https://trac.sagemath.org/24244
      Reported by: jdemeyer
      Ticket author(s): Jeroen Demeyer
      Reviewer(s): Travis Scrimshaw
      f027e2d7
    • Jeroen Demeyer's avatar
      Small doc fix · 1581da98
      Jeroen Demeyer authored
      1581da98
    • Jeroen Demeyer's avatar
      1f7f7c8d
    • Release Manager's avatar
      Trac #24259: Declare Integer.value as array · 5fb5ca3b
      Release Manager authored
      Work around https://github.com/cython/cython/issues/1984
      
      URL: https://trac.sagemath.org/24259
      Reported by: jdemeyer
      Ticket author(s): Jeroen Demeyer
      Reviewer(s): Marc Mezzarobba
      5fb5ca3b
    • Release Manager's avatar
      Trac #24257: py3: change how remove_unicode_u is applied in the output checker · 61f0cb73
      Release Manager authored
      I explained this more in the commit message, but in short I realized
      that I don't like how the doctest output checker applies
      `remove_unicode_u`.  It was applying it the "actual output" strings on
      both Python 2 and Python 3.  Really what we want is to leave the output
      strings alone on Python 2, since an unexpected unicode string in the
      output could represent a test failure.  Likewise it doesn't make sense
      to apply on Python 3 since we should never see u-prefixed strings in the
      actual output on Python 3.
      
      Instead, we just want to strip u-prefixed strings from the desired
      output, and on Python 3 only, so that tests that expect some
      `str.__repr__()` pass the same on both Python 2 and 3.  Python 2 tests
      that ''explicitly'' expect unicode will also pass on Python 3 since
      Python 3 `str``s are already unicode.
      
      For tests that should expect bytes we can use the `b''` prefix and
      similarly strip `b''` prefixes from the desired output on Python 2, but
      I haven't actually hit too many cases like that yet so I will address
      that separately.
      
      URL: https://trac.sagemath.org/24257
      Reported by: embray
      Ticket author(s): Erik Bray
      Reviewer(s): Jeroen Demeyer
      61f0cb73
    • Release Manager's avatar
      Trac #24254: remove is_coercion_cached / is_conversion_cached methods · d6b21e1d
      Release Manager authored
      `Parent.is_coercion_cached` and `Parent.is_conversion_cached` are:
       - not documented
       - trivial (`return domain in self._coerce_from_hash`)
       - useless for most users
       - appear in one place in the code of
      `catgories.unital_algebras.UnitalAlgebras` and two doctests
      
      This ticket stands for hiding them (ie let their name starts with an
      underscore) and document them.
      
      URL: https://trac.sagemath.org/24254
      Reported by: vdelecroix
      Ticket author(s): Vincent Delecroix
      Reviewer(s): Travis Scrimshaw
      d6b21e1d
    • Release Manager's avatar
      Trac #24252: Fake Integer interface · 9764031f
      Release Manager authored
      Work around the cyclic dependency of the Sage `Integer` class and the
      coercion model by introducing a new Cython header `integer_fake` with a
      minimal interface to `Integer` by doing a lazy import of
      `sage.rings.integer`.
      
      (This does not strictly depend on #24245 but adding this dependency
      makes it easier to deal with a chain of dependencies of tickets building
      on this one).
      
      URL: https://trac.sagemath.org/24252
      Reported by: jdemeyer
      Ticket author(s): Jeroen Demeyer
      Reviewer(s): Travis Scrimshaw
      9764031f
    • Release Manager's avatar
      Trac #24251: adapt random interval-posets to python3 · 889f394c
      Release Manager authored
      because comparison of letters and numbers no longer works
      
      URL: https://trac.sagemath.org/24251
      Reported by: chapoton
      Ticket author(s): Frédéric Chapoton
      Reviewer(s): Darij Grinberg
      889f394c
    • Release Manager's avatar
      Trac #24250: py3: do not use mathjax from inside sagenb · 91b2e224
      Release Manager authored
      currently, there is
      {{{
      /home/chapoton/sage3/src/doc/common/conf.py in <module>()
          221
          222     from pkg_resources import Requirement, working_set
      --> 223     sagenb_path =
      working_set.find(Requirement.parse('sagenb')).location
          224     mathjax_relative = os.path.join('sagenb','data','mathjax')
          225
      AttributeError: 'NoneType' object has no attribute 'location'
      }}}
      This error happens in a python3-built-sage, where sagenb is not
      installed.
      
      URL: https://trac.sagemath.org/24250
      Reported by: chapoton
      Ticket author(s): Frédéric Chapoton
      Reviewer(s): John Palmieri
      91b2e224
    • Release Manager's avatar
      Trac #24249: py3: minor care for range · 6496ef1f
      Release Manager authored
      part of #16081
      
      URL: https://trac.sagemath.org/24249
      Reported by: chapoton
      Ticket author(s): Frédéric Chapoton
      Reviewer(s): Salvatore Stella
      6496ef1f
    • Release Manager's avatar
      Trac #24246: Add a Cython compile time constant for PY_MAJOR_VERSION · 146e5ebd
      Release Manager authored
      As discussed in #24222.
      
      We already have `PY_VERSION_HEX` which can be useful for more fine-
      grained version comparisons, but `PY_MAJOR_VERSION` is easier to use and
      read in particular for general checks of Python 2 vs. Python >= 3.
      
      URL: https://trac.sagemath.org/24246
      Reported by: embray
      Ticket author(s): Erik Bray
      Reviewer(s): Jeroen Demeyer
      146e5ebd
    • Release Manager's avatar
      Trac #24150: Factory function for famous lattices · 88f2265b
      Release Manager authored
      Write a method for the `IntegralLattice` class for generating the root
      lattices A,,n,,, D,,n,,, E,,n,,, Euclidian lattice, U with standard
      basis.
      
      Example:
      {{{
      IntegralLattice(["A",3])
      IntegralLattice("U")
      IntegralLattice(4)
      }}}
      
      URL: https://trac.sagemath.org/24150
      Reported by: pmenegat
      Ticket author(s): Paolo Menegatti
      Reviewer(s): Simon Brandhorst, Travis Scrimshaw, Paolo Menegatti
      88f2265b
    • Release Manager's avatar
      Trac #22801: SymPy as optional symbolic method for manifolds · e2e850f9
      Release Manager authored
      The symbolic method used for manifolds and differentiable manifolds is
      "symbolic", the default in SageMath.
      In this ticket we introduce the use of SymPy as an option when the Chart
      in the manifold is created.
      
      At this point there is a dependence on Sympy ticket:
      "sympy to sage conversion : Abstract function."
      https://github.com/sympy/sympy/pull/12826
      
      URL: https://trac.sagemath.org/22801
      Reported by: mmancini
      Ticket author(s): Marco Mancini
      Reviewer(s): Eric Gourgoulhon, Ralf Stephan, Richard Lozes
      e2e850f9
    • Release Manager's avatar
      Trac #22322: allow sympy algorithm in solve · 3a516c1f
      Release Manager authored
      What it says.  See e.g. [https://ask.sagemath.org/question/36469
      /understanding-solve/ this post] for why.
      
      URL: https://trac.sagemath.org/22322
      Reported by: kcrisman
      Ticket author(s): Ralf Stephan
      Reviewer(s): Emmanuel Charpentier
      3a516c1f