diff --git a/sagemath-cbc.patch b/sagemath-cbc.patch deleted file mode 100644 index bc13292..0000000 --- a/sagemath-cbc.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -up src/sage/numerical/backends/coin_backend.pyx.orig src/sage/numerical/backends/coin_backend.pyx ---- src/sage/numerical/backends/coin_backend.pyx.orig 2018-12-22 16:37:09.000000000 -0700 -+++ src/sage/numerical/backends/coin_backend.pyx 2019-01-16 09:45:52.386577640 -0700 -@@ -780,8 +780,8 @@ cdef class CoinBackend(GenericBackend): - model.setLogLevel(old_logLevel) - - # multithreading -- import multiprocessing -- model.setNumberThreads(ncpus()) -+ #import multiprocessing -+ #model.setNumberThreads(ncpus()) - - model.branchAndBound() - diff --git a/sagemath-ecl.patch b/sagemath-ecl.patch new file mode 100644 index 0000000..3974c12 --- /dev/null +++ b/sagemath-ecl.patch @@ -0,0 +1,88 @@ +diff -up src/sage/libs/ecl.pxd.orig src/sage/libs/ecl.pxd +--- src/sage/libs/ecl.pxd.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/ecl.pxd 2020-07-07 09:05:47.078665548 -0600 +@@ -39,7 +39,6 @@ cdef extern from "ecl/ecl.h": + ECL_OPT_TRAP_SIGINT, + ECL_OPT_TRAP_SIGILL, + ECL_OPT_TRAP_SIGBUS, +- ECL_OPT_TRAP_SIGCHLD, + ECL_OPT_TRAP_SIGPIPE, + ECL_OPT_TRAP_INTERRUPT_SIGNAL, + ECL_OPT_SIGNAL_HANDLING_THREAD, +@@ -53,7 +52,6 @@ cdef extern from "ecl/ecl.h": + ECL_OPT_LISP_STACK_SAFETY_AREA, + ECL_OPT_C_STACK_SIZE, + ECL_OPT_C_STACK_SAFETY_AREA, +- ECL_OPT_SIGALTSTACK_SIZE, + ECL_OPT_HEAP_SIZE, + ECL_OPT_HEAP_SAFETY_AREA, + ECL_OPT_THREAD_INTERRUPT_SIGNAL, +diff -up src/sage/libs/ecl.pyx.orig src/sage/libs/ecl.pyx +--- src/sage/libs/ecl.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/ecl.pyx 2020-07-07 09:07:43.622621879 -0600 +@@ -15,7 +15,7 @@ Library interface to Embeddable Common L + #adapted to work with pure Python types. + + from libc.stdlib cimport abort +-from libc.signal cimport SIGINT, SIGBUS, SIGSEGV, SIGCHLD ++from libc.signal cimport SIGINT, SIGBUS, SIGSEGV + from libc.signal cimport raise_ as signal_raise + from posix.signal cimport sigaction, sigaction_t + cimport cysignals.signals +@@ -139,7 +139,6 @@ def test_ecl_options(): + ECL_OPT_TRAP_SIGINT = 1 + ECL_OPT_TRAP_SIGILL = 1 + ECL_OPT_TRAP_SIGBUS = 1 +- ECL_OPT_TRAP_SIGCHLD = 0 + ECL_OPT_TRAP_SIGPIPE = 1 + ECL_OPT_TRAP_INTERRUPT_SIGNAL = 1 + ECL_OPT_SIGNAL_HANDLING_THREAD = 0 +@@ -153,7 +152,6 @@ def test_ecl_options(): + ECL_OPT_LISP_STACK_SAFETY_AREA = ... + ECL_OPT_C_STACK_SIZE = ... + ECL_OPT_C_STACK_SAFETY_AREA = ... +- ECL_OPT_SIGALTSTACK_SIZE = 1 + ECL_OPT_HEAP_SIZE = ... + ECL_OPT_HEAP_SAFETY_AREA = ... + ECL_OPT_THREAD_INTERRUPT_SIGNAL = ... +@@ -171,8 +169,6 @@ def test_ecl_options(): + ecl_get_option(ECL_OPT_TRAP_SIGILL))) + print('ECL_OPT_TRAP_SIGBUS = {0}'.format( + ecl_get_option(ECL_OPT_TRAP_SIGBUS))) +- print('ECL_OPT_TRAP_SIGCHLD = {0}'.format( +- ecl_get_option(ECL_OPT_TRAP_SIGCHLD))) + print('ECL_OPT_TRAP_SIGPIPE = {0}'.format( + ecl_get_option(ECL_OPT_TRAP_SIGPIPE))) + print('ECL_OPT_TRAP_INTERRUPT_SIGNAL = {0}'.format( +@@ -199,8 +195,6 @@ def test_ecl_options(): + ecl_get_option(ECL_OPT_C_STACK_SIZE))) + print('ECL_OPT_C_STACK_SAFETY_AREA = {0}'.format( + ecl_get_option(ECL_OPT_C_STACK_SAFETY_AREA))) +- print('ECL_OPT_SIGALTSTACK_SIZE = {0}'.format( +- ecl_get_option(ECL_OPT_SIGALTSTACK_SIZE))) + print('ECL_OPT_HEAP_SIZE = {0}'.format( + ecl_get_option(ECL_OPT_HEAP_SIZE))) + print('ECL_OPT_HEAP_SAFETY_AREA = {0}'.format( +@@ -243,9 +237,6 @@ def init_ecl(): + if ecl_has_booted: + raise RuntimeError("ECL is already initialized") + +- # we need it to stop handling SIGCHLD +- ecl_set_option(ECL_OPT_TRAP_SIGCHLD, 0); +- + #we keep our own GMP memory functions. ECL should not claim them + ecl_set_option(ECL_OPT_SET_GMP_MEMORY_FUNCTIONS,0); + +@@ -266,12 +257,6 @@ def init_ecl(): + sigaction(SIGBUS, NULL, &ecl_sigbus_handler) + sigaction(SIGSEGV, NULL, &ecl_sigsegv_handler) + +- #verify that no SIGCHLD handler was installed +- cdef sigaction_t sig_test +- sigaction(SIGCHLD, NULL, &sig_test) +- assert sage_action[SIGCHLD].sa_handler == NULL # Sage does not set SIGCHLD handler +- assert sig_test.sa_handler == NULL # And ECL bootup did not set one +- + #and put the Sage signal handlers back + for i in range(1,32): + sigaction(i, &sage_action[i], NULL) diff --git a/sagemath-env.patch b/sagemath-env.patch index 1c8e800..f53a30c 100644 --- a/sagemath-env.patch +++ b/sagemath-env.patch @@ -1,6 +1,7 @@ ---- src/sage/env.py.orig 2020-03-13 09:03:58.705213254 -0600 -+++ src/sage/env.py 2020-03-13 09:06:42.148502755 -0600 -@@ -151,11 +151,11 @@ var('SAGE_DATE', version.date) +diff -up src/sage/env.py.orig src/sage/env.py +--- src/sage/env.py.orig 2020-07-06 16:59:20.179973650 -0600 ++++ src/sage/env.py 2020-07-06 17:03:47.991916151 -0600 +@@ -158,14 +158,14 @@ var('SAGE_DATE', version.date) var('SAGE_VERSION_BANNER', version.banner) # bunch of sage directories and files @@ -16,17 +17,12 @@ +var('SAGE_DOC', join('/usr', 'share', 'doc', 'sagemath')) var('SAGE_SPKG_INST', join(SAGE_LOCAL, 'var', 'lib', 'sage', 'installed')) var('SAGE_LIB', os.path.dirname(os.path.dirname(sage.__file__))) +-var('SAGE_EXTCODE', join(SAGE_LIB, 'sage', 'ext_data')) ++var('SAGE_EXTCODE', join('/usr', 'share', 'sagemath', 'etc')) -@@ -169,7 +169,7 @@ var('DOT_SAGE', join(os.envir - var('SAGE_STARTUP_FILE', join(DOT_SAGE, 'init.sage')) - - # installation directories for various packages --var('SAGE_EXTCODE', join(SAGE_SHARE, 'sage', 'ext')) -+var('SAGE_EXTCODE', join('/usr', 'share', 'sagemath', 'etc')) - var('CONWAY_POLYNOMIALS_DATA_DIR', join(SAGE_SHARE, 'conway_polynomials')) - var('GRAPHS_DATA_DIR', join(SAGE_SHARE, 'graphs')) - var('ELLCURVE_DATA_DIR', join(SAGE_SHARE, 'ellcurves')) -@@ -179,13 +179,13 @@ var('THEBE_DIR', joi + var('SAGE_ROOT', '@@SAGE_ROOT@@') + var('SAGE_SRC', join(SAGE_ROOT, 'src'), SAGE_LIB) +@@ -186,13 +186,13 @@ var('THEBE_DIR', joi var('COMBINATORIAL_DESIGN_DATA_DIR', join(SAGE_SHARE, 'combinatorial_designs')) var('CREMONA_MINI_DATA_DIR', join(SAGE_SHARE, 'cremona')) var('CREMONA_LARGE_DATA_DIR', join(SAGE_SHARE, 'cremona')) @@ -42,6 +38,6 @@ var('SINGULARPATH', join(SAGE_SHARE, 'singular')) -var('PPLPY_DOCS', join(SAGE_SHARE, 'doc', 'pplpy')) +var('PPLPY_DOCS', join('/usr', 'share', 'doc', 'python3-pplpy')) + var('MAXIMA', 'maxima') var('MAXIMA_FAS') - - # misc + var('SAGE_NAUTY_BINS_PREFIX', '') diff --git a/sagemath-escape.patch b/sagemath-escape.patch index 8c73a7a..3982fe5 100644 --- a/sagemath-escape.patch +++ b/sagemath-escape.patch @@ -89,9 +89,9 @@ diff -up build/pkgs/ipython/src/IPython/utils/_tokenize_py3.py.orig build/pkgs/i import token __all__ = token.__all__ + ["COMMENT", "tokenize", "detect_encoding", diff -up src/sage/algebras/letterplace/free_algebra_element_letterplace.pyx.orig src/sage/algebras/letterplace/free_algebra_element_letterplace.pyx ---- src/sage/algebras/letterplace/free_algebra_element_letterplace.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/algebras/letterplace/free_algebra_element_letterplace.pyx 2020-02-27 12:06:28.748195247 -0700 -@@ -228,7 +228,7 @@ cdef class FreeAlgebraElement_letterplac +--- src/sage/algebras/letterplace/free_algebra_element_letterplace.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/algebras/letterplace/free_algebra_element_letterplace.pyx 2020-07-06 16:08:09.909517122 -0600 +@@ -229,7 +229,7 @@ cdef class FreeAlgebraElement_letterplac return '0' def _latex_(self): @@ -101,8 +101,8 @@ diff -up src/sage/algebras/letterplace/free_algebra_element_letterplace.pyx.orig sage: K. = GF(25) diff -up src/sage/algebras/letterplace/free_algebra_letterplace.pyx.orig src/sage/algebras/letterplace/free_algebra_letterplace.pyx ---- src/sage/algebras/letterplace/free_algebra_letterplace.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/algebras/letterplace/free_algebra_letterplace.pyx 2020-02-27 12:07:22.658260237 -0700 +--- src/sage/algebras/letterplace/free_algebra_letterplace.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/algebras/letterplace/free_algebra_letterplace.pyx 2020-07-06 16:08:09.911517122 -0600 @@ -605,7 +605,7 @@ cdef class FreeAlgebra_letterplace(Algeb # Auxiliar methods @@ -113,8 +113,8 @@ diff -up src/sage/algebras/letterplace/free_algebra_letterplace.pyx.orig src/sag EXAMPLES:: diff -up src/sage/algebras/lie_algebras/lie_algebra_element.pyx.orig src/sage/algebras/lie_algebras/lie_algebra_element.pyx ---- src/sage/algebras/lie_algebras/lie_algebra_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/algebras/lie_algebras/lie_algebra_element.pyx 2020-02-27 12:05:08.435588192 -0700 +--- src/sage/algebras/lie_algebras/lie_algebra_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/algebras/lie_algebras/lie_algebra_element.pyx 2020-07-06 16:08:09.912517122 -0600 @@ -1014,7 +1014,7 @@ cdef class UntwistedAffineLieAlgebraElem + (E_{-\alpha_{1}}) \otimes t^{1} + 3 c + -2 d """ @@ -125,8 +125,8 @@ diff -up src/sage/algebras/lie_algebras/lie_algebra_element.pyx.orig src/sage/al if self._c_coeff != 0: if ret: diff -up src/sage/arith/multi_modular.pyx.orig src/sage/arith/multi_modular.pyx ---- src/sage/arith/multi_modular.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/arith/multi_modular.pyx 2020-02-27 13:55:34.962395106 -0700 +--- src/sage/arith/multi_modular.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/arith/multi_modular.pyx 2020-07-06 16:08:09.914517122 -0600 @@ -678,7 +678,7 @@ cdef class MultiModularBasis_base(object return z @@ -137,8 +137,8 @@ diff -up src/sage/arith/multi_modular.pyx.orig src/sage/arith/multi_modular.pyx `\prod_j=1^{i-1} m_j^{-1} (mod m_i)` where `m_i` are the prime moduli. diff -up src/sage/calculus/transforms/dwt.pyx.orig src/sage/calculus/transforms/dwt.pyx ---- src/sage/calculus/transforms/dwt.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/calculus/transforms/dwt.pyx 2020-02-27 11:58:48.129134391 -0700 +--- src/sage/calculus/transforms/dwt.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/calculus/transforms/dwt.pyx 2020-07-06 16:08:09.915517122 -0600 @@ -24,7 +24,7 @@ AUTHOR: import sage.plot.all @@ -149,8 +149,8 @@ diff -up src/sage/calculus/transforms/dwt.pyx.orig src/sage/calculus/transforms/ can perform a discrete wavelet transform. diff -up src/sage/coding/binary_code.pyx.orig src/sage/coding/binary_code.pyx ---- src/sage/coding/binary_code.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/coding/binary_code.pyx 2020-02-27 09:13:10.902461428 -0700 +--- src/sage/coding/binary_code.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/coding/binary_code.pyx 2020-07-06 16:08:09.917517122 -0600 @@ -517,7 +517,7 @@ cdef codeword permute_word_by_wp(WordPer return image @@ -161,8 +161,8 @@ diff -up src/sage/coding/binary_code.pyx.orig src/sage/coding/binary_code.pyx function. diff -up src/sage/coding/codecan/codecan.pyx.orig src/sage/coding/codecan/codecan.pyx ---- src/sage/coding/codecan/codecan.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/coding/codecan/codecan.pyx 2020-02-27 09:11:00.997860689 -0700 +--- src/sage/coding/codecan/codecan.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/coding/codecan/codecan.pyx 2020-07-06 16:08:09.918517122 -0600 @@ -369,7 +369,7 @@ cdef class InnerGroup: return self.transporter @@ -191,8 +191,8 @@ diff -up src/sage/coding/codecan/codecan.pyx.orig src/sage/coding/codecan/codeca with the group action, i.e. if we start with some other code `(g,\pi)C` the result should be `(g,\pi)W`. diff -up src/sage/combinat/crystals/letters.pyx.orig src/sage/combinat/crystals/letters.pyx ---- src/sage/combinat/crystals/letters.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/combinat/crystals/letters.pyx 2020-02-27 13:38:25.079626805 -0700 +--- src/sage/combinat/crystals/letters.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/combinat/crystals/letters.pyx 2020-07-06 16:08:09.920517121 -0600 @@ -510,7 +510,7 @@ cdef class Letter(Element): return False @@ -221,8 +221,8 @@ diff -up src/sage/combinat/crystals/letters.pyx.orig src/sage/combinat/crystals/ This implements the `\mathfrak{gl}(m|n)` crystal of diff -up src/sage/combinat/crystals/tensor_product_element.pyx.orig src/sage/combinat/crystals/tensor_product_element.pyx ---- src/sage/combinat/crystals/tensor_product_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/combinat/crystals/tensor_product_element.pyx 2020-02-27 13:42:53.490900825 -0700 +--- src/sage/combinat/crystals/tensor_product_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/combinat/crystals/tensor_product_element.pyx 2020-07-06 16:08:09.922517121 -0600 @@ -145,8 +145,8 @@ cdef class TensorProductOfCrystalsElemen """ from sage.misc.latex import latex @@ -244,8 +244,8 @@ diff -up src/sage/combinat/crystals/tensor_product_element.pyx.orig src/sage/com EXAMPLES:: diff -up src/sage/combinat/integer_lists/base.pyx.orig src/sage/combinat/integer_lists/base.pyx ---- src/sage/combinat/integer_lists/base.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/combinat/integer_lists/base.pyx 2020-02-27 10:03:04.700544965 -0700 +--- src/sage/combinat/integer_lists/base.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/combinat/integer_lists/base.pyx 2020-07-06 16:08:09.923517121 -0600 @@ -269,7 +269,7 @@ cdef class IntegerListsBackend(object): @@ -265,8 +265,8 @@ diff -up src/sage/combinat/integer_lists/base.pyx.orig src/sage/combinat/integer OUTPUT: a nonnegative integer or `\infty` diff -up src/sage/combinat/root_system/reflection_group_c.pyx.orig src/sage/combinat/root_system/reflection_group_c.pyx ---- src/sage/combinat/root_system/reflection_group_c.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/combinat/root_system/reflection_group_c.pyx 2020-02-27 13:46:22.841188756 -0700 +--- src/sage/combinat/root_system/reflection_group_c.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/combinat/root_system/reflection_group_c.pyx 2020-07-06 16:08:09.924517121 -0600 @@ -459,7 +459,7 @@ cdef int first_descent_in_parabolic(Perm cpdef PermutationGroupElement reduce_in_coset(PermutationGroupElement w, tuple S, @@ -277,8 +277,8 @@ diff -up src/sage/combinat/root_system/reflection_group_c.pyx.orig src/sage/comb subgroup indexed by ``parabolic`` (with indices `\{0, \ldots, n\}`). diff -up src/sage/combinat/root_system/reflection_group_element.pyx.orig src/sage/combinat/root_system/reflection_group_element.pyx ---- src/sage/combinat/root_system/reflection_group_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/combinat/root_system/reflection_group_element.pyx 2020-02-27 10:05:47.567686763 -0700 +--- src/sage/combinat/root_system/reflection_group_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/combinat/root_system/reflection_group_element.pyx 2020-07-06 16:08:09.926517121 -0600 @@ -1109,7 +1109,7 @@ def _gap_factorization(w, gens): fac = gap3('MinimalWord(W,%s)'%str(w)).sage() return [i-1 for i in fac] @@ -289,8 +289,8 @@ diff -up src/sage/combinat/root_system/reflection_group_element.pyx.orig src/sag # given a permutation group G find some expression of minimal length in the # generators of G and their inverses of the element w (an inverse is diff -up src/sage/crypto/boolean_function.pyx.orig src/sage/crypto/boolean_function.pyx ---- src/sage/crypto/boolean_function.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/crypto/boolean_function.pyx 2020-02-27 09:07:31.088625609 -0700 +--- src/sage/crypto/boolean_function.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/crypto/boolean_function.pyx 2020-07-06 16:08:09.927517121 -0600 @@ -1108,7 +1108,7 @@ cdef class BooleanFunction(SageObject): return (len(W) == 1) or (len(W) == 2 and 0 in W) @@ -328,8 +328,8 @@ diff -up src/sage/crypto/boolean_function.pyx.orig src/sage/crypto/boolean_funct INPUT: diff -up src/sage/functions/prime_pi.pyx.orig src/sage/functions/prime_pi.pyx ---- src/sage/functions/prime_pi.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/functions/prime_pi.pyx 2020-02-27 13:57:13.458578944 -0700 +--- src/sage/functions/prime_pi.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/functions/prime_pi.pyx 2020-07-06 16:08:09.928517121 -0600 @@ -1,4 +1,4 @@ -""" +r""" @@ -337,8 +337,8 @@ diff -up src/sage/functions/prime_pi.pyx.orig src/sage/functions/prime_pi.pyx AUTHORS: diff -up src/sage/geometry/integral_points.pyx.orig src/sage/geometry/integral_points.pyx ---- src/sage/geometry/integral_points.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/geometry/integral_points.pyx 2020-02-27 14:58:09.110842685 -0700 +--- src/sage/geometry/integral_points.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/geometry/integral_points.pyx 2020-07-06 16:08:09.930517121 -0600 @@ -726,7 +726,7 @@ cdef loop_over_rectangular_box_points_sa @@ -358,8 +358,8 @@ diff -up src/sage/geometry/integral_points.pyx.orig src/sage/geometry/integral_p into machine ints. diff -up src/sage/graphs/asteroidal_triples.pyx.orig src/sage/graphs/asteroidal_triples.pyx ---- src/sage/graphs/asteroidal_triples.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/graphs/asteroidal_triples.pyx 2020-02-27 09:53:16.680674877 -0700 +--- src/sage/graphs/asteroidal_triples.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/graphs/asteroidal_triples.pyx 2020-07-06 16:08:09.931517121 -0600 @@ -185,7 +185,7 @@ cdef list is_asteroidal_triple_free_C(ui uint32_t** connected_structure, uint32_t* waiting_list, @@ -370,8 +370,8 @@ diff -up src/sage/graphs/asteroidal_triples.pyx.orig src/sage/graphs/asteroidal_ - ``n`` -- integer; number of points in the graph diff -up src/sage/graphs/graph_decompositions/vertex_separation.pyx.orig src/sage/graphs/graph_decompositions/vertex_separation.pyx ---- src/sage/graphs/graph_decompositions/vertex_separation.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/graphs/graph_decompositions/vertex_separation.pyx 2020-02-27 09:45:33.735327813 -0700 +--- src/sage/graphs/graph_decompositions/vertex_separation.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/graphs/graph_decompositions/vertex_separation.pyx 2020-07-06 16:08:09.932517121 -0600 @@ -472,7 +472,7 @@ def linear_ordering_to_path_decompositio def pathwidth(self, k=None, certificate=False, algorithm="BAB", verbose=False, @@ -382,8 +382,8 @@ diff -up src/sage/graphs/graph_decompositions/vertex_separation.pyx.orig src/sag INPUT: diff -up src/sage/graphs/hyperbolicity.pyx.orig src/sage/graphs/hyperbolicity.pyx ---- src/sage/graphs/hyperbolicity.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/graphs/hyperbolicity.pyx 2020-02-27 09:40:41.823526940 -0700 +--- src/sage/graphs/hyperbolicity.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/graphs/hyperbolicity.pyx 2020-07-06 16:08:09.934517121 -0600 @@ -585,7 +585,7 @@ cdef tuple hyperbolicity_BCCM(int N, float approximation_factor, float additive_gap, @@ -403,8 +403,8 @@ diff -up src/sage/graphs/hyperbolicity.pyx.orig src/sage/graphs/hyperbolicity.py This method implements the exact and the approximate algorithms proposed in diff -up src/sage/graphs/matchpoly.pyx.orig src/sage/graphs/matchpoly.pyx ---- src/sage/graphs/matchpoly.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/graphs/matchpoly.pyx 2020-02-27 12:33:20.595046387 -0700 +--- src/sage/graphs/matchpoly.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/graphs/matchpoly.pyx 2020-07-06 16:08:09.934517121 -0600 @@ -50,7 +50,7 @@ x = polygen(ZZ, 'x') @@ -415,9 +415,9 @@ diff -up src/sage/graphs/matchpoly.pyx.orig src/sage/graphs/matchpoly.pyx If `p(G, k)` denotes the number of `k`-matchings (matchings with `k` edges) diff -up src/sage/graphs/strongly_regular_db.pyx.orig src/sage/graphs/strongly_regular_db.pyx ---- src/sage/graphs/strongly_regular_db.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/graphs/strongly_regular_db.pyx 2020-02-27 09:51:17.877812212 -0700 -@@ -2391,7 +2391,7 @@ def strongly_regular_from_two_intersecti +--- src/sage/graphs/strongly_regular_db.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/graphs/strongly_regular_db.pyx 2020-07-06 16:08:09.937517121 -0600 +@@ -2399,7 +2399,7 @@ def strongly_regular_from_two_intersecti A set of points in the projective geometry `PG(k,q)` is said to be a 2-intersection set if it intersects every hyperplane in either `h_1` or @@ -427,8 +427,8 @@ diff -up src/sage/graphs/strongly_regular_db.pyx.orig src/sage/graphs/strongly_r From a 2-intersection set `S` can be defined a strongly-regular graph in the following way: diff -up src/sage/groups/group.pyx.orig src/sage/groups/group.pyx ---- src/sage/groups/group.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/groups/group.pyx 2020-02-27 11:36:32.459309482 -0700 +--- src/sage/groups/group.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/groups/group.pyx 2020-07-06 16:08:09.938517121 -0600 @@ -50,7 +50,7 @@ def is_Group(x): @@ -448,8 +448,8 @@ diff -up src/sage/groups/group.pyx.orig src/sage/groups/group.pyx +). diff -up src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx.orig src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx ---- src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx 2020-02-27 08:42:25.623470890 -0700 +--- src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx 2020-07-06 16:08:09.939517121 -0600 @@ -913,7 +913,7 @@ cdef class PartitionRefinement_generic: "\\begin{tikzpicture}\n" + "\\tikzset{level distance=3cm, edge from parent/.style=" + @@ -460,8 +460,8 @@ diff -up src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx.orig src/sag self._latex_act_node() diff -up src/sage/groups/perm_gps/partn_ref/data_structures.pyx.orig src/sage/groups/perm_gps/partn_ref/data_structures.pyx ---- src/sage/groups/perm_gps/partn_ref/data_structures.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/groups/perm_gps/partn_ref/data_structures.pyx 2020-02-27 11:31:41.434392986 -0700 +--- src/sage/groups/perm_gps/partn_ref/data_structures.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/groups/perm_gps/partn_ref/data_structures.pyx 2020-07-06 16:08:09.941517120 -0600 @@ -828,11 +828,11 @@ cdef SC_print_level(StabilizerChain *SC, print('| labels {}'.format([SC.labels [level][i] for i from 0 <= i < n])) print('|') @@ -477,8 +477,8 @@ diff -up src/sage/groups/perm_gps/partn_ref/data_structures.pyx.orig src/sage/gr cdef StabilizerChain *SC_new_base(StabilizerChain *SC, int *base, int base_len): """ diff -up src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx.orig src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx ---- src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx 2020-02-27 11:30:07.172039526 -0700 +--- src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx 2020-07-06 16:08:09.943517120 -0600 @@ -105,7 +105,7 @@ cdef class LinearBinaryCodeStruct(Binary self.ith_word = &ith_word_linear @@ -516,10 +516,10 @@ diff -up src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx.orig src/sage/ Return return -1 if gamma_1(S1) < gamma_2(S2), 0 if gamma_1(S1) == gamma_2(S2), diff -up src/sage/groups/perm_gps/permgroup_element.pyx.orig src/sage/groups/perm_gps/permgroup_element.pyx ---- src/sage/groups/perm_gps/permgroup_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/groups/perm_gps/permgroup_element.pyx 2020-02-27 11:35:14.696667810 -0700 -@@ -1064,7 +1064,7 @@ cdef class PermutationGroupElement(Multi - return y +--- src/sage/groups/perm_gps/permgroup_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/groups/perm_gps/permgroup_element.pyx 2020-07-06 16:08:09.944517120 -0600 +@@ -1176,7 +1176,7 @@ cdef class PermutationGroupElement(Multi + return result cpdef _act_on_(self, x, bint self_on_left): - """ @@ -527,7 +527,7 @@ diff -up src/sage/groups/perm_gps/permgroup_element.pyx.orig src/sage/groups/per Return the right action of self on left. For example, if f=left is a polynomial, then this function returns -@@ -1498,7 +1498,7 @@ cdef class PermutationGroupElement(Multi +@@ -1610,7 +1610,7 @@ cdef class PermutationGroupElement(Multi return ~self def sign(self): @@ -536,7 +536,7 @@ diff -up src/sage/groups/perm_gps/permgroup_element.pyx.orig src/sage/groups/per Returns the sign of self, which is `(-1)^{s}`, where `s` is the number of swaps. -@@ -1735,7 +1735,7 @@ cdef class PermutationGroupElement(Multi +@@ -1847,7 +1847,7 @@ cdef class PermutationGroupElement(Multi return _Partitions(cycle_type) def has_descent(self, i, side = "right", positive = False): @@ -546,8 +546,8 @@ diff -up src/sage/groups/perm_gps/permgroup_element.pyx.orig src/sage/groups/per - ``i``: an element of the index set diff -up src/sage/groups/semimonomial_transformations/semimonomial_transformation.pyx.orig src/sage/groups/semimonomial_transformations/semimonomial_transformation.pyx ---- src/sage/groups/semimonomial_transformations/semimonomial_transformation.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/groups/semimonomial_transformations/semimonomial_transformation.pyx 2020-02-27 08:47:01.774920139 -0700 +--- src/sage/groups/semimonomial_transformations/semimonomial_transformation.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/groups/semimonomial_transformations/semimonomial_transformation.pyx 2020-07-06 16:08:09.945517120 -0600 @@ -279,7 +279,7 @@ cdef class SemimonomialTransformation(Mu return (self.parent(), (0, self.v, self.perm, self.get_autom())) @@ -576,8 +576,8 @@ diff -up src/sage/groups/semimonomial_transformations/semimonomial_transformatio correspond to the component `{R^{\times}}^n`. diff -up src/sage/libs/eclib/mwrank.pyx.orig src/sage/libs/eclib/mwrank.pyx ---- src/sage/libs/eclib/mwrank.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/eclib/mwrank.pyx 2020-02-26 13:47:58.684086935 -0700 +--- src/sage/libs/eclib/mwrank.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/eclib/mwrank.pyx 2020-07-06 16:08:09.946517120 -0600 @@ -333,7 +333,7 @@ cdef class _Curvedata: # cython class return string_sigoff(Curvedata_repr(self.x))[:-1] @@ -633,8 +633,8 @@ diff -up src/sage/libs/eclib/mwrank.pyx.orig src/sage/libs/eclib/mwrank.pyx If the success and certain flags are 1, this will be a diff -up src/sage/libs/eclib/newforms.pyx.orig src/sage/libs/eclib/newforms.pyx ---- src/sage/libs/eclib/newforms.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/eclib/newforms.pyx 2020-02-27 11:17:03.555393145 -0700 +--- src/sage/libs/eclib/newforms.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/eclib/newforms.pyx 2020-07-06 16:08:09.946517120 -0600 @@ -22,7 +22,7 @@ from sage.modular.all import Cusp @@ -645,8 +645,8 @@ diff -up src/sage/libs/eclib/newforms.pyx.orig src/sage/libs/eclib/newforms.pyx EXAMPLES:: diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx ---- src/sage/libs/fes.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/fes.pyx 2020-02-27 15:31:37.911298615 -0700 +--- src/sage/libs/fes.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/fes.pyx 2020-07-06 16:08:09.947517120 -0600 @@ -288,7 +288,7 @@ def find_coordinate_change(As, max_tries @@ -657,8 +657,8 @@ diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx INPUT: diff -up src/sage/libs/linkages/padics/API.pxi.orig src/sage/libs/linkages/padics/API.pxi ---- src/sage/libs/linkages/padics/API.pxi.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/linkages/padics/API.pxi 2020-02-27 15:42:51.990640350 -0700 +--- src/sage/libs/linkages/padics/API.pxi.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/linkages/padics/API.pxi 2020-07-06 16:08:09.947517120 -0600 @@ -469,7 +469,7 @@ cdef inline long chash(celement a, long # the expansion_mode enum is defined in padic_template_element_header.pxi @@ -687,8 +687,8 @@ diff -up src/sage/libs/linkages/padics/API.pxi.orig src/sage/libs/linkages/padic INPUT: diff -up src/sage/libs/linkages/padics/fmpz_poly_unram.pxi.orig src/sage/libs/linkages/padics/fmpz_poly_unram.pxi ---- src/sage/libs/linkages/padics/fmpz_poly_unram.pxi.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/linkages/padics/fmpz_poly_unram.pxi 2020-02-27 15:42:11.511401421 -0700 +--- src/sage/libs/linkages/padics/fmpz_poly_unram.pxi.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/linkages/padics/fmpz_poly_unram.pxi 2020-07-06 16:08:09.948517120 -0600 @@ -659,7 +659,7 @@ cdef list ccoefficients(celement x, long return ans @@ -708,8 +708,8 @@ diff -up src/sage/libs/linkages/padics/fmpz_poly_unram.pxi.orig src/sage/libs/li the power basis `1, x, x^2, \ldots, x^{d-1}` for this extension field. Thus the *rows* of this matrix give the diff -up src/sage/libs/linkages/padics/mpz.pxi.orig src/sage/libs/linkages/padics/mpz.pxi ---- src/sage/libs/linkages/padics/mpz.pxi.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/linkages/padics/mpz.pxi 2020-02-27 15:43:41.974700571 -0700 +--- src/sage/libs/linkages/padics/mpz.pxi.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/linkages/padics/mpz.pxi 2020-07-06 16:08:09.948517120 -0600 @@ -567,7 +567,7 @@ cdef list ccoefficients(mpz_t x, long va return [ansq] @@ -720,8 +720,8 @@ diff -up src/sage/libs/linkages/padics/mpz.pxi.orig src/sage/libs/linkages/padic INPUT: diff -up src/sage/libs/linkages/padics/unram_shared.pxi.orig src/sage/libs/linkages/padics/unram_shared.pxi ---- src/sage/libs/linkages/padics/unram_shared.pxi.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/linkages/padics/unram_shared.pxi 2020-02-26 13:52:20.857135309 -0700 +--- src/sage/libs/linkages/padics/unram_shared.pxi.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/linkages/padics/unram_shared.pxi 2020-07-06 16:08:09.948517120 -0600 @@ -70,7 +70,7 @@ def frobenius_unram(self, arithmetic=Tru @cython.binding(True) @@ -741,8 +741,8 @@ diff -up src/sage/libs/linkages/padics/unram_shared.pxi.orig src/sage/libs/linka If ``base`` is given then ``base`` must be a subfield of the diff -up src/sage/libs/ntl/ntl_GF2E.pyx.orig src/sage/libs/ntl/ntl_GF2E.pyx ---- src/sage/libs/ntl/ntl_GF2E.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/ntl/ntl_GF2E.pyx 2020-02-27 15:36:28.211821169 -0700 +--- src/sage/libs/ntl/ntl_GF2E.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/ntl/ntl_GF2E.pyx 2020-07-06 16:08:09.949517120 -0600 @@ -66,7 +66,7 @@ def ntl_GF2E_random(ntl_GF2EContext_clas cdef class ntl_GF2E(object): @@ -762,8 +762,8 @@ diff -up src/sage/libs/ntl/ntl_GF2E.pyx.orig src/sage/libs/ntl/ntl_GF2E.pyx of this element. If a \class{FiniteField} k is provided it is constructed in this field if possible. A \class{FiniteField} diff -up src/sage/libs/ntl/ntl_GF2X.pyx.orig src/sage/libs/ntl/ntl_GF2X.pyx ---- src/sage/libs/ntl/ntl_GF2X.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/ntl/ntl_GF2X.pyx 2020-02-27 15:34:59.579465248 -0700 +--- src/sage/libs/ntl/ntl_GF2X.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/ntl/ntl_GF2X.pyx 2020-07-06 16:08:09.949517120 -0600 @@ -480,7 +480,7 @@ cdef class ntl_GF2X(object): return [self[i] for i in range(GF2X_deg(self.x)+1)] @@ -783,8 +783,8 @@ diff -up src/sage/libs/ntl/ntl_GF2X.pyx.orig src/sage/libs/ntl/ntl_GF2X.pyx It is the same as setting \code{ntl.GF2XHexOutput(True)} and diff -up src/sage/libs/ntl/ntl_mat_GF2E.pyx.orig src/sage/libs/ntl/ntl_mat_GF2E.pyx ---- src/sage/libs/ntl/ntl_mat_GF2E.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/ntl/ntl_mat_GF2E.pyx 2020-02-27 15:33:55.565652664 -0700 +--- src/sage/libs/ntl/ntl_mat_GF2E.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/ntl/ntl_mat_GF2E.pyx 2020-07-06 16:08:09.949517120 -0600 @@ -174,7 +174,7 @@ cdef class ntl_mat_GF2E(object): return unpickle_class_args, (ntl_mat_GF2E, (self.modulus_context(), self.x.NumRows(), self.x.NumCols(), self.list())) @@ -804,8 +804,8 @@ diff -up src/sage/libs/ntl/ntl_mat_GF2E.pyx.orig src/sage/libs/ntl/ntl_mat_GF2E. into row echelon form. If the optional argument \code{ncols} is supplied, stops when first ncols columns are in echelon diff -up src/sage/libs/ntl/ntl_mat_GF2.pyx.orig src/sage/libs/ntl/ntl_mat_GF2.pyx ---- src/sage/libs/ntl/ntl_mat_GF2.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/ntl/ntl_mat_GF2.pyx 2020-02-27 15:38:58.065038500 -0700 +--- src/sage/libs/ntl/ntl_mat_GF2.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/ntl/ntl_mat_GF2.pyx 2020-07-06 16:08:09.950517120 -0600 @@ -1,4 +1,4 @@ -""" +r""" @@ -831,8 +831,8 @@ diff -up src/sage/libs/ntl/ntl_mat_GF2.pyx.orig src/sage/libs/ntl/ntl_mat_GF2.py EXAMPLES:: diff -up src/sage/libs/ntl/ntl_mat_ZZ.pyx.orig src/sage/libs/ntl/ntl_mat_ZZ.pyx ---- src/sage/libs/ntl/ntl_mat_ZZ.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/ntl/ntl_mat_ZZ.pyx 2020-02-27 15:32:42.159053522 -0700 +--- src/sage/libs/ntl/ntl_mat_ZZ.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/ntl/ntl_mat_ZZ.pyx 2020-07-06 16:08:09.950517120 -0600 @@ -66,7 +66,7 @@ cdef class ntl_mat_ZZ(object): The \class{mat_ZZ} class implements arithmetic with matrices over $\Z$. """ @@ -852,8 +852,8 @@ diff -up src/sage/libs/ntl/ntl_mat_ZZ.pyx.orig src/sage/libs/ntl/ntl_mat_ZZ.pyx EXAMPLES:: diff -up src/sage/libs/ntl/ntl_ZZ_pEX.pyx.orig src/sage/libs/ntl/ntl_ZZ_pEX.pyx ---- src/sage/libs/ntl/ntl_ZZ_pEX.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/ntl/ntl_ZZ_pEX.pyx 2020-02-27 15:40:20.817482630 -0700 +--- src/sage/libs/ntl/ntl_ZZ_pEX.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/ntl/ntl_ZZ_pEX.pyx 2020-07-06 16:08:09.951517120 -0600 @@ -1,4 +1,4 @@ -""" +r""" @@ -861,8 +861,8 @@ diff -up src/sage/libs/ntl/ntl_ZZ_pEX.pyx.orig src/sage/libs/ntl/ntl_ZZ_pEX.pyx AUTHORS: diff -up src/sage/libs/ntl/ntl_ZZX.pyx.orig src/sage/libs/ntl/ntl_ZZX.pyx ---- src/sage/libs/ntl/ntl_ZZX.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/ntl/ntl_ZZX.pyx 2020-02-27 11:19:30.586809381 -0700 +--- src/sage/libs/ntl/ntl_ZZX.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/ntl/ntl_ZZX.pyx 2020-07-06 16:08:09.951517120 -0600 @@ -688,7 +688,7 @@ cdef class ntl_ZZX(object): return (self*other).quo_rem(g)[0] @@ -873,9 +873,9 @@ diff -up src/sage/libs/ntl/ntl_ZZX.pyx.orig src/sage/libs/ntl/ntl_ZZX.pyx t such that r = s*self + t*other. Otherwise return 0. This is \emph{not} the same as the \sage function on polynomials diff -up src/sage/libs/ppl.pyx.orig src/sage/libs/ppl.pyx ---- src/sage/libs/ppl.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/ppl.pyx 2020-02-27 11:18:35.716773608 -0700 -@@ -5756,7 +5756,7 @@ cdef _make_Constraint_from_richcmp(lhs_, +--- src/sage/libs/ppl.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/ppl.pyx 2020-07-06 16:08:09.952517120 -0600 +@@ -5765,7 +5765,7 @@ cdef _make_Constraint_from_richcmp(lhs_, #################################################### cdef class Constraint(object): @@ -885,8 +885,8 @@ diff -up src/sage/libs/ppl.pyx.orig src/sage/libs/ppl.pyx An object of the class ``Constraint`` is either: diff -up src/sage/libs/pynac/pynac.pyx.orig src/sage/libs/pynac/pynac.pyx ---- src/sage/libs/pynac/pynac.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/pynac/pynac.pyx 2020-02-26 13:51:20.673271444 -0700 +--- src/sage/libs/pynac/pynac.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/pynac/pynac.pyx 2020-07-06 16:08:09.953517120 -0600 @@ -385,7 +385,7 @@ cdef stdstring* string_from_pystr(py_str return new stdstring(s) @@ -933,8 +933,8 @@ diff -up src/sage/libs/pynac/pynac.pyx.orig src/sage/libs/pynac/pynac.pyx TESTS:: diff -up src/sage/libs/ratpoints.pyx.orig src/sage/libs/ratpoints.pyx ---- src/sage/libs/ratpoints.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/ratpoints.pyx 2020-02-27 15:25:26.499254622 -0700 +--- src/sage/libs/ratpoints.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/ratpoints.pyx 2020-07-06 16:08:09.953517120 -0600 @@ -42,7 +42,7 @@ cdef int process(long x, long z, mpz_t y def ratpoints(list coeffs, long H, verbose=False, long max=0, @@ -945,8 +945,8 @@ diff -up src/sage/libs/ratpoints.pyx.orig src/sage/libs/ratpoints.pyx `y^2 = a_n x^n + \cdots + a_1 x + a_0.` diff -up src/sage/libs/singular/polynomial.pyx.orig src/sage/libs/singular/polynomial.pyx ---- src/sage/libs/singular/polynomial.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/singular/polynomial.pyx 2020-02-27 15:18:01.665479916 -0700 +--- src/sage/libs/singular/polynomial.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/singular/polynomial.pyx 2020-07-06 16:08:09.954517120 -0600 @@ -22,7 +22,7 @@ cdef extern from *: # hack to get at cyt int unlikely(int) @@ -957,8 +957,8 @@ diff -up src/sage/libs/singular/polynomial.pyx.orig src/sage/libs/singular/polyn from sage.cpython.string cimport bytes_to_str, str_to_bytes diff -up src/sage/libs/symmetrica/sc.pxi.orig src/sage/libs/symmetrica/sc.pxi ---- src/sage/libs/symmetrica/sc.pxi.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/symmetrica/sc.pxi 2020-02-26 10:48:22.217706792 -0700 +--- src/sage/libs/symmetrica/sc.pxi.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/symmetrica/sc.pxi 2020-07-06 16:08:09.954517120 -0600 @@ -103,7 +103,7 @@ def charvalue_symmetrica(irred, cls, tab @@ -969,9 +969,9 @@ diff -up src/sage/libs/symmetrica/sc.pxi.orig src/sage/libs/symmetrica/sc.pxi MATRIX object, the charactertable of S_b \wr S_a, co becomes a VECTOR object of classorders and cl becomes a VECTOR object of diff -up src/sage/matrix/matrix0.pyx.orig src/sage/matrix/matrix0.pyx ---- src/sage/matrix/matrix0.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matrix/matrix0.pyx 2020-02-27 12:13:14.304142090 -0700 -@@ -2175,7 +2175,7 @@ cdef class Matrix(sage.structure.element +--- src/sage/matrix/matrix0.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/matrix/matrix0.pyx 2020-07-06 16:08:09.955517120 -0600 +@@ -2229,7 +2229,7 @@ cdef class Matrix(sage.structure.element # Functions ################################################### def act_on_polynomial(self, f): @@ -980,7 +980,7 @@ diff -up src/sage/matrix/matrix0.pyx.orig src/sage/matrix/matrix0.pyx Returns the polynomial f(self\*x). INPUT: -@@ -2241,7 +2241,7 @@ cdef class Matrix(sage.structure.element +@@ -2295,7 +2295,7 @@ cdef class Matrix(sage.structure.element # Arithmetic ################################################### def commutator(self, other): @@ -989,7 +989,7 @@ diff -up src/sage/matrix/matrix0.pyx.orig src/sage/matrix/matrix0.pyx Return the commutator self\*other - other\*self. EXAMPLES:: -@@ -4713,7 +4713,7 @@ cdef class Matrix(sage.structure.element +@@ -4767,7 +4767,7 @@ cdef class Matrix(sage.structure.element # Arithmetic ################################################### cdef _vector_times_matrix_(self, Vector v): @@ -999,9 +999,9 @@ diff -up src/sage/matrix/matrix0.pyx.orig src/sage/matrix/matrix0.pyx INPUT: diff -up src/sage/matrix/matrix2.pyx.orig src/sage/matrix/matrix2.pyx ---- src/sage/matrix/matrix2.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matrix/matrix2.pyx 2020-02-27 09:38:09.247266810 -0700 -@@ -6754,7 +6754,7 @@ cdef class Matrix(Matrix1): +--- src/sage/matrix/matrix2.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/matrix/matrix2.pyx 2020-07-06 16:08:09.957517120 -0600 +@@ -7123,7 +7123,7 @@ cdef class Matrix(Matrix1): raise NotImplementedError("%s\nEchelon form not implemented over '%s'."%(msg,self.base_ring())) def echelon_form(self, algorithm="default", cutoff=0, **kwds): @@ -1010,7 +1010,7 @@ diff -up src/sage/matrix/matrix2.pyx.orig src/sage/matrix/matrix2.pyx Return the echelon form of self. .. NOTE:: -@@ -8810,7 +8810,7 @@ cdef class Matrix(Matrix1): +@@ -9179,7 +9179,7 @@ cdef class Matrix(Matrix1): return img def density(self): @@ -1020,12 +1020,12 @@ diff -up src/sage/matrix/matrix2.pyx.orig src/sage/matrix/matrix2.pyx By density we understand the ratio of the number of nonzero diff -up src/sage/matrix/matrix_gf2e_dense.pyx.orig src/sage/matrix/matrix_gf2e_dense.pyx ---- src/sage/matrix/matrix_gf2e_dense.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matrix/matrix_gf2e_dense.pyx 2020-02-27 12:14:38.189668697 -0700 +--- src/sage/matrix/matrix_gf2e_dense.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/matrix/matrix_gf2e_dense.pyx 2020-07-06 16:10:29.519509948 -0600 @@ -1,4 +1,4 @@ -""" +r""" - Dense matrices over `\GF{2^e}` for `2 <= e <= 10` using the M4RIE library. + Dense matrices over `\GF{2^e}` for `2 <= e <= 10` using the M4RIE library The M4RIE library offers two matrix representations: @@ -502,7 +502,7 @@ cdef class Matrix_gf2e_dense(matrix_dens @@ -1038,8 +1038,8 @@ diff -up src/sage/matrix/matrix_gf2e_dense.pyx.orig src/sage/matrix/matrix_gf2e_ matrix coefficients over GF(2). diff -up src/sage/matrix/matrix_integer_dense.pyx.orig src/sage/matrix/matrix_integer_dense.pyx ---- src/sage/matrix/matrix_integer_dense.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matrix/matrix_integer_dense.pyx 2020-02-27 09:28:59.795169737 -0700 +--- src/sage/matrix/matrix_integer_dense.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/matrix/matrix_integer_dense.pyx 2020-07-06 16:08:09.959517120 -0600 @@ -1011,7 +1011,7 @@ cdef class Matrix_integer_dense(Matrix_d # TODO: Implement better @@ -1067,7 +1067,7 @@ diff -up src/sage/matrix/matrix_integer_dense.pyx.orig src/sage/matrix/matrix_in Invert this matrix using FLINT. The output matrix is an integer matrix and a denominator. -@@ -4299,7 +4299,7 @@ cdef class Matrix_integer_dense(Matrix_d +@@ -4300,7 +4300,7 @@ cdef class Matrix_integer_dense(Matrix_d return X def _solve_iml(self, Matrix_integer_dense B, right=True): @@ -1076,7 +1076,7 @@ diff -up src/sage/matrix/matrix_integer_dense.pyx.orig src/sage/matrix/matrix_in Let A equal self be a square matrix. Given B return an integer matrix C and an integer d such that self C\*A == d\*B if right is False or A\*C == d\*B if right is True. -@@ -4465,7 +4465,7 @@ cdef class Matrix_integer_dense(Matrix_d +@@ -4466,7 +4466,7 @@ cdef class Matrix_integer_dense(Matrix_d mpz_array_clear(mp_N, n*m) def _solve_flint(self, Matrix_integer_dense B, right=True): @@ -1085,7 +1085,7 @@ diff -up src/sage/matrix/matrix_integer_dense.pyx.orig src/sage/matrix/matrix_in Let A equal self be a square matrix. Given B return an integer matrix C and an integer d such that self C\*A == d\*B if right is False or A\*C == d\*B if right is True. -@@ -5008,7 +5008,7 @@ cdef class Matrix_integer_dense(Matrix_d +@@ -5009,7 +5009,7 @@ cdef class Matrix_integer_dense(Matrix_d # This code below is by E. Burcin. Thanks! ##################################################################################### def _hnf_mod(self, D): @@ -1094,21 +1094,9 @@ diff -up src/sage/matrix/matrix_integer_dense.pyx.orig src/sage/matrix/matrix_in INPUT: - ``D`` -- a small integer that is assumed to be a -diff -up src/sage/matrix/matrix_integer_sparse.pyx.orig src/sage/matrix/matrix_integer_sparse.pyx ---- src/sage/matrix/matrix_integer_sparse.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matrix/matrix_integer_sparse.pyx 2020-02-27 12:09:43.961809493 -0700 -@@ -909,7 +909,7 @@ cdef class Matrix_integer_sparse(Matrix_ - return g - - def _solve_right_nonsingular_square(self, B, algorithm=None, check_rank=False): -- """ -+ r""" - If self is a matrix `A`, then this function returns a - vector or matrix `X` such that `A X = B`. If - `B` is a vector then `X` is a vector and if diff -up src/sage/matrix/matrix_modn_dense_double.pyx.orig src/sage/matrix/matrix_modn_dense_double.pyx ---- src/sage/matrix/matrix_modn_dense_double.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matrix/matrix_modn_dense_double.pyx 2020-02-27 12:21:56.689974086 -0700 +--- src/sage/matrix/matrix_modn_dense_double.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/matrix/matrix_modn_dense_double.pyx 2020-07-06 16:09:35.598512717 -0600 @@ -1,4 +1,4 @@ -""" +r""" @@ -1116,8 +1104,8 @@ diff -up src/sage/matrix/matrix_modn_dense_double.pyx.orig src/sage/matrix/matri AUTHORS: diff -up src/sage/matrix/matrix_modn_dense_float.pyx.orig src/sage/matrix/matrix_modn_dense_float.pyx ---- src/sage/matrix/matrix_modn_dense_float.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matrix/matrix_modn_dense_float.pyx 2020-02-27 12:16:51.940319470 -0700 +--- src/sage/matrix/matrix_modn_dense_float.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/matrix/matrix_modn_dense_float.pyx 2020-07-06 16:09:35.599512717 -0600 @@ -1,4 +1,4 @@ -""" +r""" @@ -1125,12 +1113,12 @@ diff -up src/sage/matrix/matrix_modn_dense_float.pyx.orig src/sage/matrix/matrix AUTHORS: diff -up src/sage/matrix/matrix_modn_dense_template.pxi.orig src/sage/matrix/matrix_modn_dense_template.pxi ---- src/sage/matrix/matrix_modn_dense_template.pxi.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matrix/matrix_modn_dense_template.pxi 2020-02-27 12:30:47.428707123 -0700 +--- src/sage/matrix/matrix_modn_dense_template.pxi.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/matrix/matrix_modn_dense_template.pxi 2020-07-06 16:11:45.224506062 -0600 @@ -1,4 +1,4 @@ -""" +r""" - Dense matrices over `\ZZ/n\ZZ` for `n` small using the LinBox library (FFLAS/FFPACK). + Dense matrices over `\ZZ/n\ZZ` for `n` small using the LinBox library (FFLAS/FFPACK) FFLAS/FFPACK are libraries to provide BLAS/LAPACK-style routines for @@ -663,7 +663,7 @@ cdef class Matrix_modn_dense_template(Ma @@ -1160,21 +1148,9 @@ diff -up src/sage/matrix/matrix_modn_dense_template.pxi.orig src/sage/matrix/mat Reduces ``row1`` and ``row2`` by a unimodular transformation using the xgcd relation between their first coefficients ``a`` and ``b``. -diff -up src/sage/matrix/matrix_modn_sparse.pyx.orig src/sage/matrix/matrix_modn_sparse.pyx ---- src/sage/matrix/matrix_modn_sparse.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matrix/matrix_modn_sparse.pyx 2020-02-27 12:31:50.826605802 -0700 -@@ -854,7 +854,7 @@ cdef class Matrix_modn_sparse(matrix_spa - raise ValueError("no algorithm '%s'"%algorithm) - - def _solve_right_nonsingular_square(self, B, algorithm=None, check_rank=False): -- """ -+ r""" - If self is a matrix `A`, then this function returns a - vector or matrix `X` such that `A X = B`. If - `B` is a vector then `X` is a vector and if diff -up src/sage/matrix/matrix_polynomial_dense.pyx.orig src/sage/matrix/matrix_polynomial_dense.pyx ---- src/sage/matrix/matrix_polynomial_dense.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matrix/matrix_polynomial_dense.pyx 2020-02-27 09:22:35.512126137 -0700 +--- src/sage/matrix/matrix_polynomial_dense.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/matrix/matrix_polynomial_dense.pyx 2020-07-06 16:11:53.415505643 -0600 @@ -44,16 +44,16 @@ cdef class Matrix_polynomial_dense(Matri commonly used in the literature. @@ -1201,8 +1177,8 @@ diff -up src/sage/matrix/matrix_polynomial_dense.pyx.orig src/sage/matrix/matrix For the rest of this class description, we assume that one is working row-wise. For a given such module, all its bases are equivalent under diff -up src/sage/matrix/matrix_rational_dense.pyx.orig src/sage/matrix/matrix_rational_dense.pyx ---- src/sage/matrix/matrix_rational_dense.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matrix/matrix_rational_dense.pyx 2020-02-27 12:27:53.166741857 -0700 +--- src/sage/matrix/matrix_rational_dense.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/matrix/matrix_rational_dense.pyx 2020-07-06 16:11:53.416505643 -0600 @@ -489,7 +489,7 @@ cdef class Matrix_rational_dense(Matrix_ return rich_to_bool(op, 0) @@ -1240,8 +1216,8 @@ diff -up src/sage/matrix/matrix_rational_dense.pyx.orig src/sage/matrix/matrix_r return the result. diff -up src/sage/matroids/basis_exchange_matroid.pyx.orig src/sage/matroids/basis_exchange_matroid.pyx ---- src/sage/matroids/basis_exchange_matroid.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matroids/basis_exchange_matroid.pyx 2020-02-27 14:52:21.996354648 -0700 +--- src/sage/matroids/basis_exchange_matroid.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/matroids/basis_exchange_matroid.pyx 2020-07-06 16:11:53.417505643 -0600 @@ -2115,7 +2115,7 @@ cdef class BasisExchangeMatroid(Matroid) return EQ[0] @@ -1252,8 +1228,8 @@ diff -up src/sage/matroids/basis_exchange_matroid.pyx.orig src/sage/matroids/bas INPUT: diff -up src/sage/matroids/basis_matroid.pyx.orig src/sage/matroids/basis_matroid.pyx ---- src/sage/matroids/basis_matroid.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matroids/basis_matroid.pyx 2020-02-27 11:05:01.945973893 -0700 +--- src/sage/matroids/basis_matroid.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/matroids/basis_matroid.pyx 2020-07-06 16:11:53.418505643 -0600 @@ -1281,7 +1281,7 @@ cdef long set_to_index(bitset_t S): return index @@ -1264,8 +1240,8 @@ diff -up src/sage/matroids/basis_matroid.pyx.orig src/sage/matroids/basis_matroi """ bitset_clear(S) diff -up src/sage/matroids/extension.pyx.orig src/sage/matroids/extension.pyx ---- src/sage/matroids/extension.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matroids/extension.pyx 2020-02-27 11:09:44.223086757 -0700 +--- src/sage/matroids/extension.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/matroids/extension.pyx 2020-07-06 16:11:53.419505643 -0600 @@ -247,7 +247,7 @@ cdef class LinearSubclassesIter: @@ -1285,8 +1261,8 @@ diff -up src/sage/matroids/extension.pyx.orig src/sage/matroids/extension.pyx INPUT: diff -up src/sage/matroids/lean_matrix.pyx.orig src/sage/matroids/lean_matrix.pyx ---- src/sage/matroids/lean_matrix.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matroids/lean_matrix.pyx 2020-02-27 14:51:31.676283450 -0700 +--- src/sage/matroids/lean_matrix.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/matroids/lean_matrix.pyx 2020-07-06 16:11:53.420505642 -0600 @@ -2721,7 +2721,7 @@ cdef class QuaternaryMatrix(LeanMatrix): return sage.matroids.unpickling.unpickle_quaternary_matrix, (version, data) @@ -1297,8 +1273,8 @@ diff -up src/sage/matroids/lean_matrix.pyx.orig src/sage/matroids/lean_matrix.py matrix over ``ring``. diff -up src/sage/matroids/linear_matroid.pyx.orig src/sage/matroids/linear_matroid.pyx ---- src/sage/matroids/linear_matroid.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matroids/linear_matroid.pyx 2020-02-27 11:08:49.724030318 -0700 +--- src/sage/matroids/linear_matroid.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/matroids/linear_matroid.pyx 2020-07-06 16:11:53.423505642 -0600 @@ -757,7 +757,7 @@ cdef class LinearMatroid(BasisExchangeMa return {e: R[self._idx[e]] for e in self.groundset()} @@ -1435,9 +1411,9 @@ diff -up src/sage/matroids/linear_matroid.pyx.orig src/sage/matroids/linear_matr The matroid `U_{2, k}` is a matroid on `k` elements in which every diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx ---- src/sage/matroids/matroid.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matroids/matroid.pyx 2020-02-27 11:14:07.206492095 -0700 -@@ -3080,7 +3080,7 @@ cdef class Matroid(SageObject): +--- src/sage/matroids/matroid.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/matroids/matroid.pyx 2020-07-06 16:11:53.426505642 -0600 +@@ -3079,7 +3079,7 @@ cdef class Matroid(SageObject): return Polyhedron(vertices) def independence_matroid_polytope(self): @@ -1446,7 +1422,7 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx Return the independence matroid polytope of ``self``. This is defined as the convex hull of the vertices -@@ -3360,7 +3360,7 @@ cdef class Matroid(SageObject): +@@ -3359,7 +3359,7 @@ cdef class Matroid(SageObject): return self._is_isomorphism(other, morphism) cpdef is_isomorphism(self, other, morphism): @@ -1455,7 +1431,7 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx Test if a provided morphism induces a matroid isomorphism. A *morphism* is a map from the groundset of ``self`` to the groundset -@@ -3483,7 +3483,7 @@ cdef class Matroid(SageObject): +@@ -3482,7 +3482,7 @@ cdef class Matroid(SageObject): return self._is_isomorphism(other, mf) cpdef _is_isomorphism(self, other, morphism): @@ -1464,7 +1440,7 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx Version of is_isomorphism() that does no type checking. INPUT: -@@ -3887,7 +3887,7 @@ cdef class Matroid(SageObject): +@@ -3886,7 +3886,7 @@ cdef class Matroid(SageObject): return self.delete(X) cpdef dual(self): @@ -1473,7 +1449,7 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx Return the dual of the matroid. Let `M` be a matroid with ground set `E`. If `B` is the set of bases -@@ -3999,7 +3999,7 @@ cdef class Matroid(SageObject): +@@ -3998,7 +3998,7 @@ cdef class Matroid(SageObject): return self._has_minor(N, certificate) cpdef has_line_minor(self, k, hyperlines=None, certificate=False): @@ -1482,7 +1458,7 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx Test if the matroid has a `U_{2, k}`-minor. The matroid `U_{2, k}` is a matroid on `k` elements in which every -@@ -4071,7 +4071,7 @@ cdef class Matroid(SageObject): +@@ -4070,7 +4070,7 @@ cdef class Matroid(SageObject): return self._has_line_minor(k, hyperlines, certificate) cpdef _has_line_minor(self, k, hyperlines, certificate=False): @@ -1491,7 +1467,7 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx Test if the matroid has a `U_{2, k}`-minor. Internal version that does no input checking. -@@ -4259,7 +4259,7 @@ cdef class Matroid(SageObject): +@@ -4258,7 +4258,7 @@ cdef class Matroid(SageObject): return self.dual().extension(element, subsets).dual() cpdef modular_cut(self, subsets): @@ -1500,7 +1476,7 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx Compute the modular cut generated by ``subsets``. A *modular cut* is a collection `C` of flats such that -@@ -4349,7 +4349,7 @@ cdef class Matroid(SageObject): +@@ -4348,7 +4348,7 @@ cdef class Matroid(SageObject): return final_list cpdef linear_subclasses(self, line_length=None, subsets=None): @@ -1509,7 +1485,7 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx Return an iterable set of linear subclasses of the matroid. A *linear subclass* is a set of hyperplanes (i.e. closed sets of rank -@@ -4660,7 +4660,7 @@ cdef class Matroid(SageObject): +@@ -4659,7 +4659,7 @@ cdef class Matroid(SageObject): return True cpdef is_cosimple(self): @@ -1518,7 +1494,7 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx Test if the matroid is cosimple. A matroid is *cosimple* if it contains no cocircuits of length 1 or 2. -@@ -4737,7 +4737,7 @@ cdef class Matroid(SageObject): +@@ -4736,7 +4736,7 @@ cdef class Matroid(SageObject): return components cpdef is_connected(self, certificate=False): @@ -1527,7 +1503,7 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx Test if the matroid is connected. A *separation* in a matroid is a partition `(X, Y)` of the -@@ -7432,7 +7432,7 @@ cdef class Matroid(SageObject): +@@ -7428,7 +7428,7 @@ cdef class Matroid(SageObject): return A cpdef tutte_polynomial(self, x=None, y=None): @@ -1537,8 +1513,8 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx The *Tutte polynomial* of a matroid is the polynomial diff -up src/sage/matroids/set_system.pyx.orig src/sage/matroids/set_system.pyx ---- src/sage/matroids/set_system.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/matroids/set_system.pyx 2020-02-27 14:50:11.189769061 -0700 +--- src/sage/matroids/set_system.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/matroids/set_system.pyx 2020-07-06 16:11:53.427505642 -0600 @@ -510,7 +510,7 @@ cdef class SetSystem: return P @@ -1549,8 +1525,8 @@ diff -up src/sage/matroids/set_system.pyx.orig src/sage/matroids/set_system.pyx hypergraph whose edges are the subsets in this SetSystem. diff -up src/sage/misc/cachefunc.pyx.orig src/sage/misc/cachefunc.pyx ---- src/sage/misc/cachefunc.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/misc/cachefunc.pyx 2020-02-27 11:38:25.902302125 -0700 +--- src/sage/misc/cachefunc.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/misc/cachefunc.pyx 2020-07-06 16:11:53.429505642 -0600 @@ -835,7 +835,7 @@ cdef class CachedFunction(object): ## forward other questions to the cached function. @@ -1561,8 +1537,8 @@ diff -up src/sage/misc/cachefunc.pyx.orig src/sage/misc/cachefunc.pyx A cached function shall inherit the documentation diff -up src/sage/modular/arithgroup/arithgroup_element.pyx.orig src/sage/modular/arithgroup/arithgroup_element.pyx ---- src/sage/modular/arithgroup/arithgroup_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/modular/arithgroup/arithgroup_element.pyx 2020-02-27 11:52:51.677078266 -0700 +--- src/sage/modular/arithgroup/arithgroup_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/modular/arithgroup/arithgroup_element.pyx 2020-07-06 16:11:53.430505642 -0600 @@ -194,7 +194,7 @@ cdef class ArithmeticSubgroupElement(Mul return richcmp(self.__x, right.__x, op) @@ -1573,8 +1549,8 @@ diff -up src/sage/modular/arithgroup/arithgroup_element.pyx.orig src/sage/modula contain the zero matrix. diff -up src/sage/modular/arithgroup/congroup.pyx.orig src/sage/modular/arithgroup/congroup.pyx ---- src/sage/modular/arithgroup/congroup.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/modular/arithgroup/congroup.pyx 2020-02-27 09:02:34.164911827 -0700 +--- src/sage/modular/arithgroup/congroup.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/modular/arithgroup/congroup.pyx 2020-07-06 16:11:53.430505642 -0600 @@ -1,4 +1,4 @@ -""" +r""" @@ -1582,8 +1558,8 @@ diff -up src/sage/modular/arithgroup/congroup.pyx.orig src/sage/modular/arithgro This file contains optimized Cython implementations of a few functions related diff -up src/sage/modular/arithgroup/farey_symbol.pyx.orig src/sage/modular/arithgroup/farey_symbol.pyx ---- src/sage/modular/arithgroup/farey_symbol.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/modular/arithgroup/farey_symbol.pyx 2020-02-27 09:01:09.509443852 -0700 +--- src/sage/modular/arithgroup/farey_symbol.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/modular/arithgroup/farey_symbol.pyx 2020-07-06 16:11:53.431505642 -0600 @@ -617,7 +617,7 @@ cdef class Farey: (forced_format is None and '\\xymatrix' in latex.mathjax_avoid_list()): # output not using xymatrix @@ -1594,8 +1570,8 @@ diff -up src/sage/modular/arithgroup/farey_symbol.pyx.orig src/sage/modular/arit for i in xrange(len(a)): u = b[i] diff -up src/sage/modular/modsym/heilbronn.pyx.orig src/sage/modular/modsym/heilbronn.pyx ---- src/sage/modular/modsym/heilbronn.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/modular/modsym/heilbronn.pyx 2020-02-27 11:56:13.562672136 -0700 +--- src/sage/modular/modsym/heilbronn.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/modular/modsym/heilbronn.pyx 2020-07-06 16:11:53.432505642 -0600 @@ -209,7 +209,7 @@ cdef class Heilbronn: sig_off() @@ -1606,8 +1582,8 @@ diff -up src/sage/modular/modsym/heilbronn.pyx.orig src/sage/modular/modsym/heil - ``ans`` - fmpz_poly_t\*; pre-allocated an diff -up src/sage/modular/modsym/manin_symbol.pyx.orig src/sage/modular/modsym/manin_symbol.pyx ---- src/sage/modular/modsym/manin_symbol.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/modular/modsym/manin_symbol.pyx 2020-02-27 09:03:56.595444297 -0700 +--- src/sage/modular/modsym/manin_symbol.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/modular/modsym/manin_symbol.pyx 2020-07-06 16:11:53.432505642 -0600 @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -""" @@ -1616,8 +1592,8 @@ diff -up src/sage/modular/modsym/manin_symbol.pyx.orig src/sage/modular/modsym/m This module defines the class ManinSymbol. A Manin symbol of diff -up src/sage/modular/modsym/p1list.pyx.orig src/sage/modular/modsym/p1list.pyx ---- src/sage/modular/modsym/p1list.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/modular/modsym/p1list.pyx 2020-02-27 11:55:42.521181786 -0700 +--- src/sage/modular/modsym/p1list.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/modular/modsym/p1list.pyx 2020-07-06 16:11:53.433505642 -0600 @@ -27,7 +27,7 @@ ctypedef long long llong cdef int c_p1_normalize_int(int N, int u, int v, int* uu, int* vv, int* ss, @@ -1673,9 +1649,9 @@ diff -up src/sage/modular/modsym/p1list.pyx.orig src/sage/modular/modsym/p1list. `(c,d)` is assumed to be an element of diff -up src/sage/modules/free_module_element.pyx.orig src/sage/modules/free_module_element.pyx ---- src/sage/modules/free_module_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/modules/free_module_element.pyx 2020-02-27 15:01:58.389454347 -0700 -@@ -1966,7 +1966,7 @@ cdef class FreeModuleElement(Vector): +--- src/sage/modules/free_module_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/modules/free_module_element.pyx 2020-07-06 16:11:53.435505642 -0600 +@@ -2019,7 +2019,7 @@ cdef class FreeModuleElement(Vector): return copy(self) def lift_centered(self): @@ -1684,7 +1660,7 @@ diff -up src/sage/modules/free_module_element.pyx.orig src/sage/modules/free_mod Lift to a congruent, centered vector. INPUT: -@@ -2338,7 +2338,7 @@ cdef class FreeModuleElement(Vector): +@@ -2391,7 +2391,7 @@ cdef class FreeModuleElement(Vector): def plot_step(self, xmin=0, xmax=1, eps=None, res=None, connect=True, **kwds): @@ -1693,7 +1669,7 @@ diff -up src/sage/modules/free_module_element.pyx.orig src/sage/modules/free_mod INPUT: - ``xmin`` - (default: 0) start x position to start -@@ -3609,7 +3609,7 @@ cdef class FreeModuleElement(Vector): +@@ -3662,7 +3662,7 @@ cdef class FreeModuleElement(Vector): from sage.misc.latex import latex vector_delimiters = latex.vector_delimiters() s = '\\left' + vector_delimiters[0] @@ -1703,8 +1679,8 @@ diff -up src/sage/modules/free_module_element.pyx.orig src/sage/modules/free_mod def dense_vector(self): diff -up src/sage/numerical/backends/generic_backend.pyx.orig src/sage/numerical/backends/generic_backend.pyx ---- src/sage/numerical/backends/generic_backend.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/numerical/backends/generic_backend.pyx 2020-02-27 15:12:48.869255994 -0700 +--- src/sage/numerical/backends/generic_backend.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/numerical/backends/generic_backend.pyx 2020-07-06 16:11:53.436505642 -0600 @@ -1370,7 +1370,7 @@ cdef class GenericBackend: raise NotImplementedError() @@ -1742,8 +1718,8 @@ diff -up src/sage/numerical/backends/generic_backend.pyx.orig src/sage/numerical This assumes that the problem has been solved with the simplex method diff -up src/sage/numerical/backends/glpk_backend.pyx.orig src/sage/numerical/backends/glpk_backend.pyx ---- src/sage/numerical/backends/glpk_backend.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/numerical/backends/glpk_backend.pyx 2020-02-27 15:11:17.902928905 -0700 +--- src/sage/numerical/backends/glpk_backend.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/numerical/backends/glpk_backend.pyx 2020-07-06 16:11:53.438505642 -0600 @@ -2130,7 +2130,7 @@ cdef class GLPKBackend(GenericBackend): @@ -1781,8 +1757,8 @@ diff -up src/sage/numerical/backends/glpk_backend.pyx.orig src/sage/numerical/ba This assumes that the problem has been solved with the simplex method diff -up src/sage/numerical/backends/interactivelp_backend.pyx.orig src/sage/numerical/backends/interactivelp_backend.pyx ---- src/sage/numerical/backends/interactivelp_backend.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/numerical/backends/interactivelp_backend.pyx 2020-02-27 15:09:45.383668708 -0700 +--- src/sage/numerical/backends/interactivelp_backend.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/numerical/backends/interactivelp_backend.pyx 2020-07-06 16:11:53.438505642 -0600 @@ -1071,7 +1071,7 @@ cdef class InteractiveLPBackend: problem_type, ring, objective_constant_term=d) @@ -1838,8 +1814,8 @@ diff -up src/sage/numerical/backends/interactivelp_backend.pyx.orig src/sage/num EXAMPLES:: diff -up src/sage/quadratic_forms/count_local_2.pyx.orig src/sage/quadratic_forms/count_local_2.pyx ---- src/sage/quadratic_forms/count_local_2.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/quadratic_forms/count_local_2.pyx 2020-02-27 14:47:35.887635615 -0700 +--- src/sage/quadratic_forms/count_local_2.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/quadratic_forms/count_local_2.pyx 2020-07-06 16:11:53.439505642 -0600 @@ -168,7 +168,7 @@ cdef CountAllLocalTypesNaive_cdef(Q, p, @@ -1850,8 +1826,8 @@ diff -up src/sage/quadratic_forms/count_local_2.pyx.orig src/sage/quadratic_form :meth:`sage.quadratic_forms.quadratic_form.QuadraticForm.count_congruence_solutions_by_type QuadraticForm.count_congruence_solutions_by_type`. See the documentation of diff -up src/sage/quivers/algebra_elements.pyx.orig src/sage/quivers/algebra_elements.pyx ---- src/sage/quivers/algebra_elements.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/quivers/algebra_elements.pyx 2020-02-27 11:46:21.879821027 -0700 +--- src/sage/quivers/algebra_elements.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/quivers/algebra_elements.pyx 2020-07-06 16:11:53.440505641 -0600 @@ -280,7 +280,7 @@ cdef class PathAlgebraElement(RingElemen ) @@ -1862,8 +1838,8 @@ diff -up src/sage/quivers/algebra_elements.pyx.orig src/sage/quivers/algebra_ele EXAMPLES:: diff -up src/sage/rings/bernoulli_mod_p.pyx.orig src/sage/rings/bernoulli_mod_p.pyx ---- src/sage/rings/bernoulli_mod_p.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/bernoulli_mod_p.pyx 2020-02-27 14:12:09.407391213 -0700 +--- src/sage/rings/bernoulli_mod_p.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/bernoulli_mod_p.pyx 2020-07-06 16:11:53.440505641 -0600 @@ -35,7 +35,7 @@ from sage.rings.bernmm import bernmm_ber @@ -1874,9 +1850,9 @@ diff -up src/sage/rings/bernoulli_mod_p.pyx.orig src/sage/rings/bernoulli_mod_p. It checks the identity diff -up src/sage/rings/complex_arb.pyx.orig src/sage/rings/complex_arb.pyx ---- src/sage/rings/complex_arb.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/complex_arb.pyx 2020-02-27 10:34:45.320041770 -0700 -@@ -2922,7 +2922,7 @@ cdef class ComplexBall(RingElement): +--- src/sage/rings/complex_arb.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/complex_arb.pyx 2020-07-06 16:11:53.442505642 -0600 +@@ -2923,7 +2923,7 @@ cdef class ComplexBall(RingElement): return res def rising_factorial(self, n): @@ -1885,7 +1861,7 @@ diff -up src/sage/rings/complex_arb.pyx.orig src/sage/rings/complex_arb.pyx Return the ``n``-th rising factorial of this ball. The `n`-th rising factorial of `x` is equal to `x (x+1) \cdots (x+n-1)`. -@@ -3640,7 +3640,7 @@ cdef class ComplexBall(RingElement): +@@ -3641,7 +3641,7 @@ cdef class ComplexBall(RingElement): return res def polylog(self, s): @@ -1895,9 +1871,9 @@ diff -up src/sage/rings/complex_arb.pyx.orig src/sage/rings/complex_arb.pyx EXAMPLES:: diff -up src/sage/rings/complex_double.pyx.orig src/sage/rings/complex_double.pyx ---- src/sage/rings/complex_double.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/complex_double.pyx 2020-02-27 10:32:06.489839183 -0700 -@@ -1578,7 +1578,7 @@ cdef class ComplexDoubleElement(FieldEle +--- src/sage/rings/complex_double.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/complex_double.pyx 2020-07-06 16:11:53.443505641 -0600 +@@ -1595,7 +1595,7 @@ cdef class ComplexDoubleElement(FieldEle return self.real().is_NaN() or self.imag().is_NaN() cpdef _pow_(self, other): @@ -1907,8 +1883,8 @@ diff -up src/sage/rings/complex_double.pyx.orig src/sage/rings/complex_double.py This is computed using complex logarithms and exponentials diff -up src/sage/rings/complex_interval.pyx.orig src/sage/rings/complex_interval.pyx ---- src/sage/rings/complex_interval.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/complex_interval.pyx 2020-02-27 10:20:29.626115066 -0700 +--- src/sage/rings/complex_interval.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/complex_interval.pyx 2020-07-06 16:11:53.444505641 -0600 @@ -714,7 +714,7 @@ cdef class ComplexIntervalFieldElement(s return x @@ -1928,8 +1904,8 @@ diff -up src/sage/rings/complex_interval.pyx.orig src/sage/rings/complex_interva EXAMPLES:: diff -up src/sage/rings/complex_mpc.pyx.orig src/sage/rings/complex_mpc.pyx ---- src/sage/rings/complex_mpc.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/complex_mpc.pyx 2020-02-26 11:15:34.722679686 -0700 +--- src/sage/rings/complex_mpc.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/complex_mpc.pyx 2020-07-06 16:11:53.445505641 -0600 @@ -147,15 +147,15 @@ cdef inline mpfr_rnd_t rnd_im(mpc_rnd_t sign = '[+-]' digit_ten = '[0123456789]' @@ -2022,7 +1998,7 @@ diff -up src/sage/rings/complex_mpc.pyx.orig src/sage/rings/complex_mpc.pyx Return the hyperbolic sine of this complex number: .. MATH:: -@@ -2085,7 +2085,7 @@ cdef class MPComplexNumber(sage.structur +@@ -2089,7 +2089,7 @@ cdef class MPComplexNumber(sage.structur return z def exp(self): @@ -2032,9 +2008,9 @@ diff -up src/sage/rings/complex_mpc.pyx.orig src/sage/rings/complex_mpc.pyx .. MATH:: diff -up src/sage/rings/complex_number.pyx.orig src/sage/rings/complex_number.pyx ---- src/sage/rings/complex_number.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/complex_number.pyx 2020-02-27 14:09:39.595076646 -0700 -@@ -1714,7 +1714,7 @@ cdef class ComplexNumber(sage.structure. +--- src/sage/rings/complex_number.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/complex_number.pyx 2020-07-06 16:11:53.446505641 -0600 +@@ -1741,7 +1741,7 @@ cdef class ComplexNumber(sage.structure. # Other special functions def agm(self, right, algorithm="optimal"): @@ -2044,8 +2020,8 @@ diff -up src/sage/rings/complex_number.pyx.orig src/sage/rings/complex_number.py INPUT: diff -up src/sage/rings/finite_rings/element_givaro.pyx.orig src/sage/rings/finite_rings/element_givaro.pyx ---- src/sage/rings/finite_rings/element_givaro.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/finite_rings/element_givaro.pyx 2020-02-27 10:22:04.184449193 -0700 +--- src/sage/rings/finite_rings/element_givaro.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/finite_rings/element_givaro.pyx 2020-07-06 16:11:53.446505641 -0600 @@ -1204,7 +1204,7 @@ cdef class FiniteField_givaroElement(Fin return make_FiniteField_givaroElement(self._cache,r) @@ -2065,8 +2041,8 @@ diff -up src/sage/rings/finite_rings/element_givaro.pyx.orig src/sage/rings/fini prime subfield, the integer returned is equal to ``self``. diff -up src/sage/rings/finite_rings/element_ntl_gf2e.pyx.orig src/sage/rings/finite_rings/element_ntl_gf2e.pyx ---- src/sage/rings/finite_rings/element_ntl_gf2e.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/finite_rings/element_ntl_gf2e.pyx 2020-02-27 10:22:49.535650221 -0700 +--- src/sage/rings/finite_rings/element_ntl_gf2e.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/finite_rings/element_ntl_gf2e.pyx 2020-07-06 16:11:53.447505641 -0600 @@ -400,7 +400,7 @@ cdef class Cache_ntl_gf2e(SageObject): raise ValueError("Cannot coerce element %s to this field." % e) @@ -2077,8 +2053,8 @@ diff -up src/sage/rings/finite_rings/element_ntl_gf2e.pyx.orig src/sage/rings/fi representation `a_0 + a_1 \cdot 2 + \cdots + a_k 2^k`, this returns `a_0 + a_1 x + \cdots + a_k x^k`, where `x` is the diff -up src/sage/rings/finite_rings/finite_field_base.pyx.orig src/sage/rings/finite_rings/finite_field_base.pyx ---- src/sage/rings/finite_rings/finite_field_base.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/finite_rings/finite_field_base.pyx 2020-02-27 10:24:14.382155455 -0700 +--- src/sage/rings/finite_rings/finite_field_base.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/finite_rings/finite_field_base.pyx 2020-07-06 16:11:53.448505641 -0600 @@ -959,7 +959,7 @@ cdef class FiniteField(Field): return self._modulus @@ -2089,8 +2065,8 @@ diff -up src/sage/rings/finite_rings/finite_field_base.pyx.orig src/sage/rings/f the prime finite field. diff -up src/sage/rings/finite_rings/hom_finite_field.pyx.orig src/sage/rings/finite_rings/hom_finite_field.pyx ---- src/sage/rings/finite_rings/hom_finite_field.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/finite_rings/hom_finite_field.pyx 2020-02-27 14:05:34.420471507 -0700 +--- src/sage/rings/finite_rings/hom_finite_field.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/finite_rings/hom_finite_field.pyx 2020-07-06 16:11:53.448505641 -0600 @@ -147,7 +147,7 @@ cdef class SectionFiniteFieldHomomorphis @@ -2101,8 +2077,8 @@ diff -up src/sage/rings/finite_rings/hom_finite_field.pyx.orig src/sage/rings/fi EXAMPLES:: diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_rings/integer_mod.pyx ---- src/sage/rings/finite_rings/integer_mod.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/finite_rings/integer_mod.pyx 2020-02-27 10:27:31.196688078 -0700 +--- src/sage/rings/finite_rings/integer_mod.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/finite_rings/integer_mod.pyx 2020-07-06 16:11:53.449505641 -0600 @@ -115,7 +115,7 @@ from sage.structure.parent cimport Paren cdef Integer one_Z = Integer(1) @@ -2130,7 +2106,7 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_ Elements of `\ZZ/n\ZZ` for n not small enough to be operated on in word size. -@@ -2185,7 +2185,7 @@ cdef class IntegerMod_gmp(IntegerMod_abs +@@ -2180,7 +2180,7 @@ cdef class IntegerMod_gmp(IntegerMod_abs return long(self.lift()) def __pow__(IntegerMod_gmp self, exp, m): # NOTE: m ignored, always use modulus of parent ring @@ -2139,7 +2115,7 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_ EXAMPLES:: sage: R = Integers(10^10) -@@ -2294,7 +2294,7 @@ cdef class IntegerMod_gmp(IntegerMod_abs +@@ -2289,7 +2289,7 @@ cdef class IntegerMod_gmp(IntegerMod_abs @coerce_binop def gcd(self, IntegerMod_gmp other): @@ -2148,7 +2124,7 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_ Greatest common divisor Returns the "smallest" generator in `\ZZ / N\ZZ` of the ideal -@@ -2327,7 +2327,7 @@ cdef class IntegerMod_gmp(IntegerMod_abs +@@ -2322,7 +2322,7 @@ cdef class IntegerMod_gmp(IntegerMod_abs cdef class IntegerMod_int(IntegerMod_abstract): @@ -2157,7 +2133,7 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_ Elements of `\ZZ/n\ZZ` for n small enough to be operated on in 32 bits -@@ -2948,7 +2948,7 @@ cdef class IntegerMod_int(IntegerMod_abs +@@ -2941,7 +2941,7 @@ cdef class IntegerMod_int(IntegerMod_abs def _balanced_abs(self): @@ -2166,7 +2142,7 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_ This function returns `x` or `-x`, whichever has a positive representative in `-n/2 < x \leq n/2`. """ -@@ -2959,7 +2959,7 @@ cdef class IntegerMod_int(IntegerMod_abs +@@ -2952,7 +2952,7 @@ cdef class IntegerMod_int(IntegerMod_abs @coerce_binop def gcd(self, IntegerMod_int other): @@ -2175,7 +2151,7 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_ Greatest common divisor Returns the "smallest" generator in `\ZZ / N\ZZ` of the ideal -@@ -3137,7 +3137,7 @@ cdef int jacobi_int(int_fast32_t a, int_ +@@ -3130,7 +3130,7 @@ cdef int jacobi_int(int_fast32_t a, int_ ###################################################################### cdef class IntegerMod_int64(IntegerMod_abstract): @@ -2184,7 +2160,7 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_ Elements of `\ZZ/n\ZZ` for n small enough to be operated on in 64 bits -@@ -3448,7 +3448,7 @@ cdef class IntegerMod_int64(IntegerMod_a +@@ -3443,7 +3443,7 @@ cdef class IntegerMod_int64(IntegerMod_a return self._new_c(self.ivalue >> (-k)) def __pow__(IntegerMod_int64 self, exp, m): # NOTE: m ignored, always use modulus of parent ring @@ -2193,7 +2169,7 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_ EXAMPLES:: sage: R = Integers(10) -@@ -3596,7 +3596,7 @@ cdef class IntegerMod_int64(IntegerMod_a +@@ -3591,7 +3591,7 @@ cdef class IntegerMod_int64(IntegerMod_a return hash(self.ivalue) def _balanced_abs(self): @@ -2202,7 +2178,7 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_ This function returns `x` or `-x`, whichever has a positive representative in `-n/2 < x \leq n/2`. """ -@@ -3607,7 +3607,7 @@ cdef class IntegerMod_int64(IntegerMod_a +@@ -3602,7 +3602,7 @@ cdef class IntegerMod_int64(IntegerMod_a @coerce_binop def gcd(self, IntegerMod_int64 other): @@ -2212,8 +2188,8 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_ Returns the "smallest" generator in `\ZZ / N\ZZ` of the ideal diff -up src/sage/rings/finite_rings/residue_field.pyx.orig src/sage/rings/finite_rings/residue_field.pyx ---- src/sage/rings/finite_rings/residue_field.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/finite_rings/residue_field.pyx 2020-02-26 12:24:03.640048006 -0700 +--- src/sage/rings/finite_rings/residue_field.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/finite_rings/residue_field.pyx 2020-07-06 16:11:53.450505641 -0600 @@ -1,4 +1,4 @@ -""" +r""" @@ -2230,8 +2206,8 @@ diff -up src/sage/rings/finite_rings/residue_field.pyx.orig src/sage/rings/finit - ``p`` -- the prime ideal defining this residue field diff -up src/sage/rings/function_field/element.pyx.orig src/sage/rings/function_field/element.pyx ---- src/sage/rings/function_field/element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/function_field/element.pyx 2020-02-26 14:11:12.803894369 -0700 +--- src/sage/rings/function_field/element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/function_field/element.pyx 2020-07-06 16:11:53.450505641 -0600 @@ -148,7 +148,7 @@ cdef class FunctionFieldElement(FieldEle raise NotImplementedError("PARI does not support general function field elements.") @@ -2241,21 +2217,9 @@ diff -up src/sage/rings/function_field/element.pyx.orig src/sage/rings/function_ EXAMPLES:: sage: K. = FunctionField(QQ) -diff -up src/sage/rings/function_field/ideal.py.orig src/sage/rings/function_field/ideal.py ---- src/sage/rings/function_field/ideal.py.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/function_field/ideal.py 2020-02-26 14:10:24.140803564 -0700 -@@ -2166,7 +2166,7 @@ class FunctionFieldIdeal_global(Function - return self.gens_over_base() - - def gens_two(self): -- """ -+ r""" - Return two generators of this fractional ideal. - - If the ideal is principal, one generator *may* be returned. diff -up src/sage/rings/integer_ring.pyx.orig src/sage/rings/integer_ring.pyx ---- src/sage/rings/integer_ring.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/integer_ring.pyx 2020-02-27 14:00:39.430781027 -0700 +--- src/sage/rings/integer_ring.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/integer_ring.pyx 2020-07-06 16:13:17.431497411 -0600 @@ -391,7 +391,7 @@ cdef class IntegerRing_class(PrincipalId return "\\Bold{Z}" @@ -2275,8 +2239,8 @@ diff -up src/sage/rings/integer_ring.pyx.orig src/sage/rings/integer_ring.pyx error if none exists. diff -up src/sage/rings/laurent_series_ring_element.pyx.orig src/sage/rings/laurent_series_ring_element.pyx ---- src/sage/rings/laurent_series_ring_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/laurent_series_ring_element.pyx 2020-02-27 10:37:46.261850642 -0700 +--- src/sage/rings/laurent_series_ring_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/laurent_series_ring_element.pyx 2020-07-06 16:13:17.432497411 -0600 @@ -86,7 +86,7 @@ def is_LaurentSeries(x): @@ -2287,8 +2251,8 @@ diff -up src/sage/rings/laurent_series_ring_element.pyx.orig src/sage/rings/laur We consider a Laurent series of the form `t^n \cdot f` where `f` is a diff -up src/sage/rings/number_field/number_field_element.pyx.orig src/sage/rings/number_field/number_field_element.pyx ---- src/sage/rings/number_field/number_field_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/number_field/number_field_element.pyx 2020-02-27 14:17:24.733733303 -0700 +--- src/sage/rings/number_field/number_field_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/number_field/number_field_element.pyx 2020-07-06 16:13:17.434497411 -0600 @@ -484,7 +484,7 @@ cdef class NumberFieldElement(FieldEleme return codomain(f(im_gens[0])) @@ -2298,7 +2262,7 @@ diff -up src/sage/rings/number_field/number_field_element.pyx.orig src/sage/ring Returns the latex representation for this element. EXAMPLES:: -@@ -3877,7 +3877,7 @@ cdef class NumberFieldElement(FieldEleme +@@ -3878,7 +3878,7 @@ cdef class NumberFieldElement(FieldEleme return ht def global_height_non_arch(self, prec=None): @@ -2308,15 +2272,15 @@ diff -up src/sage/rings/number_field/number_field_element.pyx.orig src/sage/ring INPUT: diff -up src/sage/rings/number_field/number_field_element_quadratic.pyx.orig src/sage/rings/number_field/number_field_element_quadratic.pyx ---- src/sage/rings/number_field/number_field_element_quadratic.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/number_field/number_field_element_quadratic.pyx 2020-02-26 12:30:16.381058496 -0700 +--- src/sage/rings/number_field/number_field_element_quadratic.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/number_field/number_field_element_quadratic.pyx 2020-07-06 16:13:17.436497411 -0600 @@ -1,4 +1,4 @@ -""" +r""" Optimized Quadratic Number Field Elements This file defines a Cython class ``NumberFieldElement_quadratic`` to speed up -@@ -840,7 +840,7 @@ cdef class NumberFieldElement_quadratic( +@@ -861,7 +861,7 @@ cdef class NumberFieldElement_quadratic( return res def parts(self): @@ -2325,7 +2289,7 @@ diff -up src/sage/rings/number_field/number_field_element_quadratic.pyx.orig src This function returns a pair of rationals `a` and `b` such that self `= a+b\sqrt{D}`. -@@ -1581,7 +1581,7 @@ cdef class NumberFieldElement_quadratic( +@@ -1606,7 +1606,7 @@ cdef class NumberFieldElement_quadratic( ################################################################################# def __hash__(self): @@ -2334,7 +2298,7 @@ diff -up src/sage/rings/number_field/number_field_element_quadratic.pyx.orig src Return hash of this number field element. For elements in `\ZZ` or `\QQ` the hash coincides with the one in the -@@ -2015,7 +2015,7 @@ cdef class NumberFieldElement_quadratic( +@@ -2040,7 +2040,7 @@ cdef class NumberFieldElement_quadratic( def norm(self, K=None): @@ -2344,8 +2308,8 @@ diff -up src/sage/rings/number_field/number_field_element_quadratic.pyx.orig src norm down to `\QQ`. Otherwise, return the norm down to K (which had better be either `\QQ` or this number field). diff -up src/sage/rings/number_field/number_field_morphisms.pyx.orig src/sage/rings/number_field/number_field_morphisms.pyx ---- src/sage/rings/number_field/number_field_morphisms.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/number_field/number_field_morphisms.pyx 2020-02-27 14:15:30.637780730 -0700 +--- src/sage/rings/number_field/number_field_morphisms.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/number_field/number_field_morphisms.pyx 2020-07-06 16:13:17.437497411 -0600 @@ -340,7 +340,7 @@ cdef class EmbeddedNumberFieldConversion @@ -2365,8 +2329,8 @@ diff -up src/sage/rings/number_field/number_field_morphisms.pyx.orig src/sage/ri target (with respect to the \code{abs} function). If margin is greater than 1, and x and y are the first and second closest elements to target, diff -up src/sage/rings/number_field/totallyreal.pyx.orig src/sage/rings/number_field/totallyreal.pyx ---- src/sage/rings/number_field/totallyreal.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/number_field/totallyreal.pyx 2020-02-26 12:31:22.883761593 -0700 +--- src/sage/rings/number_field/totallyreal.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/number_field/totallyreal.pyx 2020-07-06 16:13:17.438497411 -0600 @@ -1,4 +1,4 @@ -""" +r""" @@ -2374,8 +2338,8 @@ diff -up src/sage/rings/number_field/totallyreal.pyx.orig src/sage/rings/number_ This module contains functions for enumerating all primitive diff -up src/sage/rings/padics/CA_template.pxi.orig src/sage/rings/padics/CA_template.pxi ---- src/sage/rings/padics/CA_template.pxi.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/CA_template.pxi 2020-02-27 14:21:45.536053250 -0700 +--- src/sage/rings/padics/CA_template.pxi.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/CA_template.pxi 2020-07-06 16:13:17.439497410 -0600 @@ -392,7 +392,7 @@ cdef class CAElement(pAdicTemplateElemen @@ -2413,8 +2377,8 @@ diff -up src/sage/rings/padics/CA_template.pxi.orig src/sage/rings/padics/CA_tem EXAMPLES:: diff -up src/sage/rings/padics/CR_template.pxi.orig src/sage/rings/padics/CR_template.pxi ---- src/sage/rings/padics/CR_template.pxi.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/CR_template.pxi 2020-02-27 14:20:48.003085660 -0700 +--- src/sage/rings/padics/CR_template.pxi.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/CR_template.pxi 2020-07-06 16:13:17.440497410 -0600 @@ -720,7 +720,7 @@ cdef class CRElement(pAdicTemplateElemen return ans @@ -2443,8 +2407,8 @@ diff -up src/sage/rings/padics/CR_template.pxi.orig src/sage/rings/padics/CR_tem EXAMPLES:: diff -up src/sage/rings/padics/FM_template.pxi.orig src/sage/rings/padics/FM_template.pxi ---- src/sage/rings/padics/FM_template.pxi.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/FM_template.pxi 2020-02-27 14:30:07.794033635 -0700 +--- src/sage/rings/padics/FM_template.pxi.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/FM_template.pxi 2020-07-06 16:13:17.441497410 -0600 @@ -381,7 +381,7 @@ cdef class FMElement(pAdicTemplateElemen return ans @@ -2473,8 +2437,8 @@ diff -up src/sage/rings/padics/FM_template.pxi.orig src/sage/rings/padics/FM_tem INPUT: diff -up src/sage/rings/padics/FP_template.pxi.orig src/sage/rings/padics/FP_template.pxi ---- src/sage/rings/padics/FP_template.pxi.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/FP_template.pxi 2020-02-27 14:27:17.166102208 -0700 +--- src/sage/rings/padics/FP_template.pxi.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/FP_template.pxi 2020-07-06 16:13:17.442497410 -0600 @@ -653,7 +653,7 @@ cdef class FPElement(pAdicTemplateElemen return ans @@ -2503,8 +2467,8 @@ diff -up src/sage/rings/padics/FP_template.pxi.orig src/sage/rings/padics/FP_tem INPUT: diff -up src/sage/rings/padics/local_generic_element.pyx.orig src/sage/rings/padics/local_generic_element.pyx ---- src/sage/rings/padics/local_generic_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/local_generic_element.pyx 2020-02-27 10:40:29.052964694 -0700 +--- src/sage/rings/padics/local_generic_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/local_generic_element.pyx 2020-07-06 16:13:17.443497410 -0600 @@ -355,7 +355,7 @@ cdef class LocalGenericElement(Commutati return ans @@ -2515,8 +2479,8 @@ diff -up src/sage/rings/padics/local_generic_element.pyx.orig src/sage/rings/pad EXAMPLES:: diff -up src/sage/rings/padics/morphism.pyx.orig src/sage/rings/padics/morphism.pyx ---- src/sage/rings/padics/morphism.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/morphism.pyx 2020-02-27 14:31:55.331074487 -0700 +--- src/sage/rings/padics/morphism.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/morphism.pyx 2020-07-06 16:13:17.443497410 -0600 @@ -280,7 +280,7 @@ cdef class FrobeniusEndomorphism_padics( @@ -2527,8 +2491,8 @@ diff -up src/sage/rings/padics/morphism.pyx.orig src/sage/rings/padics/morphism. It is the hash of ``(domain, codomain, ('Frob', power)`` diff -up src/sage/rings/padics/padic_capped_absolute_element.pyx.orig src/sage/rings/padics/padic_capped_absolute_element.pyx ---- src/sage/rings/padics/padic_capped_absolute_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/padic_capped_absolute_element.pyx 2020-02-27 10:48:47.499131689 -0700 +--- src/sage/rings/padics/padic_capped_absolute_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/padic_capped_absolute_element.pyx 2020-07-06 16:13:17.444497410 -0600 @@ -383,7 +383,7 @@ cdef class pAdicCappedAbsoluteElement(CA return ans @@ -2548,8 +2512,8 @@ diff -up src/sage/rings/padics/padic_capped_absolute_element.pyx.orig src/sage/r This is a helper method for :meth:`exp`. diff -up src/sage/rings/padics/padic_capped_relative_element.pyx.orig src/sage/rings/padics/padic_capped_relative_element.pyx ---- src/sage/rings/padics/padic_capped_relative_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/padic_capped_relative_element.pyx 2020-02-27 10:45:06.545045373 -0700 +--- src/sage/rings/padics/padic_capped_relative_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/padic_capped_relative_element.pyx 2020-07-06 16:13:17.445497410 -0600 @@ -250,7 +250,7 @@ cdef class pAdicCappedRelativeElement(CR return self.lift_c() @@ -2578,8 +2542,8 @@ diff -up src/sage/rings/padics/padic_capped_relative_element.pyx.orig src/sage/r This is a helper method for :meth:`exp`. diff -up src/sage/rings/padics/padic_ext_element.pyx.orig src/sage/rings/padics/padic_ext_element.pyx ---- src/sage/rings/padics/padic_ext_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/padic_ext_element.pyx 2020-02-26 12:37:01.119373785 -0700 +--- src/sage/rings/padics/padic_ext_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/padic_ext_element.pyx 2020-07-06 16:13:17.445497410 -0600 @@ -1,4 +1,4 @@ -""" +r""" @@ -2587,8 +2551,8 @@ diff -up src/sage/rings/padics/padic_ext_element.pyx.orig src/sage/rings/padics/ A common superclass for all elements of extension rings and field of `\ZZ_p` and diff -up src/sage/rings/padics/padic_fixed_mod_element.pyx.orig src/sage/rings/padics/padic_fixed_mod_element.pyx ---- src/sage/rings/padics/padic_fixed_mod_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/padic_fixed_mod_element.pyx 2020-02-27 10:47:41.918293107 -0700 +--- src/sage/rings/padics/padic_fixed_mod_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/padic_fixed_mod_element.pyx 2020-07-06 16:13:17.446497410 -0600 @@ -157,7 +157,7 @@ cdef class pAdicFixedModElement(FMElemen return self.lift_c() @@ -2626,8 +2590,8 @@ diff -up src/sage/rings/padics/padic_fixed_mod_element.pyx.orig src/sage/rings/p This is a helper method for :meth:`exp`. diff -up src/sage/rings/padics/padic_floating_point_element.pyx.orig src/sage/rings/padics/padic_floating_point_element.pyx ---- src/sage/rings/padics/padic_floating_point_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/padic_floating_point_element.pyx 2020-02-27 10:46:09.415931306 -0700 +--- src/sage/rings/padics/padic_floating_point_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/padic_floating_point_element.pyx 2020-07-06 16:13:17.447497410 -0600 @@ -238,7 +238,7 @@ cdef class pAdicFloatingPointElement(FPE return self.lift_c() @@ -2656,8 +2620,8 @@ diff -up src/sage/rings/padics/padic_floating_point_element.pyx.orig src/sage/ri This is a helper method for :meth:`exp`. diff -up src/sage/rings/padics/padic_generic_element.pyx.orig src/sage/rings/padics/padic_generic_element.pyx ---- src/sage/rings/padics/padic_generic_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/padic_generic_element.pyx 2020-02-27 10:43:44.418501293 -0700 +--- src/sage/rings/padics/padic_generic_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/padic_generic_element.pyx 2020-07-06 16:13:17.449497409 -0600 @@ -543,7 +543,7 @@ cdef class pAdicGenericElement(LocalGene return self._repr_(mode=mode) @@ -2667,7 +2631,7 @@ diff -up src/sage/rings/padics/padic_generic_element.pyx.orig src/sage/rings/pad Returns a string representation of this element. INPUT: -@@ -3039,7 +3039,7 @@ cdef class pAdicGenericElement(LocalGene +@@ -3022,7 +3022,7 @@ cdef class pAdicGenericElement(LocalGene return series_unit*nfactorial_unit.inverse_of_unit()<<(series_val-nfactorial_val) def _exp_binary_splitting(self, aprec): @@ -2676,7 +2640,7 @@ diff -up src/sage/rings/padics/padic_generic_element.pyx.orig src/sage/rings/pad Compute the exponential power series of this element This is a helper method for :meth:`exp`. -@@ -3085,7 +3085,7 @@ cdef class pAdicGenericElement(LocalGene +@@ -3068,7 +3068,7 @@ cdef class pAdicGenericElement(LocalGene raise NotImplementedError("The binary splitting algorithm is not implemented for the parent: %s" % self.parent()) def _exp_newton(self, aprec, log_algorithm=None): @@ -2685,7 +2649,7 @@ diff -up src/sage/rings/padics/padic_generic_element.pyx.orig src/sage/rings/pad Compute the exponential power series of this element This is a helper method for :meth:`exp`. -@@ -3763,7 +3763,7 @@ cdef class pAdicGenericElement(LocalGene +@@ -3746,7 +3746,7 @@ cdef class pAdicGenericElement(LocalGene return parent(root) def _inverse_pth_root(self, twist=None, hint=None): @@ -2694,7 +2658,7 @@ diff -up src/sage/rings/padics/padic_generic_element.pyx.orig src/sage/rings/pad In its simplest form, computes the inverse of ``p``-th root of this element. -@@ -4106,7 +4106,7 @@ cdef class pAdicGenericElement(LocalGene +@@ -4089,7 +4089,7 @@ cdef class pAdicGenericElement(LocalGene return (H[n](z - 1) - ((z.log(0))**(n-1)*(1 - z).log(0))/Integer(n-1).factorial()).add_bigoh(N) def polylog(self, n): @@ -2703,7 +2667,7 @@ diff -up src/sage/rings/padics/padic_generic_element.pyx.orig src/sage/rings/pad Return `Li_n(self)` , the `n`th `p`-adic polylogarithm of this element. INPUT: -@@ -4359,7 +4359,7 @@ def _polylog_c(n, p): +@@ -4342,7 +4342,7 @@ def _polylog_c(n, p): return p/(p-1) - (n-1)/p.log() + (n-1)*(n*(p-1)/p.log()).log(p) + (2*p*(p-1)*n/p.log()).log(p) def _findprec(c_1, c_2, c_3, p): @@ -2712,7 +2676,7 @@ diff -up src/sage/rings/padics/padic_generic_element.pyx.orig src/sage/rings/pad Return an integer k such that c_1*k - c_2*log_p(k) > c_3. This is an internal function, used by :meth:`polylog`. -@@ -4389,7 +4389,7 @@ def _findprec(c_1, c_2, c_3, p): +@@ -4372,7 +4372,7 @@ def _findprec(c_1, c_2, c_3, p): k += 1 def _compute_g(p, n, prec, terms): @@ -2722,8 +2686,8 @@ diff -up src/sage/rings/padics/padic_generic_element.pyx.orig src/sage/rings/pad This is an internal function, used by :meth:`polylog`. diff -up src/sage/rings/padics/padic_template_element.pxi.orig src/sage/rings/padics/padic_template_element.pxi ---- src/sage/rings/padics/padic_template_element.pxi.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/padic_template_element.pxi 2020-02-27 10:49:59.029864892 -0700 +--- src/sage/rings/padics/padic_template_element.pxi.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/padic_template_element.pxi 2020-07-06 16:13:17.449497409 -0600 @@ -612,7 +612,7 @@ cdef class pAdicTemplateElement(pAdicGen return trim_zeros(list(self.unit_part().expansion(lift_mode='smallest'))) @@ -2734,8 +2698,8 @@ diff -up src/sage/rings/padics/padic_template_element.pxi.orig src/sage/rings/pa This is the `p`-adic element `u` in the same ring so that this diff -up src/sage/rings/padics/padic_ZZ_pX_CA_element.pyx.orig src/sage/rings/padics/padic_ZZ_pX_CA_element.pyx ---- src/sage/rings/padics/padic_ZZ_pX_CA_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/padic_ZZ_pX_CA_element.pyx 2020-02-26 12:41:30.300414798 -0700 +--- src/sage/rings/padics/padic_ZZ_pX_CA_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/padic_ZZ_pX_CA_element.pyx 2020-07-06 16:13:17.450497409 -0600 @@ -1,4 +1,4 @@ -""" +r""" @@ -2761,8 +2725,8 @@ diff -up src/sage/rings/padics/padic_ZZ_pX_CA_element.pyx.orig src/sage/rings/pa the power basis `1, x, x^2, \ldots, x^{d-1}` for this extension field. Thus the *rows* of this matrix give the diff -up src/sage/rings/padics/padic_ZZ_pX_CR_element.pyx.orig src/sage/rings/padics/padic_ZZ_pX_CR_element.pyx ---- src/sage/rings/padics/padic_ZZ_pX_CR_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/padic_ZZ_pX_CR_element.pyx 2020-02-26 12:40:01.838037825 -0700 +--- src/sage/rings/padics/padic_ZZ_pX_CR_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/padic_ZZ_pX_CR_element.pyx 2020-07-06 16:13:17.452497409 -0600 @@ -1,4 +1,4 @@ -""" +r""" @@ -2797,8 +2761,8 @@ diff -up src/sage/rings/padics/padic_ZZ_pX_CR_element.pyx.orig src/sage/rings/pa the power basis `1, x, x^2, \ldots, x^{d-1}` for this extension field. Thus the *rows* of this matrix give the diff -up src/sage/rings/padics/padic_ZZ_pX_element.pyx.orig src/sage/rings/padics/padic_ZZ_pX_element.pyx ---- src/sage/rings/padics/padic_ZZ_pX_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/padic_ZZ_pX_element.pyx 2020-02-26 12:38:14.111019390 -0700 +--- src/sage/rings/padics/padic_ZZ_pX_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/padic_ZZ_pX_element.pyx 2020-07-06 16:13:17.453497409 -0600 @@ -344,7 +344,7 @@ cdef class pAdicZZpXElement(pAdicExtElem return ans @@ -2818,8 +2782,8 @@ diff -up src/sage/rings/padics/padic_ZZ_pX_element.pyx.orig src/sage/rings/padic If ``base`` is given then ``base`` must be a subfield of the diff -up src/sage/rings/padics/padic_ZZ_pX_FM_element.pyx.orig src/sage/rings/padics/padic_ZZ_pX_FM_element.pyx ---- src/sage/rings/padics/padic_ZZ_pX_FM_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/padic_ZZ_pX_FM_element.pyx 2020-02-26 12:43:41.091000479 -0700 +--- src/sage/rings/padics/padic_ZZ_pX_FM_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/padic_ZZ_pX_FM_element.pyx 2020-07-06 16:13:17.454497409 -0600 @@ -1,4 +1,4 @@ -""" +r""" @@ -2881,8 +2845,8 @@ diff -up src/sage/rings/padics/padic_ZZ_pX_FM_element.pyx.orig src/sage/rings/pa If `K` is given then `K` must be a subfield of the parent `L` of diff -up src/sage/rings/padics/pow_computer_ext.pyx.orig src/sage/rings/padics/pow_computer_ext.pyx ---- src/sage/rings/padics/pow_computer_ext.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/pow_computer_ext.pyx 2020-02-27 14:23:35.369082319 -0700 +--- src/sage/rings/padics/pow_computer_ext.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/pow_computer_ext.pyx 2020-07-06 16:13:17.456497408 -0600 @@ -1248,7 +1248,7 @@ cdef class PowComputer_ZZ_pX(PowComputer return 0 @@ -2893,8 +2857,8 @@ diff -up src/sage/rings/padics/pow_computer_ext.pyx.orig src/sage/rings/padics/p Designed for use with fixed modulus p-adic rings, in Eisenstein diff -up src/sage/rings/padics/qadic_flint_CA.pyx.orig src/sage/rings/padics/qadic_flint_CA.pyx ---- src/sage/rings/padics/qadic_flint_CA.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/qadic_flint_CA.pyx 2020-02-27 14:24:22.319239812 -0700 +--- src/sage/rings/padics/qadic_flint_CA.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/qadic_flint_CA.pyx 2020-07-06 16:13:17.456497408 -0600 @@ -27,7 +27,7 @@ cdef class qAdicCappedAbsoluteElement(CA norm = norm_unram @@ -2905,8 +2869,8 @@ diff -up src/sage/rings/padics/qadic_flint_CA.pyx.orig src/sage/rings/padics/qad the power basis `1, x, x^2, \ldots, x^{d-1}` for this extension field. Thus the *rows* of this matrix give the diff -up src/sage/rings/padics/qadic_flint_CR.pyx.orig src/sage/rings/padics/qadic_flint_CR.pyx ---- src/sage/rings/padics/qadic_flint_CR.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/qadic_flint_CR.pyx 2020-02-27 14:28:41.772583958 -0700 +--- src/sage/rings/padics/qadic_flint_CR.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/qadic_flint_CR.pyx 2020-07-06 16:13:17.457497409 -0600 @@ -27,7 +27,7 @@ cdef class qAdicCappedRelativeElement(CR norm = norm_unram @@ -2917,8 +2881,8 @@ diff -up src/sage/rings/padics/qadic_flint_CR.pyx.orig src/sage/rings/padics/qad the power basis `1, x, x^2, \ldots, x^{d-1}` for this extension field. Thus the *rows* of this matrix give the diff -up src/sage/rings/padics/qadic_flint_FM.pyx.orig src/sage/rings/padics/qadic_flint_FM.pyx ---- src/sage/rings/padics/qadic_flint_FM.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/qadic_flint_FM.pyx 2020-02-27 14:29:11.364052944 -0700 +--- src/sage/rings/padics/qadic_flint_FM.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/qadic_flint_FM.pyx 2020-07-06 16:13:17.457497409 -0600 @@ -27,7 +27,7 @@ cdef class qAdicFixedModElement(FMElemen norm = norm_unram @@ -2929,8 +2893,8 @@ diff -up src/sage/rings/padics/qadic_flint_FM.pyx.orig src/sage/rings/padics/qad the power basis `1, x, x^2, \ldots, x^{d-1}` for this extension field. Thus the *rows* of this matrix give the diff -up src/sage/rings/padics/qadic_flint_FP.pyx.orig src/sage/rings/padics/qadic_flint_FP.pyx ---- src/sage/rings/padics/qadic_flint_FP.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/padics/qadic_flint_FP.pyx 2020-02-27 14:25:28.424053567 -0700 +--- src/sage/rings/padics/qadic_flint_FP.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/padics/qadic_flint_FP.pyx 2020-07-06 16:13:17.458497408 -0600 @@ -27,7 +27,7 @@ cdef class qAdicFloatingPointElement(FPE norm = norm_unram @@ -2941,8 +2905,8 @@ diff -up src/sage/rings/padics/qadic_flint_FP.pyx.orig src/sage/rings/padics/qad the power basis `1, x, x^2, \ldots, x^{d-1}` for this extension field. Thus the *rows* of this matrix give the diff -up src/sage/rings/polynomial/cyclotomic.pyx.orig src/sage/rings/polynomial/cyclotomic.pyx ---- src/sage/rings/polynomial/cyclotomic.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/polynomial/cyclotomic.pyx 2020-02-27 14:43:20.186376927 -0700 +--- src/sage/rings/polynomial/cyclotomic.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/polynomial/cyclotomic.pyx 2020-07-06 16:13:17.459497408 -0600 @@ -193,7 +193,7 @@ def cyclotomic_coeffs(nn, sparse=None): return L @@ -2953,9 +2917,9 @@ diff -up src/sage/rings/polynomial/cyclotomic.pyx.orig src/sage/rings/polynomial INPUT: diff -up src/sage/rings/polynomial/laurent_polynomial.pyx.orig src/sage/rings/polynomial/laurent_polynomial.pyx ---- src/sage/rings/polynomial/laurent_polynomial.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/polynomial/laurent_polynomial.pyx 2020-02-27 14:42:24.611430268 -0700 -@@ -237,7 +237,7 @@ cdef class LaurentPolynomial(Commutative +--- src/sage/rings/polynomial/laurent_polynomial.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/polynomial/laurent_polynomial.pyx 2020-07-06 16:13:17.459497408 -0600 +@@ -238,7 +238,7 @@ cdef class LaurentPolynomial(Commutative cdef class LaurentPolynomial_univariate(LaurentPolynomial): @@ -2965,9 +2929,9 @@ diff -up src/sage/rings/polynomial/laurent_polynomial.pyx.orig src/sage/rings/po where `f` is a polynomial in `t`. diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sage/rings/polynomial/multi_polynomial_libsingular.pyx ---- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2020-02-26 12:49:19.224880230 -0700 -@@ -2075,7 +2075,7 @@ cdef class MPolynomial_libsingular(MPoly +--- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2020-07-06 16:15:53.639480160 -0600 +@@ -2036,7 +2036,7 @@ cdef class MPolynomial_libsingular(MPoly return new_MP(P, _p) def __call__(self, *x, **kwds): @@ -2976,7 +2940,7 @@ diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sag Evaluate this multi-variate polynomial at ``x``, where ``x`` is either the tuple of values to substitute in, or one can use functional notation ``f(a_0,a_1,a_2, \ldots)`` to evaluate -@@ -2344,7 +2344,7 @@ cdef class MPolynomial_libsingular(MPoly +@@ -2305,7 +2305,7 @@ cdef class MPolynomial_libsingular(MPoly return new_MP((left)._parent,_p) cpdef _div_(left, right_ringelement): @@ -2985,7 +2949,7 @@ diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sag Divide left by right EXAMPLES:: -@@ -2559,7 +2559,7 @@ cdef class MPolynomial_libsingular(MPoly +@@ -2520,7 +2520,7 @@ cdef class MPolynomial_libsingular(MPoly return char_to_str(s) def _latex_(self): @@ -2994,16 +2958,16 @@ diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sag Return a polynomial LaTeX representation of this polynomial. EXAMPLES:: -@@ -4500,7 +4500,7 @@ cdef class MPolynomial_libsingular(MPoly +@@ -4489,7 +4489,7 @@ cdef class MPolynomial_libsingular(MPoly return Sequence(l, check=False, immutable=True) def reduce(self,I): - """ + r""" - Return a remainder of this polynomial modulo the + Return a remainder of this polynomial modulo the polynomials in ``I``. - -@@ -5219,7 +5219,7 @@ cdef class MPolynomial_libsingular(MPoly + +@@ -5205,7 +5205,7 @@ cdef class MPolynomial_libsingular(MPoly return new_MP(self._parent,p) def integral(self, MPolynomial_libsingular var): @@ -3013,8 +2977,8 @@ diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sag variable. diff -up src/sage/rings/polynomial/multi_polynomial.pyx.orig src/sage/rings/polynomial/multi_polynomial.pyx ---- src/sage/rings/polynomial/multi_polynomial.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/polynomial/multi_polynomial.pyx 2020-02-27 11:00:30.479716969 -0700 +--- src/sage/rings/polynomial/multi_polynomial.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/polynomial/multi_polynomial.pyx 2020-07-06 16:13:17.462497408 -0600 @@ -209,7 +209,7 @@ cdef class MPolynomial(CommutativeRingEl return R([self]) @@ -3024,7 +2988,7 @@ diff -up src/sage/rings/polynomial/multi_polynomial.pyx.orig src/sage/rings/poly Return the nonzero coefficients of this polynomial in a list. The returned list is decreasingly ordered by the term ordering of ``self.parent()``, i.e. the list of coefficients matches the list -@@ -1224,7 +1224,7 @@ cdef class MPolynomial(CommutativeRingEl +@@ -1307,7 +1307,7 @@ cdef class MPolynomial(CommutativeRingEl return R(dict([(k,f(v)) for (k,v) in self.dict().items()])) def _norm_over_nonprime_finite_field(self): @@ -3034,8 +2998,8 @@ diff -up src/sage/rings/polynomial/multi_polynomial.pyx.orig src/sage/rings/poly `\GF{p**e}`, compute the norm of the polynomial down to `\GF{p}`, which is the product of the conjugates by the Frobenius action on diff -up src/sage/rings/polynomial/pbori.pyx.orig src/sage/rings/polynomial/pbori.pyx ---- src/sage/rings/polynomial/pbori.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/polynomial/pbori.pyx 2020-02-27 10:58:59.991311061 -0700 +--- src/sage/rings/polynomial/pbori.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/polynomial/pbori.pyx 2020-07-06 16:13:17.464497408 -0600 @@ -1362,7 +1362,7 @@ cdef class BooleanPolynomialRing(MPolyno return R @@ -3046,8 +3010,8 @@ diff -up src/sage/rings/polynomial/pbori.pyx.orig src/sage/rings/polynomial/pbor self.cover_ring()``, and `x_i` any element in the set of variables of this ring. diff -up src/sage/rings/polynomial/plural.pyx.orig src/sage/rings/polynomial/plural.pyx ---- src/sage/rings/polynomial/plural.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/polynomial/plural.pyx 2020-02-26 12:46:32.801795133 -0700 +--- src/sage/rings/polynomial/plural.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/polynomial/plural.pyx 2020-07-06 16:13:17.464497408 -0600 @@ -250,7 +250,7 @@ cdef class NCPolynomialRing_plural(Ring) """ @@ -3058,9 +3022,9 @@ diff -up src/sage/rings/polynomial/plural.pyx.orig src/sage/rings/polynomial/plu INPUT: diff -up src/sage/rings/polynomial/polynomial_element.pyx.orig src/sage/rings/polynomial/polynomial_element.pyx ---- src/sage/rings/polynomial/polynomial_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/polynomial/polynomial_element.pyx 2020-02-27 10:56:29.731958111 -0700 -@@ -2654,8 +2654,8 @@ cdef class Polynomial(CommutativeAlgebra +--- src/sage/rings/polynomial/polynomial_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/polynomial/polynomial_element.pyx 2020-07-06 16:13:17.467497407 -0600 +@@ -2657,8 +2657,8 @@ cdef class Polynomial(CommutativeAlgebra var = "" s += "%s %s" % (x, var) s = s.replace(" + -", " - ") @@ -3071,7 +3035,7 @@ diff -up src/sage/rings/polynomial/polynomial_element.pyx.orig src/sage/rings/po s = s.replace("|","") if s == " ": return "0" -@@ -2755,7 +2755,7 @@ cdef class Polynomial(CommutativeAlgebra +@@ -2758,7 +2758,7 @@ cdef class Polynomial(CommutativeAlgebra raise IndexError("polynomials are immutable") cpdef _floordiv_(self, right): @@ -3080,7 +3044,7 @@ diff -up src/sage/rings/polynomial/polynomial_element.pyx.orig src/sage/rings/po Quotient of division of self by other. This is denoted //. If self = quotient \* right + remainder, this function returns -@@ -4795,7 +4795,7 @@ cdef class Polynomial(CommutativeAlgebra +@@ -4832,7 +4832,7 @@ cdef class Polynomial(CommutativeAlgebra return ~(q.leading_coefficient())*q # make monic (~ is inverse in python) def is_primitive(self, n=None, n_prime_divs=None): @@ -3089,7 +3053,7 @@ diff -up src/sage/rings/polynomial/polynomial_element.pyx.orig src/sage/rings/po Return ``True`` if the polynomial is primitive. The semantics of "primitive" depend on the polynomial coefficients. -@@ -6385,8 +6385,8 @@ cdef class Polynomial(CommutativeAlgebra +@@ -6422,8 +6422,8 @@ cdef class Polynomial(CommutativeAlgebra where the roots `a` and `b` are to be considered in the algebraic closure of the fraction field of the coefficients and counted with multiplicities. If the polynomials are not monic this quantity is @@ -3101,8 +3065,8 @@ diff -up src/sage/rings/polynomial/polynomial_element.pyx.orig src/sage/rings/po INPUT: diff -up src/sage/rings/polynomial/polynomial_gf2x.pyx.orig src/sage/rings/polynomial/polynomial_gf2x.pyx ---- src/sage/rings/polynomial/polynomial_gf2x.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/polynomial/polynomial_gf2x.pyx 2020-02-27 14:35:51.159778076 -0700 +--- src/sage/rings/polynomial/polynomial_gf2x.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/polynomial/polynomial_gf2x.pyx 2020-07-06 16:13:17.467497407 -0600 @@ -101,7 +101,7 @@ cdef class Polynomial_GF2X(Polynomial_te return pari(self.list()).Polrev(variable) * pari(1).Mod(2) @@ -3113,12 +3077,12 @@ diff -up src/sage/rings/polynomial/polynomial_gf2x.pyx.orig src/sage/rings/polyn Both implementations use Brent-Kung's Algorithm 2.1 (*Fast Algorithms diff -up src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx.orig src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx ---- src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx 2020-02-27 14:40:21.060772018 -0700 +--- src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx 2020-07-06 16:17:41.007468317 -0600 @@ -1,4 +1,4 @@ -""" +r""" - Dense univariate polynomials over `\ZZ`, implemented using FLINT. + Dense univariate polynomials over `\ZZ`, implemented using FLINT AUTHORS: @@ -1350,7 +1350,7 @@ cdef class Polynomial_integer_dense_flin @@ -3131,26 +3095,26 @@ diff -up src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx.orig src/s and an integer `d` such that diff -up src/sage/rings/polynomial/polynomial_modn_dense_ntl.pyx.orig src/sage/rings/polynomial/polynomial_modn_dense_ntl.pyx ---- src/sage/rings/polynomial/polynomial_modn_dense_ntl.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/polynomial/polynomial_modn_dense_ntl.pyx 2020-02-27 14:36:40.134885830 -0700 +--- src/sage/rings/polynomial/polynomial_modn_dense_ntl.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/polynomial/polynomial_modn_dense_ntl.pyx 2020-07-07 08:59:06.556863458 -0600 @@ -1,4 +1,4 @@ -""" +r""" - Dense univariate polynomials over `\ZZ/n\ZZ`, implemented using NTL. + Dense univariate polynomials over `\ZZ/n\ZZ`, implemented using NTL This implementation is generally slower than the FLINT implementation in diff -up src/sage/rings/polynomial/polynomial_zmod_flint.pyx.orig src/sage/rings/polynomial/polynomial_zmod_flint.pyx ---- src/sage/rings/polynomial/polynomial_zmod_flint.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/polynomial/polynomial_zmod_flint.pyx 2020-02-27 14:40:56.729095964 -0700 +--- src/sage/rings/polynomial/polynomial_zmod_flint.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/polynomial/polynomial_zmod_flint.pyx 2020-07-07 08:59:06.557863457 -0600 @@ -1,4 +1,4 @@ -""" +r""" - Dense univariate polynomials over `\ZZ/n\ZZ`, implemented using FLINT. + Dense univariate polynomials over `\ZZ/n\ZZ`, implemented using FLINT This module gives a fast implementation of `(\ZZ/n\ZZ)[x]` whenever `n` is at diff -up src/sage/rings/polynomial/real_roots.pyx.orig src/sage/rings/polynomial/real_roots.pyx ---- src/sage/rings/polynomial/real_roots.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/polynomial/real_roots.pyx 2020-02-27 14:38:08.079283628 -0700 +--- src/sage/rings/polynomial/real_roots.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/polynomial/real_roots.pyx 2020-07-06 16:13:17.470497407 -0600 @@ -1252,7 +1252,7 @@ def de_casteljau_intvec(Vector_integer_d cdef double half_ulp = ldexp(1.0 * 65/64, -54) @@ -3170,9 +3134,9 @@ diff -up src/sage/rings/polynomial/real_roots.pyx.orig src/sage/rings/polynomial on its largest real root, using the first-\lambda algorithm from "Implementations of a New Theorem for Computing Bounds for Positive diff -up src/sage/rings/polynomial/skew_polynomial_element.pyx.orig src/sage/rings/polynomial/skew_polynomial_element.pyx ---- src/sage/rings/polynomial/skew_polynomial_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/polynomial/skew_polynomial_element.pyx 2020-02-27 11:01:57.406185634 -0700 -@@ -1649,8 +1649,8 @@ cdef class SkewPolynomial(AlgebraElement +--- src/sage/rings/polynomial/skew_polynomial_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/polynomial/skew_polynomial_element.pyx 2020-07-06 16:13:17.470497407 -0600 +@@ -1650,8 +1650,8 @@ cdef class SkewPolynomial(AlgebraElement var = "" s += "%s %s"%(x,var) s = s.replace(" + -", " - ") @@ -3184,29 +3148,17 @@ diff -up src/sage/rings/polynomial/skew_polynomial_element.pyx.orig src/sage/rin if s == " ": return "0" diff -up src/sage/rings/polynomial/symmetric_reduction.pyx.orig src/sage/rings/polynomial/symmetric_reduction.pyx ---- src/sage/rings/polynomial/symmetric_reduction.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/polynomial/symmetric_reduction.pyx 2020-02-27 10:57:19.593079736 -0700 +--- src/sage/rings/polynomial/symmetric_reduction.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/polynomial/symmetric_reduction.pyx 2020-07-06 16:13:17.471497407 -0600 @@ -1,4 +1,4 @@ -""" +r""" Symmetric Reduction of Infinite Polynomials :class:`~sage.rings.polynomial.symmetric_reduction.SymmetricReductionStrategy` -diff -up src/sage/rings/quotient_ring.py.orig src/sage/rings/quotient_ring.py ---- src/sage/rings/quotient_ring.py.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/quotient_ring.py 2020-02-26 12:35:50.055692397 -0700 -@@ -1298,7 +1298,7 @@ class QuotientRing_generic(QuotientRing_ - QuotientRing_nc.__init__(self, R, I, names, category=category) - - def _macaulay2_init_(self, macaulay2=None): -- """ -+ r""" - EXAMPLES: - - Quotients of multivariate polynomial rings over `\QQ`, `\ZZ` and diff -up src/sage/rings/rational.pyx.orig src/sage/rings/rational.pyx ---- src/sage/rings/rational.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/rational.pyx 2020-02-26 12:26:09.151654850 -0700 +--- src/sage/rings/rational.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/rational.pyx 2020-07-06 16:19:17.718457638 -0600 @@ -1719,7 +1719,7 @@ cdef class Rational(sage.structure.eleme return self.numer().squarefree_part() * self.denom().squarefree_part() @@ -3217,9 +3169,9 @@ diff -up src/sage/rings/rational.pyx.orig src/sage/rings/rational.pyx `R` when ``p = infinity``). diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx ---- src/sage/rings/real_arb.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/real_arb.pyx 2020-02-27 10:39:29.670017427 -0700 -@@ -234,7 +234,7 @@ from sage.structure.unique_representatio +--- src/sage/rings/real_arb.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/real_arb.pyx 2020-07-06 16:19:17.718457638 -0600 +@@ -235,7 +235,7 @@ from sage.structure.unique_representatio from sage.cpython.string cimport char_to_str, str_to_bytes cdef void mpfi_to_arb(arb_t target, const mpfi_t source, const long precision): @@ -3228,7 +3180,7 @@ diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx Convert an MPFI interval to an Arb ball. INPUT: -@@ -278,7 +278,7 @@ cdef void mpfi_to_arb(arb_t target, cons +@@ -279,7 +279,7 @@ cdef void mpfi_to_arb(arb_t target, cons mpfr_clear(right) cdef int arb_to_mpfi(mpfi_t target, arb_t source, const long precision) except -1: @@ -3237,7 +3189,7 @@ diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx Convert an Arb ball to an MPFI interval. INPUT: -@@ -771,7 +771,7 @@ class RealBallField(UniqueRepresentation +@@ -772,7 +772,7 @@ class RealBallField(UniqueRepresentation # Ball functions of non-ball arguments def sinpi(self, x): @@ -3246,7 +3198,7 @@ diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx Return a ball enclosing `\sin(\pi x)`. This works even if ``x`` itself is not a ball, and may be faster or -@@ -817,7 +817,7 @@ class RealBallField(UniqueRepresentation +@@ -818,7 +818,7 @@ class RealBallField(UniqueRepresentation return res def cospi(self, x): @@ -3255,7 +3207,7 @@ diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx Return a ball enclosing `\cos(\pi x)`. This works even if ``x`` itself is not a ball, and may be faster or -@@ -2912,7 +2912,7 @@ cdef class RealBall(RingElement): +@@ -2913,7 +2913,7 @@ cdef class RealBall(RingElement): return res def sqrt1pm1(self): @@ -3264,7 +3216,7 @@ diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx Return `\sqrt{1+\mathrm{self}}-1`, computed accurately when ``self`` is close to zero. -@@ -3493,7 +3493,7 @@ cdef class RealBall(RingElement): +@@ -3494,7 +3494,7 @@ cdef class RealBall(RingElement): return res def rising_factorial(self, n): @@ -3273,7 +3225,7 @@ diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx Return the ``n``-th rising factorial of this ball. The `n`-th rising factorial of `x` is equal to `x (x+1) \cdots (x+n-1)`. -@@ -3595,7 +3595,7 @@ cdef class RealBall(RingElement): +@@ -3596,7 +3596,7 @@ cdef class RealBall(RingElement): return res def polylog(self, s): @@ -3283,8 +3235,8 @@ diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx EXAMPLES:: diff -up src/sage/rings/real_double.pyx.orig src/sage/rings/real_double.pyx ---- src/sage/rings/real_double.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/real_double.pyx 2020-02-27 10:18:35.746129544 -0700 +--- src/sage/rings/real_double.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/real_double.pyx 2020-07-06 16:19:17.719457638 -0600 @@ -2079,7 +2079,7 @@ cdef class RealDoubleElement(FieldElemen return a @@ -3304,8 +3256,8 @@ diff -up src/sage/rings/real_double.pyx.orig src/sage/rings/real_double.pyx EXAMPLES:: diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx ---- src/sage/rings/real_mpfi.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/real_mpfi.pyx 2020-02-27 10:14:36.381371499 -0700 +--- src/sage/rings/real_mpfi.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/real_mpfi.pyx 2020-07-06 16:19:17.719457638 -0600 @@ -1307,7 +1307,7 @@ cdef class RealIntervalFieldElement(Ring return self.str(10) @@ -3315,7 +3267,7 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx Return a latex representation of ``self``. EXAMPLES:: -@@ -4406,7 +4406,7 @@ cdef class RealIntervalFieldElement(Ring +@@ -4407,7 +4407,7 @@ cdef class RealIntervalFieldElement(Ring return x def exp2(self): @@ -3325,9 +3277,9 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx EXAMPLES:: diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx ---- src/sage/rings/real_mpfr.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/real_mpfr.pyx 2020-02-27 10:16:40.188177426 -0700 -@@ -3896,7 +3896,7 @@ cdef class RealNumber(sage.structure.ele +--- src/sage/rings/real_mpfr.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/real_mpfr.pyx 2020-07-06 16:19:17.720457638 -0600 +@@ -3915,7 +3915,7 @@ cdef class RealNumber(sage.structure.ele return mpfr_inf_p(self.value) and mpfr_sgn(self.value) < 0 def is_infinity(self): @@ -3337,8 +3289,8 @@ diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx EXAMPLES:: diff -up src/sage/rings/semirings/tropical_semiring.pyx.orig src/sage/rings/semirings/tropical_semiring.pyx ---- src/sage/rings/semirings/tropical_semiring.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/semirings/tropical_semiring.pyx 2020-02-27 11:04:01.364022751 -0700 +--- src/sage/rings/semirings/tropical_semiring.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/semirings/tropical_semiring.pyx 2020-07-06 16:19:17.721457638 -0600 @@ -99,7 +99,7 @@ cdef class TropicalSemiringElement(Eleme return repr(self._val) @@ -3376,9 +3328,9 @@ diff -up src/sage/rings/semirings/tropical_semiring.pyx.orig src/sage/rings/semi EXAMPLES:: diff -up src/sage/rings/tate_algebra_element.pyx.orig src/sage/rings/tate_algebra_element.pyx ---- src/sage/rings/tate_algebra_element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/rings/tate_algebra_element.pyx 2020-02-27 14:14:01.439381378 -0700 -@@ -1521,7 +1521,7 @@ cdef class TateAlgebraElement(Commutativ +--- src/sage/rings/tate_algebra_element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/tate_algebra_element.pyx 2020-07-06 16:19:17.721457638 -0600 +@@ -1522,7 +1522,7 @@ cdef class TateAlgebraElement(Commutativ return True def __pow__(self, exponent, modulus): @@ -3387,7 +3339,7 @@ diff -up src/sage/rings/tate_algebra_element.pyx.orig src/sage/rings/tate_algebr Return this element raised to the power ``exponent``. INPUT: -@@ -2433,7 +2433,7 @@ cdef class TateAlgebraElement(Commutativ +@@ -2507,7 +2507,7 @@ cdef class TateAlgebraElement(Commutativ return self._prec - self.valuation() def log(self, prec=None): @@ -3396,7 +3348,7 @@ diff -up src/sage/rings/tate_algebra_element.pyx.orig src/sage/rings/tate_algebr Return the logarithm of this series. INPUT: -@@ -2590,7 +2590,7 @@ cdef class TateAlgebraElement(Commutativ +@@ -2664,7 +2664,7 @@ cdef class TateAlgebraElement(Commutativ return total.add_bigoh(aprec) def exp(self, prec=None): @@ -3405,7 +3357,7 @@ diff -up src/sage/rings/tate_algebra_element.pyx.orig src/sage/rings/tate_algebr Return the exponential of this series. INPUT: -@@ -3343,7 +3343,7 @@ cdef class TateAlgebraElement(Commutativ +@@ -3417,7 +3417,7 @@ cdef class TateAlgebraElement(Commutativ @coerce_binop def Spoly(self, other): @@ -3415,8 +3367,8 @@ diff -up src/sage/rings/tate_algebra_element.pyx.orig src/sage/rings/tate_algebr INPUT: diff -up src/sage/structure/coerce_maps.pyx.orig src/sage/structure/coerce_maps.pyx ---- src/sage/structure/coerce_maps.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/structure/coerce_maps.pyx 2020-02-27 11:52:18.843646230 -0700 +--- src/sage/structure/coerce_maps.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/structure/coerce_maps.pyx 2020-07-06 16:19:17.721457638 -0600 @@ -312,7 +312,7 @@ cdef class NamedConvertMap(Map): cdef class CallableConvertMap(Map): @@ -3427,18 +3379,9 @@ diff -up src/sage/structure/coerce_maps.pyx.orig src/sage/structure/coerce_maps. This is especially useful to create maps from bound methods. diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx ---- src/sage/symbolic/expression.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/symbolic/expression.pyx 2020-02-27 09:30:14.669819391 -0700 -@@ -610,7 +610,7 @@ cdef class Expression(CommutativeRingEle - return new_Expression_from_GEx(self._parent, self._gobj) - - def _repr_(self): -- """ -+ r""" - Return string representation of this symbolic expression. - - EXAMPLES:: -@@ -3632,7 +3632,7 @@ cdef class Expression(CommutativeRingEle +--- src/sage/symbolic/expression.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/symbolic/expression.pyx 2020-07-06 16:22:36.515435688 -0600 +@@ -3675,7 +3675,7 @@ cdef class Expression(CommutativeRingEle return 1/self cpdef int _cmp_(left, right) except -2: @@ -3447,16 +3390,7 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx Compare self and right, returning -1, 0, or 1, depending on if self < right, self == right, or self > right, respectively. -@@ -3868,7 +3868,7 @@ cdef class Expression(CommutativeRingEle - return print_order_compare_mul(left._gobj, right._gobj) - - cpdef _pow_(self, other): -- """ -+ r""" - Return ``self`` raised to the power ``other``. - - OUTPUT: a symbolic expression -@@ -4743,7 +4743,7 @@ cdef class Expression(CommutativeRingEle +@@ -4788,7 +4788,7 @@ cdef class Expression(CommutativeRingEle expand_rational = rational_expand = expand def expand_trig(self, full=False, half_angles=False, plus=True, times=True): @@ -3465,7 +3399,7 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx Expand trigonometric and hyperbolic functions of sums of angles and of multiple angles occurring in self. For best results, self should already be expanded. -@@ -7263,7 +7263,7 @@ cdef class Expression(CommutativeRingEle +@@ -7308,7 +7308,7 @@ cdef class Expression(CommutativeRingEle return new_Expression_from_GEx(self._parent, x) def gosper_term(self, n): @@ -3475,8 +3409,8 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx Suppose ``f``=``self`` is a hypergeometric term such that: diff -up src/sage/symbolic/function.pyx.orig src/sage/symbolic/function.pyx ---- src/sage/symbolic/function.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/symbolic/function.pyx 2020-02-27 15:06:07.634817327 -0700 +--- src/sage/symbolic/function.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/symbolic/function.pyx 2020-07-06 16:20:02.591452688 -0600 @@ -1565,7 +1565,7 @@ cdef class DeprecatedSFunction(SymbolicF evalf_params_first, pickled_functions)) @@ -3487,8 +3421,8 @@ diff -up src/sage/symbolic/function.pyx.orig src/sage/symbolic/function.pyx sage: from sage.symbolic.function import DeprecatedSFunction diff -up src/sage/symbolic/ring.pyx.orig src/sage/symbolic/ring.pyx ---- src/sage/symbolic/ring.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/symbolic/ring.pyx 2020-02-27 15:08:09.648492686 -0700 +--- src/sage/symbolic/ring.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/symbolic/ring.pyx 2020-07-06 16:20:02.592452688 -0600 @@ -86,7 +86,7 @@ cdef class SymbolicRing(CommutativeRing) return "Symbolic Ring" @@ -3498,7 +3432,7 @@ diff -up src/sage/symbolic/ring.pyx.orig src/sage/symbolic/ring.pyx Return latex representation of the symbolic ring. EXAMPLES:: -@@ -476,7 +476,7 @@ cdef class SymbolicRing(CommutativeRing) +@@ -473,7 +473,7 @@ cdef class SymbolicRing(CommutativeRing) return new_Expression_from_GEx(self, exp) def wild(self, unsigned int n=0): @@ -3507,7 +3441,7 @@ diff -up src/sage/symbolic/ring.pyx.orig src/sage/symbolic/ring.pyx Return the n-th wild-card for pattern matching and substitution. INPUT: -@@ -728,7 +728,7 @@ cdef class SymbolicRing(CommutativeRing) +@@ -725,7 +725,7 @@ cdef class SymbolicRing(CommutativeRing) return e def var(self, name, latex_name=None, n=None, domain=None): @@ -3516,18 +3450,9 @@ diff -up src/sage/symbolic/ring.pyx.orig src/sage/symbolic/ring.pyx Return a symbolic variable as an element of the symbolic ring. INPUT: -@@ -913,7 +913,7 @@ cdef class SymbolicRing(CommutativeRing) - return ccrepr(x._gobj) - - def _latex_element_(self, Expression x): -- """ -+ r""" - Returns the standard LaTeX version of the expression *x*. - - EXAMPLES:: diff -up src/sage/symbolic/series.pyx.orig src/sage/symbolic/series.pyx ---- src/sage/symbolic/series.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/symbolic/series.pyx 2020-02-27 15:06:54.249929204 -0700 +--- src/sage/symbolic/series.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/symbolic/series.pyx 2020-07-06 16:20:02.593452688 -0600 @@ -1,4 +1,4 @@ -""" +r""" diff --git a/sagemath-extensions.patch b/sagemath-extensions.patch index 22f1416..2f53d10 100644 --- a/sagemath-extensions.patch +++ b/sagemath-extensions.patch @@ -1,7 +1,7 @@ diff -up src/module_list.py.orig src/module_list.py ---- src/module_list.py.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/module_list.py 2020-02-25 13:38:22.980350735 -0700 -@@ -389,16 +389,16 @@ ext_modules = [ +--- src/module_list.py.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/module_list.py 2020-07-06 16:38:17.108266850 -0600 +@@ -401,16 +401,16 @@ ext_modules = [ Extension('sage.graphs.matchpoly', sources = ['sage/graphs/matchpoly.pyx']), @@ -23,7 +23,7 @@ diff -up src/module_list.py.orig src/module_list.py Extension('sage.graphs.planarity', sources = ['sage/graphs/planarity.pyx'], -@@ -417,10 +417,9 @@ ext_modules = [ +@@ -429,10 +429,9 @@ ext_modules = [ Extension('sage.graphs.graph_decompositions.cutwidth', sources = ['sage/graphs/graph_decompositions/cutwidth.pyx']), @@ -34,9 +34,9 @@ diff -up src/module_list.py.orig src/module_list.py - package = 'tdlib'), + language="c++"), - Extension('sage.graphs.spanning_tree', - sources = ['sage/graphs/spanning_tree.pyx']), -@@ -479,9 +478,9 @@ ext_modules = [ + Extension('sage.graphs.graph_decompositions.clique_separators', + sources = ['sage/graphs/graph_decompositions/clique_separators.pyx']), +@@ -494,9 +493,9 @@ ext_modules = [ ## ################################ @@ -48,7 +48,7 @@ diff -up src/module_list.py.orig src/module_list.py Extension('*', ['sage/interfaces/*.pyx']), -@@ -500,21 +499,19 @@ ext_modules = [ +@@ -515,21 +514,19 @@ ext_modules = [ ## ################################ @@ -75,7 +75,7 @@ diff -up src/module_list.py.orig src/module_list.py Extension('sage.libs.flint.flint', sources = ["sage/libs/flint/flint.pyx"], -@@ -543,13 +540,14 @@ ext_modules = [ +@@ -558,13 +555,14 @@ ext_modules = [ sources = ["sage/libs/homfly.pyx"], libraries = ["homfly", "gc"]), @@ -93,7 +93,7 @@ diff -up src/module_list.py.orig src/module_list.py Extension('sage.libs.lcalc.lcalc_Lfunction', sources = ['sage/libs/lcalc/lcalc_Lfunction.pyx'], -@@ -566,10 +564,9 @@ ext_modules = [ +@@ -581,10 +579,9 @@ ext_modules = [ Extension('sage.libs.lrcalc.lrcalc', sources = ["sage/libs/lrcalc/lrcalc.pyx"]), @@ -106,7 +106,7 @@ diff -up src/module_list.py.orig src/module_list.py Extension('*', ['sage/libs/pari/*.pyx']), -@@ -815,7 +812,8 @@ ext_modules = [ +@@ -830,7 +827,8 @@ ext_modules = [ include_dirs = cblas_include_dirs), Extension('sage.matrix.matrix_integer_sparse', @@ -116,7 +116,7 @@ diff -up src/module_list.py.orig src/module_list.py Extension('sage.matrix.matrix_mod2_dense', sources = ['sage/matrix/matrix_mod2_dense.pyx'], -@@ -834,20 +832,21 @@ ext_modules = [ +@@ -849,20 +847,21 @@ ext_modules = [ Extension('sage.matrix.matrix_modn_dense_float', sources = ['sage/matrix/matrix_modn_dense_float.pyx'], language="c++", @@ -141,7 +141,7 @@ diff -up src/module_list.py.orig src/module_list.py Extension('sage.matrix.matrix_mpolynomial_dense', sources = ['sage/matrix/matrix_mpolynomial_dense.pyx']), -@@ -877,10 +876,9 @@ ext_modules = [ +@@ -892,10 +891,9 @@ ext_modules = [ Extension('sage.matrix.matrix_window', sources = ['sage/matrix/matrix_window.pyx']), @@ -154,42 +154,3 @@ diff -up src/module_list.py.orig src/module_list.py Extension('sage.matrix.misc', sources = ['sage/matrix/misc.pyx']), -@@ -1056,26 +1054,25 @@ ext_modules = [ - Extension("sage.numerical.backends.interactivelp_backend", - ["sage/numerical/backends/interactivelp_backend.pyx"]), - -- OptionalExtension("sage.numerical.backends.gurobi_backend", -- ["sage/numerical/backends/gurobi_backend.pyx"], -- libraries = ["gurobi"], -- condition = os.path.isfile(SAGE_INC + "/gurobi_c.h") and -- os.path.isfile(SAGE_LOCAL + "/lib/libgurobi.so")), -+# OptionalExtension("sage.numerical.backends.gurobi_backend", -+# ["sage/numerical/backends/gurobi_backend.pyx"], -+# libraries = ["gurobi"], -+# condition = os.path.isfile(SAGE_INC + "/gurobi_c.h") and -+# os.path.isfile(SAGE_LOCAL + "/lib/libgurobi.so")), - -- OptionalExtension("sage.numerical.backends.cplex_backend", -- ["sage/numerical/backends/cplex_backend.pyx"], -- libraries = ["cplex"], -- condition = os.path.isfile(SAGE_INC + "/cplex.h") and -- os.path.isfile(SAGE_LOCAL + "/lib/libcplex.a")), -+# OptionalExtension("sage.numerical.backends.cplex_backend", -+# ["sage/numerical/backends/cplex_backend.pyx"], -+# libraries = ["cplex"], -+# condition = os.path.isfile(SAGE_INC + "/cplex.h") and -+# os.path.isfile(SAGE_LOCAL + "/lib/libcplex.a")), - -- OptionalExtension("sage.numerical.backends.coin_backend", -+ Extension("sage.numerical.backends.coin_backend", - ["sage/numerical/backends/coin_backend.pyx"], - language = 'c++', - libraries = ["Cbc", "CbcSolver", "Cgl", "Clp", "CoinUtils", - "OsiCbc", "OsiClp", "Osi"] + lapack_libs, - library_dirs = lapack_library_dirs, -- include_dirs = lapack_include_dirs, -- package = 'cbc'), -+ include_dirs = lapack_include_dirs), - - ################################ - ## diff --git a/sagemath-gmp.patch b/sagemath-gmp.patch deleted file mode 100644 index 31dea02..0000000 --- a/sagemath-gmp.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -up src/sage/modular/arithgroup/farey.cpp.orig src/sage/modular/arithgroup/farey.cpp ---- src/sage/modular/arithgroup/farey.cpp.orig 2017-11-08 06:03:07.383885084 -0500 -+++ src/sage/modular/arithgroup/farey.cpp 2017-11-08 06:03:18.271885501 -0500 -@@ -136,6 +136,7 @@ operator*(const SL2Z& M, const vector") @@ -11,14 +11,14 @@ diff -up src/bin/sage-maxima.lisp.orig src/bin/sage-maxima.lisp + *standard-input* (open "/dev/stdin" :direction :input) + *standard-output* (open "/dev/stdout" :direction :output)) diff -up src/sage/interfaces/maxima.py.orig src/sage/interfaces/maxima.py ---- src/sage/interfaces/maxima.py.orig 2018-12-22 16:37:08.000000000 -0700 -+++ src/sage/interfaces/maxima.py 2019-01-16 09:43:18.552338143 -0700 +--- src/sage/interfaces/maxima.py.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/interfaces/maxima.py 2020-07-06 16:44:55.895165348 -0600 @@ -546,7 +546,7 @@ class Maxima(MaximaAbstract, Expect): Expect.__init__(self, name = 'maxima', prompt = r'\(\%i[0-9]+\) ', -- command = 'maxima -p "{0}"'.format(STARTUP), -+ command = 'maxima --disable-readline -p "{0}"'.format(STARTUP), +- command = '"{0}" -p "{1}"'.format(MAXIMA, STARTUP), ++ command = '"{0}" --disable-readline -p "{1}"'.format(MAXIMA, STARTUP), env = {'TMPDIR': str(ECL_TMP)}, script_subdirectory = script_subdirectory, restart_on_ctrlc = False, diff --git a/sagemath-nauty.patch b/sagemath-nauty.patch deleted file mode 100644 index bf4eaf1..0000000 --- a/sagemath-nauty.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up src/sage/graphs/graph_generators.py.orig src/sage/graphs/graph_generators.py ---- src/sage/graphs/graph_generators.py.orig 2019-06-26 14:41:04.000000000 -0600 -+++ src/sage/graphs/graph_generators.py 2019-06-27 11:37:46.100759559 -0600 -@@ -907,7 +907,7 @@ class GraphGenerators(): - else: - enc_kwargs = {'encoding': 'latin-1'} - -- sp = subprocess.Popen("geng {0}".format(options), shell=True, -+ sp = subprocess.Popen("nauty-geng {0}".format(options), shell=True, - stdin=subprocess.PIPE, stdout=subprocess.PIPE, - stderr=subprocess.PIPE, close_fds=True, - **enc_kwargs) diff --git a/sagemath-python3.patch b/sagemath-python3.patch index 563fca6..d1f2564 100644 --- a/sagemath-python3.patch +++ b/sagemath-python3.patch @@ -112,10 +112,10 @@ diff -up build/pkgs/sagetex/src/sagetexparse.py.orig build/pkgs/sagetex/src/sage self.result += t.code[1:-1] + '\n\n' diff -up src/sage/combinat/finite_state_machine.py.orig src/sage/combinat/finite_state_machine.py ---- src/sage/combinat/finite_state_machine.py.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/combinat/finite_state_machine.py 2020-02-25 13:42:46.676646848 -0700 -@@ -936,7 +936,7 @@ from six.moves import range, zip_longest - from six import itervalues +--- src/sage/combinat/finite_state_machine.py.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/combinat/finite_state_machine.py 2020-07-06 16:47:19.198130202 -0600 +@@ -935,7 +935,7 @@ import six + from six.moves import range, zip_longest, zip from IPython.lib.pretty import pretty -import collections @@ -123,7 +123,7 @@ diff -up src/sage/combinat/finite_state_machine.py.orig src/sage/combinat/finite import itertools from copy import copy, deepcopy -@@ -14161,7 +14161,7 @@ def is_FSMProcessIterator(PI): +@@ -14159,7 +14159,7 @@ def is_FSMProcessIterator(PI): class FSMProcessIterator(SageObject, @@ -132,21 +132,47 @@ diff -up src/sage/combinat/finite_state_machine.py.orig src/sage/combinat/finite """ This class takes an input, feeds it into a finite state machine (automaton or transducer, in particular), tests whether this was -diff -up src/sage/combinat/root_system/branching_rules.py.orig src/sage/combinat/root_system/branching_rules.py ---- src/sage/combinat/root_system/branching_rules.py.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/combinat/root_system/branching_rules.py 2020-02-25 13:42:46.678646812 -0700 -@@ -1750,7 +1750,7 @@ def branching_rule(Rtype, Stype, rule="d - elif rule == "tensor" or rule == "tensor-debug": - if not Stype.is_compound(): - raise ValueError("Tensor product requires more than one factor") -- if len(stypes) is not 2: -+ if len(stypes) != 2: - raise ValueError("Not implemented") - if Rtype[0] == 'A': - nr = Rtype[1]+1 +diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c +--- src/sage/cpython/debugimpl.c.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/cpython/debugimpl.c 2020-07-07 13:56:17.121624915 -0600 +@@ -155,6 +155,7 @@ static void _type_debug(PyTypeObject* tp + printf(" tp_basicsize: %ld\n", (long)tp->tp_basicsize); + printf(" tp_itemsize: %ld\n", (long)tp->tp_itemsize); + printf(" tp_dictoffset: %ld\n", (long)tp->tp_dictoffset); ++ printf(" tp_vectorcall_offset: %ld\n", (long)tp->tp_vectorcall_offset); + if HAVE_WEAKREFS(tp) + { + printf(" tp_weaklistoffset: %ld\n", (long)tp->tp_weaklistoffset); +@@ -185,7 +186,6 @@ static void _type_debug(PyTypeObject* tp + attr_pointer(tp_free); + + attr_pointer_meth(tp_repr, "__repr__"); +- attr_pointer(tp_print); + attr_pointer_meth(tp_hash, "__hash__"); + attr_pointer_meth(tp_call, "__call__"); + attr_pointer_meth(tp_str, "__str__"); +diff -up src/sage/cpython/debug.pyx.orig src/sage/cpython/debug.pyx +--- src/sage/cpython/debug.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/cpython/debug.pyx 2020-07-07 13:57:49.169641697 -0600 +@@ -232,6 +232,7 @@ def type_debug(cls): + tp_basicsize: 16 + tp_itemsize: 0 + tp_dictoffset: 0 ++ tp_vectorcall_offset: 0 + tp_weaklistoffset: 0 + tp_base (__base__): NULL + tp_bases (__bases__): tuple: +@@ -259,7 +260,6 @@ def type_debug(cls): + tp_dealloc (__dealloc__): 0x7fc57d757010 + tp_free: PyObject_Del + tp_repr (__repr__): 0x7fc57d75b990 +- tp_print: NULL + tp_hash (__hash__): _Py_HashPointer + tp_call (__call__): NULL + tp_str (__str__): 0x7fc57d757020 diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/geometry/triangulation/point_configuration.py ---- src/sage/geometry/triangulation/point_configuration.py.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/geometry/triangulation/point_configuration.py 2020-02-26 14:41:58.109624057 -0700 +--- src/sage/geometry/triangulation/point_configuration.py.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/geometry/triangulation/point_configuration.py 2020-07-06 16:48:01.176121036 -0600 @@ -619,11 +619,11 @@ class PointConfiguration(UniqueRepresent ['{{0,1,2,4},{1,2,3,4}}'] """ @@ -162,8 +188,8 @@ diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/ge if verbose: print("#### TOPCOM input ####") diff -up src/sage/graphs/graph_latex.py.orig src/sage/graphs/graph_latex.py ---- src/sage/graphs/graph_latex.py.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/graphs/graph_latex.py 2020-02-25 13:42:46.679646794 -0700 +--- src/sage/graphs/graph_latex.py.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/graphs/graph_latex.py 2020-07-06 16:48:01.177121036 -0600 @@ -1156,7 +1156,7 @@ class GraphLatex(SageObject): # elif name in color_dicts: @@ -223,8 +249,8 @@ diff -up src/sage/graphs/graph_latex.py.orig src/sage/graphs/graph_latex.py for key, p in value.items(): if not((isinstance(p, tuple)) and (len(p) == 2) and (p[0] >= 0) and (p[1] in compass_points)): diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py ---- src/sage/interfaces/frobby.py.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/interfaces/frobby.py 2020-02-26 14:41:07.262562710 -0700 +--- src/sage/interfaces/frobby.py.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/interfaces/frobby.py 2020-07-06 16:48:01.178121036 -0600 @@ -79,7 +79,7 @@ class Frobby: print("Frobby command: ", repr(command)) print("Frobby input:\n", input) @@ -235,8 +261,8 @@ diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py frinput = str_to_bytes(input) else: diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py ---- src/sage/interfaces/gfan.py.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/interfaces/gfan.py 2020-02-25 13:42:46.679646794 -0700 +--- src/sage/interfaces/gfan.py.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/interfaces/gfan.py 2020-07-06 16:48:01.178121036 -0600 @@ -66,7 +66,7 @@ class Gfan(object): if six.PY2: enc_kwargs = {} @@ -247,8 +273,8 @@ diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py gfan_processes = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, **enc_kwargs) diff -up src/sage/interfaces/gp.py.orig src/sage/interfaces/gp.py ---- src/sage/interfaces/gp.py.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/interfaces/gp.py 2020-02-25 13:42:46.680646776 -0700 +--- src/sage/interfaces/gp.py.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/interfaces/gp.py 2020-07-06 16:48:01.179121036 -0600 @@ -934,17 +934,6 @@ class GpElement(ExpectElement): """ return repr(self.type()) == 't_STR' @@ -268,8 +294,8 @@ diff -up src/sage/interfaces/gp.py.orig src/sage/interfaces/gp.py """ Return Python float. diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py ---- src/sage/interfaces/latte.py.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/interfaces/latte.py 2020-02-25 13:42:46.680646776 -0700 +--- src/sage/interfaces/latte.py.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/interfaces/latte.py 2020-07-06 16:48:01.180121036 -0600 @@ -152,6 +152,7 @@ def count(arg, ehrhart_polynomial=False, latte_proc = Popen(args, stdin=PIPE, stdout=PIPE, @@ -287,8 +313,8 @@ diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py ans, err = latte_proc.communicate(arg) diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.pyx ---- src/sage/interfaces/sagespawn.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/interfaces/sagespawn.pyx 2020-02-25 13:42:46.680646776 -0700 +--- src/sage/interfaces/sagespawn.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/interfaces/sagespawn.pyx 2020-07-06 16:48:01.180121036 -0600 @@ -1,6 +1,6 @@ """ Sage wrapper around pexpect's ``spawn`` class and @@ -336,9 +362,10 @@ diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.py except (OSError, IOError): pass self.fileobj.close() +diff -up src/sage/lfunctions/lcalc.py.orig src/sage/lfunctions/lcalc.py diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.pyx ---- src/sage/libs/coxeter3/coxeter.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/libs/coxeter3/coxeter.pyx 2020-02-25 13:42:46.680646776 -0700 +--- src/sage/libs/coxeter3/coxeter.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/coxeter3/coxeter.pyx 2020-07-06 16:48:01.181121035 -0600 @@ -33,7 +33,7 @@ cdef class String: EXAMPLES:: @@ -472,8 +499,8 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter. if rank == 0: raise NotImplementedError("Coxeter group of type ['A',0] using Coxeter 3 not yet implemented") diff -up src/sage/misc/parser.pyx.orig src/sage/misc/parser.pyx ---- src/sage/misc/parser.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/misc/parser.pyx 2020-02-25 13:42:46.681646759 -0700 +--- src/sage/misc/parser.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/misc/parser.pyx 2020-07-06 16:48:01.182121035 -0600 @@ -95,7 +95,7 @@ def token_to_str(int token): @@ -772,9 +799,137 @@ diff -up src/sage/misc/parser.pyx.orig src/sage/misc/parser.pyx tokens.backtrack() return self.p_list(tokens) else: +diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py +--- src/sage/misc/sageinspect.py.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/misc/sageinspect.py 2020-07-09 16:11:23.134895309 -0600 +@@ -485,35 +485,46 @@ class SageArgSpecVisitor(ast.NodeVisitor + return False + return node.id + +- if six.PY3: +- def visit_NameConstant(self, node): +- """ +- Visit a Python AST :class:`ast.NameConstant` node. ++ def visit_Constant(self, node): ++ r""" ++ Visit a Python AST :class:`ast.Constant` node. + +- This is an optimization added in Python 3.4 for the special cases +- of True, False, and None. ++ INPUT: + +- INPUT: ++ - ``node`` - the node instance to visit + +- - ``node`` - the node instance to visit ++ OUTPUT: + +- OUTPUT: ++ - the boolean, number, or string the ``node`` represents + +- - None, True, False. ++ EXAMPLES:: + +- EXAMPLES:: ++ sage: import ast, sage.misc.sageinspect as sms ++ sage: visitor = sms.SageArgSpecVisitor() ++ sage: vis = lambda x: visitor.visit_Constant(ast.parse(x).body[0].value) ++ sage: [vis(n) for n in ['True', 'False', 'None']] ++ [True, False, None] ++ sage: [type(vis(n)) for n in ['True', 'False', 'None']] ++ [, , ] + +- sage: import ast, sage.misc.sageinspect as sms # py3 +- sage: visitor = sms.SageArgSpecVisitor() # py3 +- sage: vis = lambda x: visitor.visit_NameConstant(ast.parse(x).body[0].value) # py3 +- sage: [vis(n) for n in ['True', 'False', 'None']] # py3 +- [True, False, None] +- sage: [type(vis(n)) for n in ['True', 'False', 'None']] # py3 +- [, , ] +- """ ++ sage: vis = lambda x: visitor.visit_Constant(ast.parse(x).body[0].value) ++ sage: [vis(s) for s in ['"abstract"', "u'syntax'", r'''r"tr\ee"''']] ++ ['abstract', u'syntax', 'tr\\ee'] + +- return node.value ++ sage: vis = lambda x: visitor.visit_Constant(ast.parse(x).body[0].value) ++ sage: [vis(n) for n in ['123', '0.0', str(-pi.n())]] # py2 ++ [123, 0.0, -3.14159265358979] ++ sage: [vis(n) for n in ['123', '0.0']] # py3 ++ [123, 0.0] ++ ++ .. NOTE:: + ++ On Python 3 negative numbers are parsed first, for some reason, as ++ a UnaryOp node. ++ """ ++ return node.value ++ ++ if six.PY3: + def visit_arg(self, node): + r""" + Visit a Python AST :class:`ast.arg` node. +@@ -543,57 +554,6 @@ class SageArgSpecVisitor(ast.NodeVisitor + """ + return node.arg + +- def visit_Num(self, node): +- """ +- Visit a Python AST :class:`ast.Num` node. +- +- INPUT: +- +- - ``node`` - the node instance to visit +- +- OUTPUT: +- +- - the number the ``node`` represents +- +- EXAMPLES:: +- +- sage: import ast, sage.misc.sageinspect as sms +- sage: visitor = sms.SageArgSpecVisitor() +- sage: vis = lambda x: visitor.visit_Num(ast.parse(x).body[0].value) +- sage: [vis(n) for n in ['123', '0.0', str(-pi.n())]] # py2 +- [123, 0.0, -3.14159265358979] +- sage: [vis(n) for n in ['123', '0.0']] # py3 +- [123, 0.0] +- +- .. NOTE:: +- +- On Python 3 negative numbers are parsed first, for some reason, as +- a UnaryOp node. +- """ +- return node.n +- +- def visit_Str(self, node): +- r""" +- Visit a Python AST :class:`ast.Str` node. +- +- INPUT: +- +- - ``node`` - the node instance to visit +- +- OUTPUT: +- +- - the string the ``node`` represents +- +- EXAMPLES:: +- +- sage: import ast, sage.misc.sageinspect as sms +- sage: visitor = sms.SageArgSpecVisitor() +- sage: vis = lambda x: visitor.visit_Str(ast.parse(x).body[0].value) +- sage: [vis(s) for s in ['"abstract"', "u'syntax'", r'''r"tr\ee"''']] +- ['abstract', u'syntax', 'tr\\ee'] +- """ +- return node.s +- + def visit_List(self, node): + """ + Visit a Python AST :class:`ast.List` node. diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py ---- src/sage/plot/plot3d/plot3d.py.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/plot/plot3d/plot3d.py 2020-02-25 13:42:46.681646759 -0700 +--- src/sage/plot/plot3d/plot3d.py.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/plot/plot3d/plot3d.py 2020-07-06 16:48:01.183121035 -0600 @@ -188,7 +188,8 @@ class _Coordinates(object): sage: arb((x+z,y*z,z), z, (x,y)) Arbitrary Coordinates coordinate transform (z in terms of x, y) @@ -786,8 +941,8 @@ diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py raise ValueError('variables were specified incorrectly for this coordinate system; incorrect variables were %s'%list(set(all_vars).symmetric_difference(set(indep_vars+[dep_var])))) self.dep_var = dep_var diff -up src/sage/plot/point.py.orig src/sage/plot/point.py ---- src/sage/plot/point.py.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/plot/point.py 2020-02-25 13:42:46.681646759 -0700 +--- src/sage/plot/point.py.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/plot/point.py 2020-07-06 16:48:01.184121035 -0600 @@ -29,7 +29,7 @@ TESTS:: from sage.misc.decorators import options, rename_keyword from sage.plot.colors import to_mpl_color @@ -807,9 +962,9 @@ diff -up src/sage/plot/point.py.orig src/sage/plot/point.py try: diff -up src/sage/repl/display/fancy_repr.py.orig src/sage/repl/display/fancy_repr.py ---- src/sage/repl/display/fancy_repr.py.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/repl/display/fancy_repr.py 2020-02-25 13:42:46.682646741 -0700 -@@ -15,7 +15,7 @@ Representations of objects. +--- src/sage/repl/display/fancy_repr.py.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/repl/display/fancy_repr.py 2020-07-06 16:48:01.184121035 -0600 +@@ -15,7 +15,7 @@ Representations of objects import types from IPython.lib.pretty import ( @@ -828,8 +983,8 @@ diff -up src/sage/repl/display/fancy_repr.py.orig src/sage/repl/display/fancy_re else: # A user-provided repr. Find newlines and replace them with p.break_() diff -up src/sage/repl/ipython_kernel/interact.py.orig src/sage/repl/ipython_kernel/interact.py ---- src/sage/repl/ipython_kernel/interact.py.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/repl/ipython_kernel/interact.py 2020-02-25 13:42:46.682646741 -0700 +--- src/sage/repl/ipython_kernel/interact.py.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/repl/ipython_kernel/interact.py 2020-07-06 16:48:01.185121034 -0600 @@ -35,7 +35,8 @@ EXAMPLES:: from ipywidgets.widgets import SelectionSlider, ValueWidget, ToggleButtons @@ -841,9 +996,9 @@ diff -up src/sage/repl/ipython_kernel/interact.py.orig src/sage/repl/ipython_ker from .widgets_sagenb import input_grid from sage.structure.element import parent diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx ---- src/sage/rings/integer.pyx.orig 2020-02-27 10:29:19.004788998 -0700 -+++ src/sage/rings/integer.pyx 2020-02-27 15:48:31.176289587 -0700 -@@ -7123,7 +7123,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c +--- src/sage/rings/integer.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/rings/integer.pyx 2020-07-06 16:48:01.187121034 -0600 +@@ -7135,7 +7135,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c while x[0] == c' ': x += 1 # Strip spaces # Disallow a sign here @@ -853,8 +1008,8 @@ diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx assert base >= 2 diff -up src/sage/rings/polynomial/pbori.pyx.orig src/sage/rings/polynomial/pbori.pyx ---- src/sage/rings/polynomial/pbori.pyx.orig 2020-02-27 10:58:59.991311061 -0700 -+++ src/sage/rings/polynomial/pbori.pyx 2020-02-27 15:48:31.177289568 -0700 +--- src/sage/rings/polynomial/pbori.pyx.orig 2020-07-06 16:13:17.464497408 -0600 ++++ src/sage/rings/polynomial/pbori.pyx 2020-07-06 16:48:01.190121033 -0600 @@ -4764,8 +4764,7 @@ cdef class PolynomialConstruct: # So, it is just a conversion. [Simon King] return (ring)._element_constructor_(x) @@ -866,8 +1021,8 @@ diff -up src/sage/rings/polynomial/pbori.pyx.orig src/sage/rings/polynomial/pbor cdef class MonomialConstruct: diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx ---- src/sage/rings/real_mpfi.pyx.orig 2020-02-27 10:14:36.381371499 -0700 -+++ src/sage/rings/real_mpfi.pyx 2020-02-27 15:48:31.178289550 -0700 +--- src/sage/rings/real_mpfi.pyx.orig 2020-07-06 16:19:17.719457638 -0600 ++++ src/sage/rings/real_mpfi.pyx 2020-07-06 16:48:01.192121033 -0600 @@ -1941,12 +1941,12 @@ cdef class RealIntervalFieldElement(Ring cdef long digits @@ -893,9 +1048,9 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx mant_string = bytes_to_str(tmp_cstr+1) sign_string = bytes_to_str(b'-') diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx ---- src/sage/rings/real_mpfr.pyx.orig 2020-02-27 10:16:40.188177426 -0700 -+++ src/sage/rings/real_mpfr.pyx 2020-02-27 15:48:31.179289531 -0700 -@@ -2037,7 +2037,7 @@ cdef class RealNumber(sage.structure.ele +--- src/sage/rings/real_mpfr.pyx.orig 2020-07-06 16:19:17.720457638 -0600 ++++ src/sage/rings/real_mpfr.pyx 2020-07-06 16:48:01.194121032 -0600 +@@ -2045,7 +2045,7 @@ cdef class RealNumber(sage.structure.ele if s is NULL: raise RuntimeError("unable to convert an mpfr number to a string") # t contains just digits (no sign, decimal point or exponent) @@ -905,9 +1060,9 @@ diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx t = char_to_str(s + 1) else: diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.pyx ---- src/sage/structure/sage_object.pyx.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/sage/structure/sage_object.pyx 2020-02-25 13:42:56.898464506 -0700 -@@ -671,7 +671,7 @@ cdef class SageObject: +--- src/sage/structure/sage_object.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/structure/sage_object.pyx 2020-07-06 16:48:01.194121032 -0600 +@@ -680,7 +680,7 @@ cdef class SageObject: try: s = self._interface_init_(I) except Exception: @@ -917,9 +1072,9 @@ diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object. if c: try: diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx ---- src/sage/symbolic/expression.pyx.orig 2020-02-27 09:30:14.669819391 -0700 -+++ src/sage/symbolic/expression.pyx 2020-02-27 15:48:31.182289476 -0700 -@@ -12945,7 +12945,7 @@ cdef class hold_class: +--- src/sage/symbolic/expression.pyx.orig 2020-07-06 16:22:36.515435688 -0600 ++++ src/sage/symbolic/expression.pyx 2020-07-06 16:48:01.198121032 -0600 +@@ -12990,7 +12990,7 @@ cdef class hold_class: sage: SR(2)^5 32 """ @@ -928,7 +1083,7 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx def __exit__(self, *args): """ -@@ -12958,7 +12958,7 @@ cdef class hold_class: +@@ -13003,7 +13003,7 @@ cdef class hold_class: sage: SR(2)^5 32 """ @@ -937,3 +1092,25 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx def start(self): """ +diff -up src/sage/symbolic/ring.pyx.orig src/sage/symbolic/ring.pyx +--- src/sage/symbolic/ring.pyx.orig 2020-07-06 16:20:02.592452688 -0600 ++++ src/sage/symbolic/ring.pyx 2020-07-10 09:09:09.512400345 -0600 +@@ -32,7 +32,6 @@ from sage.rings.all import RR, CC, ZZ + + import keyword + import operator +-import parser + + # Do not allow any of these keywords as identifiers for symbolic variables + KEYWORDS = set(keyword.kwlist).union(['exec', 'print', 'None', 'True', +@@ -1405,8 +1404,8 @@ def isidentifier(x): + pass # py2 + + try: +- code = parser.expr(x).compile() ++ code = compile(x, '', 'eval') + except (MemoryError, OverflowError, SyntaxError, +- SystemError, parser.ParserError): ++ SystemError, ValueError): + return False + return len(code.co_names) == 1 and code.co_names[0] == x diff --git a/sagemath-scripts.patch b/sagemath-scripts.patch index 01cef9b..755b646 100644 --- a/sagemath-scripts.patch +++ b/sagemath-scripts.patch @@ -1,6 +1,6 @@ diff -up src/bin/sage.orig src/bin/sage ---- src/bin/sage.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/bin/sage 2020-02-25 13:37:42.510072662 -0700 +--- src/bin/sage.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/bin/sage 2020-07-06 16:33:49.015329159 -0600 @@ -26,13 +26,10 @@ usage() { echo " file.[sage|py|spyx] -- run given .sage, .py or .spyx file" echo " -advanced -- list all command line options" @@ -74,7 +74,7 @@ diff -up src/bin/sage.orig src/bin/sage echo " -python [...] -- run the Python interpreter" echo " -python2 [...] -- run the Python 2 interpreter" echo " -python3 [...] -- run the Python 3 interpreter" -@@ -144,55 +125,7 @@ usage_advanced() { +@@ -147,55 +128,7 @@ usage_advanced() { echo #### 1.......................26..................................................78 #### |.....................--.|...................................................| @@ -131,7 +131,7 @@ diff -up src/bin/sage.orig src/bin/sage echo " -startuptime [module] -- display how long each component of Sage takes to" echo " start up; optionally specify a module to get more" echo " details about that particular module" -@@ -226,7 +159,6 @@ usage_advanced() { +@@ -229,7 +162,6 @@ usage_advanced() { echo " -coverage -- give info about doctest coverage of files" echo " -coverageall -- give summary info about doctest coverage of all" echo " files in the Sage library" @@ -139,14 +139,12 @@ diff -up src/bin/sage.orig src/bin/sage echo " -search_src -- search through all the Sage library code for string" echo " -search_doc -- search through the Sage documentation for string" echo " -grep -- same as -search_src" -@@ -252,16 +184,6 @@ usage_advanced() { +@@ -255,14 +187,6 @@ usage_advanced() { echo #### 1.......................26..................................................78 #### |.....................--.|...................................................| - echo "Making Sage packages or distributions:" - echo " -sdist -- build a source distribution of Sage" -- echo " -pkg -- create Sage package dir.spkg from a given directory" -- echo " -pkg_nc -- as -pkg, but do not compress the package" - echo " -fix-pkg-checksums -- fix the checksums from build/pkgs directories from " - echo " the packages located in upstream/" - @@ -156,7 +154,7 @@ diff -up src/bin/sage.orig src/bin/sage echo "Valgrind memory debugging:" echo " -cachegrind -- run Sage using Valgrind's cachegrind tool. The log" echo " files are named sage-cachegrind.PID can be found in" -@@ -275,9 +197,6 @@ usage_advanced() { +@@ -276,9 +200,6 @@ usage_advanced() { echo " -memcheck -- run Sage using Valgrind's memcheck tool. The log" echo " files are named sage-memcheck.PID can be found in" echo " $DOT_SAGE" @@ -166,7 +164,7 @@ diff -up src/bin/sage.orig src/bin/sage echo " -valgrind -- this is an alias for -memcheck" echo echo "You can also use -- before a long option, e.g., 'sage --optional'." -@@ -287,116 +206,6 @@ usage_advanced() { +@@ -288,115 +209,6 @@ usage_advanced() { ##################################################################### @@ -262,7 +260,7 @@ diff -up src/bin/sage.orig src/bin/sage - # Now install the packages - for PKG in $PACKAGES; do - echo -- # First check that $PKG is actually a Makefile target +- # Check that $PKG is actually a Makefile target - # See https://trac.sagemath.org/ticket/25078 - if ! echo "$ALL_TARGETS" | grep "^${PKG}$" >/dev/null; then - echo >&2 "Error: package '$PKG' not found" @@ -271,7 +269,6 @@ diff -up src/bin/sage.orig src/bin/sage - fi - $MAKE SAGE_SPKG="sage-spkg $INSTALL_OPTIONS" "$PKG" - done -- - echo "New packages may have been installed." - echo "Re-running configure and make in case any dependent packages need updating." - touch "$SAGE_ROOT/configure" && $MAKE all-build @@ -283,7 +280,7 @@ diff -up src/bin/sage.orig src/bin/sage # Report information about the Sage environment ##################################################################### -@@ -445,20 +254,6 @@ fi +@@ -445,20 +257,6 @@ fi # Prepare for running Sage, either interactively or non-interactively. sage_setup() { @@ -304,7 +301,7 @@ diff -up src/bin/sage.orig src/bin/sage if [ ! -d "$IPYTHONDIR" ]; then # make sure that $DOT_SAGE exists so that ipython will happily # create its config directories there. If DOT_SAGE doesn't -@@ -469,20 +264,6 @@ sage_setup() { +@@ -469,20 +267,6 @@ sage_setup() { } @@ -325,7 +322,7 @@ diff -up src/bin/sage.orig src/bin/sage # Start an interactive Sage session, this function never returns. interactive_sage() { sage_setup -@@ -566,16 +347,6 @@ if [ "$1" = '-lisp' -o "$1" = '--lisp' ] +@@ -566,16 +350,6 @@ if [ "$1" = '-lisp' -o "$1" = '--lisp' ] exec ecl "$@" fi @@ -342,8 +339,8 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = '-maxima' -o "$1" = '--maxima' ]; then shift exec maxima "$@" -@@ -606,11 +377,6 @@ if [ "$1" = '--pip3' ]; then - exec python3 -m pip "$@" +@@ -606,11 +380,6 @@ if [ "$1" = '--pip3' ]; then + exec "$SAGE_LOCAL"/bin/python3 -m pip "$@" fi -if [ "$1" = '-fix-pkg-checksums' -o "$1" = '--fix-pkg-checksums' ]; then @@ -354,8 +351,8 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = '-python' -o "$1" = '--python' ]; then shift if [ "$SAGE_PYTHON3" = 'yes' ]; then -@@ -650,16 +416,6 @@ if [ "$1" = '-jupyter' -o "$1" = '--jupy - exec jupyter "$@" +@@ -650,16 +419,6 @@ if [ "$1" = '-jupyter' -o "$1" = '--jupy + exec "$SAGE_LOCAL"/bin/jupyter "$@" fi -if [ "$1" = '-git' -o "$1" = '--git' ]; then @@ -368,10 +365,10 @@ diff -up src/bin/sage.orig src/bin/sage - exec git --git-dir="$SAGE_ROOT"/.git rev-parse --abbrev-ref HEAD -fi - - if [ "$1" = '-sh' -o "$1" = '--sh' ]; then + if [ "$1" = '-sh' -o "$1" = '--sh' -o "$1" = '-buildsh' -o "$1" = '--buildsh' ]; then # AUTHORS: # - Carl Witty and William Stein: initial version -@@ -779,20 +535,6 @@ EOF +@@ -792,20 +551,6 @@ EOF fi ##################################################################### @@ -392,7 +389,7 @@ diff -up src/bin/sage.orig src/bin/sage # File conversion ##################################################################### -@@ -823,11 +565,6 @@ fi +@@ -836,11 +581,6 @@ fi # Run Sage's versions of the standard Algebra/Geometry etc. software ##################################################################### @@ -404,7 +401,7 @@ diff -up src/bin/sage.orig src/bin/sage if [[ "$1" =~ ^--notebook=.* || "$1" =~ ^-n=.* || "$1" =~ ^-notebook=.* ]] ; then sage-cleaner &>/dev/null & exec sage-notebook "$@" -@@ -838,13 +575,6 @@ if [ "$1" = "-notebook" -o "$1" = '--not +@@ -851,13 +591,6 @@ if [ "$1" = "-notebook" -o "$1" = '--not exec sage-notebook "$@" fi @@ -418,7 +415,7 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = "-inotebook" -o "$1" = '--inotebook' ]; then shift sage-cleaner &>/dev/null & -@@ -863,31 +593,12 @@ if [ "$1" = '-grepdoc' -o "$1" = "--grep +@@ -876,31 +609,12 @@ if [ "$1" = '-grepdoc' -o "$1" = "--grep exit 0 fi @@ -451,7 +448,7 @@ diff -up src/bin/sage.orig src/bin/sage sage_setup export PYTHONIOENCODING="utf-8" # Fix encoding for doctests if [ "$1" = '-tp' -o "$1" = '-btp' ]; then -@@ -899,16 +610,6 @@ if [ "$1" = '-t' -o "$1" = '-bt' -o "$1" +@@ -912,16 +626,6 @@ if [ "$1" = '-t' -o "$1" = '-bt' -o "$1" fi fi @@ -468,7 +465,7 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = '-testall' -o "$1" = "--testall" ]; then shift sage_setup -@@ -923,122 +624,6 @@ if [ "$1" = '-c' ]; then +@@ -936,112 +640,6 @@ if [ "$1" = '-c' ]; then exec sage-eval "$@" fi @@ -555,16 +552,6 @@ diff -up src/bin/sage.orig src/bin/sage - exit 0 -fi - --if [ "$1" = '-pkg' -o "$1" = '-spkg' -o "$1" = "--pkg" -o "$1" = "--spkg" ]; then -- shift -- exec sage-pkg "$@" --fi -- --if [ "$1" = '-pkg_nc' -o "$1" = "--pkg_nc" ]; then -- shift -- exec sage-pkg -n "$@" --fi -- -if [ "$1" = '-sdist' -o "$1" = "--sdist" ]; then - maybe_sage_location - shift @@ -591,7 +578,7 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = '-gdb' -o "$1" = "--gdb" ]; then shift sage_setup -@@ -1088,12 +673,6 @@ if [ "$1" = '-callgrind' -o "$1" = "--ca +@@ -1091,12 +689,6 @@ if [ "$1" = '-callgrind' -o "$1" = "--ca exec sage-callgrind "$@" fi @@ -605,18 +592,29 @@ diff -up src/bin/sage.orig src/bin/sage exec sage-startuptime.py "$@" fi diff -up src/bin/sage-valgrind.orig src/bin/sage-valgrind ---- src/bin/sage-valgrind.orig 2020-01-01 04:03:10.000000000 -0700 -+++ src/bin/sage-valgrind 2020-02-25 13:36:02.973848216 -0700 -@@ -4,17 +4,7 @@ if [ -z $SAGE_EXTCODE ]; then +--- src/bin/sage-valgrind.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/bin/sage-valgrind 2020-07-07 08:59:38.369847693 -0600 +@@ -4,28 +4,7 @@ if [ -z $SAGE_EXTCODE ]; then SAGE_EXTCODE=`${0/-valgrind} -c "from sage.env import SAGE_EXTCODE; print(SAGE_EXTCODE)"` fi -SUPP="" --if [ -f "$SAGE_EXTCODE/valgrind/python.supp" ]; then -- SUPP+=" --suppressions=$SAGE_EXTCODE/valgrind/python.supp" +-# Our python2/3 spkgs and also Debian install these files as python.supp and python3.supp +-if [ "$SAGE_PYTHON_VERSION" = 2 ]; then +- PYTHON_SUPP_FILENAME="python.supp" -else +- PYTHON_SUPP_FILENAME="python$SAGE_PYTHON_VERSION.supp" +-fi +-for dir in "$SAGE_LOCAL/lib/valgrind" "/usr/local/lib/valgrind" "/usr/lib64/valgrind" "/usr/lib/valgrind" ; do +- if [ -f "$dir"/"$PYTHON_SUPP_FILENAME" ]; then +- SUPP=" --suppressions=$dir/$PYTHON_SUPP_FILENAME" +- break +- fi +-done +-if [ -z "$SUPP" ] ; then - echo "Python suppressions not found (not installed?), skipping" -fi +- -SUPP+=" --suppressions=$SAGE_EXTCODE/valgrind/pyalloc.supp" -SUPP+=" --suppressions=$SAGE_EXTCODE/valgrind/sage.supp" -SUPP+=" --suppressions=$SAGE_EXTCODE/valgrind/sage-additional.supp" diff --git a/sagemath-sigfpe.patch b/sagemath-sigfpe.patch index f69bd00..94bb9fc 100644 --- a/sagemath-sigfpe.patch +++ b/sagemath-sigfpe.patch @@ -1,16 +1,16 @@ diff -up src/sage/libs/ecl.pyx.orig src/sage/libs/ecl.pyx ---- src/sage/libs/ecl.pyx.orig 2018-12-22 16:37:08.000000000 -0700 -+++ src/sage/libs/ecl.pyx 2019-01-17 10:00:52.554236288 -0700 -@@ -16,7 +16,7 @@ from __future__ import print_function, a +--- src/sage/libs/ecl.pyx.orig 2020-07-07 09:07:43.622621879 -0600 ++++ src/sage/libs/ecl.pyx 2020-07-09 10:04:16.260992211 -0600 +@@ -15,7 +15,7 @@ Library interface to Embeddable Common L #adapted to work with pure Python types. from libc.stdlib cimport abort --from libc.signal cimport SIGINT, SIGBUS, SIGSEGV, SIGCHLD -+from libc.signal cimport SIGINT, SIGBUS, SIGSEGV, SIGCHLD, SIGFPE +-from libc.signal cimport SIGINT, SIGBUS, SIGSEGV ++from libc.signal cimport SIGINT, SIGBUS, SIGSEGV, SIGFPE from libc.signal cimport raise_ as signal_raise from posix.signal cimport sigaction, sigaction_t cimport cysignals.signals -@@ -48,9 +48,14 @@ cdef extern from "eclsig.h": +@@ -47,9 +47,14 @@ cdef extern from "eclsig.h": void ecl_sig_off() cdef sigaction_t ecl_sigint_handler cdef sigaction_t ecl_sigbus_handler @@ -25,7 +25,7 @@ diff -up src/sage/libs/ecl.pyx.orig src/sage/libs/ecl.pyx cdef cl_object string_to_object(char * s): return ecl_read_from_cstring(s) -@@ -239,6 +244,7 @@ def init_ecl(): +@@ -232,6 +237,7 @@ def init_ecl(): global ecl_has_booted cdef char *argv[1] cdef sigaction_t sage_action[32] @@ -33,7 +33,7 @@ diff -up src/sage/libs/ecl.pyx.orig src/sage/libs/ecl.pyx cdef int i if ecl_has_booted: -@@ -258,6 +264,8 @@ def init_ecl(): +@@ -248,6 +254,8 @@ def init_ecl(): for i in range(1,32): sigaction(i, NULL, &sage_action[i]) @@ -42,7 +42,7 @@ diff -up src/sage/libs/ecl.pyx.orig src/sage/libs/ecl.pyx #initialize ECL ecl_set_option(ECL_OPT_SIGNAL_HANDLING_THREAD, 0) cl_boot(1, argv) -@@ -265,8 +273,12 @@ def init_ecl(): +@@ -255,12 +263,19 @@ def init_ecl(): #save signal handler from ECL sigaction(SIGINT, NULL, &ecl_sigint_handler) sigaction(SIGBUS, NULL, &ecl_sigbus_handler) @@ -52,10 +52,7 @@ diff -up src/sage/libs/ecl.pyx.orig src/sage/libs/ecl.pyx + #save ECL's floating point exception flags + ecl_feflags = fegetexcept() + - #verify that no SIGCHLD handler was installed - cdef sigaction_t sig_test - sigaction(SIGCHLD, NULL, &sig_test) -@@ -277,6 +289,9 @@ def init_ecl(): + #and put the Sage signal handlers back for i in range(1,32): sigaction(i, &sage_action[i], NULL) @@ -66,8 +63,8 @@ diff -up src/sage/libs/ecl.pyx.orig src/sage/libs/ecl.pyx # *SAGE-LIST-OF-OBJECTS* to make it rooted in the reachable tree for the GC list_of_objects=cl_cons(Cnil,cl_cons(Cnil,Cnil)) diff -up src/sage/libs/eclsig.h.orig src/sage/libs/eclsig.h ---- src/sage/libs/eclsig.h.orig 2018-12-22 16:37:08.000000000 -0700 -+++ src/sage/libs/eclsig.h 2019-01-17 10:07:23.060570460 -0700 +--- src/sage/libs/eclsig.h.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/eclsig.h 2020-07-09 10:01:25.618299374 -0600 @@ -9,25 +9,59 @@ @@ -129,9 +126,9 @@ diff -up src/sage/libs/eclsig.h.orig src/sage/libs/eclsig.h /* This MUST be a macro because sig_on() must be in the same diff -up src/sage/libs/mpmath/ext_impl.pyx.orig src/sage/libs/mpmath/ext_impl.pyx ---- src/sage/libs/mpmath/ext_impl.pyx.orig 2018-12-22 16:37:08.000000000 -0700 -+++ src/sage/libs/mpmath/ext_impl.pyx 2019-01-17 09:53:24.350937873 -0700 -@@ -164,9 +164,9 @@ opts_double_precision.rounding = ROUND_N +--- src/sage/libs/mpmath/ext_impl.pyx.orig 2020-05-20 16:33:41.000000000 -0600 ++++ src/sage/libs/mpmath/ext_impl.pyx 2020-07-09 10:01:25.620299371 -0600 +@@ -162,9 +162,9 @@ opts_double_precision.rounding = ROUND_N opts_mini_prec.prec = 5 opts_mini_prec.rounding = ROUND_D diff --git a/sagemath-sympy.patch b/sagemath-sympy.patch index 81c20a2..033f7f0 100644 --- a/sagemath-sympy.patch +++ b/sagemath-sympy.patch @@ -1,9 +1,9 @@ diff -up src/sage/env.py.orig src/sage/env.py ---- src/sage/env.py.orig 2019-10-03 16:07:45.910528067 -0300 -+++ src/sage/env.py 2019-10-03 16:08:40.659874228 -0300 -@@ -159,9 +159,9 @@ var('SAGE_DOC', join(SAGE_SHA - var('SAGE_SPKG_INST', join(SAGE_LOCAL, 'var', 'lib', 'sage', 'installed')) +--- src/sage/env.py.orig 2020-07-06 16:57:04.139002833 -0600 ++++ src/sage/env.py 2020-07-06 16:59:20.179973650 -0600 +@@ -167,9 +167,9 @@ var('SAGE_SPKG_INST', join(SAGE_LOC var('SAGE_LIB', os.path.dirname(os.path.dirname(sage.__file__))) + var('SAGE_EXTCODE', join(SAGE_LIB, 'sage', 'ext_data')) -var('SAGE_ROOT') # no fallback for SAGE_ROOT +var('SAGE_ROOT', '@@SAGE_ROOT@@') diff --git a/sagemath.spec b/sagemath.spec index 6506ff4..d035b03 100644 --- a/sagemath.spec +++ b/sagemath.spec @@ -76,7 +76,7 @@ %endif # Spkg equivalents of required rpms; we pretend they are installed as spkgs. -%global SAGE_REQUIRED_PKGS 4ti2-1.6.9 bliss-0.73 cbc-2.10.4 CoCoALib-0.99650 coxeter3-3.1 cryptominisat-5.6.8 database_cremona_ellcurve-%{cremona_ver} gap_packages-4.10.2 gmp-6.1.2 libsirocco-2.0.2 lrslib-070 mcqd-1.0 meataxe-1.0 primecount-5.3 qepcad-B.1.72 saclib-2.2.7 surf-1.0.6-gcc6 tdlib-0.9.0 +%global SAGE_REQUIRED_PKGS 4ti2-1.6.9 bliss-0.73 CoCoALib-0.99710 coxeter3-3.1 cryptominisat-5.7.1 database_cremona_ellcurve-%{cremona_ver} gap_packages-4.11.0 libsirocco-2.0.2 lrslib-071 mcqd-1.0 meataxe-1.0 primecount-6.0 qepcad-B.1.72 saclib-2.2.7 surf-1.0.6-gcc6 tdlib-0.9.0 %ifarch %{ix86} x86_64 %global SAGE_REQUIRED_PKGS %{SAGE_REQUIRED_PKGS} fes-0.2 @@ -93,8 +93,8 @@ Name: sagemath Summary: A free open-source mathematics software system -Version: 9.0 -Release: 8%{?dist} +Version: 9.1 +Release: 1%{?dist} # The file ${SAGE_ROOT}/COPYING.txt is the upstream license breakdown file # Additionally, every $files section has a comment with the license name # before files with that license @@ -152,8 +152,8 @@ Patch10: %{name}-cremona.patch # adapt to python 3 and cython running in python 3 mode Patch11: %{name}-python3.patch -# correct path to the nauty geng program -Patch12: %{name}-nauty.patch +# adapt to ecl 20.4.24 +Patch12: %{name}-ecl.patch # remove the buildroot path from Cython output Patch13: %{name}-buildroot.patch @@ -161,9 +161,6 @@ Patch13: %{name}-buildroot.patch # update c++ standard to fix FTBFS Patch14: %{name}-lcalc.patch -# avoid assertion in coin backend -Patch15: %{name}-cbc.patch - # Use system gap directories and modernize libgap interface Patch16: %{name}-libgap.patch @@ -218,6 +215,7 @@ BuildRequires: arb-devel BuildRequires: bliss-devel BuildRequires: boost-devel BuildRequires: brial-devel +BuildRequires: cddlib-devel BuildRequires: cddlib-tools BuildRequires: cliquer-devel BuildRequires: coin-or-Cbc-devel @@ -231,7 +229,7 @@ BuildRequires: factory-devel BuildRequires: fes-devel %endif BuildRequires: flint-devel -BuildRequires: gap +BuildRequires: gap-devel BuildRequires: gap-pkg-cohomolo BuildRequires: gap-pkg-corelg BuildRequires: gap-pkg-crime @@ -281,7 +279,7 @@ BuildRequires: lapack-devel BuildRequires: latte-integrale BuildRequires: libbraiding-devel BuildRequires: libfplll-devel -BuildRequires: libgap-devel +BuildRequires: libgap BuildRequires: libhomfly-devel BuildRequires: libmpc-devel BuildRequires: libpng-devel @@ -359,7 +357,6 @@ BuildRequires: python3dist(setuptools) BuildRequires: python3dist(simplegeneric) %endif BuildRequires: python3dist(six) -BuildRequires: python3dist(speaklater) BuildRequires: python3dist(sphinx) BuildRequires: python3dist(sympy) BuildRequires: python3dist(zodb3) @@ -896,7 +893,6 @@ popd %patch12 %patch13 %patch14 -%patch15 %patch16 %if %{with fes} @@ -962,6 +958,7 @@ sed -i 's,%{_bindir}/python,&3,' src/sage/misc/dev_tools.py sed -e 's,local/bin/python,bin/python,' \ -e 's,#!%{_bindir}/python,&3,' \ -i src/sage/repl/preparse.py +sed -i 's,"$SAGE_LOCAL"/bin/python,%{_bindir}/python,g' src/bin/sage %if %{with bundled_ipython} sed -e "s|'%{_bindir}/env', 'which'|'%{_bindir}/which'|" \ -i build/pkgs/ipython/src/IPython/utils/_process_posix.py @@ -973,6 +970,7 @@ sed -i 's/64m/256m/' src/sage/interfaces/gap.py ######################################################################## %build +export LC_ALL=C.UTF-8 export CC=%{__cc} export CFLAGS="%{optflags}" export CXXFLAGS="%{optflags}" @@ -1130,8 +1128,7 @@ ln -sf %{_includedir} $SAGE_LOCAL/include ln -sf %{_datadir} $SAGE_LOCAL/share #------------------------------------------------------------------------ -cp -a src/ext $SAGE_ETC -rm -fr $SAGE_ETC/doctest +cp -a src/sage/ext_data $SAGE_ETC cp -p %{SOURCE2} $SAGE_ETC #------------------------------------------------------------------------ @@ -1241,8 +1238,8 @@ popd #------------------------------------------------------------------------ pushd build/pkgs/combinatorial_designs - chmod a+x spkg-install - bash -c '. ../../../src/bin/sage-dist-helpers; ./spkg-install' + mkdir -p $SAGE_SHARE/combinatorial_designs + cp -fa src/* $SAGE_SHARE/combinatorial_designs popd #------------------------------------------------------------------------ @@ -1286,13 +1283,13 @@ popd #------------------------------------------------------------------------ %if %{with bundled_ipython} mv %{_builddir}%{python3_sitelib}/IPython %{buildroot}%{SAGE_PYTHONPATH} -mv %{_builddir}%{python3_sitelib}/prompt_toolkit %{buildroot}%{SAGE_PYTHONPATH} +mv %{_builddir}%{python3_sitelib}/prompt_toolkit* %{buildroot}%{SAGE_PYTHONPATH} mv %{_builddir}%{_bindir}/ip* %{buildroot}%{SAGE_LOCAL}/bin %endif #------------------------------------------------------------------------ %if %{with bundled_ipywidgets} -mv %{_builddir}%{python3_sitelib}/ipywidgets %{buildroot}%{SAGE_PYTHONPATH} +mv %{_builddir}%{python3_sitelib}/ipywidgets* %{buildroot}%{SAGE_PYTHONPATH} %endif #------------------------------------------------------------------------ @@ -1454,7 +1451,7 @@ ln -sf %{SAGE_SHARE} $SAGE_ROOT/share ln -sf src $SAGE_ROOT/devel # Install menu and icons -install -p -m644 -D src/ext/notebook-ipython/logo.svg \ +install -p -m644 -D src/sage/ext_data/notebook-ipython/logo.svg \ %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/sagemath.svg mkdir -p %{buildroot}%{_datadir}/applications cat > %{buildroot}%{_datadir}/applications/%{name}.desktop << EOF @@ -1659,10 +1656,10 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_ %endif %if %{with bundled_ipython} %{SAGE_PYTHONPATH}/IPython -%{SAGE_PYTHONPATH}/prompt_toolkit +%{SAGE_PYTHONPATH}/prompt_toolkit* %endif %if %{with bundled_ipywidgets} -%{SAGE_PYTHONPATH}/ipywidgets +%{SAGE_PYTHONPATH}/ipywidgets* %endif #------------------------------------------------------------------------ @@ -1698,12 +1695,14 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_ #------------------------------------------------------------------------ %files data-etc # GPLv2+ +%{SAGE_ETC}/doctest %{SAGE_ETC}/gap %{SAGE_ETC}/images %{SAGE_ETC}/kenzo %{SAGE_ETC}/magma %{SAGE_ETC}/mwrank %{SAGE_ETC}/nbconvert +%{SAGE_ETC}/nodoctest %{SAGE_ETC}/pari %{SAGE_ETC}/singular %{SAGE_ETC}/threejs @@ -1817,6 +1816,12 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_ ######################################################################## %changelog +* Fri Jul 10 2020 Jerry James - 9.1-1 +- Version 9.1 +- Drop upstreamed -nauty patch +- Drop -cbc patch; upstream uses the system Cbc now +- Add -ecl patch for ecl 20.4.24 + * Wed May 27 2020 Miro HronĨok - 9.0-8 - Rebuilt for Python 3.9 diff --git a/sources b/sources index a23c3dc..8d9a5cd 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (cremona-2019-10-29.tar.gz) = 32fbb828f26f87191e39123762cfbd796aac9abf346f0dc981e8e3f390435b22d281be3031ea92ae7e18f4ce41af8054784ca0d550a08f17b05c54ca08b4c9c8 -SHA512 (sage-9.0.tar.gz) = b0d3af3e8e9dd587314a33ec2f68e901dcd18cdd2cce4444fea5f04669dab6bb3e7db7642ff3e9ef1b1ffaf7a6f3c26272f889e1f5fb8fd63d5f5b68b5d168ed +SHA512 (sage-9.1.tar.gz) = 6df64ce9fadab4cf4b955c704d143b591a02264e85d6dfab1c50872a50cfab804310aad6a46b553d861294acac29dc65729666f251a64cbe648d020af1f411d1