From 3c73709f630c6063e90b64eb081c7aa1ec6ab4f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Fri, 10 May 2024 12:29:21 -0300 Subject: [PATCH 01/10] ecl: update to 24.5.10. --- common/shlibs | 2 +- srcpkgs/ecl/template | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common/shlibs b/common/shlibs index aed2d02e32d6ba..80038425c8a020 100644 --- a/common/shlibs +++ b/common/shlibs @@ -4153,7 +4153,7 @@ libcxsparse.so.4 SuiteSparse-6.0.1_1 libspqr.so.4 SuiteSparse-7.2.0_1 libsuitesparseconfig.so.7 SuiteSparse-7.0.1_1 libumfpack.so.6 SuiteSparse-6.0.1_1 -libecl.so.23.9 ecl-23.9.9_1 +libecl.so.24.5 ecl-24.5.10_1 libecm.so.1 ecm-7.0.4_3 libcliquer.so.1 cliquer-1.22_1 libomalloc-0.9.6.so singular-4.2.1_1 diff --git a/srcpkgs/ecl/template b/srcpkgs/ecl/template index c657934737ea46..444d75ec3038f2 100644 --- a/srcpkgs/ecl/template +++ b/srcpkgs/ecl/template @@ -1,6 +1,6 @@ # Template file for 'ecl' pkgname=ecl -version=23.9.9 +version=24.5.10 revision=1 build_style=gnu-configure configure_args="--enable-gmp=system --enable-boehm=system @@ -14,7 +14,7 @@ license="LGPL-2.1-or-later" homepage="https://ecl.common-lisp.dev/" changelog="https://gitlab.com/embeddable-common-lisp/ecl/-/raw/develop/CHANGELOG" distfiles="https://ecl.common-lisp.dev/static/files/release/ecl-${version}.tgz" -checksum=c51bdab4ca6c1173dd3fe9cfe9727bcefb97bb0a3d6434b627ca6bdaeb33f880 +checksum=e4ea65bb1861e0e495386bfa8bc673bd014e96d3cf9d91e9038f91435cbe622b if [ "$CROSS_BUILD" ]; then # Depend on system ecl From 7478dd0022edebb21eea154385cb071d5e8e3ed0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Fri, 10 May 2024 16:11:00 -0300 Subject: [PATCH 02/10] maxima: rebuild for ecl --- srcpkgs/maxima/template | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/srcpkgs/maxima/template b/srcpkgs/maxima/template index eae9cad3a85e99..9259b48f50822b 100644 --- a/srcpkgs/maxima/template +++ b/srcpkgs/maxima/template @@ -1,7 +1,7 @@ # Template file for 'maxima' pkgname=maxima version=5.47.0 -revision=3 +revision=4 build_style=gnu-configure configure_args="$(vopt_enable clisp) $(vopt_enable sbcl) $(vopt_enable ecl) makeinfo_found=true" @@ -24,6 +24,8 @@ nopie_files=/usr/lib/maxima/$version/binary-sbcl/maxima if [ "$build_option_sbcl" ]; then # binary-sbcl/maxima uses libgmp but this won't show up in objdump shlib_requires=libgmp.so.10 + # build standalone executable + configure_args+=" --enable-sbcl-exec" fi build_options="clisp sbcl ecl" From 668656be54912c42b0a50ad76d5556836ee7eec5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Fri, 15 Mar 2024 12:59:54 -0300 Subject: [PATCH 03/10] gap: update to 4.13.0. --- common/shlibs | 2 +- srcpkgs/gap/template | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/common/shlibs b/common/shlibs index 80038425c8a020..53213300347d73 100644 --- a/common/shlibs +++ b/common/shlibs @@ -4104,7 +4104,7 @@ liblinbox.so.0 linbox-1.6.3_1 libpari-gmp-tls.so.8 pari-2.15.0_1 libtree-sitter.so.0 tree-sitter-0.19.0_1 libplanarity.so.0 planarity-3.0.1.1_1 -libgap.so.8 gap-4.12.0_1 +libgap.so.9 gap-4.13.0_1 libgtkdatabox.so.1 gtkdatabox3-1.0.0_1 libxcvt.so.0 libxcvt-0.1.1_1 libgf2x.so.3 gf2x-1.3.0_1 diff --git a/srcpkgs/gap/template b/srcpkgs/gap/template index 63d1194d45ddc9..d6c106c4ce0a77 100644 --- a/srcpkgs/gap/template +++ b/srcpkgs/gap/template @@ -1,6 +1,6 @@ # Template file for 'gap' pkgname=gap -version=4.12.2 +version=4.13.0 revision=1 build_style=gnu-configure makedepends="gmp-devel zlib-devel readline-devel" @@ -11,11 +11,15 @@ license="GPL-2.0-or-later" homepage="https://www.gap-system.org/" changelog="https://raw.githubusercontent.com/gap-system/gap/master/CHANGES.md" distfiles="https://github.com/gap-system/gap/releases/download/v${version}/gap-${version}.tar.gz" -checksum=672308745eb78a222494ee8dd6786edd5bc331456fcc6456ac064bdb28d587a8 +checksum=cc76ecbe33d6719450a593e613fb87e9e4247faa876f632dd0f97c398f92265d if [ "$XBPS_CHECK_PKGS" = full ]; then - # not sure about this -- takes about 25 minutes - make_check_target=teststandard + do_check() { + # disable failing test + rm -f tst/teststandard/testLuxPahlings/example_4.4.18.tst + # about 5 minutes single core + ./gap tst/teststandard.g + } fi _GAPROOT=/usr/share/gap/ From ddd8d37f2824d687c9858d1b731617f925918a6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Wed, 8 May 2024 09:20:46 -0300 Subject: [PATCH 04/10] python3-conway-polynomials: update to 0.10. --- srcpkgs/python3-conway-polynomials/template | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/srcpkgs/python3-conway-polynomials/template b/srcpkgs/python3-conway-polynomials/template index 11766521e26db7..2724d49767eb8c 100644 --- a/srcpkgs/python3-conway-polynomials/template +++ b/srcpkgs/python3-conway-polynomials/template @@ -1,6 +1,6 @@ # Template file for 'python3-conway-polynomials' pkgname=python3-conway-polynomials -version=0.9 +version=0.10 revision=1 build_style=python3-pep517 make_check_args="--doctest-modules --doctest-glob=README.rst" @@ -12,5 +12,5 @@ maintainer="Gonzalo TornarĂ­a " license="Public Domain, GPL-3.0-or-later" homepage="https://github.com/sagemath/conway-polynomials" changelog="https://github.com/sagemath/conway-polynomials/raw/master/NEWS" -distfiles="${PYPI_SITE}/c/conway-polynomials/conway-polynomials-${version}.tar.gz" -checksum=6ed2300609bce79f0175d5b8546858eec02854f8be3237db8d1449ccccc1c581 +distfiles="${PYPI_SITE}/c/conway-polynomials/conway_polynomials-${version}.tar.gz" +checksum=4f619f64f81a3eb16c4e26c5a284feeec27a6f4aad647643e79af289801ae0f3 From 4380f05ad1994228faa176b85bc92220ef767159 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Tue, 9 Apr 2024 19:51:09 -0300 Subject: [PATCH 05/10] eclib: update to 20240408. --- srcpkgs/eclib/patches/fix-32bit-Euler.patch | 11 +++++++++++ srcpkgs/eclib/template | 6 +++--- 2 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 srcpkgs/eclib/patches/fix-32bit-Euler.patch diff --git a/srcpkgs/eclib/patches/fix-32bit-Euler.patch b/srcpkgs/eclib/patches/fix-32bit-Euler.patch new file mode 100644 index 00000000000000..44de9c31a06aaa --- /dev/null +++ b/srcpkgs/eclib/patches/fix-32bit-Euler.patch @@ -0,0 +1,11 @@ +--- a/libsrc/interface.cc ++++ b/libsrc/interface.cc +@@ -103,7 +103,7 @@ void Compute_Euler(RR& y) + + l = RR::precision(); + +- x = 1 + static_cast((0.25 * (l - 3)) * (NTL_BITS_PER_LONG * LOG2)); ++ x = 1 + static_cast((0.25 * (l - 3)) * (64 * LOG2)); + n = 1 + static_cast(3.591 * x); + + a=x; diff --git a/srcpkgs/eclib/template b/srcpkgs/eclib/template index 9043aa465a9ff5..dd22d4e6de6f31 100644 --- a/srcpkgs/eclib/template +++ b/srcpkgs/eclib/template @@ -1,7 +1,7 @@ # Template file for 'eclib' pkgname=eclib -version=20231212 -revision=2 +version=20240408 +revision=1 build_style=gnu-configure configure_args="--with-flint --with-boost" makedepends="pari-devel ntl-devel flintlib-devel boost-devel" @@ -11,7 +11,7 @@ license="GPL-2.0-or-later" homepage="https://github.com/JohnCremona/eclib" changelog="https://github.com/JohnCremona/eclib/releases" distfiles="https://github.com/JohnCremona/eclib/releases/download/v${version}/eclib-${version}.tar.bz2" -checksum=32d116a3e359b0de4f6486c2bb6188bb8b553c8b833f618cc2596484e8b6145a +checksum=3ba908e2019de53fcba141449caa6fa82f03605bf83bf9da8092df538adabe7c eclib-devel_package() { depends="${sourcepkg}>=${version}_${revision} ntl-devel" From 8e40a321fbfee28ee1872eca85986e050d8d9c45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Fri, 10 May 2024 16:13:08 -0300 Subject: [PATCH 06/10] sagemath: rebuild for ecl and gap Also patch for eclib and conway-polynomials updates. --- .../patches/37590-gap_4.13_part_1.patch | 724 ++++++++++++++++++ .../patches/37624-gap_4.13_part_2.patch | 14 + .../patches/37882-eclib_20040408.patch | 116 +++ .../patches/37883-gap_4.13_part_3.patch | 48 ++ .../patches/37884-gap_4.13_part_4.patch | 177 +++++ ...37949-conway-polynomials_0.10_part_1.patch | 24 + ...37967-conway-polynomials_0.10_part_2.patch | 74 ++ srcpkgs/sagemath/patches/get_patches | 19 +- srcpkgs/sagemath/template | 2 +- 9 files changed, 1195 insertions(+), 3 deletions(-) create mode 100644 srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch create mode 100644 srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch create mode 100644 srcpkgs/sagemath/patches/37882-eclib_20040408.patch create mode 100644 srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch create mode 100644 srcpkgs/sagemath/patches/37884-gap_4.13_part_4.patch create mode 100644 srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch create mode 100644 srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch diff --git a/srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch b/srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch new file mode 100644 index 00000000000000..8e86d2a94a40ba --- /dev/null +++ b/srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch @@ -0,0 +1,724 @@ +diff --git a/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst b/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst +index 101cbcdb4e7..fe465251bfc 100644 +--- a/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst ++++ b/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst +@@ -65,13 +65,13 @@ We can access a lot of information about groups, such as: + Subgroup generated by [(1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) + Subgroup generated by [(2,8)(3,7)(4,6)] of (Dihedral group of order 16 as a permutation group) + Subgroup generated by [(1,2)(3,8)(4,7)(5,6)] of (Dihedral group of order 16 as a permutation group) +- Subgroup generated by [(1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) +- Subgroup generated by [(2,8)(3,7)(4,6), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) +- Subgroup generated by [(1,2)(3,8)(4,7)(5,6), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) +- Subgroup generated by [(2,8)(3,7)(4,6), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) +- Subgroup generated by [(1,2,3,4,5,6,7,8), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) +- Subgroup generated by [(1,2)(3,8)(4,7)(5,6), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) +- Subgroup generated by [(2,8)(3,7)(4,6), (1,2,3,4,5,6,7,8), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) ++ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8)] of (Dihedral group of order 16 as a permutation group) ++ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (2,8)(3,7)(4,6)] of (Dihedral group of order 16 as a permutation group) ++ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,2)(3,8)(4,7)(5,6)] of (Dihedral group of order 16 as a permutation group) ++ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (2,8)(3,7)(4,6)] of (Dihedral group of order 16 as a permutation group) ++ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (1,2,3,4,5,6,7,8)] of (Dihedral group of order 16 as a permutation group) ++ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (1,2)(3,8)(4,7)(5,6)] of (Dihedral group of order 16 as a permutation group) ++ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (2,8)(3,7)(4,6), (1,2,3,4,5,6,7,8)] of (Dihedral group of order 16 as a permutation group) + + In the previous cell we once again did a for loop over a set of objects + rather than just a list of numbers. This can be very powerful. +diff --git a/src/doc/en/thematic_tutorials/group_theory.rst b/src/doc/en/thematic_tutorials/group_theory.rst +index e9e6b23953f..dd0afcbef0c 100644 +--- a/src/doc/en/thematic_tutorials/group_theory.rst ++++ b/src/doc/en/thematic_tutorials/group_theory.rst +@@ -591,8 +591,8 @@ subgroups. :: + Subgroup generated by [(1,11)(2,12)(3,13)(4,14)(5,15)(6,16)(7,17)(8,18)(9,19)(10,20)] of (Cyclic group of order 20 as a permutation group), + Subgroup generated by [(1,6,11,16)(2,7,12,17)(3,8,13,18)(4,9,14,19)(5,10,15,20), (1,11)(2,12)(3,13)(4,14)(5,15)(6,16)(7,17)(8,18)(9,19)(10,20)] of (Cyclic group of order 20 as a permutation group), + Subgroup generated by [(1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20)] of (Cyclic group of order 20 as a permutation group), +- Subgroup generated by [(1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20), (1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20)] of (Cyclic group of order 20 as a permutation group), +- Subgroup generated by [(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20), (1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20), (1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20)] of (Cyclic group of order 20 as a permutation group)] ++ Subgroup generated by [(1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20), (1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20)] of (Cyclic group of order 20 as a permutation group), ++ Subgroup generated by [(1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20), (1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20), (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)] of (Cyclic group of order 20 as a permutation group)] + + Be careful, this command uses some more advanced ideas and will not + usually list *all* of the subgroups of a group. Here we are relying on +@@ -651,16 +651,16 @@ suitable `g`. As an illustration, the code below: + Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8)] of (Dihedral group of order 24 as a permutation group), + Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), + Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(1,7)(2,8)(3,9)(4,10)(5,11)(6,12), (1,10,7,4)(2,11,8,5)(3,12,9,6)] of (Dihedral group of order 24 as a permutation group), ++ Subgroup generated by [(1,10,7,4)(2,11,8,5)(3,12,9,6), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group), + Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12), (1,10,7,4)(2,11,8,5)(3,12,9,6)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(1,2,3,4,5,6,7,8,9,10,11,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,2,3,4,5,6,7,8,9,10,11,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group)] ++ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12)] of (Dihedral group of order 24 as a permutation group), ++ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (2,12)(3,11)(4,10)(5,9)(6,8)] of (Dihedral group of order 24 as a permutation group), ++ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,2)(3,12)(4,11)(5,10)(6,9)(7,8)] of (Dihedral group of order 24 as a permutation group), ++ Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,10,7,4)(2,11,8,5)(3,12,9,6), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group), ++ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (2,12)(3,11)(4,10)(5,9)(6,8)] of (Dihedral group of order 24 as a permutation group), ++ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,2,3,4,5,6,7,8,9,10,11,12)] of (Dihedral group of order 24 as a permutation group), ++ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,2)(3,12)(4,11)(5,10)(6,9)(7,8)] of (Dihedral group of order 24 as a permutation group), ++ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (2,12)(3,11)(4,10)(5,9)(6,8), (1,2,3,4,5,6,7,8,9,10,11,12)] of (Dihedral group of order 24 as a permutation group)] + + sage: print("An order two subgroup:\n{}".format(sg[1].list())) + An order two subgroup: +diff --git a/src/sage/categories/finite_groups.py b/src/sage/categories/finite_groups.py +index f6866485e93..70cc029e389 100644 +--- a/src/sage/categories/finite_groups.py ++++ b/src/sage/categories/finite_groups.py +@@ -48,7 +48,7 @@ class ParentMethods: + + def semigroup_generators(self): + """ +- Returns semigroup generators for self. ++ Return semigroup generators for ``self``. + + For finite groups, the group generators are also semigroup + generators. Hence, this default implementation calls +@@ -58,7 +58,7 @@ def semigroup_generators(self): + + sage: A = AlternatingGroup(4) + sage: A.semigroup_generators() +- Family ((2,3,4), (1,2,3)) ++ Family ((1,2,3), (2,3,4)) + """ + return self.group_generators() + +@@ -74,7 +74,7 @@ def monoid_generators(self): + + sage: A = AlternatingGroup(4) + sage: A.monoid_generators() +- Family ((2,3,4), (1,2,3)) ++ Family ((1,2,3), (2,3,4)) + """ + return self.group_generators() + +@@ -113,7 +113,7 @@ def some_elements(self): + + sage: A = AlternatingGroup(4) + sage: A.some_elements() +- Family ((2,3,4), (1,2,3)) ++ Family ((1,2,3), (2,3,4)) + """ + return self.group_generators() + +diff --git a/src/sage/categories/groups.py b/src/sage/categories/groups.py +index 445ba111c09..22f02ae4b30 100644 +--- a/src/sage/categories/groups.py ++++ b/src/sage/categories/groups.py +@@ -102,7 +102,7 @@ def group_generators(self): + + sage: A = AlternatingGroup(4) # needs sage.groups + sage: A.group_generators() # needs sage.groups +- Family ((2,3,4), (1,2,3)) ++ Family ((1,2,3), (2,3,4)) + """ + from sage.sets.family import Family + try: +@@ -124,7 +124,7 @@ def monoid_generators(self): + sage: # needs sage.groups + sage: A = AlternatingGroup(4) + sage: A.monoid_generators() +- Family ((2,3,4), (1,2,3)) ++ Family ((1,2,3), (2,3,4)) + sage: F. = FreeGroup() + sage: F.monoid_generators() + Family (x, y, x^-1, y^-1) +diff --git a/src/sage/categories/monoids.py b/src/sage/categories/monoids.py +index 28474bd17b6..a4340621bbe 100644 +--- a/src/sage/categories/monoids.py ++++ b/src/sage/categories/monoids.py +@@ -565,7 +565,7 @@ def algebra_generators(self): + + sage: A10 = AlternatingGroup(10) # needs sage.groups + sage: GroupAlgebras(QQ).example(A10).algebra_generators() # needs sage.groups sage.modules +- Family ((8,9,10), (1,2,3,4,5,6,7,8,9)) ++ Family ((1,2,3,4,5,6,7,8,9), (8,9,10)) + + sage: A = DihedralGroup(3).algebra(QQ); A # needs sage.groups sage.modules + Algebra of Dihedral group of order 6 as a permutation group +diff --git a/src/sage/groups/abelian_gps/abelian_group.py b/src/sage/groups/abelian_gps/abelian_group.py +index bbe793b3625..f98bfe0cde5 100644 +--- a/src/sage/groups/abelian_gps/abelian_group.py ++++ b/src/sage/groups/abelian_gps/abelian_group.py +@@ -1132,7 +1132,7 @@ def permutation_group(self): + sage: G = AbelianGroup(2,[2,3]); G + Multiplicative Abelian group isomorphic to C2 x C3 + sage: G.permutation_group() # needs sage.groups +- Permutation Group with generators [(3,4,5), (1,2)] ++ Permutation Group with generators [(1,2), (3,4,5)] + + TESTS: + +diff --git a/src/sage/groups/abelian_gps/abelian_group_element.py b/src/sage/groups/abelian_gps/abelian_group_element.py +index 6ae81844f98..b081f1e1c4e 100644 +--- a/src/sage/groups/abelian_gps/abelian_group_element.py ++++ b/src/sage/groups/abelian_gps/abelian_group_element.py +@@ -101,7 +101,7 @@ def as_permutation(self): + Multiplicative Abelian group isomorphic to C2 x C3 x C4 + sage: a,b,c = G.gens() + sage: Gp = G.permutation_group(); Gp # needs sage.groups +- Permutation Group with generators [(6,7,8,9), (3,4,5), (1,2)] ++ Permutation Group with generators [(1,2), (3,4,5), (6,7,8,9)] + sage: a.as_permutation() # needs sage.libs.gap + (1,2) + sage: ap = a.as_permutation(); ap # needs sage.libs.gap +diff --git a/src/sage/groups/additive_abelian/additive_abelian_group.py b/src/sage/groups/additive_abelian/additive_abelian_group.py +index c0a90f0c110..5f389fcfb81 100644 +--- a/src/sage/groups/additive_abelian/additive_abelian_group.py ++++ b/src/sage/groups/additive_abelian/additive_abelian_group.py +@@ -451,7 +451,7 @@ def permutation_group(self): + + sage: G = AdditiveAbelianGroup([2, 3]) + sage: G.permutation_group() # needs sage.groups +- Permutation Group with generators [(3,4,5), (1,2)] ++ Permutation Group with generators [(1,2), (3,4,5)] + + TESTS: + +diff --git a/src/sage/groups/class_function.py b/src/sage/groups/class_function.py +index e390cbbf288..901b0083b49 100644 +--- a/src/sage/groups/class_function.py ++++ b/src/sage/groups/class_function.py +@@ -717,7 +717,7 @@ def restrict(self, H): + Character of Symmetric group of order 5! as a permutation group + sage: H = G.subgroup([(1,2,3), (1,2), (4,5)]) + sage: chi.restrict(H) +- Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of ++ Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of + (Symmetric group of order 5! as a permutation group) + sage: chi.restrict(H).values() + [3, -3, -3, -1, 0, 0] +@@ -744,7 +744,7 @@ def induct(self, G): + sage: G = SymmetricGroup(5) + sage: H = G.subgroup([(1,2,3), (1,2), (4,5)]) + sage: xi = H.trivial_character(); xi +- Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of ++ Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of + (Symmetric group of order 5! as a permutation group) + sage: xi.induct(G) + Character of Symmetric group of order 5! as a permutation group +@@ -1425,7 +1425,7 @@ def restrict(self, H): + Character of Symmetric group of order 5! as a permutation group + sage: H = G.subgroup([(1,2,3), (1,2), (4,5)]) + sage: chi.restrict(H) +- Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of ++ Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of + (Symmetric group of order 5! as a permutation group) + sage: chi.restrict(H).values() + [3, -3, -3, -1, 0, 0] +@@ -1457,7 +1457,7 @@ def induct(self, G): + sage: G = SymmetricGroup(5) + sage: H = G.subgroup([(1,2,3), (1,2), (4,5)]) + sage: xi = H.trivial_character(); xi +- Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of ++ Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of + (Symmetric group of order 5! as a permutation group) + sage: xi.induct(G) + Character of Symmetric group of order 5! as a permutation group +diff --git a/src/sage/groups/perm_gps/permgroup.py b/src/sage/groups/perm_gps/permgroup.py +index 208758282b2..4ee53ba4f06 100644 +--- a/src/sage/groups/perm_gps/permgroup.py ++++ b/src/sage/groups/perm_gps/permgroup.py +@@ -478,6 +478,26 @@ def __init__(self, gens=None, gap_group=None, canonicalize=True, + sage: TestSuite(PermutationGroup([[]])).run() + sage: TestSuite(PermutationGroup([])).run() + sage: TestSuite(PermutationGroup([(0,1)])).run() ++ ++ Check that :issue:`37590` is fixed:: ++ ++ sage: lgg = libgap.eval("Group((1,2,3,4,5),(4,5,6))") ++ sage: P = PermutationGroup(gap_group=lgg) ++ sage: h = P.hom(codomain=P, im_gens=P.gens()) ++ sage: h ++ Group endomorphism of Permutation Group with generators [(1,2,3,4,5), (4,5,6)] ++ sage: P.gens() ++ ((1,2,3,4,5), (4,5,6)) ++ sage: P.gap().GeneratorsOfGroup() ++ [ (1,2,3,4,5), (4,5,6) ] ++ ++ sage: gg = gap.eval("Group((1,2,3,4,5),(4,5,6))") ++ sage: P = PermutationGroup(gap_group=gg) ++ sage: P.gens() ++ ((1,2,3,4,5), (4,5,6)) ++ sage: h = P.hom(codomain=P, im_gens=P.gens()) ++ sage: h ++ Group endomorphism of Permutation Group with generators [(1,2,3,4,5), (4,5,6)] + """ + if (gens is None and gap_group is None): + raise ValueError("you must specify gens or gap_group") +@@ -496,6 +516,7 @@ def __init__(self, gens=None, gap_group=None, canonicalize=True, + + if isinstance(gap_group, LibGapElement): + self._libgap = gap_group ++ canonicalize = False + + # Handle the case where only the GAP group is specified. + if gens is None: +@@ -1828,7 +1849,7 @@ def stabilizer(self, point, action="OnPoints"): + + sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3,4,10)]]) + sage: G.stabilizer(10) +- Subgroup generated by [(2,3,4), (1,2)(3,4)] of (Permutation Group with generators [(1,2)(3,4), (1,2,3,4,10)]) ++ Subgroup generated by [(1,2)(3,4), (2,3,4)] of (Permutation Group with generators [(1,2)(3,4), (1,2,3,4,10)]) + sage: G.stabilizer(1) == G.subgroup(['(2,3)(4,10)', '(2,10,3)']) + True + sage: G = PermutationGroup([[(2,3,4)],[(6,7)]]) +@@ -2430,7 +2451,6 @@ def fitting_subgroup(self): + sage: G.fitting_subgroup() + Subgroup generated by [(1,2)(3,4), (1,3)(2,4)] of + (Permutation Group with generators [(1,2), (1,2,3,4)]) +- + """ + return self.subgroup(gap_group=self._libgap_().FittingSubgroup()) + +@@ -2445,7 +2465,7 @@ def solvable_radical(self): + + sage: G = SymmetricGroup(4) + sage: G.solvable_radical() +- Subgroup generated by [(1,2), (1,2,3,4)] of ++ Subgroup generated by [(1,2,3,4), (1,2)] of + (Symmetric group of order 4! as a permutation group) + sage: G = SymmetricGroup(5) + sage: G.solvable_radical() +@@ -2581,7 +2601,7 @@ def conjugate(self, g): + sage: G = DihedralGroup(6) + sage: a = PermutationGroupElement("(1,2,3,4)") + sage: G.conjugate(a) +- Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)] ++ Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)] + + The element performing the conjugation can be specified in + several ways. :: +@@ -2589,15 +2609,15 @@ def conjugate(self, g): + sage: G = DihedralGroup(6) + sage: strng = "(1,2,3,4)" + sage: G.conjugate(strng) +- Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)] ++ Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)] + sage: G = DihedralGroup(6) + sage: lst = [2,3,4,1] + sage: G.conjugate(lst) +- Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)] ++ Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)] + sage: G = DihedralGroup(6) + sage: cycles = [(1,2,3,4)] + sage: G.conjugate(cycles) +- Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)] ++ Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)] + + Conjugation is a group automorphism, so conjugate groups + will be isomorphic. :: +@@ -2671,24 +2691,24 @@ def direct_product(self, other, maps=True): + + sage: G = CyclicPermutationGroup(4) + sage: D = G.direct_product(G, False); D +- Permutation Group with generators [(5,6,7,8), (1,2,3,4)] ++ Permutation Group with generators [(1,2,3,4), (5,6,7,8)] + sage: D,iota1,iota2,pr1,pr2 = G.direct_product(G) + sage: D; iota1; iota2; pr1; pr2 +- Permutation Group with generators [(5,6,7,8), (1,2,3,4)] ++ Permutation Group with generators [(1,2,3,4), (5,6,7,8)] + Permutation group morphism: + From: Cyclic group of order 4 as a permutation group +- To: Permutation Group with generators [(5,6,7,8), (1,2,3,4)] ++ To: Permutation Group with generators [(1,2,3,4), (5,6,7,8)] + Defn: Embedding( Group( [ (1,2,3,4), (5,6,7,8) ] ), 1 ) + Permutation group morphism: + From: Cyclic group of order 4 as a permutation group +- To: Permutation Group with generators [(5,6,7,8), (1,2,3,4)] ++ To: Permutation Group with generators [(1,2,3,4), (5,6,7,8)] + Defn: Embedding( Group( [ (1,2,3,4), (5,6,7,8) ] ), 2 ) + Permutation group morphism: +- From: Permutation Group with generators [(5,6,7,8), (1,2,3,4)] ++ From: Permutation Group with generators [(1,2,3,4), (5,6,7,8)] + To: Cyclic group of order 4 as a permutation group + Defn: Projection( Group( [ (1,2,3,4), (5,6,7,8) ] ), 1 ) + Permutation group morphism: +- From: Permutation Group with generators [(5,6,7,8), (1,2,3,4)] ++ From: Permutation Group with generators [(1,2,3,4), (5,6,7,8)] + To: Cyclic group of order 4 as a permutation group + Defn: Projection( Group( [ (1,2,3,4), (5,6,7,8) ] ), 2 ) + sage: g = D([(1,3),(2,4)]); g +@@ -2934,7 +2954,7 @@ def holomorph(self): + sage: D4 = DihedralGroup(4) + sage: H = D4.holomorph() + sage: H.gens() +- ((3,8)(4,7), (2,3,5,8), (2,5)(3,8), (1,4,6,7)(2,3,5,8), (1,8)(2,7)(3,6)(4,5)) ++ ((2,3,5,8), (2,5)(3,8), (3,8)(4,7), (1,4,6,7)(2,3,5,8), (1,8)(2,7)(3,6)(4,5)) + sage: G = H.subgroup([H.gens()[0],H.gens()[1],H.gens()[2]]) + sage: N = H.subgroup([H.gens()[3],H.gens()[4]]) + sage: N.is_normal(H) +@@ -2954,7 +2974,6 @@ def holomorph(self): + + - Kevin Halasz (2012-08-14) + """ +- + libgap.eval('G := Group({})'.format(list(self.gens()))) + libgap.eval('aut := AutomorphismGroup(G)') + libgap.eval('alpha := InverseGeneralMapping(NiceMonomorphism(aut))') +@@ -3137,7 +3156,7 @@ def quotient(self, N, **kwds): + sage: G.quotient(N) + Permutation Group with generators [(1,2)] + sage: G.quotient(G) +- Permutation Group with generators [()] ++ Permutation Group with generators [(), ()] + """ + Q = self._libgap_() / N._libgap_() + # Return Q as a permutation group +@@ -3599,13 +3618,13 @@ def conjugacy_classes_subgroups(self): + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]), + Subgroup generated by [(2,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]), +- Subgroup generated by [(1,2)(3,4), (1,4)(2,3)] of ++ Subgroup generated by [(1,4)(2,3), (1,2)(3,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]), + Subgroup generated by [(2,4), (1,3)(2,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]), + Subgroup generated by [(1,2,3,4), (1,3)(2,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]), +- Subgroup generated by [(2,4), (1,2)(3,4), (1,4)(2,3)] of ++ Subgroup generated by [(1,4)(2,3), (1,2)(3,4), (2,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)])] + + :: +@@ -3618,7 +3637,7 @@ def conjugacy_classes_subgroups(self): + (Symmetric group of order 3! as a permutation group), + Subgroup generated by [(1,2,3)] of + (Symmetric group of order 3! as a permutation group), +- Subgroup generated by [(2,3), (1,2,3)] of ++ Subgroup generated by [(1,2,3), (2,3)] of + (Symmetric group of order 3! as a permutation group)] + + AUTHORS: +@@ -3640,7 +3659,7 @@ def subgroups(self): + with one element on through up to the whole group. + Conjugacy classes of subgroups are contiguous in the list. + +- .. warning:: ++ .. WARNING:: + + For even relatively small groups this method can + take a very long time to execute, or create vast +@@ -3671,7 +3690,7 @@ def subgroups(self): + (Symmetric group of order 3! as a permutation group), + Subgroup generated by [(1,2,3)] of + (Symmetric group of order 3! as a permutation group), +- Subgroup generated by [(2,3), (1,2,3)] of ++ Subgroup generated by [(1,2,3), (2,3)] of + (Symmetric group of order 3! as a permutation group)] + + sage: G = CyclicPermutationGroup(14) +@@ -3682,8 +3701,8 @@ def subgroups(self): + (Cyclic group of order 14 as a permutation group), + Subgroup generated by [(1,3,5,7,9,11,13)(2,4,6,8,10,12,14)] of + (Cyclic group of order 14 as a permutation group), +- Subgroup generated by [(1,2,3,4,5,6,7,8,9,10,11,12,13,14), +- (1,3,5,7,9,11,13)(2,4,6,8,10,12,14)] of ++ Subgroup generated by [(1,3,5,7,9,11,13)(2,4,6,8,10,12,14), ++ (1,2,3,4,5,6,7,8,9,10,11,12,13,14)] of + (Cyclic group of order 14 as a permutation group)] + + AUTHOR: +@@ -4049,15 +4068,15 @@ def normalizer(self, g): + sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3,4)]]) + sage: g = G([(1,3)]) + sage: G.normalizer(g) +- Subgroup generated by [(2,4), (1,3)] of ++ Subgroup generated by [(1,3), (2,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]) + sage: g = G([(1,2,3,4)]) + sage: G.normalizer(g) +- Subgroup generated by [(2,4), (1,2,3,4), (1,3)(2,4)] of ++ Subgroup generated by [(1,2,3,4), (1,3)(2,4), (2,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]) + sage: H = G.subgroup([G([(1,2,3,4)])]) + sage: G.normalizer(H) +- Subgroup generated by [(2,4), (1,2,3,4), (1,3)(2,4)] of ++ Subgroup generated by [(1,2,3,4), (1,3)(2,4), (2,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]) + """ + return self.subgroup(gap_group=self._libgap_().Normalizer(g)) +@@ -4071,7 +4090,7 @@ def centralizer(self, g): + sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3,4)]]) + sage: g = G([(1,3)]) + sage: G.centralizer(g) +- Subgroup generated by [(2,4), (1,3)] of ++ Subgroup generated by [(1,3), (2,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]) + sage: g = G([(1,2,3,4)]) + sage: G.centralizer(g) +@@ -4715,7 +4734,7 @@ def composition_series(self): + sage: G.composition_series() + [Subgroup generated by [(3,4), (1,2,3)(4,5)] of + (Permutation Group with generators [(3,4), (1,2,3)(4,5)]), +- Subgroup generated by [(1,3,5), (1,5)(3,4), (1,5)(2,4)] of ++ Subgroup generated by [(1,5)(3,4), (1,5)(2,4), (1,3,5)] of + (Permutation Group with generators [(3,4), (1,2,3)(4,5)]), + Subgroup generated by [()] of + (Permutation Group with generators [(3,4), (1,2,3)(4,5)])] +@@ -4746,7 +4765,7 @@ def derived_series(self): + sage: G.derived_series() + [Subgroup generated by [(3,4), (1,2,3)(4,5)] of + (Permutation Group with generators [(3,4), (1,2,3)(4,5)]), +- Subgroup generated by [(1,3,5), (1,5)(3,4), (1,5)(2,4)] of ++ Subgroup generated by [(1,5)(3,4), (1,5)(2,4), (1,3,5)] of + (Permutation Group with generators [(3,4), (1,2,3)(4,5)])] + """ + libgap.set_seed() +@@ -4770,7 +4789,7 @@ def lower_central_series(self): + sage: G.lower_central_series() + [Subgroup generated by [(3,4), (1,2,3)(4,5)] of + (Permutation Group with generators [(3,4), (1,2,3)(4,5)]), +- Subgroup generated by [(1,3,5), (1,5)(3,4), (1,5)(2,4)] of ++ Subgroup generated by [(1,5)(3,4), (1,5)(2,4), (1,3,5)] of + (Permutation Group with generators [(3,4), (1,2,3)(4,5)])] + """ + libgap.set_seed() +@@ -5123,7 +5142,8 @@ def __richcmp__(self, other, op): + sage: G + Symmetric group of order 6! as a permutation group + sage: G3 +- Subgroup generated by [(1,2), (1,2,3,4,5,6)] of (Symmetric group of order 6! as a permutation group) ++ Subgroup generated by [(1,2,3,4,5,6), (1,2)] of ++ (Symmetric group of order 6! as a permutation group) + sage: G is G3 + False + sage: G == G3 # as permutation groups +diff --git a/src/sage/groups/perm_gps/permgroup_named.py b/src/sage/groups/perm_gps/permgroup_named.py +index 222ee36f6da..6b42e654234 100644 +--- a/src/sage/groups/perm_gps/permgroup_named.py ++++ b/src/sage/groups/perm_gps/permgroup_named.py +@@ -449,7 +449,7 @@ def young_subgroup(self, comp): + sage: S = SymmetricGroup(8) + sage: c = Composition([2,2,2,2]) + sage: S.young_subgroup(c) +- Subgroup generated by [(7,8), (5,6), (3,4), (1,2)] of ++ Subgroup generated by [(1,2), (3,4), (5,6), (7,8)] of + (Symmetric group of order 8! as a permutation group) + + sage: S = SymmetricGroup(['a','b','c']) +@@ -706,6 +706,16 @@ def __init__(self, domain=None): + + sage: groups.permutation.Alternating(6) + Alternating group of order 6!/2 as a permutation group ++ ++ Check that alternating groups have their generators in the correct ++ order (:issue:`37590`):: ++ ++ sage: A = AlternatingGroup(6) ++ sage: A.gens() ++ ((1,2,3,4,5), (4,5,6)) ++ sage: A.gap().GeneratorsOfGroup() ++ [ (1,2,3,4,5), (4,5,6) ] ++ sage: h = A.hom(codomain=A, im_gens=A.gens()) + """ + PermutationGroup_symalt.__init__(self, gap_group='AlternatingGroup(%s)' % len(domain), domain=domain) + +@@ -3084,8 +3094,8 @@ def __init__(self, q, name='a'): + EXAMPLES:: + + sage: SuzukiGroup(8) # needs sage.rings.finite_rings +- Permutation Group with generators [(1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64), +- (1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56)] ++ Permutation Group with generators [(1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56), ++ (1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64)] + sage: print(SuzukiGroup(8)) # needs sage.rings.finite_rings + The Suzuki group over Finite Field in a of size 2^3 + +@@ -3101,8 +3111,8 @@ def __init__(self, q, name='a'): + TESTS:: + + sage: groups.permutation.Suzuki(8) # needs sage.rings.finite_rings +- Permutation Group with generators [(1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64), +- (1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56)] ++ Permutation Group with generators [(1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56), ++ (1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64)] + + REFERENCES: + +diff --git a/src/sage/rings/polynomial/polynomial_rational_flint.pyx b/src/sage/rings/polynomial/polynomial_rational_flint.pyx +index 1ef3cbaf681..805bb9fe8ae 100644 +--- a/src/sage/rings/polynomial/polynomial_rational_flint.pyx ++++ b/src/sage/rings/polynomial/polynomial_rational_flint.pyx +@@ -2116,7 +2116,7 @@ cdef class Polynomial_rational_flint(Polynomial): + sage: G = f.galois_group(); G + Transitive group number 5 of degree 4 + sage: G.gens() +- ((1,2), (1,2,3,4)) ++ ((1,2,3,4), (1,2)) + sage: G.order() + 24 + +diff --git a/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py b/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py +index 25efca28dce..028dd8cb33c 100644 +--- a/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py ++++ b/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py +@@ -95,7 +95,7 @@ + Subgroup generated by [(1,2)] of (Symmetric group of order 3! as a permutation group), + Subgroup generated by [(1,3)] of (Symmetric group of order 3! as a permutation group), + Subgroup generated by [(1,2,3)] of (Symmetric group of order 3! as a permutation group), +- Subgroup generated by [(2,3), (1,2,3)] of (Symmetric group of order 3! as a permutation group)] ++ Subgroup generated by [(1,2,3), (2,3)] of (Symmetric group of order 3! as a permutation group)] + + ~~~~~~~~~~~~~~~~~~~~~~ :: + +diff --git a/src/sage/tests/books/judson-abstract-algebra/galois-sage.py b/src/sage/tests/books/judson-abstract-algebra/galois-sage.py +index 036b0a390c0..b1ecf0d8d48 100644 +--- a/src/sage/tests/books/judson-abstract-algebra/galois-sage.py ++++ b/src/sage/tests/books/judson-abstract-algebra/galois-sage.py +@@ -271,10 +271,10 @@ + ((1,4),), + ((1,2)(3,4),), + ((1,3)(2,4),), +- ((2,3), (1,4)(2,3)), +- ((1,2,4,3), (1,4)(2,3)), +- ((1,2)(3,4), (1,4)(2,3)), +- ((2,3), (1,2,4,3), (1,4)(2,3))] ++ ((1,4)(2,3), (2,3)), ++ ((1,4)(2,3), (1,2,4,3)), ++ ((1,4)(2,3), (1,2)(3,4)), ++ ((1,4)(2,3), (2,3), (1,2,4,3))] + + ~~~~~~~~~~~~~~~~~~~~~~ :: + +diff --git a/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py b/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py +index abff8d3189c..dbc7bca8d96 100644 +--- a/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py ++++ b/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py +@@ -164,15 +164,14 @@ + sage: H = DihedralGroup(4) + sage: results = G.direct_product(H) + sage: results[0] +- Permutation Group with generators [(4,5,6,7), (4,7)(5,6), (1,2,3)] ++ Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)] + + ~~~~~~~~~~~~~~~~~~~~~~ :: + + sage: results[1] + Permutation group morphism: + From: Cyclic group of order 3 as a permutation group +- To: Permutation Group with generators +- [(4,5,6,7), (4,7)(5,6), (1,2,3)] ++ To: Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)] + Defn: Embedding( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 1 ) + + ~~~~~~~~~~~~~~~~~~~~~~ :: +@@ -180,16 +179,14 @@ + sage: results[2] + Permutation group morphism: + From: Dihedral group of order 8 as a permutation group +- To: Permutation Group with generators +- [(4,5,6,7), (4,7)(5,6), (1,2,3)] ++ To: Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)] + Defn: Embedding( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 2 ) + + ~~~~~~~~~~~~~~~~~~~~~~ :: + + sage: results[3] + Permutation group morphism: +- From: Permutation Group with generators +- [(4,5,6,7), (4,7)(5,6), (1,2,3)] ++ From: Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)] + To: Cyclic group of order 3 as a permutation group + Defn: Projection( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 1 ) + +@@ -197,8 +194,7 @@ + + sage: results[4] + Permutation group morphism: +- From: Permutation Group with generators +- [(4,5,6,7), (4,7)(5,6), (1,2,3)] ++ From: Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)] + To: Dihedral group of order 8 as a permutation group + Defn: Projection( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 2 ) + +diff --git a/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py b/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py +index 0051f206528..cd78b147ca3 100644 +--- a/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py ++++ b/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py +@@ -65,12 +65,12 @@ + sage: uniqS2 + [Permutation Group with generators [(2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], + Permutation Group with generators [(1,7)(2,6)(3,5)(8,18)(9,17)(10,16)(11,15)(12,14), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], +- Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,13)(2,12)(3,11)(4,10)(5,9)(6,8)(14,18)(15,17)], +- Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,15)(2,14)(3,13)(4,12)(5,11)(6,10)(7,9)(16,18)], ++ Permutation Group with generators [(1,13)(2,12)(3,11)(4,10)(5,9)(6,8)(14,18)(15,17), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], ++ Permutation Group with generators [(1,15)(2,14)(3,13)(4,12)(5,11)(6,10)(7,9)(16,18), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], + Permutation Group with generators [(1,3)(4,18)(5,17)(6,16)(7,15)(8,14)(9,13)(10,12), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], + Permutation Group with generators [(1,9)(2,8)(3,7)(4,6)(10,18)(11,17)(12,16)(13,15), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], +- Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,11)(2,10)(3,9)(4,8)(5,7)(12,18)(13,17)(14,16)], +- Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,17)(2,16)(3,15)(4,14)(5,13)(6,12)(7,11)(8,10)], ++ Permutation Group with generators [(1,11)(2,10)(3,9)(4,8)(5,7)(12,18)(13,17)(14,16), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], ++ Permutation Group with generators [(1,17)(2,16)(3,15)(4,14)(5,13)(6,12)(7,11)(8,10), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], + Permutation Group with generators [(1,5)(2,4)(6,18)(7,17)(8,16)(9,15)(10,14)(11,13), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)]] + + ~~~~~~~~~~~~~~~~~~~~~~ :: +@@ -83,8 +83,8 @@ + sage: G = DihedralGroup(18) + sage: S3 = G.sylow_subgroup(3); S3 + Subgroup generated by +- [(1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18), +- (1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6)] ++ [(1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6), ++ (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18)] + of (Dihedral group of order 36 as a permutation group) + + ~~~~~~~~~~~~~~~~~~~~~~ :: +@@ -92,8 +92,8 @@ + sage: uniqS3 = all_sylow(G, 3) + sage: uniqS3 + [Permutation Group with generators +- [(1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18), +- (1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6)]] ++ [(1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6), ++ (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18)]] + + ~~~~~~~~~~~~~~~~~~~~~~ :: + +@@ -117,8 +117,8 @@ + sage: S3 = G.sylow_subgroup(3) + sage: N2 = G.normalizer(S2); N2 + Subgroup generated by +- [(2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11), +- (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)] ++ [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), ++ (2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11)] + of (Dihedral group of order 36 as a permutation group) + + ~~~~~~~~~~~~~~~~~~~~~~ :: +@@ -129,11 +129,12 @@ + ~~~~~~~~~~~~~~~~~~~~~~ :: + + sage: N3 = G.normalizer(S3); N3 +- Subgroup generated by [(2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11), +- (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18), +- (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18), +- (1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6)] of (Dihedral group of +- order 36 as a permutation group) ++ Subgroup generated by ++ [(1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6), ++ (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18), ++ (2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11), ++ (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)] ++ of (Dihedral group of order 36 as a permutation group) + + ~~~~~~~~~~~~~~~~~~~~~~ :: + +@@ -154,10 +155,10 @@ + sage: N = G.normalizer(H) + sage: N + Subgroup generated by +- [(1,2)(3,18)(4,17)(5,16)(6,15)(7,14)(8,13)(9,12)(10,11), +- (1,5)(2,4)(6,18)(7,17)(8,16)(9,15)(10,14)(11,13), +- (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18)] of (Dihedral group of +- order 36 as a permutation group) ++ [(1,5)(2,4)(6,18)(7,17)(8,16)(9,15)(10,14)(11,13), ++ (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18), ++ (1,2)(3,18)(4,17)(5,16)(6,15)(7,14)(8,13)(9,12)(10,11)] ++ of (Dihedral group of order 36 as a permutation group) + + ~~~~~~~~~~~~~~~~~~~~~~ :: + diff --git a/srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch b/srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch new file mode 100644 index 00000000000000..46541442bc9a7d --- /dev/null +++ b/srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch @@ -0,0 +1,14 @@ +diff --git a/src/sage/interfaces/gap3.py b/src/sage/interfaces/gap3.py +index e73308e014e..de2a7fe4289 100644 +--- a/src/sage/interfaces/gap3.py ++++ b/src/sage/interfaces/gap3.py +@@ -752,7 +752,8 @@ def _latex_(self): + r""" + EXAMPLES:: + +- sage: s = gap("[[1,2], [3/4, 5/6]]") ++ sage: # optional - gap3 ++ sage: s = gap3("[[1,2], [3/4, 5/6]]") + sage: s._latex_() + '\\left(\\begin{array}{rr} 1&2\\\\ 3/4&\\frac{5}{6}\\\\ \\end{array}\\right)' + sage: latex(s) diff --git a/srcpkgs/sagemath/patches/37882-eclib_20040408.patch b/srcpkgs/sagemath/patches/37882-eclib_20040408.patch new file mode 100644 index 00000000000000..819ee8e63ac476 --- /dev/null +++ b/srcpkgs/sagemath/patches/37882-eclib_20040408.patch @@ -0,0 +1,116 @@ +diff --git a/src/sage/libs/eclib/interface.py b/src/sage/libs/eclib/interface.py +index 7b2b07b1f3f..6c15997c09f 100644 +--- a/src/sage/libs/eclib/interface.py ++++ b/src/sage/libs/eclib/interface.py +@@ -728,7 +728,7 @@ class mwrank_MordellWeil(SageObject): + P1 = [-3:0:1] is generator number 1 + saturating up to 20...Saturation index bound (for points of good reduction) = 3 + Reducing saturation bound from given value 20 to computed index bound 3 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 7) +@@ -738,7 +738,7 @@ class mwrank_MordellWeil(SageObject): + P2 = [-2:3:1] is generator number 2 + saturating up to 20...Saturation index bound (for points of good reduction) = 4 + Reducing saturation bound from given value 20 to computed index bound 4 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + possible kernel vector = [1,1] +@@ -753,7 +753,7 @@ class mwrank_MordellWeil(SageObject): + P3 = [-14:25:8] is generator number 3 + saturating up to 20...Saturation index bound (for points of good reduction) = 3 + Reducing saturation bound from given value 20 to computed index bound 3 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 11) +@@ -908,7 +908,7 @@ def process(self, v, saturation_bound=0): + saturating basis...Saturation index bound (for points of good reduction) = 93 + Only p-saturating for p up to given value 2. + The resulting points may not be p-saturated for p between this and the computed index bound 93 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 ] + Checking 2-saturation + possible kernel vector = [1,0,0] +@@ -930,7 +930,7 @@ def process(self, v, saturation_bound=0): + saturating basis...Saturation index bound (for points of good reduction) = 46 + Only p-saturating for p up to given value 3. + The resulting points may not be p-saturated for p between this and the computed index bound 46 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 11) +@@ -954,7 +954,7 @@ def process(self, v, saturation_bound=0): + saturating basis...Saturation index bound (for points of good reduction) = 15 + Only p-saturating for p up to given value 5. + The resulting points may not be p-saturated for p between this and the computed index bound 15 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 5 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 11) +@@ -978,7 +978,7 @@ def process(self, v, saturation_bound=0): + 0.417143558758384 + sage: EQ.saturate() # points are now saturated + saturating basis...Saturation index bound (for points of good reduction) = 3 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 11) +@@ -1189,7 +1189,7 @@ def saturate(self, max_prime=-1, min_prime=2): + + sage: EQ.saturate() # points are now saturated + saturating basis...Saturation index bound (for points of good reduction) = 3 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 11) +@@ -1217,7 +1217,7 @@ def saturate(self, max_prime=-1, min_prime=2): + + sage: EQ.saturate() + saturating basis...Saturation index bound (for points of good reduction) = 3 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 11) +diff --git a/src/sage/libs/eclib/mwrank.pyx b/src/sage/libs/eclib/mwrank.pyx +index bc475f907b6..c685c329926 100644 +--- a/src/sage/libs/eclib/mwrank.pyx ++++ b/src/sage/libs/eclib/mwrank.pyx +@@ -590,7 +590,7 @@ cdef class _mw: + P1 = [-3:0:1] is generator number 1 + saturating up to 20...Saturation index bound (for points of good reduction) = 3 + Reducing saturation bound from given value 20 to computed index bound 3 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 7) +@@ -600,7 +600,7 @@ cdef class _mw: + P2 = [-2:3:1] is generator number 2 + saturating up to 20...Saturation index bound (for points of good reduction) = 4 + Reducing saturation bound from given value 20 to computed index bound 4 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + possible kernel vector = [1,1] +@@ -615,7 +615,7 @@ cdef class _mw: + P3 = [-14:25:8] is generator number 3 + saturating up to 20...Saturation index bound (for points of good reduction) = 3 + Reducing saturation bound from given value 20 to computed index bound 3 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 11) diff --git a/srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch b/srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch new file mode 100644 index 00000000000000..d22922704ecffa --- /dev/null +++ b/srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch @@ -0,0 +1,48 @@ +diff --git a/src/sage/groups/libgap_wrapper.pyx b/src/sage/groups/libgap_wrapper.pyx +index 0cf0e8bfb31..ddba766e94d 100644 +--- a/src/sage/groups/libgap_wrapper.pyx ++++ b/src/sage/groups/libgap_wrapper.pyx +@@ -602,14 +602,11 @@ cdef class ElementLibGAP(MultiplicativeGroupElement): + sage: from sage.groups.libgap_group import GroupLibGAP + sage: G = GroupLibGAP(libgap.FreeGroup('a', 'b')) + sage: g = G.gen(0) * G.gen(1) +- sage: g._latex_() +- "ab%\n" +- """ +- try: +- return self.gap().LaTeX() +- except ValueError: +- from sage.misc.latex import latex +- return latex(self._repr_()) ++ sage: latex(g) ++ \text{\texttt{a*b}} ++ """ ++ from sage.misc.latex import latex ++ return latex(self._repr_()) + + cpdef _mul_(left, right): + """ +diff --git a/src/sage/interfaces/gap.py b/src/sage/interfaces/gap.py +index ee5861ac785..2e49e4c106f 100644 +--- a/src/sage/interfaces/gap.py ++++ b/src/sage/interfaces/gap.py +@@ -1562,16 +1562,10 @@ def _latex_(self): + + sage: s = gap("[[1,2], [3/4, 5/6]]") + sage: latex(s) +- \left(\begin{array}{rr} 1&2\\ 3/4&\frac{5}{6}\\ \end{array}\right) ++ \left[\left[1, 2\right], \left[\frac{3}{4}, \frac{5}{6}\right]\right] + """ +- P = self._check_valid() +- try: +- s = P.eval('LaTeXObj(%s)' % self.name()) +- s = s.replace('\\\\', '\\').replace('"', '') +- s = s.replace('%\\n', ' ') +- return s +- except RuntimeError: +- return str(self) ++ from sage.misc.latex import latex ++ return latex(self._sage_()) + + @cached_method + def _tab_completion(self): diff --git a/srcpkgs/sagemath/patches/37884-gap_4.13_part_4.patch b/srcpkgs/sagemath/patches/37884-gap_4.13_part_4.patch new file mode 100644 index 00000000000000..dfa924c8d3b6a1 --- /dev/null +++ b/srcpkgs/sagemath/patches/37884-gap_4.13_part_4.patch @@ -0,0 +1,177 @@ +diff --git a/src/sage/algebras/fusion_rings/fusion_double.py b/src/sage/algebras/fusion_rings/fusion_double.py +index d87a7a782a7..7df091d3ca9 100644 +--- a/src/sage/algebras/fusion_rings/fusion_double.py ++++ b/src/sage/algebras/fusion_rings/fusion_double.py +@@ -132,7 +132,7 @@ class FusionDouble(CombinatorialFreeModule): + sage: G = SmallPermutationGroup(16,9) + sage: F = FusionDouble(G, prefix="b",inject_variables=True) + sage: b13^2 # long time (4s) +- b0 + b2 + b4 + b15 + b16 + b17 + b18 + b24 + b26 + b27 ++ b0 + b3 + b4 + + """ + @staticmethod +diff --git a/src/sage/categories/simplicial_sets.py b/src/sage/categories/simplicial_sets.py +index 7b7bbf827af..0864dc30af2 100644 +--- a/src/sage/categories/simplicial_sets.py ++++ b/src/sage/categories/simplicial_sets.py +@@ -593,9 +593,9 @@ def _canonical_twisting_operator(self): + sage: X = simplicial_sets.Torus() + sage: d = X._canonical_twisting_operator() + sage: d +- {(s_0 v_0, sigma_1): f3, (sigma_1, s_0 v_0): f2*f3^-1, (sigma_1, sigma_1): f2} ++ {(s_0 v_0, sigma_1): f2, (sigma_1, s_0 v_0): f1*f2^-1, (sigma_1, sigma_1): f1} + sage: list(d.values())[0].parent() +- Multivariate Laurent Polynomial Ring in f2, f3 over Integer Ring ++ Multivariate Laurent Polynomial Ring in f1, f2 over Integer Ring + sage: Y = simplicial_sets.RealProjectiveSpace(2) + sage: d2 = Y._canonical_twisting_operator() + sage: d2 +@@ -675,10 +675,10 @@ def twisted_chain_complex(self, twisting_operator=None, dimensions=None, augment + sage: X = simplicial_sets.Torus() + sage: C = X.twisted_chain_complex() + sage: C.differential(1) +- [ f3 - 1 f2*f3^-1 - 1 f2 - 1] ++ [ f2 - 1 f1*f2^-1 - 1 f1 - 1] + sage: C.differential(2) +- [ 1 f2*f3^-1] +- [ f3 1] ++ [ 1 f1*f2^-1] ++ [ f2 1] + [ -1 -1] + sage: C.differential(3) + [] +@@ -843,29 +843,29 @@ def twisted_homology(self, n, reduced=False): + + sage: Y = simplicial_sets.Torus() + sage: Y.twisted_homology(1) +- Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f2, f2inv, f3, f3inv over Integer Ring ++ Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f1, f1inv, f2, f2inv over Integer Ring + Generated by the rows of the matrix: + [ 1 0 0 0 0] + [ 0 1 0 0 0] + [ 0 0 1 0 0] + [ 0 0 0 1 0] + [ 0 0 0 0 1] ++ [f1*f1inv - 1 0 0 0 0] ++ [ 0 f1*f1inv - 1 0 0 0] ++ [ 0 0 f1*f1inv - 1 0 0] ++ [ 0 0 0 f1*f1inv - 1 0] ++ [ 0 0 0 0 f1*f1inv - 1] + [f2*f2inv - 1 0 0 0 0] + [ 0 f2*f2inv - 1 0 0 0] + [ 0 0 f2*f2inv - 1 0 0] + [ 0 0 0 f2*f2inv - 1 0] + [ 0 0 0 0 f2*f2inv - 1] +- [f3*f3inv - 1 0 0 0 0] +- [ 0 f3*f3inv - 1 0 0 0] +- [ 0 0 f3*f3inv - 1 0 0] +- [ 0 0 0 f3*f3inv - 1 0] +- [ 0 0 0 0 f3*f3inv - 1] + sage: Y.twisted_homology(2) +- Quotient module by Submodule of Ambient free module of rank 0 over the integral domain Multivariate Polynomial Ring in f2, f2inv, f3, f3inv over Integer Ring ++ Quotient module by Submodule of Ambient free module of rank 0 over the integral domain Multivariate Polynomial Ring in f1, f1inv, f2, f2inv over Integer Ring + Generated by the rows of the matrix: + [] + sage: Y.twisted_homology(1, reduced=True) +- Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f2, f2inv, f3, f3inv over Integer Ring ++ Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f1, f1inv, f2, f2inv over Integer Ring + Generated by the rows of the matrix: + [1 0 0 0 0] + [0 1 0 0 0] +diff --git a/src/sage/groups/finitely_presented.py b/src/sage/groups/finitely_presented.py +index a6ef6bb7395..b5a4b3a1edc 100644 +--- a/src/sage/groups/finitely_presented.py ++++ b/src/sage/groups/finitely_presented.py +@@ -1344,8 +1344,8 @@ def abelianization_map(self): + sage: H = G.quotient([g1^2, g2*g1*g2^(-1)*g1^(-1), g1*g3^(-2), g0^4]) + sage: H.abelianization_map() + Group morphism: +- From: Finitely presented group < g0, g1, g2, g3 | g1^2, g2*g1*g2^-1*g1^-1, g1*g3^-2, g0^4 > +- To: Finitely presented group < f2, f3, f4 | f2^-1*f3^-1*f2*f3, f2^-1*f4^-1*f2*f4, f3^-1*f4^-1*f3*f4, f2^4, f3^4 > ++ From: Finitely presented group < g0, g1, g2, g3 | g1^2, g2*g1*g2^-1*g1^-1, g1*g3^-2, g0^4 > ++ To: Finitely presented group < f1, f2, f3 | f1^4, f2^-1*f1^-1*f2*f1, f2^4, f3^-1*f1^-1*f3*f1, f3^-1*f2^-1*f3*f2 > + sage: g = FreeGroup(0) / [] + sage: g.abelianization_map() + Group endomorphism of Finitely presented group < | > +@@ -1394,10 +1394,10 @@ def abelianization_to_algebra(self, ring=QQ): + Defining g0, g1, g2, g3 + sage: H = G.quotient([g1^2, g2*g1*g2^(-1)*g1^(-1), g1*g3^(-2), g0^4]) + sage: H.abelianization_to_algebra() +- (Finitely presented group < f2, f3, f4 | f2^-1*f3^-1*f2*f3, f2^-1*f4^-1*f2*f4, +- f3^-1*f4^-1*f3*f4, f2^4, f3^4 >, +- Multivariate Laurent Polynomial Ring in f2, f3, f4 over Rational Field, +- [f2^4 - 1, f3^4 - 1], [f2^-1*f3^-2, f3^-2, f4, f3]) ++ (Finitely presented group < f1, f2, f3 | f1^4, f2^-1*f1^-1*f2*f1, f2^4, f3^-1*f1^-1*f3*f1, f3^-1*f2^-1*f3*f2 >, ++ Multivariate Laurent Polynomial Ring in f1, f2, f3 over Rational Field, ++ [f1^4 - 1, f2^4 - 1], ++ [f1^3*f2^2, f2^2, f3, f2]) + sage: g=FreeGroup(0) / [] + sage: g.abelianization_to_algebra() + (Finitely presented group < | >, Rational Field, [], []) +@@ -1673,7 +1673,7 @@ def abelian_alexander_matrix(self, ring=QQ, simplified=True): + [] + sage: G = FreeGroup(3)/[(2, 1, 1), (1, 2, 2, 3, 3)] + sage: A, ideal = G.abelian_alexander_matrix(simplified=True); A +- [-f3^2 - f3^4 - f3^6 f3^3 + f3^6] ++ [-f1^2 - f1^4 - f1^6 f1^3 + f1^6] + sage: g = FreeGroup(1) / [] + sage: g.abelian_alexander_matrix() + ([], []) +@@ -1773,11 +1773,11 @@ def characteristic_varieties(self, ring=QQ, matrix_ideal=None, groebner=False): + 3: Ideal (1) of Multivariate Laurent Polynomial Ring in f1, f2 over Integer Ring} + sage: G = FreeGroup(2)/[(1,2,1,-2,-1,-2)] + sage: G.characteristic_varieties() +- {0: Ideal (0) of Univariate Laurent Polynomial Ring in f2 over Rational Field, +- 1: Ideal (-1 + 2*f2 - 2*f2^2 + f2^3) of Univariate Laurent Polynomial Ring in f2 over Rational Field, +- 2: Ideal (1) of Univariate Laurent Polynomial Ring in f2 over Rational Field} ++ {0: Ideal (0) of Univariate Laurent Polynomial Ring in f1 over Rational Field, ++ 1: Ideal (-1 + 2*f1 - 2*f1^2 + f1^3) of Univariate Laurent Polynomial Ring in f1 over Rational Field, ++ 2: Ideal (1) of Univariate Laurent Polynomial Ring in f1 over Rational Field} + sage: G.characteristic_varieties(groebner=True) +- {0: [0], 1: [-1 + f2, 1 - f2 + f2^2], 2: []} ++ {0: [0], 1: [-1 + f1, 1 - f1 + f1^2], 2: []} + sage: G = FreeGroup(2)/[3 * (1, ), 2 * (2, )] + sage: G.characteristic_varieties(groebner=True) + {0: [-1 + F1, 1 + F1, 1 - F1 + F1^2, 1 + F1 + F1^2], 1: [1 - F1 + F1^2], 2: []} +diff --git a/src/sage/groups/perm_gps/permgroup_named.py b/src/sage/groups/perm_gps/permgroup_named.py +index c000d2cf105..765626e1752 100644 +--- a/src/sage/groups/perm_gps/permgroup_named.py ++++ b/src/sage/groups/perm_gps/permgroup_named.py +@@ -3451,16 +3451,14 @@ class SmallPermutationGroup(PermutationGroup_generic): + sage: G = SmallPermutationGroup(12,4); G + Group of order 12 and GAP Id 4 as a permutation group + sage: G.gens() +- ((1,2)(3,5)(4,10)(6,8)(7,12)(9,11), +- (1,3)(2,5)(4,7)(6,9)(8,11)(10,12), +- (1,4,8)(2,6,10)(3,7,11)(5,9,12)) ++ ((4,5), (1,2), (3,4,5)) + sage: G.character_table() # needs sage.rings.number_field + [ 1 1 1 1 1 1] +- [ 1 -1 -1 1 1 -1] ++ [ 1 -1 1 -1 1 -1] + [ 1 -1 1 1 -1 1] +- [ 1 1 -1 1 -1 -1] +- [ 2 0 -2 -1 0 1] +- [ 2 0 2 -1 0 -1] ++ [ 1 1 1 -1 -1 -1] ++ [ 2 0 -1 -2 0 1] ++ [ 2 0 -1 2 0 -1] + sage: def numgps(n): return ZZ(libgap.NumberSmallGroups(n)) + sage: all(SmallPermutationGroup(n,k).id() == [n,k] + ....: for n in [1..64] for k in [1..numgps(n)]) +@@ -3469,11 +3467,11 @@ class SmallPermutationGroup(PermutationGroup_generic): + sage: H.is_abelian() + False + sage: [H.centralizer(g) for g in H.conjugacy_classes_representatives()] +- [Subgroup generated by [(1,2)(3,6)(4,5), (1,3,5)(2,4,6)] of ++ [Subgroup generated by [(1,3), (2,3)] of + (Group of order 6 and GAP Id 1 as a permutation group), +- Subgroup generated by [(1,2)(3,6)(4,5)] of ++ Subgroup generated by [(2,3)] of + (Group of order 6 and GAP Id 1 as a permutation group), +- Subgroup generated by [(1,3,5)(2,4,6), (1,5,3)(2,6,4)] of ++ Subgroup generated by [(1,2,3)] of + (Group of order 6 and GAP Id 1 as a permutation group)] + """ + diff --git a/srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch b/srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch new file mode 100644 index 00000000000000..5bf9212b0fd865 --- /dev/null +++ b/srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch @@ -0,0 +1,24 @@ +diff --git a/src/sage/databases/conway.py b/src/sage/databases/conway.py +index b1f76292ce8..54912a2471c 100644 +--- a/src/sage/databases/conway.py ++++ b/src/sage/databases/conway.py +@@ -138,11 +138,16 @@ def __len__(self): + """ + Return the number of polynomials in this database. + +- TESTS:: ++ TESTS: ++ ++ The database currently contains `35357` polynomials, but due to ++ :issue:`35357` it will be extended by Conway polynomials of ++ degrees `1`, `2` and `3` for primes between `65537` and `110000`, ++ thus leading to a new total of `47090` entries:: + + sage: c = ConwayPolynomials() +- sage: len(c) +- 35357 ++ sage: len(c) in [35357, 47090] ++ True + """ + try: + return self._len diff --git a/srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch b/srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch new file mode 100644 index 00000000000000..5220db9f572a38 --- /dev/null +++ b/srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch @@ -0,0 +1,74 @@ +diff --git a/src/sage/schemes/elliptic_curves/ell_point.py b/src/sage/schemes/elliptic_curves/ell_point.py +index 9889808b35d..99e3e8c81fa 100644 +--- a/src/sage/schemes/elliptic_curves/ell_point.py ++++ b/src/sage/schemes/elliptic_curves/ell_point.py +@@ -1818,6 +1818,17 @@ def weil_pairing(self, Q, n, algorithm=None): + sage: z.multiplicative_order() + 360 + ++ Another larger example:: ++ ++ sage: F = GF(65537^2, modulus=[3,-1,1], name='a') ++ sage: F.inject_variables() ++ Defining a ++ sage: E = EllipticCurve(F, [0,1]) ++ sage: P = E(22, 28891) ++ sage: Q = E(-93, 2728*a + 64173) ++ sage: P.weil_pairing(Q, 7282, algorithm='sage') ++ 53278*a + 36700 ++ + An example over a number field:: + + sage: # needs sage.rings.number_field +@@ -1833,16 +1844,20 @@ def weil_pairing(self, Q, n, algorithm=None): + + TESTS: + +- Check that the original Sage implementation still works:: ++ Check that the original Sage implementation still works and ++ that the result coincides with the PARI implementation:: + + sage: # needs sage.rings.finite_rings + sage: GF(65537^2).inject_variables() + Defining z2 + sage: E = EllipticCurve(GF(65537^2), [0,1]) +- sage: P = E(22, 28891) +- sage: Q = E(-93, 40438*z2 + 31573) +- sage: P.weil_pairing(Q, 7282, algorithm='sage') +- 19937*z2 + 65384 ++ sage: R, S = E.torsion_basis(7282) ++ sage: a, b = ZZ.random_element(), ZZ.random_element() ++ sage: P = a*R + b*S ++ sage: c, d = ZZ.random_element(), ZZ.random_element() ++ sage: Q = c*R + d*S ++ sage: P.weil_pairing(Q, 7282, algorithm='sage') == P.weil_pairing(Q, 7282, algorithm='pari') ++ True + + Passing an unknown ``algorithm=`` argument should fail:: + +@@ -2047,19 +2062,19 @@ def tate_pairing(self, Q, n, k, q=None): + sage: Px.weil_pairing(Qx, 41)^e == num/den + True + +- TESTS: +- +- Check that the PARI output matches the original Sage implementation:: ++ An example over a large base field:: + +- sage: # needs sage.rings.finite_rings +- sage: GF(65537^2).inject_variables() ++ sage: F = GF(65537^2, modulus=[3,46810,1], name='z2') ++ sage: F.inject_variables() + Defining z2 +- sage: E = EllipticCurve(GF(65537^2), [0,1]) ++ sage: E = EllipticCurve(F, [0,1]) + sage: P = E(22, 28891) + sage: Q = E(-93, 40438*z2 + 31573) + sage: P.tate_pairing(Q, 7282, 2) + 34585*z2 + 4063 + ++ TESTS: ++ + The point ``P (self)`` must have ``n`` torsion:: + + sage: P.tate_pairing(Q, 163, 2) diff --git a/srcpkgs/sagemath/patches/get_patches b/srcpkgs/sagemath/patches/get_patches index 56057bbd4a397b..291824adc2549e 100755 --- a/srcpkgs/sagemath/patches/get_patches +++ b/srcpkgs/sagemath/patches/get_patches @@ -20,6 +20,21 @@ get_pr() { # run from patches dir cd $(dirname "$0") -# needs review -get_pr 37492 "singular 4.3.2p16" +# merged in 10.4.beta1 +get_pr 37590 "gap 4.13 part 1" +get_pr 37624 "gap 4.13 part 2" + +# merged in 10.4.beta2 get_pr 37763 "scipy 1.13" +get_pr 37882 "eclib 20040408" +get_pr 37883 "gap 4.13 part 3" + +# merged in 10.4.beta5 +get_pr 37492 "singular 4.3.2p16" + +# positive review +get_pr 37949 "conway-polynomials 0.10 part 1" +get_pr 37967 "conway-polynomials 0.10 part 2" + +# needs review +get_pr 37884 "gap 4.13 part 4" diff --git a/srcpkgs/sagemath/template b/srcpkgs/sagemath/template index 8b4bf7dfa441bb..faefc4b91a84e1 100644 --- a/srcpkgs/sagemath/template +++ b/srcpkgs/sagemath/template @@ -1,7 +1,7 @@ # Template file for 'sagemath' pkgname=sagemath version=10.3 -revision=2 +revision=3 build_wrksrc=pkgs/sagemath-standard build_style=python3-pep517 make_build_args="--skip-dependency-check" From 28e1ac2dcd8b36950f234d1a7fd956b1fc6a4cbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Fri, 29 Mar 2024 16:03:47 -0300 Subject: [PATCH 07/10] python3-sympy: update to 1.12.1rc1. --- .../python3-sympy/patches/00.python3.12.patch | 140 ------------------ .../python3-sympy/patches/01.python3.12.patch | 27 ---- srcpkgs/python3-sympy/template | 17 ++- 3 files changed, 11 insertions(+), 173 deletions(-) delete mode 100644 srcpkgs/python3-sympy/patches/00.python3.12.patch delete mode 100644 srcpkgs/python3-sympy/patches/01.python3.12.patch diff --git a/srcpkgs/python3-sympy/patches/00.python3.12.patch b/srcpkgs/python3-sympy/patches/00.python3.12.patch deleted file mode 100644 index 092f7dcab2fed5..00000000000000 --- a/srcpkgs/python3-sympy/patches/00.python3.12.patch +++ /dev/null @@ -1,140 +0,0 @@ -From f517c26fe421f03ea2aa20d7babb4df422753c5f Mon Sep 17 00:00:00 2001 -From: Sangyub Lee -Date: Tue, 30 May 2023 10:38:29 +0900 -Subject: [PATCH 1/3] Fix deprecation issues with python 3.12 ast lib - ---- - sympy/parsing/sympy_parser.py | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/sympy/parsing/sympy_parser.py b/sympy/parsing/sympy_parser.py -index 7e3a0e8067ce..5cda6b61ad69 100644 ---- a/sympy/parsing/sympy_parser.py -+++ b/sympy/parsing/sympy_parser.py -@@ -1135,7 +1135,7 @@ def visit_Compare(self, node): - new_node = ast.Call( - func=ast.Name(id=sympy_class, ctx=ast.Load()), - args=[left, right], -- keywords=[ast.keyword(arg='evaluate', value=ast.NameConstant(value=False, ctx=ast.Load()))], -+ keywords=[ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load()))], - starargs=None, - kwargs=None - ) -@@ -1168,7 +1168,7 @@ def visit_BinOp(self, node): - right = ast.Call( - func=ast.Name(id='Mul', ctx=ast.Load()), - args=[ast.UnaryOp(op=ast.USub(), operand=ast.Num(1)), right], -- keywords=[ast.keyword(arg='evaluate', value=ast.NameConstant(value=False, ctx=ast.Load()))], -+ keywords=[ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load()))], - starargs=None, - kwargs=None - ) -@@ -1179,7 +1179,7 @@ def visit_BinOp(self, node): - left = ast.Call( - func=ast.Name(id='Pow', ctx=ast.Load()), - args=[left, ast.UnaryOp(op=ast.USub(), operand=ast.Num(1))], -- keywords=[ast.keyword(arg='evaluate', value=ast.NameConstant(value=False, ctx=ast.Load()))], -+ keywords=[ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load()))], - starargs=None, - kwargs=None - ) -@@ -1187,7 +1187,7 @@ def visit_BinOp(self, node): - right = ast.Call( - func=ast.Name(id='Pow', ctx=ast.Load()), - args=[right, ast.UnaryOp(op=ast.USub(), operand=ast.Num(1))], -- keywords=[ast.keyword(arg='evaluate', value=ast.NameConstant(value=False, ctx=ast.Load()))], -+ keywords=[ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load()))], - starargs=None, - kwargs=None - ) -@@ -1197,7 +1197,7 @@ def visit_BinOp(self, node): - new_node = ast.Call( - func=ast.Name(id=sympy_class, ctx=ast.Load()), - args=[left, right], -- keywords=[ast.keyword(arg='evaluate', value=ast.NameConstant(value=False, ctx=ast.Load()))], -+ keywords=[ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load()))], - starargs=None, - kwargs=None - ) -@@ -1212,7 +1212,7 @@ def visit_BinOp(self, node): - def visit_Call(self, node): - new_node = self.generic_visit(node) - if isinstance(node.func, ast.Name) and node.func.id in self.functions: -- new_node.keywords.append(ast.keyword(arg='evaluate', value=ast.NameConstant(value=False, ctx=ast.Load()))) -+ new_node.keywords.append(ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load()))) - return new_node - - - -From 34de3853a9486e23294d28b932d5978e237bc19c Mon Sep 17 00:00:00 2001 -From: Sangyub Lee -Date: Tue, 30 May 2023 13:17:17 +0900 -Subject: [PATCH 2/3] Replace ast.Num - ---- - sympy/parsing/sympy_parser.py | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/sympy/parsing/sympy_parser.py b/sympy/parsing/sympy_parser.py -index 5cda6b61ad69..4a45a9d5bff8 100644 ---- a/sympy/parsing/sympy_parser.py -+++ b/sympy/parsing/sympy_parser.py -@@ -1167,7 +1167,7 @@ def visit_BinOp(self, node): - if isinstance(node.op, ast.Sub): - right = ast.Call( - func=ast.Name(id='Mul', ctx=ast.Load()), -- args=[ast.UnaryOp(op=ast.USub(), operand=ast.Num(1)), right], -+ args=[ast.UnaryOp(op=ast.USub(), operand=ast.Constant(1)), right], - keywords=[ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load()))], - starargs=None, - kwargs=None -@@ -1178,7 +1178,7 @@ def visit_BinOp(self, node): - rev = True - left = ast.Call( - func=ast.Name(id='Pow', ctx=ast.Load()), -- args=[left, ast.UnaryOp(op=ast.USub(), operand=ast.Num(1))], -+ args=[left, ast.UnaryOp(op=ast.USub(), operand=ast.Constant(1))], - keywords=[ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load()))], - starargs=None, - kwargs=None -@@ -1186,7 +1186,7 @@ def visit_BinOp(self, node): - else: - right = ast.Call( - func=ast.Name(id='Pow', ctx=ast.Load()), -- args=[right, ast.UnaryOp(op=ast.USub(), operand=ast.Num(1))], -+ args=[right, ast.UnaryOp(op=ast.USub(), operand=ast.Constant(1))], - keywords=[ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load()))], - starargs=None, - kwargs=None - -From eae2a0810829682417ba17e30812faa949121cc2 Mon Sep 17 00:00:00 2001 -From: Sangyub Lee -Date: Tue, 30 May 2023 13:53:44 +0900 -Subject: [PATCH 3/3] Fix additional deprecation warnings - ---- - sympy/parsing/ast_parser.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/sympy/parsing/ast_parser.py b/sympy/parsing/ast_parser.py -index c828ed31a19b..95a773d5bec6 100644 ---- a/sympy/parsing/ast_parser.py -+++ b/sympy/parsing/ast_parser.py -@@ -23,7 +23,7 @@ - from sympy.core.sympify import SympifyError - - from ast import parse, NodeTransformer, Call, Name, Load, \ -- fix_missing_locations, Str, Tuple -+ fix_missing_locations, Constant, Tuple - - class Transform(NodeTransformer): - -@@ -52,7 +52,7 @@ def visit_Name(self, node): - elif node.id in ['True', 'False']: - return node - return fix_missing_locations(Call(func=Name('Symbol', Load()), -- args=[Str(node.id)], keywords=[])) -+ args=[Constant(node.id)], keywords=[])) - - def visit_Lambda(self, node): - args = [self.visit(arg) for arg in node.args.args] diff --git a/srcpkgs/python3-sympy/patches/01.python3.12.patch b/srcpkgs/python3-sympy/patches/01.python3.12.patch deleted file mode 100644 index 6e1df83e8db26d..00000000000000 --- a/srcpkgs/python3-sympy/patches/01.python3.12.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 4b82eae46164afb468bb8995d87cbc643dc9e7a6 Mon Sep 17 00:00:00 2001 -From: Pablo Galindo -Date: Fri, 9 Jun 2023 11:22:20 +0100 -Subject: [PATCH 1/4] Fix factorial parsing for Python 3.12 - -Signed-off-by: Pablo Galindo ---- - .mailmap | 1 + - sympy/parsing/sympy_parser.py | 5 ++++- - 2 files changed, 5 insertions(+), 1 deletion(-) - -diff --git a/sympy/parsing/sympy_parser.py b/sympy/parsing/sympy_parser.py -index 7e3a0e8067ce..1c89f0d25b9a 100644 ---- a/sympy/parsing/sympy_parser.py -+++ b/sympy/parsing/sympy_parser.py -@@ -627,7 +627,10 @@ def factorial_notation(tokens: List[TOKEN], local_dict: DICT, global_dict: DICT) - result: List[TOKEN] = [] - nfactorial = 0 - for toknum, tokval in tokens: -- if toknum == ERRORTOKEN: -+ if toknum == OP and tokval == "!": -+ # In Python 3.12 "!" are OP instead of ERRORTOKEN -+ nfactorial += 1 -+ elif toknum == ERRORTOKEN: - op = tokval - if op == '!': - nfactorial += 1 diff --git a/srcpkgs/python3-sympy/template b/srcpkgs/python3-sympy/template index e767f7543c3be3..a370ce4ef82256 100644 --- a/srcpkgs/python3-sympy/template +++ b/srcpkgs/python3-sympy/template @@ -1,18 +1,23 @@ # Template file for 'python3-sympy' pkgname=python3-sympy -version=1.12 -revision=2 -build_style=python3-module -hostmakedepends="python3-setuptools" +version=1.12.1rc1 +revision=1 +build_style=python3-pep517 +hostmakedepends="python3-setuptools python3-wheel" depends="python3-mpmath" -checkdepends="python3-mpmath" +checkdepends="$depends python3-pytest python3-pytest-xdist gcc-fortran + python3-Cython python3-devel python3-ipython python3-lxml python3-matplotlib + python3-numexpr python3-numpy python3-scipy" short_desc="Computer algebra system for Python3" maintainer="Gonzalo TornarĂ­a " license="BSD-3-Clause" homepage="https://sympy.org/" changelog="https://github.com/sympy/sympy/wiki/Release-Notes" distfiles="${PYPI_SITE}/s/sympy/sympy-${version}.tar.gz" -checksum=ebf595c8dac3e0fdc4152c51878b498396ec7f30e7a914d6071e674d49420fb8 +checksum=96c4bc7655b3418129c5ac47903c4d81bdecb49c9a1752fdca118c921fbc47a6 + +# slow tests are broken +make_check_args="-m not(slow)" post_install() { vman doc/man/isympy.1 From 6cca9ac436d98aa56fe792b48a76be571e697a2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Mon, 22 Apr 2024 16:57:26 -0300 Subject: [PATCH 08/10] eclib: update to git 92e8733 --- srcpkgs/eclib/patches/fix-32bit-Euler.patch | 11 ----------- srcpkgs/eclib/template | 13 ++++++++++--- 2 files changed, 10 insertions(+), 14 deletions(-) delete mode 100644 srcpkgs/eclib/patches/fix-32bit-Euler.patch diff --git a/srcpkgs/eclib/patches/fix-32bit-Euler.patch b/srcpkgs/eclib/patches/fix-32bit-Euler.patch deleted file mode 100644 index 44de9c31a06aaa..00000000000000 --- a/srcpkgs/eclib/patches/fix-32bit-Euler.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/libsrc/interface.cc -+++ b/libsrc/interface.cc -@@ -103,7 +103,7 @@ void Compute_Euler(RR& y) - - l = RR::precision(); - -- x = 1 + static_cast((0.25 * (l - 3)) * (NTL_BITS_PER_LONG * LOG2)); -+ x = 1 + static_cast((0.25 * (l - 3)) * (64 * LOG2)); - n = 1 + static_cast(3.591 * x); - - a=x; diff --git a/srcpkgs/eclib/template b/srcpkgs/eclib/template index dd22d4e6de6f31..91fdc49d26a877 100644 --- a/srcpkgs/eclib/template +++ b/srcpkgs/eclib/template @@ -1,7 +1,8 @@ # Template file for 'eclib' pkgname=eclib -version=20240408 +version=20240408+git revision=1 +_gitrev=92e8733beb0e533f65ea42a05c29894c19de9b67 build_style=gnu-configure configure_args="--with-flint --with-boost" makedepends="pari-devel ntl-devel flintlib-devel boost-devel" @@ -10,8 +11,14 @@ maintainer="Gonzalo TornarĂ­a " license="GPL-2.0-or-later" homepage="https://github.com/JohnCremona/eclib" changelog="https://github.com/JohnCremona/eclib/releases" -distfiles="https://github.com/JohnCremona/eclib/releases/download/v${version}/eclib-${version}.tar.bz2" -checksum=3ba908e2019de53fcba141449caa6fa82f03605bf83bf9da8092df538adabe7c +#distfiles="https://github.com/JohnCremona/eclib/releases/download/v${version}/eclib-${version}.tar.bz2" +distfiles="https://github.com/JohnCremona/eclib/archive/$_gitrev.tar.gz" +checksum=8223c1f9d0d1f049f148595c35665241fea295be821e46e326632adef093bd92 + +hostmakedepends+=" autoconf automake libtool" +post_patch() { + ./autogen.sh +} eclib-devel_package() { depends="${sourcepkg}>=${version}_${revision} ntl-devel" From fea5142fe0e962177ec1f149d18b9027beb427ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Wed, 27 Mar 2024 12:56:01 -0300 Subject: [PATCH 09/10] sagemath: update to 10.4.beta5. --- .../patches/37492-singular_4.3.2p16.patch | 229 ------ .../patches/37590-gap_4.13_part_1.patch | 724 ------------------ .../patches/37624-gap_4.13_part_2.patch | 14 - .../sagemath/patches/37645-fix_doctest.patch | 215 ++++++ .../sagemath/patches/37763-scipy_1.13.patch | 13 - .../patches/37882-eclib_20040408.patch | 116 --- .../patches/37883-gap_4.13_part_3.patch | 48 -- ...4.13_part_4.patch => 37884-gap_4.13.patch} | 0 .../patches/37885-cython_warnings.patch | 12 + .../patches/37894-fix_build_deps.patch | 17 + srcpkgs/sagemath/patches/get_patches | 30 +- srcpkgs/sagemath/template | 23 +- 12 files changed, 266 insertions(+), 1175 deletions(-) delete mode 100644 srcpkgs/sagemath/patches/37492-singular_4.3.2p16.patch delete mode 100644 srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch delete mode 100644 srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch create mode 100644 srcpkgs/sagemath/patches/37645-fix_doctest.patch delete mode 100644 srcpkgs/sagemath/patches/37763-scipy_1.13.patch delete mode 100644 srcpkgs/sagemath/patches/37882-eclib_20040408.patch delete mode 100644 srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch rename srcpkgs/sagemath/patches/{37884-gap_4.13_part_4.patch => 37884-gap_4.13.patch} (100%) create mode 100644 srcpkgs/sagemath/patches/37885-cython_warnings.patch create mode 100644 srcpkgs/sagemath/patches/37894-fix_build_deps.patch diff --git a/srcpkgs/sagemath/patches/37492-singular_4.3.2p16.patch b/srcpkgs/sagemath/patches/37492-singular_4.3.2p16.patch deleted file mode 100644 index 6913f39b865ea1..00000000000000 --- a/srcpkgs/sagemath/patches/37492-singular_4.3.2p16.patch +++ /dev/null @@ -1,229 +0,0 @@ -diff --git a/src/sage/interfaces/singular.py b/src/sage/interfaces/singular.py -index 9c9b8ffb8b9..12a9aa582a6 100644 ---- a/src/sage/interfaces/singular.py -+++ b/src/sage/interfaces/singular.py -@@ -1211,14 +1211,14 @@ def current_ring(self): - polynomial ring, over a field, global ordering - // coefficients: ZZ/127 - // number of vars : 3 -- // block 1 : ordering rp -+ // block 1 : ordering ip - // : names x y z - // block 2 : ordering C - sage: singular.current_ring() - polynomial ring, over a field, global ordering - // coefficients: ZZ/127 - // number of vars : 3 -- // block 1 : ordering rp -+ // block 1 : ordering ip - // : names x y z - // block 2 : ordering C - """ -@@ -2040,6 +2040,9 @@ def _sage_(self, R=None): - elif typ == 'intvec': - from sage.modules.free_module_element import vector - return vector([sage.rings.integer.Integer(str(e)) for e in self]) -+ elif typ == 'bigintvec': -+ from sage.modules.free_module_element import vector -+ return vector([sage.rings.rational.Rational(str(e)) for e in self]) - elif typ == 'intmat': - from sage.matrix.constructor import matrix - from sage.rings.integer_ring import ZZ -diff --git a/src/sage/libs/singular/decl.pxd b/src/sage/libs/singular/decl.pxd -index e36216d6395..855c95b00bd 100644 ---- a/src/sage/libs/singular/decl.pxd -+++ b/src/sage/libs/singular/decl.pxd -@@ -243,7 +243,7 @@ cdef extern from "singular/Singular/libsingular.h": - ringorder_s - ringorder_lp - ringorder_dp -- ringorder_rp -+ ringorder_ip - ringorder_Dp - ringorder_wp - ringorder_Wp -@@ -291,6 +291,10 @@ cdef extern from "singular/Singular/libsingular.h": - int row - int col - -+ cdef cppclass bigintmat: -+ int (*length)() -+ number* (*get)(int i) -+ - # omalloc bins - - ctypedef struct omBin "omBin_s" -@@ -921,6 +925,7 @@ cdef extern from "singular/Singular/libsingular.h": - cdef int MATRIX_CMD - cdef int LIST_CMD - cdef int INTVEC_CMD -+ cdef int BIGINTVEC_CMD - cdef int NONE - cdef int RESOLUTION_CMD - cdef int PACKAGE_CMD -diff --git a/src/sage/libs/singular/function.pyx b/src/sage/libs/singular/function.pyx -index ac4bde0c20b..8284cb921a3 100644 ---- a/src/sage/libs/singular/function.pyx -+++ b/src/sage/libs/singular/function.pyx -@@ -98,7 +98,7 @@ from sage.rings.polynomial.multi_polynomial_sequence import PolynomialSequence_g - from sage.libs.singular.decl cimport * - from sage.libs.singular.option import opt_ctx - from sage.libs.singular.polynomial cimport singular_vector_maximal_component --from sage.libs.singular.singular cimport sa2si, si2sa, si2sa_intvec -+from sage.libs.singular.singular cimport sa2si, si2sa, si2sa_intvec, si2sa_bigintvec - from sage.libs.singular.singular import error_messages - - from sage.interfaces.singular import get_docstring -@@ -954,6 +954,8 @@ cdef class Converter(SageObject): - return si2sa(to_convert.data, self._singular_ring, self._sage_ring.base_ring()) - elif rtyp == INTVEC_CMD: - return si2sa_intvec( to_convert.data) -+ elif rtyp == BIGINTVEC_CMD: -+ return si2sa_bigintvec( to_convert.data) - elif rtyp == STRING_CMD: - # TODO: Need to determine what kind of data can be returned by a - # STRING_CMD--is it just ASCII strings or can it be an arbitrary -@@ -1231,7 +1233,7 @@ cdef class SingularFunction(SageObject): - Traceback (most recent call last): - ... - RuntimeError: error in Singular function call 'size': -- Wrong number of arguments (got 2 arguments, arity code is 302) -+ Wrong number of arguments (got 2 arguments, arity code is 303) - sage: size('foobar', ring=P) - 6 - -@@ -1634,17 +1636,17 @@ def singular_function(name): - Traceback (most recent call last): - ... - RuntimeError: error in Singular function call 'factorize': -- Wrong number of arguments (got 0 arguments, arity code is 305) -+ Wrong number of arguments (got 0 arguments, arity code is 306) - sage: factorize(f, 1, 2) - Traceback (most recent call last): - ... - RuntimeError: error in Singular function call 'factorize': -- Wrong number of arguments (got 3 arguments, arity code is 305) -+ Wrong number of arguments (got 3 arguments, arity code is 306) - sage: factorize(f, 1, 2, 3) - Traceback (most recent call last): - ... - RuntimeError: error in Singular function call 'factorize': -- Wrong number of arguments (got 4 arguments, arity code is 305) -+ Wrong number of arguments (got 4 arguments, arity code is 306) - - The Singular function ``list`` can be called with any number of - arguments:: -diff --git a/src/sage/libs/singular/ring.pyx b/src/sage/libs/singular/ring.pyx -index 494fd2c0caf..7b05d63e7c7 100644 ---- a/src/sage/libs/singular/ring.pyx -+++ b/src/sage/libs/singular/ring.pyx -@@ -24,7 +24,7 @@ from sage.libs.gmp.mpz cimport mpz_init_set_ui - from sage.libs.singular.decl cimport ring, currRing - from sage.libs.singular.decl cimport rChangeCurrRing, rComplete, rDelete, idInit - from sage.libs.singular.decl cimport omAlloc0, omStrDup, omAlloc --from sage.libs.singular.decl cimport ringorder_dp, ringorder_Dp, ringorder_lp, ringorder_rp, ringorder_ds, ringorder_Ds, ringorder_ls, ringorder_M, ringorder_c, ringorder_C, ringorder_wp, ringorder_Wp, ringorder_ws, ringorder_Ws, ringorder_a, rRingOrder_t -+from sage.libs.singular.decl cimport ringorder_dp, ringorder_Dp, ringorder_lp, ringorder_ip, ringorder_ds, ringorder_Ds, ringorder_ls, ringorder_M, ringorder_c, ringorder_C, ringorder_wp, ringorder_Wp, ringorder_ws, ringorder_Ws, ringorder_a, rRingOrder_t - from sage.libs.singular.decl cimport prCopyR - from sage.libs.singular.decl cimport n_unknown, n_algExt, n_transExt, n_Z, n_Zn, n_Znm, n_Z2m - from sage.libs.singular.decl cimport n_coeffType -@@ -60,7 +60,7 @@ order_dict = { - "dp": ringorder_dp, - "Dp": ringorder_Dp, - "lp": ringorder_lp, -- "rp": ringorder_rp, -+ "ip": ringorder_ip, - "ds": ringorder_ds, - "Ds": ringorder_Ds, - "ls": ringorder_ls, -diff --git a/src/sage/libs/singular/singular.pxd b/src/sage/libs/singular/singular.pxd -index d943a1018a2..f398d27a1fa 100644 ---- a/src/sage/libs/singular/singular.pxd -+++ b/src/sage/libs/singular/singular.pxd -@@ -1,4 +1,4 @@ --from sage.libs.singular.decl cimport ring, poly, number, intvec -+from sage.libs.singular.decl cimport ring, poly, number, intvec, bigintmat - from sage.libs.singular.function cimport Resolution - - from sage.rings.rational cimport Rational -@@ -29,6 +29,7 @@ cdef object si2sa_ZZmod(number *n, ring *_ring, object base) noexcept - cdef object si2sa_NF(number *n, ring *_ring, object base) noexcept - - cdef object si2sa_intvec(intvec *v) noexcept -+cdef object si2sa_bigintvec(bigintmat *v) noexcept - - # dispatches to all the above. - cdef object si2sa(number *n, ring *_ring, object base) noexcept -diff --git a/src/sage/libs/singular/singular.pyx b/src/sage/libs/singular/singular.pyx -index cf0124e0a35..0e5c7774e80 100644 ---- a/src/sage/libs/singular/singular.pyx -+++ b/src/sage/libs/singular/singular.pyx -@@ -1699,6 +1699,25 @@ cdef object si2sa_intvec(intvec *v) noexcept: - l.append(v.get(r)) - return tuple(l) - -+cdef object si2sa_bigintvec(bigintmat *v) noexcept: -+ r""" -+ create a sage tuple from a singular vector of big integers -+ -+ INPUT: -+ -+ - ``v`` -- a (pointer to) singular bigintmat -+ -+ OUTPUT: -+ -+ a sage tuple -+ """ -+ cdef int r -+ cdef list l = list() -+ for r in range(v.length()): -+ n = v.get(r) -+ l.append(si2sa_QQ(n, &n, currRing)) -+ return tuple(l) -+ - # ============== - # Initialisation - # ============== -diff --git a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx -index 70386eb0b50..b18c53de177 100644 ---- a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx -+++ b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx -@@ -1285,7 +1285,7 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base): - polynomial ring, over a field, global ordering - // coefficients: ZZ/2[a]/(a^8+a^4+a^3+a^2+1) - // number of vars : 10 -- // block 1 : ordering rp -+ // block 1 : ordering ip - // : names x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 - // block 2 : ordering C - -@@ -1294,7 +1294,7 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base): - polynomial ring, over a field, global ordering - // coefficients: ZZ/127 - // number of vars : 2 -- // block 1 : ordering rp -+ // block 1 : ordering ip - // : names x0 x1 - // block 2 : ordering C - -@@ -1303,7 +1303,7 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base): - polynomial ring, over a field, global ordering - // coefficients: QQ - // number of vars : 2 -- // block 1 : ordering rp -+ // block 1 : ordering ip - // : names x0 x1 - // block 2 : ordering C - -diff --git a/src/sage/rings/polynomial/term_order.py b/src/sage/rings/polynomial/term_order.py -index 48e49ac89fa..65e68681485 100644 ---- a/src/sage/rings/polynomial/term_order.py -+++ b/src/sage/rings/polynomial/term_order.py -@@ -388,7 +388,7 @@ - - singular_name_mapping = { - 'lex' : 'lp', -- 'invlex' : 'rp', -+ 'invlex' : 'ip', - 'degrevlex' : 'dp', - 'deglex' : 'Dp', - 'neglex' : 'ls', diff --git a/srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch b/srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch deleted file mode 100644 index 8e86d2a94a40ba..00000000000000 --- a/srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch +++ /dev/null @@ -1,724 +0,0 @@ -diff --git a/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst b/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst -index 101cbcdb4e7..fe465251bfc 100644 ---- a/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst -+++ b/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst -@@ -65,13 +65,13 @@ We can access a lot of information about groups, such as: - Subgroup generated by [(1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) - Subgroup generated by [(2,8)(3,7)(4,6)] of (Dihedral group of order 16 as a permutation group) - Subgroup generated by [(1,2)(3,8)(4,7)(5,6)] of (Dihedral group of order 16 as a permutation group) -- Subgroup generated by [(1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) -- Subgroup generated by [(2,8)(3,7)(4,6), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) -- Subgroup generated by [(1,2)(3,8)(4,7)(5,6), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) -- Subgroup generated by [(2,8)(3,7)(4,6), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) -- Subgroup generated by [(1,2,3,4,5,6,7,8), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) -- Subgroup generated by [(1,2)(3,8)(4,7)(5,6), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) -- Subgroup generated by [(2,8)(3,7)(4,6), (1,2,3,4,5,6,7,8), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) -+ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8)] of (Dihedral group of order 16 as a permutation group) -+ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (2,8)(3,7)(4,6)] of (Dihedral group of order 16 as a permutation group) -+ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,2)(3,8)(4,7)(5,6)] of (Dihedral group of order 16 as a permutation group) -+ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (2,8)(3,7)(4,6)] of (Dihedral group of order 16 as a permutation group) -+ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (1,2,3,4,5,6,7,8)] of (Dihedral group of order 16 as a permutation group) -+ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (1,2)(3,8)(4,7)(5,6)] of (Dihedral group of order 16 as a permutation group) -+ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (2,8)(3,7)(4,6), (1,2,3,4,5,6,7,8)] of (Dihedral group of order 16 as a permutation group) - - In the previous cell we once again did a for loop over a set of objects - rather than just a list of numbers. This can be very powerful. -diff --git a/src/doc/en/thematic_tutorials/group_theory.rst b/src/doc/en/thematic_tutorials/group_theory.rst -index e9e6b23953f..dd0afcbef0c 100644 ---- a/src/doc/en/thematic_tutorials/group_theory.rst -+++ b/src/doc/en/thematic_tutorials/group_theory.rst -@@ -591,8 +591,8 @@ subgroups. :: - Subgroup generated by [(1,11)(2,12)(3,13)(4,14)(5,15)(6,16)(7,17)(8,18)(9,19)(10,20)] of (Cyclic group of order 20 as a permutation group), - Subgroup generated by [(1,6,11,16)(2,7,12,17)(3,8,13,18)(4,9,14,19)(5,10,15,20), (1,11)(2,12)(3,13)(4,14)(5,15)(6,16)(7,17)(8,18)(9,19)(10,20)] of (Cyclic group of order 20 as a permutation group), - Subgroup generated by [(1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20)] of (Cyclic group of order 20 as a permutation group), -- Subgroup generated by [(1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20), (1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20)] of (Cyclic group of order 20 as a permutation group), -- Subgroup generated by [(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20), (1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20), (1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20)] of (Cyclic group of order 20 as a permutation group)] -+ Subgroup generated by [(1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20), (1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20)] of (Cyclic group of order 20 as a permutation group), -+ Subgroup generated by [(1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20), (1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20), (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)] of (Cyclic group of order 20 as a permutation group)] - - Be careful, this command uses some more advanced ideas and will not - usually list *all* of the subgroups of a group. Here we are relying on -@@ -651,16 +651,16 @@ suitable `g`. As an illustration, the code below: - Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8)] of (Dihedral group of order 24 as a permutation group), - Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), - Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group), -- Subgroup generated by [(1,7)(2,8)(3,9)(4,10)(5,11)(6,12), (1,10,7,4)(2,11,8,5)(3,12,9,6)] of (Dihedral group of order 24 as a permutation group), -+ Subgroup generated by [(1,10,7,4)(2,11,8,5)(3,12,9,6), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group), - Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group), -- Subgroup generated by [(1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), -- Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), -- Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), -- Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12), (1,10,7,4)(2,11,8,5)(3,12,9,6)] of (Dihedral group of order 24 as a permutation group), -- Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), -- Subgroup generated by [(1,2,3,4,5,6,7,8,9,10,11,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), -- Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), -- Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,2,3,4,5,6,7,8,9,10,11,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group)] -+ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12)] of (Dihedral group of order 24 as a permutation group), -+ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (2,12)(3,11)(4,10)(5,9)(6,8)] of (Dihedral group of order 24 as a permutation group), -+ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,2)(3,12)(4,11)(5,10)(6,9)(7,8)] of (Dihedral group of order 24 as a permutation group), -+ Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,10,7,4)(2,11,8,5)(3,12,9,6), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group), -+ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (2,12)(3,11)(4,10)(5,9)(6,8)] of (Dihedral group of order 24 as a permutation group), -+ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,2,3,4,5,6,7,8,9,10,11,12)] of (Dihedral group of order 24 as a permutation group), -+ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,2)(3,12)(4,11)(5,10)(6,9)(7,8)] of (Dihedral group of order 24 as a permutation group), -+ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (2,12)(3,11)(4,10)(5,9)(6,8), (1,2,3,4,5,6,7,8,9,10,11,12)] of (Dihedral group of order 24 as a permutation group)] - - sage: print("An order two subgroup:\n{}".format(sg[1].list())) - An order two subgroup: -diff --git a/src/sage/categories/finite_groups.py b/src/sage/categories/finite_groups.py -index f6866485e93..70cc029e389 100644 ---- a/src/sage/categories/finite_groups.py -+++ b/src/sage/categories/finite_groups.py -@@ -48,7 +48,7 @@ class ParentMethods: - - def semigroup_generators(self): - """ -- Returns semigroup generators for self. -+ Return semigroup generators for ``self``. - - For finite groups, the group generators are also semigroup - generators. Hence, this default implementation calls -@@ -58,7 +58,7 @@ def semigroup_generators(self): - - sage: A = AlternatingGroup(4) - sage: A.semigroup_generators() -- Family ((2,3,4), (1,2,3)) -+ Family ((1,2,3), (2,3,4)) - """ - return self.group_generators() - -@@ -74,7 +74,7 @@ def monoid_generators(self): - - sage: A = AlternatingGroup(4) - sage: A.monoid_generators() -- Family ((2,3,4), (1,2,3)) -+ Family ((1,2,3), (2,3,4)) - """ - return self.group_generators() - -@@ -113,7 +113,7 @@ def some_elements(self): - - sage: A = AlternatingGroup(4) - sage: A.some_elements() -- Family ((2,3,4), (1,2,3)) -+ Family ((1,2,3), (2,3,4)) - """ - return self.group_generators() - -diff --git a/src/sage/categories/groups.py b/src/sage/categories/groups.py -index 445ba111c09..22f02ae4b30 100644 ---- a/src/sage/categories/groups.py -+++ b/src/sage/categories/groups.py -@@ -102,7 +102,7 @@ def group_generators(self): - - sage: A = AlternatingGroup(4) # needs sage.groups - sage: A.group_generators() # needs sage.groups -- Family ((2,3,4), (1,2,3)) -+ Family ((1,2,3), (2,3,4)) - """ - from sage.sets.family import Family - try: -@@ -124,7 +124,7 @@ def monoid_generators(self): - sage: # needs sage.groups - sage: A = AlternatingGroup(4) - sage: A.monoid_generators() -- Family ((2,3,4), (1,2,3)) -+ Family ((1,2,3), (2,3,4)) - sage: F. = FreeGroup() - sage: F.monoid_generators() - Family (x, y, x^-1, y^-1) -diff --git a/src/sage/categories/monoids.py b/src/sage/categories/monoids.py -index 28474bd17b6..a4340621bbe 100644 ---- a/src/sage/categories/monoids.py -+++ b/src/sage/categories/monoids.py -@@ -565,7 +565,7 @@ def algebra_generators(self): - - sage: A10 = AlternatingGroup(10) # needs sage.groups - sage: GroupAlgebras(QQ).example(A10).algebra_generators() # needs sage.groups sage.modules -- Family ((8,9,10), (1,2,3,4,5,6,7,8,9)) -+ Family ((1,2,3,4,5,6,7,8,9), (8,9,10)) - - sage: A = DihedralGroup(3).algebra(QQ); A # needs sage.groups sage.modules - Algebra of Dihedral group of order 6 as a permutation group -diff --git a/src/sage/groups/abelian_gps/abelian_group.py b/src/sage/groups/abelian_gps/abelian_group.py -index bbe793b3625..f98bfe0cde5 100644 ---- a/src/sage/groups/abelian_gps/abelian_group.py -+++ b/src/sage/groups/abelian_gps/abelian_group.py -@@ -1132,7 +1132,7 @@ def permutation_group(self): - sage: G = AbelianGroup(2,[2,3]); G - Multiplicative Abelian group isomorphic to C2 x C3 - sage: G.permutation_group() # needs sage.groups -- Permutation Group with generators [(3,4,5), (1,2)] -+ Permutation Group with generators [(1,2), (3,4,5)] - - TESTS: - -diff --git a/src/sage/groups/abelian_gps/abelian_group_element.py b/src/sage/groups/abelian_gps/abelian_group_element.py -index 6ae81844f98..b081f1e1c4e 100644 ---- a/src/sage/groups/abelian_gps/abelian_group_element.py -+++ b/src/sage/groups/abelian_gps/abelian_group_element.py -@@ -101,7 +101,7 @@ def as_permutation(self): - Multiplicative Abelian group isomorphic to C2 x C3 x C4 - sage: a,b,c = G.gens() - sage: Gp = G.permutation_group(); Gp # needs sage.groups -- Permutation Group with generators [(6,7,8,9), (3,4,5), (1,2)] -+ Permutation Group with generators [(1,2), (3,4,5), (6,7,8,9)] - sage: a.as_permutation() # needs sage.libs.gap - (1,2) - sage: ap = a.as_permutation(); ap # needs sage.libs.gap -diff --git a/src/sage/groups/additive_abelian/additive_abelian_group.py b/src/sage/groups/additive_abelian/additive_abelian_group.py -index c0a90f0c110..5f389fcfb81 100644 ---- a/src/sage/groups/additive_abelian/additive_abelian_group.py -+++ b/src/sage/groups/additive_abelian/additive_abelian_group.py -@@ -451,7 +451,7 @@ def permutation_group(self): - - sage: G = AdditiveAbelianGroup([2, 3]) - sage: G.permutation_group() # needs sage.groups -- Permutation Group with generators [(3,4,5), (1,2)] -+ Permutation Group with generators [(1,2), (3,4,5)] - - TESTS: - -diff --git a/src/sage/groups/class_function.py b/src/sage/groups/class_function.py -index e390cbbf288..901b0083b49 100644 ---- a/src/sage/groups/class_function.py -+++ b/src/sage/groups/class_function.py -@@ -717,7 +717,7 @@ def restrict(self, H): - Character of Symmetric group of order 5! as a permutation group - sage: H = G.subgroup([(1,2,3), (1,2), (4,5)]) - sage: chi.restrict(H) -- Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of -+ Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of - (Symmetric group of order 5! as a permutation group) - sage: chi.restrict(H).values() - [3, -3, -3, -1, 0, 0] -@@ -744,7 +744,7 @@ def induct(self, G): - sage: G = SymmetricGroup(5) - sage: H = G.subgroup([(1,2,3), (1,2), (4,5)]) - sage: xi = H.trivial_character(); xi -- Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of -+ Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of - (Symmetric group of order 5! as a permutation group) - sage: xi.induct(G) - Character of Symmetric group of order 5! as a permutation group -@@ -1425,7 +1425,7 @@ def restrict(self, H): - Character of Symmetric group of order 5! as a permutation group - sage: H = G.subgroup([(1,2,3), (1,2), (4,5)]) - sage: chi.restrict(H) -- Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of -+ Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of - (Symmetric group of order 5! as a permutation group) - sage: chi.restrict(H).values() - [3, -3, -3, -1, 0, 0] -@@ -1457,7 +1457,7 @@ def induct(self, G): - sage: G = SymmetricGroup(5) - sage: H = G.subgroup([(1,2,3), (1,2), (4,5)]) - sage: xi = H.trivial_character(); xi -- Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of -+ Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of - (Symmetric group of order 5! as a permutation group) - sage: xi.induct(G) - Character of Symmetric group of order 5! as a permutation group -diff --git a/src/sage/groups/perm_gps/permgroup.py b/src/sage/groups/perm_gps/permgroup.py -index 208758282b2..4ee53ba4f06 100644 ---- a/src/sage/groups/perm_gps/permgroup.py -+++ b/src/sage/groups/perm_gps/permgroup.py -@@ -478,6 +478,26 @@ def __init__(self, gens=None, gap_group=None, canonicalize=True, - sage: TestSuite(PermutationGroup([[]])).run() - sage: TestSuite(PermutationGroup([])).run() - sage: TestSuite(PermutationGroup([(0,1)])).run() -+ -+ Check that :issue:`37590` is fixed:: -+ -+ sage: lgg = libgap.eval("Group((1,2,3,4,5),(4,5,6))") -+ sage: P = PermutationGroup(gap_group=lgg) -+ sage: h = P.hom(codomain=P, im_gens=P.gens()) -+ sage: h -+ Group endomorphism of Permutation Group with generators [(1,2,3,4,5), (4,5,6)] -+ sage: P.gens() -+ ((1,2,3,4,5), (4,5,6)) -+ sage: P.gap().GeneratorsOfGroup() -+ [ (1,2,3,4,5), (4,5,6) ] -+ -+ sage: gg = gap.eval("Group((1,2,3,4,5),(4,5,6))") -+ sage: P = PermutationGroup(gap_group=gg) -+ sage: P.gens() -+ ((1,2,3,4,5), (4,5,6)) -+ sage: h = P.hom(codomain=P, im_gens=P.gens()) -+ sage: h -+ Group endomorphism of Permutation Group with generators [(1,2,3,4,5), (4,5,6)] - """ - if (gens is None and gap_group is None): - raise ValueError("you must specify gens or gap_group") -@@ -496,6 +516,7 @@ def __init__(self, gens=None, gap_group=None, canonicalize=True, - - if isinstance(gap_group, LibGapElement): - self._libgap = gap_group -+ canonicalize = False - - # Handle the case where only the GAP group is specified. - if gens is None: -@@ -1828,7 +1849,7 @@ def stabilizer(self, point, action="OnPoints"): - - sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3,4,10)]]) - sage: G.stabilizer(10) -- Subgroup generated by [(2,3,4), (1,2)(3,4)] of (Permutation Group with generators [(1,2)(3,4), (1,2,3,4,10)]) -+ Subgroup generated by [(1,2)(3,4), (2,3,4)] of (Permutation Group with generators [(1,2)(3,4), (1,2,3,4,10)]) - sage: G.stabilizer(1) == G.subgroup(['(2,3)(4,10)', '(2,10,3)']) - True - sage: G = PermutationGroup([[(2,3,4)],[(6,7)]]) -@@ -2430,7 +2451,6 @@ def fitting_subgroup(self): - sage: G.fitting_subgroup() - Subgroup generated by [(1,2)(3,4), (1,3)(2,4)] of - (Permutation Group with generators [(1,2), (1,2,3,4)]) -- - """ - return self.subgroup(gap_group=self._libgap_().FittingSubgroup()) - -@@ -2445,7 +2465,7 @@ def solvable_radical(self): - - sage: G = SymmetricGroup(4) - sage: G.solvable_radical() -- Subgroup generated by [(1,2), (1,2,3,4)] of -+ Subgroup generated by [(1,2,3,4), (1,2)] of - (Symmetric group of order 4! as a permutation group) - sage: G = SymmetricGroup(5) - sage: G.solvable_radical() -@@ -2581,7 +2601,7 @@ def conjugate(self, g): - sage: G = DihedralGroup(6) - sage: a = PermutationGroupElement("(1,2,3,4)") - sage: G.conjugate(a) -- Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)] -+ Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)] - - The element performing the conjugation can be specified in - several ways. :: -@@ -2589,15 +2609,15 @@ def conjugate(self, g): - sage: G = DihedralGroup(6) - sage: strng = "(1,2,3,4)" - sage: G.conjugate(strng) -- Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)] -+ Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)] - sage: G = DihedralGroup(6) - sage: lst = [2,3,4,1] - sage: G.conjugate(lst) -- Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)] -+ Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)] - sage: G = DihedralGroup(6) - sage: cycles = [(1,2,3,4)] - sage: G.conjugate(cycles) -- Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)] -+ Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)] - - Conjugation is a group automorphism, so conjugate groups - will be isomorphic. :: -@@ -2671,24 +2691,24 @@ def direct_product(self, other, maps=True): - - sage: G = CyclicPermutationGroup(4) - sage: D = G.direct_product(G, False); D -- Permutation Group with generators [(5,6,7,8), (1,2,3,4)] -+ Permutation Group with generators [(1,2,3,4), (5,6,7,8)] - sage: D,iota1,iota2,pr1,pr2 = G.direct_product(G) - sage: D; iota1; iota2; pr1; pr2 -- Permutation Group with generators [(5,6,7,8), (1,2,3,4)] -+ Permutation Group with generators [(1,2,3,4), (5,6,7,8)] - Permutation group morphism: - From: Cyclic group of order 4 as a permutation group -- To: Permutation Group with generators [(5,6,7,8), (1,2,3,4)] -+ To: Permutation Group with generators [(1,2,3,4), (5,6,7,8)] - Defn: Embedding( Group( [ (1,2,3,4), (5,6,7,8) ] ), 1 ) - Permutation group morphism: - From: Cyclic group of order 4 as a permutation group -- To: Permutation Group with generators [(5,6,7,8), (1,2,3,4)] -+ To: Permutation Group with generators [(1,2,3,4), (5,6,7,8)] - Defn: Embedding( Group( [ (1,2,3,4), (5,6,7,8) ] ), 2 ) - Permutation group morphism: -- From: Permutation Group with generators [(5,6,7,8), (1,2,3,4)] -+ From: Permutation Group with generators [(1,2,3,4), (5,6,7,8)] - To: Cyclic group of order 4 as a permutation group - Defn: Projection( Group( [ (1,2,3,4), (5,6,7,8) ] ), 1 ) - Permutation group morphism: -- From: Permutation Group with generators [(5,6,7,8), (1,2,3,4)] -+ From: Permutation Group with generators [(1,2,3,4), (5,6,7,8)] - To: Cyclic group of order 4 as a permutation group - Defn: Projection( Group( [ (1,2,3,4), (5,6,7,8) ] ), 2 ) - sage: g = D([(1,3),(2,4)]); g -@@ -2934,7 +2954,7 @@ def holomorph(self): - sage: D4 = DihedralGroup(4) - sage: H = D4.holomorph() - sage: H.gens() -- ((3,8)(4,7), (2,3,5,8), (2,5)(3,8), (1,4,6,7)(2,3,5,8), (1,8)(2,7)(3,6)(4,5)) -+ ((2,3,5,8), (2,5)(3,8), (3,8)(4,7), (1,4,6,7)(2,3,5,8), (1,8)(2,7)(3,6)(4,5)) - sage: G = H.subgroup([H.gens()[0],H.gens()[1],H.gens()[2]]) - sage: N = H.subgroup([H.gens()[3],H.gens()[4]]) - sage: N.is_normal(H) -@@ -2954,7 +2974,6 @@ def holomorph(self): - - - Kevin Halasz (2012-08-14) - """ -- - libgap.eval('G := Group({})'.format(list(self.gens()))) - libgap.eval('aut := AutomorphismGroup(G)') - libgap.eval('alpha := InverseGeneralMapping(NiceMonomorphism(aut))') -@@ -3137,7 +3156,7 @@ def quotient(self, N, **kwds): - sage: G.quotient(N) - Permutation Group with generators [(1,2)] - sage: G.quotient(G) -- Permutation Group with generators [()] -+ Permutation Group with generators [(), ()] - """ - Q = self._libgap_() / N._libgap_() - # Return Q as a permutation group -@@ -3599,13 +3618,13 @@ def conjugacy_classes_subgroups(self): - (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]), - Subgroup generated by [(2,4)] of - (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]), -- Subgroup generated by [(1,2)(3,4), (1,4)(2,3)] of -+ Subgroup generated by [(1,4)(2,3), (1,2)(3,4)] of - (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]), - Subgroup generated by [(2,4), (1,3)(2,4)] of - (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]), - Subgroup generated by [(1,2,3,4), (1,3)(2,4)] of - (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]), -- Subgroup generated by [(2,4), (1,2)(3,4), (1,4)(2,3)] of -+ Subgroup generated by [(1,4)(2,3), (1,2)(3,4), (2,4)] of - (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)])] - - :: -@@ -3618,7 +3637,7 @@ def conjugacy_classes_subgroups(self): - (Symmetric group of order 3! as a permutation group), - Subgroup generated by [(1,2,3)] of - (Symmetric group of order 3! as a permutation group), -- Subgroup generated by [(2,3), (1,2,3)] of -+ Subgroup generated by [(1,2,3), (2,3)] of - (Symmetric group of order 3! as a permutation group)] - - AUTHORS: -@@ -3640,7 +3659,7 @@ def subgroups(self): - with one element on through up to the whole group. - Conjugacy classes of subgroups are contiguous in the list. - -- .. warning:: -+ .. WARNING:: - - For even relatively small groups this method can - take a very long time to execute, or create vast -@@ -3671,7 +3690,7 @@ def subgroups(self): - (Symmetric group of order 3! as a permutation group), - Subgroup generated by [(1,2,3)] of - (Symmetric group of order 3! as a permutation group), -- Subgroup generated by [(2,3), (1,2,3)] of -+ Subgroup generated by [(1,2,3), (2,3)] of - (Symmetric group of order 3! as a permutation group)] - - sage: G = CyclicPermutationGroup(14) -@@ -3682,8 +3701,8 @@ def subgroups(self): - (Cyclic group of order 14 as a permutation group), - Subgroup generated by [(1,3,5,7,9,11,13)(2,4,6,8,10,12,14)] of - (Cyclic group of order 14 as a permutation group), -- Subgroup generated by [(1,2,3,4,5,6,7,8,9,10,11,12,13,14), -- (1,3,5,7,9,11,13)(2,4,6,8,10,12,14)] of -+ Subgroup generated by [(1,3,5,7,9,11,13)(2,4,6,8,10,12,14), -+ (1,2,3,4,5,6,7,8,9,10,11,12,13,14)] of - (Cyclic group of order 14 as a permutation group)] - - AUTHOR: -@@ -4049,15 +4068,15 @@ def normalizer(self, g): - sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3,4)]]) - sage: g = G([(1,3)]) - sage: G.normalizer(g) -- Subgroup generated by [(2,4), (1,3)] of -+ Subgroup generated by [(1,3), (2,4)] of - (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]) - sage: g = G([(1,2,3,4)]) - sage: G.normalizer(g) -- Subgroup generated by [(2,4), (1,2,3,4), (1,3)(2,4)] of -+ Subgroup generated by [(1,2,3,4), (1,3)(2,4), (2,4)] of - (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]) - sage: H = G.subgroup([G([(1,2,3,4)])]) - sage: G.normalizer(H) -- Subgroup generated by [(2,4), (1,2,3,4), (1,3)(2,4)] of -+ Subgroup generated by [(1,2,3,4), (1,3)(2,4), (2,4)] of - (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]) - """ - return self.subgroup(gap_group=self._libgap_().Normalizer(g)) -@@ -4071,7 +4090,7 @@ def centralizer(self, g): - sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3,4)]]) - sage: g = G([(1,3)]) - sage: G.centralizer(g) -- Subgroup generated by [(2,4), (1,3)] of -+ Subgroup generated by [(1,3), (2,4)] of - (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]) - sage: g = G([(1,2,3,4)]) - sage: G.centralizer(g) -@@ -4715,7 +4734,7 @@ def composition_series(self): - sage: G.composition_series() - [Subgroup generated by [(3,4), (1,2,3)(4,5)] of - (Permutation Group with generators [(3,4), (1,2,3)(4,5)]), -- Subgroup generated by [(1,3,5), (1,5)(3,4), (1,5)(2,4)] of -+ Subgroup generated by [(1,5)(3,4), (1,5)(2,4), (1,3,5)] of - (Permutation Group with generators [(3,4), (1,2,3)(4,5)]), - Subgroup generated by [()] of - (Permutation Group with generators [(3,4), (1,2,3)(4,5)])] -@@ -4746,7 +4765,7 @@ def derived_series(self): - sage: G.derived_series() - [Subgroup generated by [(3,4), (1,2,3)(4,5)] of - (Permutation Group with generators [(3,4), (1,2,3)(4,5)]), -- Subgroup generated by [(1,3,5), (1,5)(3,4), (1,5)(2,4)] of -+ Subgroup generated by [(1,5)(3,4), (1,5)(2,4), (1,3,5)] of - (Permutation Group with generators [(3,4), (1,2,3)(4,5)])] - """ - libgap.set_seed() -@@ -4770,7 +4789,7 @@ def lower_central_series(self): - sage: G.lower_central_series() - [Subgroup generated by [(3,4), (1,2,3)(4,5)] of - (Permutation Group with generators [(3,4), (1,2,3)(4,5)]), -- Subgroup generated by [(1,3,5), (1,5)(3,4), (1,5)(2,4)] of -+ Subgroup generated by [(1,5)(3,4), (1,5)(2,4), (1,3,5)] of - (Permutation Group with generators [(3,4), (1,2,3)(4,5)])] - """ - libgap.set_seed() -@@ -5123,7 +5142,8 @@ def __richcmp__(self, other, op): - sage: G - Symmetric group of order 6! as a permutation group - sage: G3 -- Subgroup generated by [(1,2), (1,2,3,4,5,6)] of (Symmetric group of order 6! as a permutation group) -+ Subgroup generated by [(1,2,3,4,5,6), (1,2)] of -+ (Symmetric group of order 6! as a permutation group) - sage: G is G3 - False - sage: G == G3 # as permutation groups -diff --git a/src/sage/groups/perm_gps/permgroup_named.py b/src/sage/groups/perm_gps/permgroup_named.py -index 222ee36f6da..6b42e654234 100644 ---- a/src/sage/groups/perm_gps/permgroup_named.py -+++ b/src/sage/groups/perm_gps/permgroup_named.py -@@ -449,7 +449,7 @@ def young_subgroup(self, comp): - sage: S = SymmetricGroup(8) - sage: c = Composition([2,2,2,2]) - sage: S.young_subgroup(c) -- Subgroup generated by [(7,8), (5,6), (3,4), (1,2)] of -+ Subgroup generated by [(1,2), (3,4), (5,6), (7,8)] of - (Symmetric group of order 8! as a permutation group) - - sage: S = SymmetricGroup(['a','b','c']) -@@ -706,6 +706,16 @@ def __init__(self, domain=None): - - sage: groups.permutation.Alternating(6) - Alternating group of order 6!/2 as a permutation group -+ -+ Check that alternating groups have their generators in the correct -+ order (:issue:`37590`):: -+ -+ sage: A = AlternatingGroup(6) -+ sage: A.gens() -+ ((1,2,3,4,5), (4,5,6)) -+ sage: A.gap().GeneratorsOfGroup() -+ [ (1,2,3,4,5), (4,5,6) ] -+ sage: h = A.hom(codomain=A, im_gens=A.gens()) - """ - PermutationGroup_symalt.__init__(self, gap_group='AlternatingGroup(%s)' % len(domain), domain=domain) - -@@ -3084,8 +3094,8 @@ def __init__(self, q, name='a'): - EXAMPLES:: - - sage: SuzukiGroup(8) # needs sage.rings.finite_rings -- Permutation Group with generators [(1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64), -- (1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56)] -+ Permutation Group with generators [(1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56), -+ (1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64)] - sage: print(SuzukiGroup(8)) # needs sage.rings.finite_rings - The Suzuki group over Finite Field in a of size 2^3 - -@@ -3101,8 +3111,8 @@ def __init__(self, q, name='a'): - TESTS:: - - sage: groups.permutation.Suzuki(8) # needs sage.rings.finite_rings -- Permutation Group with generators [(1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64), -- (1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56)] -+ Permutation Group with generators [(1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56), -+ (1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64)] - - REFERENCES: - -diff --git a/src/sage/rings/polynomial/polynomial_rational_flint.pyx b/src/sage/rings/polynomial/polynomial_rational_flint.pyx -index 1ef3cbaf681..805bb9fe8ae 100644 ---- a/src/sage/rings/polynomial/polynomial_rational_flint.pyx -+++ b/src/sage/rings/polynomial/polynomial_rational_flint.pyx -@@ -2116,7 +2116,7 @@ cdef class Polynomial_rational_flint(Polynomial): - sage: G = f.galois_group(); G - Transitive group number 5 of degree 4 - sage: G.gens() -- ((1,2), (1,2,3,4)) -+ ((1,2,3,4), (1,2)) - sage: G.order() - 24 - -diff --git a/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py b/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py -index 25efca28dce..028dd8cb33c 100644 ---- a/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py -+++ b/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py -@@ -95,7 +95,7 @@ - Subgroup generated by [(1,2)] of (Symmetric group of order 3! as a permutation group), - Subgroup generated by [(1,3)] of (Symmetric group of order 3! as a permutation group), - Subgroup generated by [(1,2,3)] of (Symmetric group of order 3! as a permutation group), -- Subgroup generated by [(2,3), (1,2,3)] of (Symmetric group of order 3! as a permutation group)] -+ Subgroup generated by [(1,2,3), (2,3)] of (Symmetric group of order 3! as a permutation group)] - - ~~~~~~~~~~~~~~~~~~~~~~ :: - -diff --git a/src/sage/tests/books/judson-abstract-algebra/galois-sage.py b/src/sage/tests/books/judson-abstract-algebra/galois-sage.py -index 036b0a390c0..b1ecf0d8d48 100644 ---- a/src/sage/tests/books/judson-abstract-algebra/galois-sage.py -+++ b/src/sage/tests/books/judson-abstract-algebra/galois-sage.py -@@ -271,10 +271,10 @@ - ((1,4),), - ((1,2)(3,4),), - ((1,3)(2,4),), -- ((2,3), (1,4)(2,3)), -- ((1,2,4,3), (1,4)(2,3)), -- ((1,2)(3,4), (1,4)(2,3)), -- ((2,3), (1,2,4,3), (1,4)(2,3))] -+ ((1,4)(2,3), (2,3)), -+ ((1,4)(2,3), (1,2,4,3)), -+ ((1,4)(2,3), (1,2)(3,4)), -+ ((1,4)(2,3), (2,3), (1,2,4,3))] - - ~~~~~~~~~~~~~~~~~~~~~~ :: - -diff --git a/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py b/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py -index abff8d3189c..dbc7bca8d96 100644 ---- a/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py -+++ b/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py -@@ -164,15 +164,14 @@ - sage: H = DihedralGroup(4) - sage: results = G.direct_product(H) - sage: results[0] -- Permutation Group with generators [(4,5,6,7), (4,7)(5,6), (1,2,3)] -+ Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)] - - ~~~~~~~~~~~~~~~~~~~~~~ :: - - sage: results[1] - Permutation group morphism: - From: Cyclic group of order 3 as a permutation group -- To: Permutation Group with generators -- [(4,5,6,7), (4,7)(5,6), (1,2,3)] -+ To: Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)] - Defn: Embedding( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 1 ) - - ~~~~~~~~~~~~~~~~~~~~~~ :: -@@ -180,16 +179,14 @@ - sage: results[2] - Permutation group morphism: - From: Dihedral group of order 8 as a permutation group -- To: Permutation Group with generators -- [(4,5,6,7), (4,7)(5,6), (1,2,3)] -+ To: Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)] - Defn: Embedding( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 2 ) - - ~~~~~~~~~~~~~~~~~~~~~~ :: - - sage: results[3] - Permutation group morphism: -- From: Permutation Group with generators -- [(4,5,6,7), (4,7)(5,6), (1,2,3)] -+ From: Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)] - To: Cyclic group of order 3 as a permutation group - Defn: Projection( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 1 ) - -@@ -197,8 +194,7 @@ - - sage: results[4] - Permutation group morphism: -- From: Permutation Group with generators -- [(4,5,6,7), (4,7)(5,6), (1,2,3)] -+ From: Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)] - To: Dihedral group of order 8 as a permutation group - Defn: Projection( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 2 ) - -diff --git a/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py b/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py -index 0051f206528..cd78b147ca3 100644 ---- a/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py -+++ b/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py -@@ -65,12 +65,12 @@ - sage: uniqS2 - [Permutation Group with generators [(2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], - Permutation Group with generators [(1,7)(2,6)(3,5)(8,18)(9,17)(10,16)(11,15)(12,14), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], -- Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,13)(2,12)(3,11)(4,10)(5,9)(6,8)(14,18)(15,17)], -- Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,15)(2,14)(3,13)(4,12)(5,11)(6,10)(7,9)(16,18)], -+ Permutation Group with generators [(1,13)(2,12)(3,11)(4,10)(5,9)(6,8)(14,18)(15,17), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], -+ Permutation Group with generators [(1,15)(2,14)(3,13)(4,12)(5,11)(6,10)(7,9)(16,18), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], - Permutation Group with generators [(1,3)(4,18)(5,17)(6,16)(7,15)(8,14)(9,13)(10,12), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], - Permutation Group with generators [(1,9)(2,8)(3,7)(4,6)(10,18)(11,17)(12,16)(13,15), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], -- Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,11)(2,10)(3,9)(4,8)(5,7)(12,18)(13,17)(14,16)], -- Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,17)(2,16)(3,15)(4,14)(5,13)(6,12)(7,11)(8,10)], -+ Permutation Group with generators [(1,11)(2,10)(3,9)(4,8)(5,7)(12,18)(13,17)(14,16), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], -+ Permutation Group with generators [(1,17)(2,16)(3,15)(4,14)(5,13)(6,12)(7,11)(8,10), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], - Permutation Group with generators [(1,5)(2,4)(6,18)(7,17)(8,16)(9,15)(10,14)(11,13), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)]] - - ~~~~~~~~~~~~~~~~~~~~~~ :: -@@ -83,8 +83,8 @@ - sage: G = DihedralGroup(18) - sage: S3 = G.sylow_subgroup(3); S3 - Subgroup generated by -- [(1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18), -- (1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6)] -+ [(1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6), -+ (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18)] - of (Dihedral group of order 36 as a permutation group) - - ~~~~~~~~~~~~~~~~~~~~~~ :: -@@ -92,8 +92,8 @@ - sage: uniqS3 = all_sylow(G, 3) - sage: uniqS3 - [Permutation Group with generators -- [(1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18), -- (1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6)]] -+ [(1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6), -+ (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18)]] - - ~~~~~~~~~~~~~~~~~~~~~~ :: - -@@ -117,8 +117,8 @@ - sage: S3 = G.sylow_subgroup(3) - sage: N2 = G.normalizer(S2); N2 - Subgroup generated by -- [(2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11), -- (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)] -+ [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), -+ (2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11)] - of (Dihedral group of order 36 as a permutation group) - - ~~~~~~~~~~~~~~~~~~~~~~ :: -@@ -129,11 +129,12 @@ - ~~~~~~~~~~~~~~~~~~~~~~ :: - - sage: N3 = G.normalizer(S3); N3 -- Subgroup generated by [(2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11), -- (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18), -- (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18), -- (1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6)] of (Dihedral group of -- order 36 as a permutation group) -+ Subgroup generated by -+ [(1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6), -+ (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18), -+ (2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11), -+ (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)] -+ of (Dihedral group of order 36 as a permutation group) - - ~~~~~~~~~~~~~~~~~~~~~~ :: - -@@ -154,10 +155,10 @@ - sage: N = G.normalizer(H) - sage: N - Subgroup generated by -- [(1,2)(3,18)(4,17)(5,16)(6,15)(7,14)(8,13)(9,12)(10,11), -- (1,5)(2,4)(6,18)(7,17)(8,16)(9,15)(10,14)(11,13), -- (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18)] of (Dihedral group of -- order 36 as a permutation group) -+ [(1,5)(2,4)(6,18)(7,17)(8,16)(9,15)(10,14)(11,13), -+ (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18), -+ (1,2)(3,18)(4,17)(5,16)(6,15)(7,14)(8,13)(9,12)(10,11)] -+ of (Dihedral group of order 36 as a permutation group) - - ~~~~~~~~~~~~~~~~~~~~~~ :: - diff --git a/srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch b/srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch deleted file mode 100644 index 46541442bc9a7d..00000000000000 --- a/srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/src/sage/interfaces/gap3.py b/src/sage/interfaces/gap3.py -index e73308e014e..de2a7fe4289 100644 ---- a/src/sage/interfaces/gap3.py -+++ b/src/sage/interfaces/gap3.py -@@ -752,7 +752,8 @@ def _latex_(self): - r""" - EXAMPLES:: - -- sage: s = gap("[[1,2], [3/4, 5/6]]") -+ sage: # optional - gap3 -+ sage: s = gap3("[[1,2], [3/4, 5/6]]") - sage: s._latex_() - '\\left(\\begin{array}{rr} 1&2\\\\ 3/4&\\frac{5}{6}\\\\ \\end{array}\\right)' - sage: latex(s) diff --git a/srcpkgs/sagemath/patches/37645-fix_doctest.patch b/srcpkgs/sagemath/patches/37645-fix_doctest.patch new file mode 100644 index 00000000000000..7a0b70e7cb7df1 --- /dev/null +++ b/srcpkgs/sagemath/patches/37645-fix_doctest.patch @@ -0,0 +1,215 @@ +diff --git a/src/sage/doctest/test.py b/src/sage/doctest/test.py +index cb2cecc0b8b..735fa47ec42 100644 +--- a/src/sage/doctest/test.py ++++ b/src/sage/doctest/test.py +@@ -54,7 +54,7 @@ + Doctesting 1 file. + sage -t --warn-long 0.0 --random-seed=0 tolerance.rst + ********************************************************************** +- File "tolerance.rst", line ..., in sage.doctest.tests.tolerance ++ File "tolerance.rst", line ..., in ...tolerance + Failed example: + print(":-(") # abs tol 0.1 + Expected: +@@ -62,7 +62,7 @@ + Got: + :-( + ********************************************************************** +- File "tolerance.rst", line ..., in sage.doctest.tests.tolerance ++ File "tolerance.rst", line ..., in ...tolerance + Failed example: + print("1.0 2.0 3.0") # abs tol 0.1 + Expected: +@@ -70,7 +70,7 @@ + Got: + 1.0 2.0 3.0 + ********************************************************************** +- File "tolerance.rst", line ..., in sage.doctest.tests.tolerance ++ File "tolerance.rst", line ..., in ...tolerance + Failed example: + print("Hello") # abs tol 0.1 + Expected: +@@ -78,7 +78,7 @@ + Got: + Hello + ********************************************************************** +- File "tolerance.rst", line ..., in sage.doctest.tests.tolerance ++ File "tolerance.rst", line ..., in ...tolerance + Failed example: + print("1.0") # abs tol 0.1 + Expected: +@@ -86,7 +86,7 @@ + Got: + 1.0 + ********************************************************************** +- File "tolerance.rst", line ..., in sage.doctest.tests.tolerance ++ File "tolerance.rst", line ..., in ...tolerance + Failed example: + print("Hello 1.1") # abs tol 0.1 + Expected: +@@ -94,7 +94,7 @@ + Got: + Hello 1.1 + ********************************************************************** +- File "tolerance.rst", line ..., in sage.doctest.tests.tolerance ++ File "tolerance.rst", line ..., in ...tolerance + Failed example: + print("Hello 1.0") # rel tol 1e-6 + Expected: +@@ -104,7 +104,7 @@ + Tolerance exceeded: + 0.999999 vs 1.0, tolerance 2e-6 > 1e-6 + ********************************************************************** +- File "tolerance.rst", line ..., in sage.doctest.tests.tolerance ++ File "tolerance.rst", line ..., in ...tolerance + Failed example: + print("Hello 1.0") # rel tol 1e-6 + Expected: +@@ -124,7 +124,7 @@ + Doctesting 1 file. + sage -t --warn-long 0.0 --random-seed=0 initial.rst + ********************************************************************** +- File "initial.rst", line 4, in sage.doctest.tests.initial ++ File "initial.rst", line 4, in ...initial + Failed example: + a = binomiak(10,5) # random to test that we still get the exception + Exception raised: +@@ -132,7 +132,7 @@ + ... + NameError: name 'binomiak' is not defined + ********************************************************************** +- File "initial.rst", line 14, in sage.doctest.tests.initial ++ File "initial.rst", line 14, in ...initial + Failed example: + binomial(10,5) + Expected: +@@ -155,7 +155,7 @@ + Doctesting 1 file. + sage -t --warn-long 0.0 --random-seed=0 initial.rst + ********************************************************************** +- File "initial.rst", line 4, in sage.doctest.tests.initial ++ File "initial.rst", line 4, in ...initial + Failed example: + a = binomiak(10,5) # random to test that we still get the exception + Exception raised: +@@ -200,7 +200,7 @@ + Doctesting 1 file. + sage -t --warn-long 0.0 --random-seed=0 keyboardinterrupt.rst + ********************************************************************** +- File "keyboardinterrupt.rst", line 11, in sage.doctest.tests.keyboardinterrupt ++ File "keyboardinterrupt.rst", line 11, in ...keyboardinterrupt + Failed example: + raise KeyboardInterrupt + Exception raised: +@@ -302,7 +302,7 @@ + Doctesting 1 file. + sage -t --warn-long 0.0 --random-seed=0 fail_and_die.rst + ********************************************************************** +- File "fail_and_die.rst", line 5, in sage.doctest.tests.fail_and_die ++ File "fail_and_die.rst", line 5, in ...fail_and_die + Failed example: + this_gives_a_NameError + Exception raised: +@@ -327,7 +327,7 @@ + Doctesting 1 file. + sage -t --warn-long 0.0 --random-seed=0 sig_on.rst + ********************************************************************** +- File "sig_on.rst", line 6, in sage.doctest.tests.sig_on ++ File "sig_on.rst", line 6, in ...sig_on + Failed example: + sig_on_count() # check sig_on/off pairings (virtual doctest) + Expected: +@@ -336,7 +336,7 @@ + 1 + ********************************************************************** + 1 item had failures: +- 1 of 5 in sage.doctest.tests.sig_on ++ 1 of 5 in ...sig_on + [3 tests, 1 failure, ...] + ---------------------------------------------------------------------- + sage -t --warn-long 0.0 --random-seed=0 sig_on.rst # 1 doctest failed +@@ -356,7 +356,7 @@ + Doctesting 1 file. + sage -t --warn-long 0.0 --random-seed=0 simple_failure.rst + ********************************************************************** +- File "simple_failure.rst", line 7, in sage.doctest.tests.simple_failure ++ File "simple_failure.rst", line 7, in ...simple_failure + Failed example: + a * b + Expected: +@@ -365,7 +365,7 @@ + 15 + ********************************************************************** + 1 item had failures: +- 1 of 5 in sage.doctest.tests.simple_failure ++ 1 of 5 in ...simple_failure + [4 tests, 1 failure, ...] + ---------------------------------------------------------------------- + sage -t --warn-long 0.0 --random-seed=0 simple_failure.rst # 1 doctest failed +@@ -381,7 +381,7 @@ + Doctesting 1 file. + sage -t --warn-long 0.0 --random-seed=0 simple_failure.rst + ********************************************************************** +- File "simple_failure.rst", line 7, in sage.doctest.tests.simple_failure ++ File "simple_failure.rst", line 7, in ...simple_failure + Failed example: + a * b + Expected: +@@ -390,7 +390,7 @@ + 15 + ********************************************************************** + 1 item had failures: +- 1 of 5 in sage.doctest.tests.simple_failure ++ 1 of 5 in ...simple_failure + [4 tests, 1 failure, ...] + ---------------------------------------------------------------------- + sage -t --warn-long 0.0 --random-seed=0 simple_failure.rst # 1 doctest failed +@@ -406,7 +406,7 @@ + Doctesting 1 file. + sage -t --warn-long 0.0 --random-seed=0 simple_failure.rst + ********************************************************************** +- File "simple_failure.rst", line 7, in sage.doctest.tests.simple_failure ++ File "simple_failure.rst", line 7, in ...simple_failure + Failed example: + a * b + Expected: +@@ -424,7 +424,7 @@ + Returning to doctests... + ********************************************************************** + 1 item had failures: +- 1 of 5 in sage.doctest.tests.simple_failure ++ 1 of 5 in ...simple_failure + [4 tests, 1 failure, ...] + ---------------------------------------------------------------------- + sage -t --warn-long 0.0 --random-seed=0 simple_failure.rst # 1 doctest failed +@@ -553,7 +553,7 @@ + Doctesting 1 file. + sage -t --warn-long 0.0 --random-seed=0 random_seed.rst + ********************************************************************** +- File "random_seed.rst", line 3, in sage.doctest.tests.random_seed ++ File "random_seed.rst", line 3, in ...random_seed + Failed example: + randint(5, 10) + Expected: +@@ -562,7 +562,7 @@ + 5 + ********************************************************************** + 1 item had failures: +- 1 of 2 in sage.doctest.tests.random_seed ++ 1 of 2 in ...random_seed + [1 test, 1 failure, ...s] + ---------------------------------------------------------------------- + sage -t --warn-long 0.0 --random-seed=0 random_seed.rst # 1 doctest failed +diff --git a/src/sage/misc/package_dir.py b/src/sage/misc/package_dir.py +index 16c78d18462..06cb64c0dee 100644 +--- a/src/sage/misc/package_dir.py ++++ b/src/sage/misc/package_dir.py +@@ -113,7 +113,7 @@ def read_distribution(src_file): + + sage: from sage.env import SAGE_SRC + sage: from sage.misc.package_dir import read_distribution +- sage: read_distribution(os.path.join(SAGE_SRC, 'sage', 'graphs', 'graph_decompositions', 'tdlib.pyx')) ++ sage: read_distribution(os.path.join(SAGE_SRC, 'sage', 'graphs', 'graph_decompositions', 'tdlib.pyx')) # needs tdlib + 'sagemath-tdlib' + sage: read_distribution(os.path.join(SAGE_SRC, 'sage', 'graphs', 'graph_decompositions', 'modular_decomposition.py')) + '' diff --git a/srcpkgs/sagemath/patches/37763-scipy_1.13.patch b/srcpkgs/sagemath/patches/37763-scipy_1.13.patch deleted file mode 100644 index 219c6bdc323f7e..00000000000000 --- a/srcpkgs/sagemath/patches/37763-scipy_1.13.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/sage/matrix/matrix_double_dense.pyx b/src/sage/matrix/matrix_double_dense.pyx -index 6877a924de2..a01defad999 100644 ---- a/src/sage/matrix/matrix_double_dense.pyx -+++ b/src/sage/matrix/matrix_double_dense.pyx -@@ -3683,7 +3683,7 @@ cdef class Matrix_double_dense(Matrix_numpy_dense): - sage: A = matrix(CDF, 2, [1,2+I,3*I,4]); A # needs sage.symbolic - [ 1.0 2.0 + 1.0*I] - [ 3.0*I 4.0] -- sage: A.exp() # tol 1.1e-14 # needs sage.symbolic -+ sage: A.exp() # tol 3e-14 # needs sage.symbolic - [-19.614602953804912 + 12.517743846762578*I 3.7949636449582176 + 28.88379930658099*I] - [ -32.383580980922254 + 21.88423595789845*I 2.269633004093535 + 44.901324827684824*I] - diff --git a/srcpkgs/sagemath/patches/37882-eclib_20040408.patch b/srcpkgs/sagemath/patches/37882-eclib_20040408.patch deleted file mode 100644 index 819ee8e63ac476..00000000000000 --- a/srcpkgs/sagemath/patches/37882-eclib_20040408.patch +++ /dev/null @@ -1,116 +0,0 @@ -diff --git a/src/sage/libs/eclib/interface.py b/src/sage/libs/eclib/interface.py -index 7b2b07b1f3f..6c15997c09f 100644 ---- a/src/sage/libs/eclib/interface.py -+++ b/src/sage/libs/eclib/interface.py -@@ -728,7 +728,7 @@ class mwrank_MordellWeil(SageObject): - P1 = [-3:0:1] is generator number 1 - saturating up to 20...Saturation index bound (for points of good reduction) = 3 - Reducing saturation bound from given value 20 to computed index bound 3 -- Tamagawa index primes are [ 2 ] -+ Tamagawa index primes are [ 2 ]... - Checking saturation at [ 2 3 ] - Checking 2-saturation - Points were proved 2-saturated (max q used = 7) -@@ -738,7 +738,7 @@ class mwrank_MordellWeil(SageObject): - P2 = [-2:3:1] is generator number 2 - saturating up to 20...Saturation index bound (for points of good reduction) = 4 - Reducing saturation bound from given value 20 to computed index bound 4 -- Tamagawa index primes are [ 2 ] -+ Tamagawa index primes are [ 2 ]... - Checking saturation at [ 2 3 ] - Checking 2-saturation - possible kernel vector = [1,1] -@@ -753,7 +753,7 @@ class mwrank_MordellWeil(SageObject): - P3 = [-14:25:8] is generator number 3 - saturating up to 20...Saturation index bound (for points of good reduction) = 3 - Reducing saturation bound from given value 20 to computed index bound 3 -- Tamagawa index primes are [ 2 ] -+ Tamagawa index primes are [ 2 ]... - Checking saturation at [ 2 3 ] - Checking 2-saturation - Points were proved 2-saturated (max q used = 11) -@@ -908,7 +908,7 @@ def process(self, v, saturation_bound=0): - saturating basis...Saturation index bound (for points of good reduction) = 93 - Only p-saturating for p up to given value 2. - The resulting points may not be p-saturated for p between this and the computed index bound 93 -- Tamagawa index primes are [ 2 ] -+ Tamagawa index primes are [ 2 ]... - Checking saturation at [ 2 ] - Checking 2-saturation - possible kernel vector = [1,0,0] -@@ -930,7 +930,7 @@ def process(self, v, saturation_bound=0): - saturating basis...Saturation index bound (for points of good reduction) = 46 - Only p-saturating for p up to given value 3. - The resulting points may not be p-saturated for p between this and the computed index bound 46 -- Tamagawa index primes are [ 2 ] -+ Tamagawa index primes are [ 2 ]... - Checking saturation at [ 2 3 ] - Checking 2-saturation - Points were proved 2-saturated (max q used = 11) -@@ -954,7 +954,7 @@ def process(self, v, saturation_bound=0): - saturating basis...Saturation index bound (for points of good reduction) = 15 - Only p-saturating for p up to given value 5. - The resulting points may not be p-saturated for p between this and the computed index bound 15 -- Tamagawa index primes are [ 2 ] -+ Tamagawa index primes are [ 2 ]... - Checking saturation at [ 2 3 5 ] - Checking 2-saturation - Points were proved 2-saturated (max q used = 11) -@@ -978,7 +978,7 @@ def process(self, v, saturation_bound=0): - 0.417143558758384 - sage: EQ.saturate() # points are now saturated - saturating basis...Saturation index bound (for points of good reduction) = 3 -- Tamagawa index primes are [ 2 ] -+ Tamagawa index primes are [ 2 ]... - Checking saturation at [ 2 3 ] - Checking 2-saturation - Points were proved 2-saturated (max q used = 11) -@@ -1189,7 +1189,7 @@ def saturate(self, max_prime=-1, min_prime=2): - - sage: EQ.saturate() # points are now saturated - saturating basis...Saturation index bound (for points of good reduction) = 3 -- Tamagawa index primes are [ 2 ] -+ Tamagawa index primes are [ 2 ]... - Checking saturation at [ 2 3 ] - Checking 2-saturation - Points were proved 2-saturated (max q used = 11) -@@ -1217,7 +1217,7 @@ def saturate(self, max_prime=-1, min_prime=2): - - sage: EQ.saturate() - saturating basis...Saturation index bound (for points of good reduction) = 3 -- Tamagawa index primes are [ 2 ] -+ Tamagawa index primes are [ 2 ]... - Checking saturation at [ 2 3 ] - Checking 2-saturation - Points were proved 2-saturated (max q used = 11) -diff --git a/src/sage/libs/eclib/mwrank.pyx b/src/sage/libs/eclib/mwrank.pyx -index bc475f907b6..c685c329926 100644 ---- a/src/sage/libs/eclib/mwrank.pyx -+++ b/src/sage/libs/eclib/mwrank.pyx -@@ -590,7 +590,7 @@ cdef class _mw: - P1 = [-3:0:1] is generator number 1 - saturating up to 20...Saturation index bound (for points of good reduction) = 3 - Reducing saturation bound from given value 20 to computed index bound 3 -- Tamagawa index primes are [ 2 ] -+ Tamagawa index primes are [ 2 ]... - Checking saturation at [ 2 3 ] - Checking 2-saturation - Points were proved 2-saturated (max q used = 7) -@@ -600,7 +600,7 @@ cdef class _mw: - P2 = [-2:3:1] is generator number 2 - saturating up to 20...Saturation index bound (for points of good reduction) = 4 - Reducing saturation bound from given value 20 to computed index bound 4 -- Tamagawa index primes are [ 2 ] -+ Tamagawa index primes are [ 2 ]... - Checking saturation at [ 2 3 ] - Checking 2-saturation - possible kernel vector = [1,1] -@@ -615,7 +615,7 @@ cdef class _mw: - P3 = [-14:25:8] is generator number 3 - saturating up to 20...Saturation index bound (for points of good reduction) = 3 - Reducing saturation bound from given value 20 to computed index bound 3 -- Tamagawa index primes are [ 2 ] -+ Tamagawa index primes are [ 2 ]... - Checking saturation at [ 2 3 ] - Checking 2-saturation - Points were proved 2-saturated (max q used = 11) diff --git a/srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch b/srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch deleted file mode 100644 index d22922704ecffa..00000000000000 --- a/srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch +++ /dev/null @@ -1,48 +0,0 @@ -diff --git a/src/sage/groups/libgap_wrapper.pyx b/src/sage/groups/libgap_wrapper.pyx -index 0cf0e8bfb31..ddba766e94d 100644 ---- a/src/sage/groups/libgap_wrapper.pyx -+++ b/src/sage/groups/libgap_wrapper.pyx -@@ -602,14 +602,11 @@ cdef class ElementLibGAP(MultiplicativeGroupElement): - sage: from sage.groups.libgap_group import GroupLibGAP - sage: G = GroupLibGAP(libgap.FreeGroup('a', 'b')) - sage: g = G.gen(0) * G.gen(1) -- sage: g._latex_() -- "ab%\n" -- """ -- try: -- return self.gap().LaTeX() -- except ValueError: -- from sage.misc.latex import latex -- return latex(self._repr_()) -+ sage: latex(g) -+ \text{\texttt{a*b}} -+ """ -+ from sage.misc.latex import latex -+ return latex(self._repr_()) - - cpdef _mul_(left, right): - """ -diff --git a/src/sage/interfaces/gap.py b/src/sage/interfaces/gap.py -index ee5861ac785..2e49e4c106f 100644 ---- a/src/sage/interfaces/gap.py -+++ b/src/sage/interfaces/gap.py -@@ -1562,16 +1562,10 @@ def _latex_(self): - - sage: s = gap("[[1,2], [3/4, 5/6]]") - sage: latex(s) -- \left(\begin{array}{rr} 1&2\\ 3/4&\frac{5}{6}\\ \end{array}\right) -+ \left[\left[1, 2\right], \left[\frac{3}{4}, \frac{5}{6}\right]\right] - """ -- P = self._check_valid() -- try: -- s = P.eval('LaTeXObj(%s)' % self.name()) -- s = s.replace('\\\\', '\\').replace('"', '') -- s = s.replace('%\\n', ' ') -- return s -- except RuntimeError: -- return str(self) -+ from sage.misc.latex import latex -+ return latex(self._sage_()) - - @cached_method - def _tab_completion(self): diff --git a/srcpkgs/sagemath/patches/37884-gap_4.13_part_4.patch b/srcpkgs/sagemath/patches/37884-gap_4.13.patch similarity index 100% rename from srcpkgs/sagemath/patches/37884-gap_4.13_part_4.patch rename to srcpkgs/sagemath/patches/37884-gap_4.13.patch diff --git a/srcpkgs/sagemath/patches/37885-cython_warnings.patch b/srcpkgs/sagemath/patches/37885-cython_warnings.patch new file mode 100644 index 00000000000000..fa4b648cfc1577 --- /dev/null +++ b/srcpkgs/sagemath/patches/37885-cython_warnings.patch @@ -0,0 +1,12 @@ +diff --git a/src/sage_setup/command/sage_build_cython.py b/src/sage_setup/command/sage_build_cython.py +index f4b1357c543..3435c196d49 100644 +--- a/src/sage_setup/command/sage_build_cython.py ++++ b/src/sage_setup/command/sage_build_cython.py +@@ -226,6 +226,7 @@ def run(self): + compiler_directives=self.cython_directives, + compile_time_env=self.compile_time_env, + create_extension=self.create_extension, ++ show_all_warnings=True, + # Debugging + gdb_debug=self.debug, + output_dir=os.path.join(self.build_lib, "sage"), diff --git a/srcpkgs/sagemath/patches/37894-fix_build_deps.patch b/srcpkgs/sagemath/patches/37894-fix_build_deps.patch new file mode 100644 index 00000000000000..2ebdec289ebc57 --- /dev/null +++ b/srcpkgs/sagemath/patches/37894-fix_build_deps.patch @@ -0,0 +1,17 @@ +diff --git a/src/pyproject.toml b/src/pyproject.toml +index 781af00a8d7..f70304534d9 100644 +--- a/src/pyproject.toml ++++ b/src/pyproject.toml +@@ -11,12 +11,9 @@ requires = [ + # Exclude 3.0.3 because of https://github.com/cython/cython/issues/5748 + 'cython >=3.0, != 3.0.3, <4.0', + 'gmpy2 ~=2.1.b999', +- 'jupyter_core >=4.6.3', + 'memory_allocator', + 'numpy >=1.19', + 'pkgconfig', +- # pplpy 0.8.4 and earlier do not declare dependencies correctly (see https://github.com/sagemath/sage/issues/30922) +- 'pplpy >=0.8.6', + ] + build-backend = "setuptools.build_meta" + diff --git a/srcpkgs/sagemath/patches/get_patches b/srcpkgs/sagemath/patches/get_patches index 291824adc2549e..3f1f98807149d2 100755 --- a/srcpkgs/sagemath/patches/get_patches +++ b/srcpkgs/sagemath/patches/get_patches @@ -6,7 +6,7 @@ URL_BASE_PR="https://github.com/sagemath/sage/pull/" URL_BASE_COMPARE="https://github.com/sagemath/sage/compare/${version}..." case "$1" in - -n) DO=echo ;; + -n) dry=true ;; esac # get_pr [ext] @@ -14,27 +14,25 @@ get_pr() { pr=$1 desc=$(echo "$2" | sed -e 's/ /_/g') ext=${3-diff} - $DO wget "$URL_BASE_PR$pr.$ext" -O "$pr-$desc.patch" + url="$URL_BASE_PR$pr.$ext" + out="$pr-$desc.patch" + echo "curl -sL \"$url\" | filterdiff ... > \"$pr-$desc.patch\"" + if [ -z "$dry" ]; then + curl -sL "$url" | + filterdiff -p1 -x src/setup.py -x build/* | + cat > "$pr-$desc.patch" + fi } # run from patches dir cd $(dirname "$0") -# merged in 10.4.beta1 -get_pr 37590 "gap 4.13 part 1" -get_pr 37624 "gap 4.13 part 2" - -# merged in 10.4.beta2 -get_pr 37763 "scipy 1.13" -get_pr 37882 "eclib 20040408" -get_pr 37883 "gap 4.13 part 3" - -# merged in 10.4.beta5 -get_pr 37492 "singular 4.3.2p16" - -# positive review +# merged in 10.4.beta6 +get_pr 37894 "fix build deps" get_pr 37949 "conway-polynomials 0.10 part 1" get_pr 37967 "conway-polynomials 0.10 part 2" # needs review -get_pr 37884 "gap 4.13 part 4" +get_pr 37645 "fix doctest" +get_pr 37884 "gap 4.13" +get_pr 37885 "cython warnings" diff --git a/srcpkgs/sagemath/template b/srcpkgs/sagemath/template index faefc4b91a84e1..6ccbcd91226625 100644 --- a/srcpkgs/sagemath/template +++ b/srcpkgs/sagemath/template @@ -1,11 +1,9 @@ # Template file for 'sagemath' pkgname=sagemath -version=10.3 -revision=3 -build_wrksrc=pkgs/sagemath-standard +version=10.4.beta5 +revision=1 build_style=python3-pep517 -make_build_args="--skip-dependency-check" -hostmakedepends="m4 pkg-config python3-Cython python3-Jinja2 +hostmakedepends="pkg-config python3-Cython python3-Jinja2 python3-pkgconfig python3-setuptools python3-wheel" makedepends="boost-devel brial-devel cliquer-devel ecl eclib-devel ecm-devel fflas-ffpack flintlib-devel gap-devel gd-devel giac-devel glpk-devel @@ -31,21 +29,16 @@ maintainer="Gonzalo TornarĂ­a " license="GPL-2.0-or-later" homepage="https://www.sagemath.org/" changelog="https://github.com/sagemath/sage/releases" -distfiles="https://github.com/sagemath/sage/archive/refs/tags/$version.tar.gz" -checksum=59feb92c05e74d6db7a75f398c45c24b5157b1ecd3d8ac198806e2e6add77d96 +distfiles="${PYPI_SITE}/s/sagemath-standard/sagemath_standard-${version/.beta/b}.tar.gz" +checksum=ff397ad303a83a59668ce185968e237aca46846c1db3fa5b9263d5b257dfd389 nocross="due to ntl (eclib, singular), fflas-ffpack, givaro, linbox, sympow, maxima" +# main repo `.../src/sage/` is `.../sage/` here +patch_args=-Np2 + # parallel build export SAGE_NUM_THREADS="$XBPS_MAKEJOBS" -post_patch() { - # git tree needs bootstrapping - $wrksrc/bootstrap sagelib - - # we need sage_setup here - ln -s ../../src/sage_setup . -} - post_install() { # move scripts to /usr/libexec vmkdir usr/libexec From 609306ba301d079b52a48ec1353b1c7389429dd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Sun, 12 May 2024 20:55:37 -0300 Subject: [PATCH 10/10] sagemath: update to 10.4.beta6. --- .../patches/37894-fix_build_deps.patch | 17 ----- ...37949-conway-polynomials_0.10_part_1.patch | 24 ------ ...37967-conway-polynomials_0.10_part_2.patch | 74 ------------------- srcpkgs/sagemath/patches/get_patches | 5 -- srcpkgs/sagemath/template | 4 +- 5 files changed, 2 insertions(+), 122 deletions(-) delete mode 100644 srcpkgs/sagemath/patches/37894-fix_build_deps.patch delete mode 100644 srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch delete mode 100644 srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch diff --git a/srcpkgs/sagemath/patches/37894-fix_build_deps.patch b/srcpkgs/sagemath/patches/37894-fix_build_deps.patch deleted file mode 100644 index 2ebdec289ebc57..00000000000000 --- a/srcpkgs/sagemath/patches/37894-fix_build_deps.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/src/pyproject.toml b/src/pyproject.toml -index 781af00a8d7..f70304534d9 100644 ---- a/src/pyproject.toml -+++ b/src/pyproject.toml -@@ -11,12 +11,9 @@ requires = [ - # Exclude 3.0.3 because of https://github.com/cython/cython/issues/5748 - 'cython >=3.0, != 3.0.3, <4.0', - 'gmpy2 ~=2.1.b999', -- 'jupyter_core >=4.6.3', - 'memory_allocator', - 'numpy >=1.19', - 'pkgconfig', -- # pplpy 0.8.4 and earlier do not declare dependencies correctly (see https://github.com/sagemath/sage/issues/30922) -- 'pplpy >=0.8.6', - ] - build-backend = "setuptools.build_meta" - diff --git a/srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch b/srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch deleted file mode 100644 index 5bf9212b0fd865..00000000000000 --- a/srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff --git a/src/sage/databases/conway.py b/src/sage/databases/conway.py -index b1f76292ce8..54912a2471c 100644 ---- a/src/sage/databases/conway.py -+++ b/src/sage/databases/conway.py -@@ -138,11 +138,16 @@ def __len__(self): - """ - Return the number of polynomials in this database. - -- TESTS:: -+ TESTS: -+ -+ The database currently contains `35357` polynomials, but due to -+ :issue:`35357` it will be extended by Conway polynomials of -+ degrees `1`, `2` and `3` for primes between `65537` and `110000`, -+ thus leading to a new total of `47090` entries:: - - sage: c = ConwayPolynomials() -- sage: len(c) -- 35357 -+ sage: len(c) in [35357, 47090] -+ True - """ - try: - return self._len diff --git a/srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch b/srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch deleted file mode 100644 index 5220db9f572a38..00000000000000 --- a/srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch +++ /dev/null @@ -1,74 +0,0 @@ -diff --git a/src/sage/schemes/elliptic_curves/ell_point.py b/src/sage/schemes/elliptic_curves/ell_point.py -index 9889808b35d..99e3e8c81fa 100644 ---- a/src/sage/schemes/elliptic_curves/ell_point.py -+++ b/src/sage/schemes/elliptic_curves/ell_point.py -@@ -1818,6 +1818,17 @@ def weil_pairing(self, Q, n, algorithm=None): - sage: z.multiplicative_order() - 360 - -+ Another larger example:: -+ -+ sage: F = GF(65537^2, modulus=[3,-1,1], name='a') -+ sage: F.inject_variables() -+ Defining a -+ sage: E = EllipticCurve(F, [0,1]) -+ sage: P = E(22, 28891) -+ sage: Q = E(-93, 2728*a + 64173) -+ sage: P.weil_pairing(Q, 7282, algorithm='sage') -+ 53278*a + 36700 -+ - An example over a number field:: - - sage: # needs sage.rings.number_field -@@ -1833,16 +1844,20 @@ def weil_pairing(self, Q, n, algorithm=None): - - TESTS: - -- Check that the original Sage implementation still works:: -+ Check that the original Sage implementation still works and -+ that the result coincides with the PARI implementation:: - - sage: # needs sage.rings.finite_rings - sage: GF(65537^2).inject_variables() - Defining z2 - sage: E = EllipticCurve(GF(65537^2), [0,1]) -- sage: P = E(22, 28891) -- sage: Q = E(-93, 40438*z2 + 31573) -- sage: P.weil_pairing(Q, 7282, algorithm='sage') -- 19937*z2 + 65384 -+ sage: R, S = E.torsion_basis(7282) -+ sage: a, b = ZZ.random_element(), ZZ.random_element() -+ sage: P = a*R + b*S -+ sage: c, d = ZZ.random_element(), ZZ.random_element() -+ sage: Q = c*R + d*S -+ sage: P.weil_pairing(Q, 7282, algorithm='sage') == P.weil_pairing(Q, 7282, algorithm='pari') -+ True - - Passing an unknown ``algorithm=`` argument should fail:: - -@@ -2047,19 +2062,19 @@ def tate_pairing(self, Q, n, k, q=None): - sage: Px.weil_pairing(Qx, 41)^e == num/den - True - -- TESTS: -- -- Check that the PARI output matches the original Sage implementation:: -+ An example over a large base field:: - -- sage: # needs sage.rings.finite_rings -- sage: GF(65537^2).inject_variables() -+ sage: F = GF(65537^2, modulus=[3,46810,1], name='z2') -+ sage: F.inject_variables() - Defining z2 -- sage: E = EllipticCurve(GF(65537^2), [0,1]) -+ sage: E = EllipticCurve(F, [0,1]) - sage: P = E(22, 28891) - sage: Q = E(-93, 40438*z2 + 31573) - sage: P.tate_pairing(Q, 7282, 2) - 34585*z2 + 4063 - -+ TESTS: -+ - The point ``P (self)`` must have ``n`` torsion:: - - sage: P.tate_pairing(Q, 163, 2) diff --git a/srcpkgs/sagemath/patches/get_patches b/srcpkgs/sagemath/patches/get_patches index 3f1f98807149d2..6772f5d02a5ef1 100755 --- a/srcpkgs/sagemath/patches/get_patches +++ b/srcpkgs/sagemath/patches/get_patches @@ -27,11 +27,6 @@ get_pr() { # run from patches dir cd $(dirname "$0") -# merged in 10.4.beta6 -get_pr 37894 "fix build deps" -get_pr 37949 "conway-polynomials 0.10 part 1" -get_pr 37967 "conway-polynomials 0.10 part 2" - # needs review get_pr 37645 "fix doctest" get_pr 37884 "gap 4.13" diff --git a/srcpkgs/sagemath/template b/srcpkgs/sagemath/template index 6ccbcd91226625..c55dda4b715399 100644 --- a/srcpkgs/sagemath/template +++ b/srcpkgs/sagemath/template @@ -1,6 +1,6 @@ # Template file for 'sagemath' pkgname=sagemath -version=10.4.beta5 +version=10.4.beta6 revision=1 build_style=python3-pep517 hostmakedepends="pkg-config python3-Cython python3-Jinja2 @@ -30,7 +30,7 @@ license="GPL-2.0-or-later" homepage="https://www.sagemath.org/" changelog="https://github.com/sagemath/sage/releases" distfiles="${PYPI_SITE}/s/sagemath-standard/sagemath_standard-${version/.beta/b}.tar.gz" -checksum=ff397ad303a83a59668ce185968e237aca46846c1db3fa5b9263d5b257dfd389 +checksum=0ee1ec9f0b7473c925d78027fda8b4273fac258fd92549f6a5776a2425706f31 nocross="due to ntl (eclib, singular), fflas-ffpack, givaro, linbox, sympow, maxima" # main repo `.../src/sage/` is `.../sage/` here