Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

allowing external ECM to be called gmp-ecm or ecm #37011

Merged
merged 5 commits into from
Mar 25, 2024

Conversation

dimpase
Copy link
Member

@dimpase dimpase commented Jan 5, 2024

ECM executable in Fedora is called gmp-ecm

This PR allows both names, ecm and gmp-ecm, to be used

@dimpase
Copy link
Member Author

dimpase commented Jan 5, 2024

This problem was mentioned in #36860

@dimpase
Copy link
Member Author

dimpase commented Jan 5, 2024

Do we need sage.features.ecm ?

if test x$ECMBIN != x; then
SAGE_ECM_BIN=`basename $ECMBIN`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why basename

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pretty sure that's a -z test in disguise, too

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because sage.interfaces.ecm takes ecm or gmp-ecm as the data it needs to call the executable, not the full path. So it assumes it's on PATH, I'm just keeping it like this here.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe the PATH was only set at configure time?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same argument applies for the previous design. How is this relevant to this PR?

@@ -212,6 +212,7 @@ def var(key: str, *fallbacks: Optional[str], force: bool = False) -> Optional[st
MAXIMA_FAS = var("MAXIMA_FAS")
KENZO_FAS = var("KENZO_FAS")
SAGE_NAUTY_BINS_PREFIX = var("SAGE_NAUTY_BINS_PREFIX", "")
SAGE_ECMBIN = var("SAGE_ECMBIN")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
SAGE_ECMBIN = var("SAGE_ECMBIN")
ECM = var("ECM")

... just like MAXIMA. Only nauty has this weird naming

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need a variable for everything under the sun? There's a well established way to configure binary locations, it's called PATH. If you must: wouldn't it be better to use SAGE_* to keep it in sage "namespace"?

As for the two standard names for the binary, that's unfortunate, is there a valid reason why Fedora does that? Is it possible/desirable to have the executable feature try both?

For non-standard setups one can always place a symlink in a custom directory and add it to PATH.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A symlink worked and one could asked fedora packagers to place this symlink, but apparently it is not the only distribution. Concerning the error in src/sage/libs/gap/element.pyx, it happens in line 2489:

for i in range(100):
        rnd = [ randint(-10,10) for i in range(randint(0,7)) ]
        # compute the sum in GAP
        _ = libgap.Sum(rnd)
        try:
            libgap.Sum(*rnd)
            print('This should have triggered a ValueError')
            print('because Sum needs a list as argument')
        except ValueError:
            pass

getting Killed due to segmentation fault. Running this code in the terminal works, the error appears only in tests and with python 3.12.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A symlink worked and one could asked fedora packagers to place this symlink, but apparently it is not the only distribution.

You mean: ask the fedora packager not to rename the executable (https://src.fedoraproject.org/rpms/gmp-ecm/blob/rawhide/f/gmp-ecm.spec#_99). We don't need to do anything special in void linux for ecm to be named ecm. Anyway, that line there is 15 years old, and possibly other distros also use the same name for the binary, so I think it's ok to try both names (I'm only objecting to do it at configure time: just do it at runtime).

Concerning the error in src/sage/libs/gap/element.pyx, it happens in line 2489:

for i in range(100):
        rnd = [ randint(-10,10) for i in range(randint(0,7)) ]
        # compute the sum in GAP
        _ = libgap.Sum(rnd)
        try:
            libgap.Sum(*rnd)
            print('This should have triggered a ValueError')
            print('because Sum needs a list as argument')
        except ValueError:
            pass

getting Killed due to segmentation fault. Running this code in the terminal works, the error appears only in tests and with python 3.12.

I never saw that, I also can't see what this has to do with python 3.12. Unless something there was compiled for python 3.11 and now run on python 3.12 (since layout of integers changed). But something like that I would expect to give many more issues...

Is it something that happens every time, or at random? Did you manage to get a clean backtrace of the segfault? Are you sure the sage+gap used for tests is exactly the same you are using for trying this in the terminal?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

here is how the package got into Fedora in the first place.

https://bugzilla.redhat.com/show_bug.cgi?id=473330#c2

there is a comment from the reviewer
requesting the binary to be called gmp-ecm.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the record, the meson PR is #36524. Works completely without sage-conf and sage-setup, and determines the necessary config at build time.

I would say, as a rough guide, binaries should be found at build time and databases/static files should be replaced by python modules. With that sage's features could be simplified (or even partly removed).

With #37024 I can build sagemath-standard from pypi with no configure step involved and no sage_conf hack.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I unsubscribed to keep my sanity. Moreover, I'm not interested in building the kitchen sink. For sagelib, setuptools builds it just fine, but depending on sage_conf, sage.env, configure-time detection that only happens when you build the kitchen sink, is just taxing me to keep me in your walled-garden. Thanks but, no thanks.

I'm pretty sure we want exactly the same thing. If you ever think I'm concerned about sage-conf, sage-env, or anything under build/, then please slow down and read again. The meson build system builds only sagelib. That's the point.

Setuptools cannot build sagelib, unless you happen to run your own distro. Setuptools can't detect C libraries or programs in general; see e.g. cvxopt for what happens when you try. Meson lets us fix that: it gives us a way to build only sagelib, but reliably, and without all of the sage-the-distro scaffolding.

I don't think it's an improvement, and this PR is already calling shutil.which() once, what I say is, if shutil.which('ecm') fails, try shutil.which('gmp-ecm') before complaining. I'm sure the energy wasted doing that in a year of world-wide use of sagemath will be way less than the energy it would take to have fedora fix their disrespect of upstream.

Again, we don't disagree. I feel the same way about distros renaming executables and breaking consumers. It was my first comment on this ticket.

With #37024 I can build sagemath-standard from pypi with no configure step involved and no sage_conf hack.

One more case where we want exactly the same thing. I just remade combinatorial_designs as a python package (https://github.com/orlitzky/mols-handbook-data) and am waiting for a repo to make a release (#37025).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think it's an improvement, and this PR is already calling shutil.which() once

hmm, where does this happen?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think it's an improvement, and this PR is already calling shutil.which() once

hmm, where does this happen?

That's how the Executable feature knows it's available. My proposal is to modify this class so one can pass a list of strings instead of just a string. In that case, it would try each option until the first one that works.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I never understood the need for sage.features. It seems to papering over a deficiency in Sage package management...

@@ -32,6 +32,8 @@ ECL_CONFIG = "@SAGE_ECL_CONFIG@".replace('${prefix}', SAGE_LOCAL)

SAGE_NAUTY_BINS_PREFIX = "@SAGE_NAUTY_BINS_PREFIX@"

SAGE_ECMBIN = "@SAGE_ECMBIN@"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
SAGE_ECMBIN = "@SAGE_ECMBIN@"
ECM = "@ECM@"

@orlitzky
Copy link
Contributor

orlitzky commented Jan 5, 2024

Normally I would take this opportunity to rant about packagers renaming executables and breaking every AC_PATH_PROG out there, but the naming of this package/executable are crazy. The repo is "ecm" but the package is "gmp-ecm" but the executable is "ecm" but the README says "GMP-ECM reads the numbers to be factored from stdin" but the library is -lecm but the program calls itself "GMP-ECM 7.0.5" etc.

@mkoeppe
Copy link
Contributor

mkoeppe commented Jan 5, 2024

Do we need sage.features.ecm ?

Yes please.

@dimpase
Copy link
Member Author

dimpase commented Jan 5, 2024

We need to do something with SAGE_ECMBIN in case the package is already installed, it seems to me.

@dimpase
Copy link
Member Author

dimpase commented Jan 5, 2024

We need to do something with SAGE_ECMBIN in case the package is already installed, it seems to me.

if we can assume that pkgs/sage-conf/_sage_conf/_conf.py is present in such a case, then all is good as is.

@dimpase
Copy link
Member Author

dimpase commented Jan 5, 2024

I've left the internal variable name in .m4 stay, it's more self-documenting.

@enriqueartal
Copy link
Contributor

I have tested it with python 3.12 in Fedora 39, system ecm is taken. The only relevant error is a crash testing src/sage/libs/gap/element.pyx (which happens with or without this changes only with python 3.12).

@dimpase
Copy link
Member Author

dimpase commented Jan 7, 2024

@tornaria runs Sage with Python 3.12. I am not sure whether he sees this error too.

@tornaria
Copy link
Contributor

tornaria commented Jan 7, 2024

@tornaria runs Sage with Python 3.12. I am not sure whether he sees this error too.

What error? I don't see any error.

sage -t --long --warn-long --random-seed=139019732416246170153767453232131014193 src/sage/libs/gap/element.pyx
    [506 tests, 3.19 s]

@@ -55,6 +55,7 @@
from sage.structure.sage_object import SageObject
from sage.rings.integer_ring import ZZ

from sage.env import ECM
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should you get the filename from the feature instead? This way it seems it will only work if ECM is set, there's no fallback if ECM is None.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it should be using the Feature.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have no idea how to use Feature here. It seems to provide absolute executable names, but no basenames.
Perhaps its a missing feature in Feature.

I am certainly not going to implement basename in Python just here.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do you think you need the basename?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because this is what sage.interfaces.ecm is using.
Not sure why whoever wrote this got so creative, but that's how it is.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What are you talking about. It's just using Popen, of course you can pass the full executable name to it, not just the basename.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have no idea how to use Feature here. It seems to provide absolute executable names, but no basenames. Perhaps its a missing feature in Feature.

Using the full path seems better, to make sure there's a single point where the decision of which executable to use is made. How the feature found the path, whether it's static or dynamic, if we want to support PATH being different at build time than at run time, etc, is all abstracted out in the feature.

I am certainly not going to implement basename in Python just here.

Just for the record, there's os.path.basename() (and os.path.dirname(), and os.path.split())

@enriqueartal
Copy link
Contributor

@tornaria runs Sage with Python 3.12. I am not sure whether he sees this error too.

What error? I don't see any error.

sage -t --long --warn-long --random-seed=139019732416246170153767453232131014193 src/sage/libs/gap/element.pyx
    [506 tests, 3.19 s]

A symlink worked and one could asked fedora packagers to place this symlink, but apparently it is not the only distribution. Concerning the error in src/sage/libs/gap/element.pyx, it happens in line 2489:

for i in range(100):
        rnd = [ randint(-10,10) for i in range(randint(0,7)) ]
        # compute the sum in GAP
        _ = libgap.Sum(rnd)
        try:
            libgap.Sum(*rnd)
            print('This should have triggered a ValueError')
            print('because Sum needs a list as argument')
        except ValueError:
            pass

getting Killed due to segmentation fault. Running this code in the terminal works, the error appears only in tests and with python 3.12.

@dimpase
Copy link
Member Author

dimpase commented Jan 7, 2024

Please point at the item(s) that need work

@mkoeppe
Copy link
Contributor

mkoeppe commented Jan 7, 2024

Needs work: #37011 (comment)

@dimpase
Copy link
Member Author

dimpase commented Jan 7, 2024

e1d3f37 must be reverted, for in some cases (system Python 3.11 and ecm on Gentoo), it creates a clash of names (too many ECM, ecm, Ecm, etc around), and ugly errors in sage.interfaces.ecm

sage -t --warn-long 72.5 --random-seed=153732071471673388791781934815376131504 src/sage/interfaces/ecm.py
**********************************************************************
File "src/sage/interfaces/ecm.py", line 33, in sage.interfaces.ecm
Failed example:
    ecm.factor(n, B1=10)
Exception raised:
    Traceback (most recent call last):
      File "/mnt/opt/Sage/sage-dev/src/sage/doctest/forker.py", line 709, in _run
        self.compile_and_execute(example, compiler, test.globs)
      File "/mnt/opt/Sage/sage-dev/src/sage/doctest/forker.py", line 1144, in compile_and_execute
        exec(compiled, globs)
      File "<doctest sage.interfaces.ecm[2]>", line 1, in <module>
        ecm.factor(n, B1=Integer(10))
      File "/mnt/opt/Sage/sage-dev/src/sage/interfaces/ecm.py", line 663, in factor
        n_factorization = self.find_factor(n, B1=B1)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/mnt/opt/Sage/sage-dev/src/sage/interfaces/ecm.py", line 567, in find_factor
        factors = self._find_factor(n, factor_digits, B1, **kwds)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/mnt/opt/Sage/sage-dev/src/sage/interfaces/ecm.py", line 517, in _find_factor
        out = self._run_ecm(cmd, n)
              ^^^^^^^^^^^^^^^^^^^^^
      File "/mnt/opt/Sage/sage-dev/src/sage/interfaces/ecm.py", line 224, in _run_ecm
        p = Popen(cmd, stdout=PIPE, stdin=PIPE, stderr=PIPE, encoding='latin-1')
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3.11/subprocess.py", line 1026, in __init__
        self._execute_child(args, executable, preexec_fn, close_fds,
      File "/usr/lib/python3.11/subprocess.py", line 1824, in _execute_child
        and os.path.dirname(executable)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "<frozen posixpath>", line 152, in dirname
    TypeError: expected str, bytes or os.PathLike object, not type
...
7 items had failures:
   2 of   6 in sage.interfaces.ecm
   1 of   2 in sage.interfaces.ecm.ECM.__call__
   1 of   4 in sage.interfaces.ecm.ECM._find_factor
   1 of   3 in sage.interfaces.ecm.ECM.factor
   1 of   6 in sage.interfaces.ecm.ECM.find_factor
   4 of   9 in sage.interfaces.ecm.ECM.one_curve
   2 of   4 in sage.interfaces.ecm.ECM.time
    [47 tests, 12 failures, 0.08 s]

@dimpase
Copy link
Member Author

dimpase commented Jan 7, 2024

OK, got rid of baseline call now.

Do we want

--- a/src/sage/env.py
+++ b/src/sage/env.py
@@ -212,7 +212,7 @@ MAXIMA = var("MAXIMA", "maxima")
 MAXIMA_FAS = var("MAXIMA_FAS")
 KENZO_FAS = var("KENZO_FAS")
 SAGE_NAUTY_BINS_PREFIX = var("SAGE_NAUTY_BINS_PREFIX", "")
-SAGE_ECMBIN = var("SAGE_ECMBIN")
+SAGE_ECMBIN = var("SAGE_ECMBIN", "ecm")
 RUBIKS_BINS_PREFIX = var("RUBIKS_BINS_PREFIX", "")
 FOURTITWO_HILBERT = var("FOURTITWO_HILBERT")
 FOURTITWO_MARKOV = var("FOURTITWO_MARKOV")

@orlitzky
Copy link
Contributor

I presume this is in the name of modularising sagelib. Feels wrong to me too, and I think I mentioned that already, it's demonstrating deficiencies in sagelib's deps solving.

Features do allow us to split off a module without rewriting a bunch of tests, but even in that situation it's better to use # needs sage.number_theory or whatever new module provides the functionality rather than depending on an implementation detail like the ecm binary being present. In any case, we obviously haven't needed # optional - ecm yet, so for the moment it's a premature de-optimization.

@enriqueartal
Copy link
Contributor

I checked the branch, system ecm is used and no particular problem arise.

@dimpase
Copy link
Member Author

dimpase commented Mar 14, 2024

Feel free to set it to positive review

@vbraun vbraun merged commit 330c35d into sagemath:develop Mar 25, 2024
18 of 36 checks passed
@mkoeppe mkoeppe added this to the sage-10.4 milestone Mar 25, 2024
@tornaria
Copy link
Contributor

OK, got rid of baseline call now.

Do we want

--- a/src/sage/env.py
+++ b/src/sage/env.py
@@ -212,7 +212,7 @@ MAXIMA = var("MAXIMA", "maxima")
 MAXIMA_FAS = var("MAXIMA_FAS")
 KENZO_FAS = var("KENZO_FAS")
 SAGE_NAUTY_BINS_PREFIX = var("SAGE_NAUTY_BINS_PREFIX", "")
-SAGE_ECMBIN = var("SAGE_ECMBIN")
+SAGE_ECMBIN = var("SAGE_ECMBIN", "ecm")
 RUBIKS_BINS_PREFIX = var("RUBIKS_BINS_PREFIX", "")
 FOURTITWO_HILBERT = var("FOURTITWO_HILBERT")
 FOURTITWO_MARKOV = var("FOURTITWO_MARKOV")

The PR was merged without this important fix!

As of now, 10.4.beta0 is broken. Let's try not to add new knobs without a reasonable default.

@tornaria
Copy link
Contributor

Also: it means the ecm feature is just useless bloat, as it didn't prevent my test run to fail.

IMO the only reason the feature bloat would be justified is if it would try ecm and fallback to gmp-ecm at runtime. The feature will traverse all PATH searching for an ecm executable, it might as well search again for gmp-ecm as a fallback.

@orlitzky it seems perfectly fine to start the search with a name (full path?) that is placed there by meson at build time, but there's also some value for binary wheels that the same package works in different distros, or that ecm works if it's installed later (so it's not a build dependency).

@orlitzky
Copy link
Contributor

@orlitzky it seems perfectly fine to start the search with a name (full path?) that is placed there by meson at build time, but there's also some value for binary wheels that the same package works in different distros, or that ecm works if it's installed later (so it's not a build dependency).

Sure, I'm not suggesting we break any of that. If you're building for a distro, your build host will detect the correct path (for the distro) and substitute it into the config file that you ship as part of the resulting binary package. This is how basically every C package on debian/fedora work and I'm sure void is not much different.

For binary wheels, same trick. Where is gmp-ecm supposed to come from? If it's from pypi, then you install the pypi package that provides it on your build host, and you build the binary wheel. It detects the correct path... etc. The end result is always editable and can fall back to a sane default like "ecm," keeping in mind that there are a fixed number of exceptions using "gmp-ecm" while everyone else has plain "ecm" in their PATH.

Overriding the check to avoid the build dependency is also pretty common. We do this a lot with autotools by setting the ac_cv_foo cache variables to trick ./configure into thinking it has already detected something. It's apparently possible with meson using override_find_program() behind some build flag, but I confess, I haven't tried it yet.

@vbraun
Copy link
Member

vbraun commented Mar 29, 2024

I'm getting

sage -t --long --warn-long 43.5 --random-seed=123 src/sage/rings/integer.pyx
**********************************************************************
File "src/sage/rings/integer.pyx", line 3068, in sage.rings.integer.Integer.divisors
Warning, slow doctest:
    for i in range(20):           # long time                             # needs sage.libs.pari
        try:
            alarm(RDF.random_element(1e-3, 0.5))
            _ = n.divisors()
            cancel_alarm()  # we never get here
        except AlarmInterrupt:
            pass
Test ran for 44.61 s, check ran for 0.00 s
**********************************************************************
File "src/sage/rings/integer.pyx", line 3956, in sage.rings.integer.Integer.?
Failed example:
    n.factor(algorithm='ecm')
Exception raised:
    Traceback (most recent call last):
      File "/home/release/Sage/src/sage/doctest/forker.py", line 715, in _run
        self.compile_and_execute(example, compiler, test.globs)
      File "/home/release/Sage/src/sage/doctest/forker.py", line 1150, in compile_and_execute
        exec(compiled, globs)
      File "<doctest sage.rings.integer.Integer.?[20]>", line 1, in <module>
        n.factor(algorithm='ecm')
      File "sage/rings/integer.pyx", line 4052, in sage.rings.integer.Integer.factor
        res = [(p, 1) for p in ecm.factor(n, proof=proof)]
      File "/home/release/Sage/src/sage/interfaces/ecm.py", line 663, in factor
        n_factorization = self.find_factor(n, B1=B1)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/release/Sage/src/sage/interfaces/ecm.py", line 567, in find_factor
        factors = self._find_factor(n, factor_digits, B1, **kwds)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/release/Sage/src/sage/interfaces/ecm.py", line 517, in _find_factor
        out = self._run_ecm(cmd, n)
              ^^^^^^^^^^^^^^^^^^^^^
      File "/home/release/Sage/src/sage/interfaces/ecm.py", line 224, in _run_ecm
        p = Popen(cmd, stdout=PIPE, stdin=PIPE, stderr=PIPE, encoding='latin-1')
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/release/Sage/local/var/lib/sage/venv-python3.11.1/lib/python3.11/subprocess.py", line 1024, in __init__
        self._execute_child(args, executable, preexec_fn, close_fds,
      File "/home/release/Sage/local/var/lib/sage/venv-python3.11.1/lib/python3.11/subprocess.py", line 1901, in _execute_child
        raise child_exception_type(errno_num, err_msg, err_filename)
    PermissionError: [Errno 13] Permission denied: ''
**********************************************************************
1 item had failures:
   1 of  24 in sage.rings.integer.Integer.?
    [1174 tests, 1 failure, 53.97 s]
----------------------------------------------------------------------
sage -t --long --warn-long 43.5 --random-seed=123 src/sage/rings/integer.pyx  # 1 doctest failed
----------------------------------------------------------------------

Fedora 39 x86_64

config.log

@enriqueartal
Copy link
Contributor

In Fedora 39 with the sage ecm package I got the same error, no error with system package

tornaria added a commit to tornaria/sage that referenced this pull request Mar 31, 2024
Having `None` as default breaks the feature ecm.  This restores the
previous default, which corresponds to the upstream name for the binary.

See sagemath#37011 (comment)
@tornaria tornaria mentioned this pull request Mar 31, 2024
3 tasks
@tornaria
Copy link
Contributor

I'm getting

sage -t --long --warn-long 43.5 --random-seed=123 src/sage/rings/integer.pyx
**********************************************************************
File "src/sage/rings/integer.pyx", line 3068, in sage.rings.integer.Integer.divisors
Warning, slow doctest:
    for i in range(20):           # long time                             # needs sage.libs.pari
        try:
            alarm(RDF.random_element(1e-3, 0.5))
            _ = n.divisors()
            cancel_alarm()  # we never get here
        except AlarmInterrupt:
            pass
Test ran for 44.61 s, check ran for 0.00 s
**********************************************************************
File "src/sage/rings/integer.pyx", line 3956, in sage.rings.integer.Integer.?
Failed example:
    n.factor(algorithm='ecm')
Exception raised:
    Traceback (most recent call last):
      File "/home/release/Sage/src/sage/doctest/forker.py", line 715, in _run
        self.compile_and_execute(example, compiler, test.globs)
      File "/home/release/Sage/src/sage/doctest/forker.py", line 1150, in compile_and_execute
        exec(compiled, globs)
      File "<doctest sage.rings.integer.Integer.?[20]>", line 1, in <module>
        n.factor(algorithm='ecm')
      File "sage/rings/integer.pyx", line 4052, in sage.rings.integer.Integer.factor
        res = [(p, 1) for p in ecm.factor(n, proof=proof)]
      File "/home/release/Sage/src/sage/interfaces/ecm.py", line 663, in factor
        n_factorization = self.find_factor(n, B1=B1)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/release/Sage/src/sage/interfaces/ecm.py", line 567, in find_factor
        factors = self._find_factor(n, factor_digits, B1, **kwds)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/release/Sage/src/sage/interfaces/ecm.py", line 517, in _find_factor
        out = self._run_ecm(cmd, n)
              ^^^^^^^^^^^^^^^^^^^^^
      File "/home/release/Sage/src/sage/interfaces/ecm.py", line 224, in _run_ecm
        p = Popen(cmd, stdout=PIPE, stdin=PIPE, stderr=PIPE, encoding='latin-1')
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/release/Sage/local/var/lib/sage/venv-python3.11.1/lib/python3.11/subprocess.py", line 1024, in __init__
        self._execute_child(args, executable, preexec_fn, close_fds,
      File "/home/release/Sage/local/var/lib/sage/venv-python3.11.1/lib/python3.11/subprocess.py", line 1901, in _execute_child
        raise child_exception_type(errno_num, err_msg, err_filename)
    PermissionError: [Errno 13] Permission denied: ''
**********************************************************************
1 item had failures:
   1 of  24 in sage.rings.integer.Integer.?
    [1174 tests, 1 failure, 53.97 s]
----------------------------------------------------------------------
sage -t --long --warn-long 43.5 --random-seed=123 src/sage/rings/integer.pyx  # 1 doctest failed
----------------------------------------------------------------------

Fedora 39 x86_64

config.log

@vbraun @enriqueartal

Looking at the config.log here, it seems ecm spkg is installed from a previous run. Because of this, the line AC_SUBST(SAGE_ECMBIN, $ECMBIN) in build/pkgs/ecm/spkg-configure.m4 is not being run, so in effect you are running with SAGE_ECMBIN = "@SAGE_ECMBIN@" (from pkgs/sage-conf/_sage_conf/_conf.py.in) or maybe with SAGE_ECMBIN = "".

The default I added in #37701 for the case when SAGE_ECMBIN has not been set at all in sage-conf (which is the case when running sagelib without sage-the-distro).

Can you try to rebuild ecm spkg?

@enriqueartal
Copy link
Contributor

Rebuilt with the same results in the test. By the way, SAGE_ECMBIN = ""

vbraun pushed a commit to vbraun/sage that referenced this pull request Mar 31, 2024
    
Having `None` as default breaks the feature ecm.  This restores the
previous default, which corresponds to the upstream name for the binary.

See sagemath#37011 (comment)

### 📝 Checklist

- [x] The title is concise and informative.
- [x] The description explains in detail what this PR is about.
- [x] I have linked a relevant issue or discussion.
    
URL: sagemath#37701
Reported by: Gonzalo Tornaría
Reviewer(s): Dima Pasechnik
@dimpase
Copy link
Member Author

dimpase commented Mar 31, 2024

have you merged #37701 before rebuilding and testing?

@vbraun
Copy link
Member

vbraun commented Mar 31, 2024

In fact, incremental builds are what is broken

  • ecm is not installed in the base os
  • Sage make distclean && make succeeeds
  • Tests succeed
  • re-running ./bootstrap && ./configure && make works
  • Tests now fail with PermissionError: [Errno 13] Permission denied: ''

@enriqueartal
Copy link
Contributor

have you merged #37701 before rebuilding and testing?

Yes

vbraun added a commit to vbraun/sage that referenced this pull request Apr 7, 2024
This is because setting the default ECMBIN=ecm is only done when using
the configure test, but not when skipping the configure test because
the spkg is already installed.

Steps to reproduce:
* ecm is not installed in the base os
* Sage make distclean && make succeeeds
* Tests succeed
* re-running ./bootstrap && ./configure && make works
* Tests now fail with PermissionError: [Errno 13] Permission denied: ''

See also:
 * sagemath#37701
 * sagemath#37011 (comment)
vbraun pushed a commit to vbraun/sage that referenced this pull request Apr 8, 2024
### TL;DR:

This is because setting the default ECMBIN=ecm is only done when using
the configure test, but not when skipping the configure test because the
spkg is already installed.

### Steps to reproduce:
* ecm is not installed in the base os
* Sage make distclean && make succeeeds
* Tests succeed
* re-running ./bootstrap && ./configure && make works
* Tests now fail with PermissionError: [Errno 13] Permission denied: ''

### Dependencies
See also:
 * sagemath#37701
 * sagemath#37011 (comment)

URL: sagemath#37764
Reported by: Volker Braun
Reviewer(s): Matthias Köppe
jacksonwalters added a commit to jacksonwalters/sage that referenced this pull request Apr 9, 2024
commit 14a1e5c078d1684f751b9e7ef450f197e7bcf27f
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 23:01:35 2024 -0400

    Update src/sage/combinat/symmetric_group_algebra.py

    Good idea.

    moved description from _dft_modular to dft docstring

    remove doctest with p=3, n=3

    Update src/sage/combinat/symmetric_group_algebra.py

    Update src/sage/combinat/symmetric_group_algebra.py

    Co-Authored-By: Travis Scrimshaw <clfrngrown@aol.com>

commit f3807cb141bae308906295f605939d4b2b205a5a
Merge: 9ad2152942 8ea5214695
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 20:12:53 2024 -0400

    Merge branch 'develop' into pr/37748

commit 8ea5214695f742eccd34bd88600771b7121cdb9f
Author: Release Manager <release@sagemath.org>
Date:   Tue Apr 9 00:29:19 2024 +0200

    Updated SageMath version to 10.4.beta2

commit 9ad2152942819a55c20d80485ad8cd8925969c6c
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 13:38:43 2024 -0400

    double backslash for math

commit 619a48dea00a0a67b8d4e542948200dc23e9589a
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 13:33:00 2024 -0400

    add examples

commit 527ae2670dd3a37b25a192ab49dad7f4c16dd5aa
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 13:24:13 2024 -0400

    form should default to None

    if form is None, check if characteristic of field divides order of group. if so, it's the modular case, and we return the projection onto idempotents change-of-basis, i.e. the MFT. if not, use semi-normal form.

commit 488e931da94f4872047ff8e839edc4a0c99b163e
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 13:09:54 2024 -0400

    missing parantheses

commit 7e96c904b6bc47d2108930c039b95a14155d425b
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 13:00:57 2024 -0400

    Update src/sage/combinat/symmetric_group_algebra.py

    Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

commit cf27c64dff0b77c6cca162849ec923ae14f4920f
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 13:00:14 2024 -0400

    Update src/sage/combinat/symmetric_group_algebra.py

    I thought I could do this, don't know why I convinced myself I needed flatten.

    Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

commit 92699f42eba524047b09d527981dab2456802958
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 12:59:16 2024 -0400

    Update src/sage/combinat/symmetric_group_algebra.py

    Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

commit 68f2ef140f91356f55290d100ad8a5282f19c206
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 12:58:30 2024 -0400

    Update src/sage/combinat/symmetric_group_algebra.py

    Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

commit 618d5e1a8cb11006ef9fa6642e33f06d5728d6ae
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 12:57:18 2024 -0400

    Update src/sage/combinat/symmetric_group_algebra.py

    Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

commit 04db911e3f6a08b3be1bf5c295e913a40ee8b28a
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 12:56:37 2024 -0400

    Update src/sage/combinat/symmetric_group_algebra.py

    I see, so "None" if the user doesn't specify, and we determine which form based on whether p|n!. Sounds good.

    Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

commit e86f79410ebda01b8a85598a5754f9c383336ae1
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 11:09:57 2024 -0400

    add doctest to ensure issue 37751 is fixed

commit f8c64d16b3d1c7b3d338d9d2339ae2e284df3c58
Merge: aedd2f3927 3079e2d897
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 10:55:44 2024 -0400

    Merge branch 'pr/37748' of https://github.com/jacksonwalters/sage into pr/37748

commit aedd2f3927aac05dceeb97bd484afa82557652a8
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 10:55:43 2024 -0400

    remove multiplication stars

commit 3079e2d897396222b0f23784a4d07a40f25b3c1f
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 10:54:38 2024 -0400

    Update src/sage/combinat/symmetric_group_algebra.py

    Co-authored-by: grhkm21 <83517584+grhkm21@users.noreply.github.com>

commit b14565299a6f5a82e5fae5080de88b455ce696e5
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 10:51:59 2024 -0400

    docstring lines are wrapped at 80 characters

    ensure each line is less than 80 characters

commit e3fcc1f59c4668f88c184649c18627480365e646
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Mon Apr 8 10:24:51 2024 -0400

    keep form argument

     keep form since there is a one year deprecation warning before removing arguments. show deprecation warning when default seminormal form is called, but suggest modular form which works in all cases

commit 6d187b153b5b5c3e29fe07d9efe925e34bf5baa5
Merge: 551139c09f c8d260a6fe
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 23:34:58 2024 +0200

    gh-37764: ECM-related tests fail after an incremental build

    ### TL;DR:

    This is because setting the default ECMBIN=ecm is only done when using
    the configure test, but not when skipping the configure test because the
    spkg is already installed.

    ### Steps to reproduce:
    * ecm is not installed in the base os
    * Sage make distclean && make succeeeds
    * Tests succeed
    * re-running ./bootstrap && ./configure && make works
    * Tests now fail with PermissionError: [Errno 13] Permission denied: ''

    ### Dependencies
    See also:
     * https://github.com/sagemath/sage/pull/37701
     * https://github.com/sagemath/sage/pull/37011#issuecomment-2023089743

    URL: https://github.com/sagemath/sage/pull/37764
    Reported by: Volker Braun
    Reviewer(s): Matthias Köppe

commit 71ad110e196d9f17934d030ce1c000e11b50fee8
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Sun Apr 7 19:57:42 2024 -0400

    trigger GitHub actions

commit c8d260a6fe37cb0379690e57dab6fd2a3d5d8048
Author: Volker Braun <tarpit@vbraun.imap.cc>
Date:   Sun Apr 7 22:13:11 2024 +0200

    Update build/pkgs/ecm/spkg-configure.m4

    Co-authored-by: Matthias Köppe <mkoeppe@math.ucdavis.edu>

commit fbf896681da3ad1fad6c164e4d5a7cf452ec2eec
Author: Volker Braun <tarpit@vbraun.imap.cc>
Date:   Sun Apr 7 21:35:42 2024 +0200

    Update build/pkgs/ecm/spkg-configure.m4

    Co-authored-by: Matthias Köppe <mkoeppe@math.ucdavis.edu>

commit 6531f7e415230d62fecd0a38fd804081341a9f32
Author: Volker Braun <tarpit@vbraun.imap.cc>
Date:   Sun Apr 7 21:35:38 2024 +0200

    Update build/pkgs/ecm/spkg-configure.m4

    Co-authored-by: Matthias Köppe <mkoeppe@math.ucdavis.edu>

commit af0e24286a62a06d85e1baf49d0dc8f624965e5c
Author: Volker Braun <vbraun.name@gmail.com>
Date:   Sun Apr 7 19:17:37 2024 +0200

    ECM-related tests fail after an incremental build

    This is because setting the default ECMBIN=ecm is only done when using
    the configure test, but not when skipping the configure test because
    the spkg is already installed.

    Steps to reproduce:
    * ecm is not installed in the base os
    * Sage make distclean && make succeeeds
    * Tests succeed
    * re-running ./bootstrap && ./configure && make works
    * Tests now fail with PermissionError: [Errno 13] Permission denied: ''

    See also:
     * https://github.com/sagemath/sage/pull/37701
     * https://github.com/sagemath/sage/pull/37011#issuecomment-2023089743

commit 551139c09f26a5da96b1187c3f0dd17b8d80ef84
Merge: 03be519274 547d502ed5
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 14:00:43 2024 +0200

    gh-37763: Fix tolerance for scipy 1.13

    After updating scipy to 1.13:
    ```
    **********************************************************************
    File "pkgs/sagemath-standard/build/lib.linux-x86_64-cpython-
    312/sage/matrix/matrix_double_dense.pyx", line 3686, in
    sage.matrix.matrix_double_dense.Matrix_double_dense.exp
    Failed example:
        A.exp()  # tol 1.1e-14
    # needs sage.symbolic
    Expected:
        [-19.614602953804912 + 12.517743846762578*I   3.7949636449582176 +
    28.88379930658099*I]
        [ -32.383580980922254 + 21.88423595789845*I   2.269633004093535 +
    44.901324827684824*I]
    Got:
        [-19.61460295380496 + 12.517743846762578*I  3.7949636449581874 +
    28.88379930658104*I]
        [-32.38358098092232 + 21.884235957898436*I 2.2696330040934853 +
    44.901324827684896*I]
    Tolerance exceeded in 1 of 8:
        2.269633004093535 vs 2.2696330040934853, tolerance 3e-14 > 1.1e-14
    **********************************************************************
    ```

    This PR raises the tolerance to `3e-14` to fix this.

    ### :memo: Checklist

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.

    URL: https://github.com/sagemath/sage/pull/37763
    Reported by: Gonzalo Tornaría
    Reviewer(s): Antonio Rojas

commit 03be519274f1e3aa424ea729f406180a10df1498
Merge: 4d88e898e2 cd41d1e414
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 14:00:37 2024 +0200

    gh-37755: src/sage/graphs/graph_decompositions/tdlib.pyx: Use -std=c++11

    <!-- ^ Please provide a concise and informative title. -->
    <!-- ^ Don't put issue numbers in the title, do this in the PR
    description below. -->
    <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
    to calculate 1 + 2". -->
    <!-- v Describe your changes below in detail. -->
    <!-- v Why is this change required? What problem does it solve? -->
    <!-- v If this PR resolves an open issue, please link to it here. For
    example, "Fixes #12345". -->

    This is needed with the current Xcode command line tools on macOS with
    boost from homebrew.

    Similar to
    https://github.com/sagemath/sage/pull/37646#issuecomment-2017108199

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.
    - [x] I have linked a relevant issue or discussion.
    - [ ] I have created tests covering the changes.
    - [ ] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on. For example,
    -->
    <!-- - #12345: short description why this is a dependency -->
    <!-- - #34567: ... -->

    URL: https://github.com/sagemath/sage/pull/37755
    Reported by: Matthias Köppe
    Reviewer(s): David Coudert

commit 4d88e898e203d9b7297d224f40d659c213701ccb
Merge: 9971cec642 6722976389
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 14:00:34 2024 +0200

    gh-37753: Added rank check to doctest in `.gauss_on_polys`

    Fixes #37732. Also removed assignment of vectors `v` in the same doctest
    since they are not used.

    URL: https://github.com/sagemath/sage/pull/37753
    Reported by: Sebastian A. Spindler
    Reviewer(s): Martin Rubey

commit 9971cec64239679ee00ee7b22415b98ed53fbbf6
Merge: 3df3305a64 80239bc925
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 14:00:31 2024 +0200

    gh-37736: Reimplementing the Witt (Sym Func) change of basis, caches, and omega involution

    <!-- ^ Please provide a concise and informative title. -->
    <!-- ^ Don't put issue numbers in the title, do this in the PR
    description below. -->
    <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
    to calculate 1 + 2". -->
    <!-- v Describe your changes below in detail. -->
    <!-- v Why is this change required? What problem does it solve? -->
    <!-- v If this PR resolves an open issue, please link to it here. For
    example, "Fixes #12345". -->

    We reimplement the coercion from the Witt basis of symmetric functions
    to the $h$, $e$, and $p$ bases and their inverses by using the
    generating function identities and recursion for $w_n, h_n, e_n, p_n$
    and the mulitplicative basis property for the general shape (in
    particular, we attempt to minimize the number of multiplications and
    maximize the use of the cache by recursively splitting the partition by
    its smallest part). We cache the result using `@cached_method` instead
    of custom classes. We also deprecate the `coerce_*` inputs.

    We also take advantage that $\omega w_n = w_n$ when $n$ is odd to
    compute the omega involution. This extends to a faster computation of
    the antipode.

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.
    - [x] I have linked a relevant issue or discussion.
    - [x] I have created tests covering the changes.
    - [x] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on. For example,
    -->
    <!-- - #12345: short description why this is a dependency -->
    <!-- - #34567: ... -->

    URL: https://github.com/sagemath/sage/pull/37736
    Reported by: Travis Scrimshaw
    Reviewer(s): Darij Grinberg, Martin Rubey

commit 3df3305a6493f88ce86a1bc73e17c34ad01fbe33
Merge: 01333dfec1 ddcb3e45ca
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 14:00:27 2024 +0200

    gh-37725: Fix typo/phrasing in README.md

    <!-- ^ Please provide a concise and informative title. -->
    <!-- ^ Don't put issue numbers in the title, do this in the PR
    description below. -->
    <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
    to calculate 1 + 2". -->
    <!-- v Describe your changes below in detail. -->
    <!-- v Why is this change required? What problem does it solve? -->
    <!-- v If this PR resolves an open issue, please link to it here. For
    example, "Fixes #12345". -->

    - Removed the phrase "It assumes that you have already cloned the git
    repository" from the setup guide since the guide actually contains
    instructions on cloning the repository
    - Removed a random misplaced period

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.
    - [ ] I have linked a relevant issue or discussion.
    - [ ] I have created tests covering the changes.
    - [ ] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on. For example,
    -->
    <!-- - #12345: short description why this is a dependency -->
    <!-- - #34567: ... -->

    URL: https://github.com/sagemath/sage/pull/37725
    Reported by: Faisal
    Reviewer(s): gmou3

commit 01333dfec1ae7a518260c0178d4a0b254b886157
Merge: bcbb58f10a 8378fe6fdd
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 14:00:24 2024 +0200

    gh-37721: Renamed "ring" argument of matrix contructor to "base_ring"

    <!-- ^ Please provide a concise and informative title. -->
    <!-- ^ Don't put issue numbers in the title, do this in the PR
    description below. -->
    <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
    to calculate 1 + 2". -->
    <!-- v Describe your changes below in detail. -->
    <!-- v Why is this change required? What problem does it solve? -->
    <!-- v If this PR resolves an open issue, please link to it here. For
    example, "Fixes #12345". -->

    The matrix constructor used to accept ``ring`` as argument to specify a
    the base ring of a matrix.
    It now takes ``base_ring`` instead. ``ring`` is still accepted but
    deprecated (I added a deprecation in the code).
    This is for unification (``base_ring`` is what users expect from their
    experience with other classes).
    This solves @mkoeppe's issue #33380.

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.
    - [x] I have linked a relevant issue or discussion.
    - [x] I have created tests covering the changes.
    - [x] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on. For example,
    -->
    <!-- - #12345: short description why this is a dependency -->
    <!-- - #34567: ... -->

    URL: https://github.com/sagemath/sage/pull/37721
    Reported by: SandwichGouda
    Reviewer(s): Matthias Köppe

commit bcbb58f10a840f43c1359934b85bfef9c143731c
Merge: 08d5d97336 9b3ddf95fd
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 14:00:21 2024 +0200

    gh-37720: pkgs/sagemath-repl/pyproject.toml.m4: Declare extra 'sphinx'

    <!-- ^ Please provide a concise and informative title. -->
    <!-- ^ Don't put issue numbers in the title, do this in the PR
    description below. -->
    <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
    to calculate 1 + 2". -->
    <!-- v Describe your changes below in detail. -->
    <!-- v Why is this change required? What problem does it solve? -->
    <!-- v If this PR resolves an open issue, please link to it here. For
    example, "Fixes #12345". -->

    As discussed in
    https://github.com/sagemath/sage/pull/37589#issuecomment-2030456264, the
    Sage documentation system uses Sphinx to format the documentation in the
    terminal, for example in the help system.

    For the modularization project, a simple fallback for the case of Sphinx
    not being present was added.

    Here we declare the corresponding "extra" so that users can do `pip
    install sagemath-repl[sphinx]`.

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.
    - [x] I have linked a relevant issue or discussion.
    - [ ] I have created tests covering the changes.
    - [ ] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on. For example,
    -->
    <!-- - #12345: short description why this is a dependency -->
    <!-- - #34567: ... -->

    URL: https://github.com/sagemath/sage/pull/37720
    Reported by: Matthias Köppe
    Reviewer(s):

commit 08d5d97336d5cb87f4e9731b724b320e8cef771f
Merge: 253169ff7b 5a61d3c103
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 14:00:18 2024 +0200

    gh-37712: src/tox.ini (rst): Add missing Sphinx roles

    <!-- ^ Please provide a concise and informative title. -->
    <!-- ^ Don't put issue numbers in the title, do this in the PR
    description below. -->
    <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
    to calculate 1 + 2". -->
    <!-- v Describe your changes below in detail. -->
    <!-- v Why is this change required? What problem does it solve? -->
    <!-- v If this PR resolves an open issue, please link to it here. For
    example, "Fixes #12345". -->

    Fixes #37711

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [ ] The description explains in detail what this PR is about.
    - [x] I have linked a relevant issue or discussion.
    - [ ] I have created tests covering the changes.
    - [ ] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on. For example,
    -->
    <!-- - #12345: short description why this is a dependency -->
    <!-- - #34567: ... -->

    URL: https://github.com/sagemath/sage/pull/37712
    Reported by: Matthias Köppe
    Reviewer(s): Frédéric Chapoton

commit 253169ff7b83df66d20846983ac9ce2982f3a18e
Merge: 35f34ee0f6 3dc65b5797
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 14:00:16 2024 +0200

    gh-37707: Implement an iterator for absolute number fields

    <!-- ^ Please provide a concise and informative title. -->
    <!-- ^ Don't put issue numbers in the title, do this in the PR
    description below. -->
    <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
    to calculate 1 + 2". -->
    <!-- v Describe your changes below in detail. -->
    <!-- v Why is this change required? What problem does it solve? -->
    <!-- v If this PR resolves an open issue, please link to it here. For
    example, "Fixes #12345". -->

    We use the $\mathbb{Q}$ vector space structure. Although because of
    #37706, we go through `cartesian_product`.

    If there is an easy way to implement this in full generality (i.e., all
    number fields), please let me know.

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.
    - [x] I have linked a relevant issue or discussion.
    - [x] I have created tests covering the changes.
    - [x] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on. For example,
    -->
    <!-- - #12345: short description why this is a dependency -->
    <!-- - #34567: ... -->

    URL: https://github.com/sagemath/sage/pull/37707
    Reported by: Travis Scrimshaw
    Reviewer(s): Matthias Köppe

commit 35f34ee0f66904d9f2766b646664ae67cedd3aae
Merge: 0a16c78b4e e077f1edf7
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 14:00:11 2024 +0200

    gh-37703: Implement an is_nilpotent() method for matrices

    <!-- ^ Please provide a concise and informative title. -->
    <!-- ^ Don't put issue numbers in the title, do this in the PR
    description below. -->
    <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
    to calculate 1 + 2". -->
    <!-- v Describe your changes below in detail. -->
    <!-- v Why is this change required? What problem does it solve? -->
    <!-- v If this PR resolves an open issue, please link to it here. For
    example, "Fixes #12345". -->

    Checking if a matrix is nilpotent is a fundamental test that Sage is
    (surprisingly) missing. We check this by using the char poly.

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.
    - [x] I have linked a relevant issue or discussion.
    - [x] I have created tests covering the changes.
    - [x] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on. For example,
    -->
    <!-- - #12345: short description why this is a dependency -->
    <!-- - #34567: ... -->

    URL: https://github.com/sagemath/sage/pull/37703
    Reported by: Travis Scrimshaw
    Reviewer(s): Frédéric Chapoton, Martin Rubey

commit 0a16c78b4e2b677ba30b198fdc781d38e595c9d8
Merge: 9d788cb197 7e8aa98fa6
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 14:00:04 2024 +0200

    gh-37699: Add `approximate_closest_vector` to `IntegerLattice`, using Babai's nearest plane algorithm

    This PR implements Babai's nearest plane algorithm to find vectors close
    to a given vector in an integer lattice.

    I would appreciate if someone could verify the bound stated in the
    docstring, it is inferred from Babai's original paper but parameterized
    to use the `delta` parameter of the LLL algorithm.

    Ideas for improvements:
     - The doctest is currently the same as for `closest_vector`, this could
    be expanded
     - The `delta` parameter for LLL needs to be kept track of by the user.
    How "much" the basis has been reduced (i.e to how high a `delta` value)
    could be kept track of by the class and if a further reduction is needed
    for some given bound then it could be performed.

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.
    - [ ] I have linked a relevant issue or discussion.
    - [x] I have created tests covering the changes.
    - [x] I have updated the documentation accordingly.

    URL: https://github.com/sagemath/sage/pull/37699
    Reported by: TheBlupper
    Reviewer(s): grhkm21, TheBlupper

commit 9d788cb19732f9f750c6d5a25c28ccb958414112
Merge: 6925269840 d63ab2607e
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 14:00:02 2024 +0200

    gh-37689: Fix changes.html in doc preview

    <!-- ^ Please provide a concise and informative title. -->
    <!-- ^ Don't put issue numbers in the title, do this in the PR
    description below. -->
    <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
    to calculate 1 + 2". -->
    <!-- v Describe your changes below in detail. -->
    <!-- v Why is this change required? What problem does it solve? -->
    <!-- v If this PR resolves an open issue, please link to it here. For
    example, "Fixes #12345". -->

    by changing the base doc url.

    The base doc url is where the doc preview for the released version is
    uploaded. It changed recently:
    https://github.com/sagemath/sage/issues/34874#issuecomment-1870589626,
    but we didn't fix accordingly here: [.ci/create-changes-
    html.sh](https://github.com/sagemath/sage/blob/develop/.ci/create-
    changes-html.sh)

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.
    - [ ] I have linked a relevant issue or discussion.
    - [ ] I have created tests covering the changes.
    - [ ] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on. For example,
    -->
    <!-- - #12345: short description why this is a dependency -->
    <!-- - #34567: ... -->

    URL: https://github.com/sagemath/sage/pull/37689
    Reported by: Kwankyu Lee
    Reviewer(s):

commit 6925269840b81d3a1085ae900037e71dfd440c87
Merge: 12a003eddd 3b137b50a0
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:59:59 2024 +0200

    gh-37688: typo

    Small typo

    URL: https://github.com/sagemath/sage/pull/37688
    Reported by: Dennis Yurichev
    Reviewer(s): Martin Rubey

commit 12a003eddd08bcac14c88becd82bf52af599fe6c
Merge: 3c9a67a2f0 6184336d73
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:59:56 2024 +0200

    gh-37687: provide a construction functor using a single functor for families

    We enable sage to find common parents also when symmetric functions are
    involved. In particular, we provide a functorial construction that takes
    a commutative (coefficient) ring and produces a (commutative) ring of
    symmetric functions over this ring.

    For Macdonald polynomials and other symmetric functions that involve
    parameters we cheat a bit: the categories should actually be commutative
    rings with distinguished elements (namely, the parameters). However,
    having these is very likely overkill.

    This is an alternative to #37220, relying on individual construction
    functors instead of passing around strings, and #37686, which provides
    an individual functor for each family.

    URL: https://github.com/sagemath/sage/pull/37687
    Reported by: Martin Rubey
    Reviewer(s): Travis Scrimshaw

commit 3c9a67a2f0f8d42c1167f7fa192c70d29cdf6766
Merge: 1ab35e3a69 31645a4f35
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:59:53 2024 +0200

    gh-37683: some shortcuts using bool

    fixes suggested by `ruff --select=SIM210`

    namely use `bool` for concision

    ### :memo: Checklist

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.

    URL: https://github.com/sagemath/sage/pull/37683
    Reported by: Frédéric Chapoton
    Reviewer(s): Matthias Köppe, Travis Scrimshaw

commit 1ab35e3a696baf5a2fdd866a670c32611fa4a996
Merge: 654ed08b89 449864f0af
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:59:49 2024 +0200

    gh-37680: a few more uses of "in Fields()"

    Just replacing some tests by `R in Fields()` in some pyx files outside
    the `rings` folder

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.

    URL: https://github.com/sagemath/sage/pull/37680
    Reported by: Frédéric Chapoton
    Reviewer(s): Matthias Köppe

commit 654ed08b899e3a0bcd2d72a9ea66e5f1a96569a8
Merge: 042153b0d9 a8671aef33
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:59:44 2024 +0200

    gh-37679: simplifications in symmetric_ideal.py

    some simplifications in `symmetric_ideal`

    ### :memo: Checklist

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.

    URL: https://github.com/sagemath/sage/pull/37679
    Reported by: Frédéric Chapoton
    Reviewer(s): Matthias Köppe

commit 042153b0d976f8ec7b7489c404a17084321e3e06
Merge: 0de7848873 5d4a91fa85
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:59:41 2024 +0200

    gh-37677: some simplifications in moment-angle complex

    a bunch of code details in the modified file

    fixes #36217

    ### :memo: Checklist

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.
    - [x] I have linked a relevant issue or discussion.

    URL: https://github.com/sagemath/sage/pull/37677
    Reported by: Frédéric Chapoton
    Reviewer(s): Travis Scrimshaw

commit 0de7848873bcda21b916e13ad71dd0dbe6aa9ff0
Merge: 014ccc31c4 e0ef88414d
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:59:38 2024 +0200

    gh-37674: some pep8 and ruff cleanups in modules/

    some ruff and pep8 cleanup in the `modules` folder

    ### :memo: Checklist

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.

    URL: https://github.com/sagemath/sage/pull/37674
    Reported by: Frédéric Chapoton
    Reviewer(s): Travis Scrimshaw

commit 014ccc31c4118b929bb46c0811331f828041aee4
Merge: 93cc706453 42b4b671c3
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:59:34 2024 +0200

    gh-37673: upgrade msolve to 0.6.5

    routine upgrade, dropping already applied patch

    URL: https://github.com/sagemath/sage/pull/37673
    Reported by: Dima Pasechnik
    Reviewer(s): Dima Pasechnik, Marc Mezzarobba, Matthias Köppe

commit 93cc7064532b3456e5520833121e761078078576
Merge: cf431c8d40 f9ddc324b8
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:59:31 2024 +0200

    gh-37672: src/sage/modular/quasimodform/ring.py: Fix pycodestyle warning

    <!-- ^ Please provide a concise and informative title. -->
    <!-- ^ Don't put issue numbers in the title, do this in the PR
    description below. -->
    <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
    to calculate 1 + 2". -->
    <!-- v Describe your changes below in detail. -->
    <!-- v Why is this change required? What problem does it solve? -->
    <!-- v If this PR resolves an open issue, please link to it here. For
    example, "Fixes #12345". -->

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [ ] The title is concise and informative.
    - [ ] The description explains in detail what this PR is about.
    - [ ] I have linked a relevant issue or discussion.
    - [ ] I have created tests covering the changes.
    - [ ] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on. For example,
    -->
    <!-- - #12345: short description why this is a dependency -->
    <!-- - #34567: ... -->

    URL: https://github.com/sagemath/sage/pull/37672
    Reported by: Matthias Köppe
    Reviewer(s): Frédéric Chapoton

commit cf431c8d40397205bb0f2e1f2843beec16788236
Merge: 2c71f81f0d 378ec74794
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:59:28 2024 +0200

    gh-37671: pkgs/sagemath-standard: Support gpep517

    From https://github.com/sagemath/sage/pull/37138#issuecomment-2018937633

    <!-- ^ Please provide a concise and informative title. -->
    <!-- ^ Don't put issue numbers in the title, do this in the PR
    description below. -->
    <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
    to calculate 1 + 2". -->
    <!-- v Describe your changes below in detail. -->
    <!-- v Why is this change required? What problem does it solve? -->
    <!-- v If this PR resolves an open issue, please link to it here. For
    example, "Fixes #12345". -->

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [ ] The description explains in detail what this PR is about.
    - [x] I have linked a relevant issue or discussion.
    - [ ] I have created tests covering the changes.
    - [ ] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on. For example,
    -->
    <!-- - #12345: short description why this is a dependency -->
    <!-- - #34567: ... -->

    URL: https://github.com/sagemath/sage/pull/37671
    Reported by: Matthias Köppe
    Reviewer(s): François Bissey

commit 2c71f81f0d804932deb11f3d28eb6e7962593076
Merge: 5801382f06 b8757d814e
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:59:24 2024 +0200

    gh-37668: Wrong results in is_isotopic method of the Link class for certain chiral link

    <!-- ^ Please provide a concise and informative title. -->
    <!-- ^ Don't put issue numbers in the title, do this in the PR
    description below. -->
    <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
    to calculate 1 + 2". -->
    <!-- v Describe your changes below in detail. -->
    <!-- v Why is this change required? What problem does it solve? -->
    <!-- v If this PR resolves an open issue, please link to it here. For
    example, "Fixes #12345". -->
    The following result is wrong, since `K10_67` is a chiral knot:

    ```
    sage: L = KnotInfo.K10_67
    ....: L1 = L.link()
    ....: L1r = L.link().reverse()
    ....: L1.is_isotopic(L1r)
    True
    ```

    The problem is that the `get_knotinfo` method currently does not
    distinguish between all four symmetry mutants of a chiral knot or link.
    In the example, `get_knotinfo` detects both knots as *not mirrored* to
    the symmetry mutant of `K10_67` recorded in the KnotInfo database, as
    you can see from the verbose messages:

    ```
    sage: set_verbose(1)
    sage: L1.is_isotopic(L1r)
    verbose 1 (4365: link.py, is_isotopic) KnotInfo other: KnotInfo.K10_67
    mirrored False
    True
    ```

    The wrong conclusion in `is_isotopic` is that they must be isotopic.

    The idea in this PR is to replace the boolean `mirrored` in the output
    of `get_knotinfo` with the value of an enum representing all symmetry
    mutants for an entry of the KnotInfo database. Of course, this requires
    major revisions in the `get_knotinfo` and `is_isotopic` methods. The key
    to this is a new local method `_knotinfo_matching_dict` that builds on
    `_knotinfo_matching_list` and returns the matching list for all symmetry
    mutants.

    On the occasion of that revision, I also fix other wrong results for
    example this one of a multi-component link which is not amphicheiral,
    but reversible:

    ```
    sage: L = KnotInfo.L6a2_0
    sage: L1 = L.link()
    sage: L2 = L.link(L.items.braid_notation)
    sage: L1.is_isotopic(L2)
    False
    ```

    This bug is due to `get_knotinfo` returning the wrong mirror version for
    `L1` concerning `L6a2_1`:

    ```
    ...
    sage: L1.get_knotinfo(unique=False)
    [(<KnotInfo.L6a2_0: 'L6a2{0}'>, False), (<KnotInfo.L6a2_1: 'L6a2{1}'>,
    False)]
    sage: L2.get_knotinfo(unique=False)
    [(<KnotInfo.L6a2_0: 'L6a2{0}'>, False), (<KnotInfo.L6a2_1: 'L6a2{1}'>,
    True)]
    ```

    In addition to these fixes, improvements and corresponding adjustments,
    I correct some document formatting.

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.
    - [ ] I have linked a relevant issue or discussion.
    - [x] I have created tests covering the changes.
    - [x] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on. For example,
    -->
    <!-- - #12345: short description why this is a dependency -->
    <!-- - #34567: ... -->

    URL: https://github.com/sagemath/sage/pull/37668
    Reported by: Sebastian Oehms
    Reviewer(s): Sebastian Oehms, Travis Scrimshaw

commit 5801382f0638c7c8f50ae5a906b85306e5350fb5
Merge: cf365e5e51 bcc326d972
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:59:11 2024 +0200

    gh-37667: Fix noexcept clauses (#37560)

    In #36507 I added a lot of `noexcept` clauses guided by a warning which
    is not quite right (see
    https://github.com/cython/cython/pull/5999#issuecomment-1986868208).

    A new warning in 3.0.9 shows the mistake (incorrectly added `noexcept`
    clauses). This broke some doctests (#37560) and a workaround was
    implemented for 10.3 (#37583) since we were too close to release.

    This PR now does the proper fix, removing all the incorrect `noexcept`,
    and also adding a few missing `noexcept`.

    Note: if one tries this PR with cython <= 3.0.8 it seems it's wrong in
    the sense that it will show 40k more warnings after the PR. These are
    *incorrect* warnings.

    If one uses cython 3.0.9 each of these 40k lines give a correct warning
    before this PR and an incorrect warnings after the PR, and there is no
    way to avoid 40k warnings.

    To confirm this PR is a good one, one needs to use cython 3.0.9 +
    https://github.com/cython/cython/pull/6087 or wait for cython 3.0.10. In
    this case, the warnings are correct and one will get 40k warnings before
    the PR and no warning after the PR.

    The last commit reverts the workaround from #37583 so we don't silence
    these warnings on `cython()` now that we have our own code right.

    @vbraun: this is "almost trivial" but touches too many files. Could we
    merge it in beta0 to avoid conflicts? I did this "kind of" automatically
    and I've been testing it for two weeks in almost all my builds. The
    changes made should not affect behaviour at all in the legacy mode we
    are using cython.

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.
    - [x] I have linked a relevant issue or discussion.

    URL: https://github.com/sagemath/sage/pull/37667
    Reported by: Gonzalo Tornaría
    Reviewer(s): Gonzalo Tornaría, Matthias Köppe

commit cf365e5e51d30495f823ed928e0fe027166545d0
Merge: 59bf21efe7 a47b98b32e
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:59:08 2024 +0200

    gh-37663: sage/rings/{complex,real}*: Untitlecase titles, add refs to libraries

    <!-- ^ Please provide a concise and informative title. -->
    <!-- ^ Don't put issue numbers in the title, do this in the PR
    description below. -->
    <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
    to calculate 1 + 2". -->
    <!-- v Describe your changes below in detail. -->
    <!-- v Why is this change required? What problem does it solve? -->
    <!-- v If this PR resolves an open issue, please link to it here. For
    example, "Fixes #12345". -->

    This cleans up the table of contents
    https://deploy-preview-37663--
    sagemath.netlify.app/html/en/reference/rings_numerical/

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [ ] The description explains in detail what this PR is about.
    - [ ] I have linked a relevant issue or discussion.
    - [ ] I have created tests covering the changes.
    - [ ] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on. For example,
    -->
    <!-- - #12345: short description why this is a dependency -->
    <!-- - #34567: ... -->

    - Depends on #37406 (merged here to resolve merge conflict)

    URL: https://github.com/sagemath/sage/pull/37663
    Reported by: Matthias Köppe
    Reviewer(s): Marc Mezzarobba

commit 59bf21efe755cac20496bb417285a7e3545bc790
Merge: 2fd04522f3 210c5d8389
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:59:06 2024 +0200

    gh-37661: some cross-references btw doc of RR, RBF, ...

    (mainly intended to make RBF and CBF, which are the most powerful
    implementations for most purposes, more discoverable)

    URL: https://github.com/sagemath/sage/pull/37661
    Reported by: Marc Mezzarobba
    Reviewer(s):

commit 2fd04522f3caaca5fff0f78f1f1dccc6c0027475
Merge: 03f81897de 16a5261134
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:59:02 2024 +0200

    gh-37660: Fix e302 libs pyx

    This is adding missing empty lines (pycodestyle E302) in pyx files in
    the `modules` and `libs` folders.

    Also some little tweak in code in the singular libs files.

    ### :memo: Checklist

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.

    URL: https://github.com/sagemath/sage/pull/37660
    Reported by: Frédéric Chapoton
    Reviewer(s): David Coudert

commit 03f81897de2bf0aaf6b7fa82982b17251b0c9fd1
Merge: 81b4ddccd1 23c45b1d61
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:58:59 2024 +0200

    gh-37659: fix ruff codes UP012 and UP023

    scripted using `ruff` ; only two minor changes

    see https://docs.astral.sh/ruff/rules/#pyupgrade-up

    ### :memo: Checklist

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.

    URL: https://github.com/sagemath/sage/pull/37659
    Reported by: Frédéric Chapoton
    Reviewer(s): Matthias Köppe

commit 81b4ddccd1de963f7731661106e1e425efd2e76b
Merge: 74a82d7ce4 4fa6f09984
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:58:54 2024 +0200

    gh-37655: Removed caching of determinant in LLL for the `NTL:LLL`-algorithm

    The method previously computed the square root of the squared
    determinant to cache, thus caching the absolute value of the determinant
    instead of the determinant. Therefore we remove this caching completely,
    which fixes #37236.

    URL: https://github.com/sagemath/sage/pull/37655
    Reported by: Sebastian A. Spindler
    Reviewer(s): Vincent Delecroix

commit 74a82d7ce445d8d9e66595887e9fcdf40f838702
Merge: 34539cdb4b 51d423d5a2
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:58:52 2024 +0200

    gh-37652: fix typos and no "Algebra" in the doc

    This fixes a bunch of typos in the doc, and also rewrites one example to
    use `Parent` instead of the auld `Algebra`

    ### :memo: Checklist

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.

    URL: https://github.com/sagemath/sage/pull/37652
    Reported by: Frédéric Chapoton
    Reviewer(s): Matthias Köppe

commit 34539cdb4b65fbb8f34f738c15f41a800de25141
Merge: 7a5ba77a93 5f32f5f882
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:58:49 2024 +0200

    gh-37651: use parent in asymptotic ring

    trying to use the modern `Parent` and categories in the asymptotic ring,
    instead of the auld `Algebra`

    ### :memo: Checklist

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.

    URL: https://github.com/sagemath/sage/pull/37651
    Reported by: Frédéric Chapoton
    Reviewer(s): Marc Mezzarobba

commit 7a5ba77a93cef0ee7a44f4228070e48b890d2b73
Merge: d4ab336474 4fa36454b5
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:58:45 2024 +0200

    gh-37640: Modified `.is_reduced()` of `binary_qf.py` to avoid square root computation

    Adapted the checks in `.is_reduced()` to avoid the square root
    computation, which fixes #37635. Furthermore added a non-singularity
    check.

    This adaption is based on the observation that $$|\sqrt{D} - 2 \cdot
    |a|| < b < \sqrt{D}$$
    if and only if $$b > 0, \ a \cdot c < 0 \text{ and } (a-c)^2 < D$$
    are all satisfied simultaneously (where $D = b^2 - 4ac > 0$).

    The above can be proven in a straightforward manner by taking squares
    and square roots while making sure that the numbers being squared are
    always positive, so that inequalities are preserved.

    URL: https://github.com/sagemath/sage/pull/37640
    Reported by: Sebastian A. Spindler
    Reviewer(s): Lorenz Panny

commit d4ab336474b9f40b9e7f637c9b3ba6ac8bbc2135
Merge: 3c174ef6a6 bf0c3695cc
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:58:41 2024 +0200

    gh-37639: add Legendre transform and suspension for lazy symmetric functions

    This adds two useful functions, particularly important when working with
    operads and Koszul duality.

    ### :memo: Checklist

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.
    - [ ] I have linked a relevant issue or discussion.
    - [x] I have created tests covering the changes.
    - [x] I have updated the documentation accordingly.

    URL: https://github.com/sagemath/sage/pull/37639
    Reported by: Frédéric Chapoton
    Reviewer(s): Martin Rubey, Travis Scrimshaw

commit 3c174ef6a69d80e733dc7461b44fbc8b646ac30d
Merge: 6ab45f666b d7021096c4
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:58:38 2024 +0200

    gh-37638: use strings as label in modular-decomposition trees

    Fixing #37631

    and adding a note saying that labels of rooted trees must be comparable

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.
    - [ ] I have linked a relevant issue or discussion.
    - [x] I have created tests covering the changes.
    - [x] I have updated the documentation accordingly.

    URL: https://github.com/sagemath/sage/pull/37638
    Reported by: Frédéric Chapoton
    Reviewer(s): cyrilbouvier

commit 6ab45f666ba665ee9a0c517233830bafbea544b9
Merge: 8e26e27572 c4c26ee1bf
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:58:36 2024 +0200

    gh-37637: Update jupyter-sphinx to version 0.5.3 and pin thebe to version 0.8.2

    <!-- ^ Please provide a concise and informative title. -->
    <!-- ^ Don't put issue numbers in the title, do this in the PR
    description below. -->
    <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
    to calculate 1 + 2". -->
    <!-- v Describe your changes below in detail. -->
    <!-- v Why is this change required? What problem does it solve? -->
    <!-- v If this PR resolves an open issue, please link to it here. For
    example, "Fixes #12345". -->

    jupyter-sphinx that we are shipping was patched to use thebe@latest,
    which is the cause of the current breakdown of the sage live doc.

    The patch to jupyter-sphinx is partly based on
    https://github.com/jupyter/jupyter-sphinx/pull/231

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.
    - [x] I have linked a relevant issue or discussion.
    - [ ] I have created tests covering the changes.
    - [ ] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on. For example,
    -->
    <!-- - #12345: short description why this is a dependency -->
    <!-- - #34567: ... -->

    URL: https://github.com/sagemath/sage/pull/37637
    Reported by: Kwankyu Lee
    Reviewer(s): Matthias Köppe

commit 8e26e27572073bc9f54839143f52d2d7e4c710e0
Merge: 13a555d970 af97e6da28
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:58:28 2024 +0200

    gh-37634: The Glaisher-Franklin bijections on integer partitions

    The Glaisher-Franklin bijections, for a positive integer $s$, map the
    set of parts divisible by $s$ to the set of parts which occur at least
    $s$ times, see https://www.findstat.org/MapsDatabase/Mp00312 for the
    $s=2$ case.

    This generalizes and streamlines the code from findstat.

    URL: https://github.com/sagemath/sage/pull/37634
    Reported by: Martin Rubey
    Reviewer(s): Martin Rubey, Travis Scrimshaw

commit 13a555d970eefceddd20728c6a3275447713ea7e
Merge: 58e8c578fd d45422e64e
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:58:23 2024 +0200

    gh-37606: Border matrix

    <!-- ^ Please provide a concise and informative title. -->
    <!-- ^ Don't put issue numbers in the title, do this in the PR
    description below. -->
    <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
    to calculate 1 + 2". -->
    <!-- v Describe your changes below in detail. -->
    <!-- v Why is this change required? What problem does it solve? -->
    <!-- v If this PR resolves an open issue, please link to it here. For
    example, "Fixes #12345". -->
    Plain TeX users may remember `\bordermatrix`. Here we implement this as
    options of the `Matrix` class's `str` method.
    ```
                sage: M = matrix([[1,2,3], [4,5,6], [7,8,9]])
                sage: M.subdivide(None, 2)
                sage: print(M.str(unicode=True,
                ....:             top_border=['ab', 'cde', 'f'],
                ....:             bottom_border=['*', '', ''],
                ....:             left_border=[1, 10, 100],
                ....:             right_border=['', ' <', '']))
                            ab cde   f
                         1⎛  1   2│  3⎞
                        10⎜  4   5│  6⎟ <
                       100⎝  7   8│  9⎠
                             *
    ```

    Follow-up PR: As the guiding application for this feature, we equip
    finite-dimensional modules with basis with methods `_repr_matrix`,
    `_ascii_art_matrix`, `_unicode_art_matrix` that can be used as in this
    example:
    ```
                    sage: M = matrix(ZZ, [[1, 0, 0], [0, 1, 0]],
                    ....:            column_keys=['a', 'b', 'c'],
                    ....:            row_keys=['v', 'w']); M
                    Generic morphism:
                    From: Free module generated by {'a', 'b', 'c'} over
    Integer Ring
                    To:   Free module generated by {'v', 'w'} over Integer
    Ring
                    sage: M._unicode_art_ = M._unicode_art_matrix
                    sage: unicode_art(M)                            #
    indirect doctest
                        a b c
                      v⎛1 0 0⎞
                      w⎝0 1 0⎠
    ```

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.
    - [ ] I have linked a relevant issue or discussion.
    - [ ] I have created tests covering the changes.
    - [ ] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on. For example,
    -->
    <!-- - #12345: short description why this is a dependency -->
    <!-- - #34567: ... -->

    URL: https://github.com/sagemath/sage/pull/37606
    Reported by: Matthias Köppe
    Reviewer(s): David Coudert, Matthias Köppe

commit 58e8c578fdc79d94dba5de30ae3a5ba6c08630ef
Merge: 294eed4041 c1d38c77d2
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:58:20 2024 +0200

    gh-37563: trying a change in unique_representation

    namely break the loop over `mro` once found what we want

    I am not sure at all that this keeps the expected properties, but this
    is more efficient..

    ### :memo: Checklist

    - [x] The title is concise and informative.
    - [x] The description explains in detail what this PR is about.

    URL: https://github.com/sagemath/sage/pull/37563
    Reported by: Frédéric Chapoton
    Reviewer(s): Travis Scrimshaw

commit 294eed4041447cb7420462f9548bc9195e376565
Merge: 14da417689 def8e56c30
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:58:17 2024 +0200

    gh-37546: Sphinx ext links for Sage source files

    <!-- ^ Please provide a concise and informative title. -->
    <!-- ^ Don't put issue numbers in the title, do this in the PR
    description below. -->
    <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
    to calculate 1 + 2". -->
    <!-- v Describe your changes below in detail. -->
    <!-- v Why is this change required? What problem does it solve? -->
    <!-- v If this PR resolves an open issue, please link to it here. For
    example, "Fixes #12345". -->

    In the documentation, we can now write `` :sage_root:`src/setup.py` ``
    or `` :sage_root:`src/doc/en/installation` ``, and it will be formatted
    uniformly, and a link to the file in the repository will be created.

    - Rebased version of #33756

    Fixes #33756.

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->

    - [x] The title is concise and informative.
    - [ ] The description explains in detail what this PR is about.
    - [x] I have linked a relevant issue or discussion.
    - [ ] I have created tests covering the changes.
    - [ ] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on. For example,
    -->
    <!-- - #12345: short description why this is a dependency -->
    <!-- - #34567: ... -->

    URL: https://github.com/sagemath/sage/pull/37546
    Reported by: Matthias Köppe
    Reviewer(s): David Coudert, Kwankyu Lee

commit 14da417689b26c72b4369c8a352d3f8345a3c259
Merge: 59ced5e363 1e66857af1
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:58:13 2024 +0200

    gh-37497: remove zombie code

    We remove zombie code for solving linear systems over a finite field,
    which was (likely accidentally) created in #23214, but leads to errors
    when solving sparse linear equations over finite fields.

    This does not quite fix the issue, because we now fall back to generic
    code.

    Fixes #28586

    URL: https://github.com/sagemath/sage/pull/37497
    Reported by: Martin Rubey
    Reviewer(s): Matthias Köppe

commit 59ced5e363eef8f18c34b65fbde75f007015ee0f
Merge: fbaec798ee 6704b34380
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:58:09 2024 +0200

    gh-37425: Remove mention of patchbot, remove 'make buildbot-python3'

    <!-- ^^^^^
    Please provide a concise, informative and self-explanatory title.
    Don't put issue numbers in there, do this in the PR body below.
    For example, instead of "Fixes #1234" use "Introduce new method to
    calculate 1+1"
    -->
    <!-- Describe your changes here in detail -->

    <!-- Why is this change required? What problem does it solve? -->
    <!-- If this PR resolves an open issue, please link to it here. For
    example "Fixes #12345". -->
    <!-- If your change requires a documentation PR, please link it
    appropriately. -->

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->
    <!-- If your change requires a documentation PR, please link it
    appropriately -->
    <!-- If you're unsure about any of these, don't hesitate to ask. We're
    here to help! -->
    <!-- Feel free to remove irrelevant items. -->

    - [x] The title is concise, informative, and self-explanatory.
    - [ ] The description explains in detail what this PR is about.
    - [ ] I have linked a relevant issue or discussion.
    - [ ] I have created tests covering the changes.
    - [ ] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on
    - #12345: short description why this is a dependency
    - #34567: ...
    -->
    - Depends on https://github.com/sagemath/sage/pull/37421

    <!-- If you're unsure about any of these, don't hesitate to ask. We're
    here to help! -->

    URL: https://github.com/sagemath/sage/pull/37425
    Reported by: Matthias Köppe
    Reviewer(s): Frédéric Chapoton

commit fbaec798ee1a0df0e9ded0dd2dd0811387cbb797
Merge: 7855be0849 cb4e7184b3
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:58:06 2024 +0200

    gh-37391: Make installation of "wheel" packages less noisy

    <!-- ^^^^^
    Please provide a concise, informative and self-explanatory title.
    Don't put issue numbers in there, do this in the PR body below.
    For example, instead of "Fixes #1234" use "Introduce new method to
    calculate 1+1"
    -->
    <!-- Describe your changes here in detail -->
    Some care for `build/bin/sage-spkg`, reducing unhelpful verbosity. In
    particular, for "wheel" packages (https://deploy-livedoc--
    sagemath.netlify.app/html/en/developer/packaging#package-source-types),
    there is no build step, so there is no point in talking about what C
    compiler is in use.

    Also saving a few lines of output (and making it clearer who does what)
    by prefixing the output from the various `spkg-...` scripts.

    Example:
    ```
    $ make packaging-no-deps
    [packaging-23.2] Using cached file /Users/mkoeppe/s/sage/sage-
    rebasing/worktree-pristine/upstream/packaging-23.2-py3-none-any.whl
    [packaging-23.2] Setting up build directory /Users/mkoeppe/s/sage/sage-
    rebasing/worktree-pristine/local/var/lib/sage/venv-
    python3.11/var/tmp/sage/build/packaging-23.2
    [packaging-23.2] [spkg-piprm] Found existing installation: packaging
    23.2
    [packaging-23.2] [spkg-piprm] Uninstalling packaging-23.2:
    [packaging-23.2] [spkg-piprm]   Successfully uninstalled packaging-23.2
    [packaging-23.2] Removing stamp file /Users/mkoeppe/s/sage/sage-
    rebasing/worktree-pristine/local/var/lib/sage/venv-
    python3.11/var/lib/sage/installed/packaging-23.2
    [packaging-23.2] [spkg-install] Staged wheel file, staged
    /Users/mkoeppe/s/sage/sage-rebasing/worktree-
    pristine/local/var/lib/sage/venv-
    python3.11/var/lib/sage/scripts/packaging/spkg-requirements.txt
    [packaging-23.2] Moving package files from temporary location
    /Users/mkoeppe/s/sage/sage-rebasing/worktree-
    pristine/local/var/lib/sage/venv-
    python3.11/var/tmp/sage/build/packaging-23.2/inst to
    /Users/mkoeppe/s/sage/sage-rebasing/worktree-
    pristine/local/var/lib/sage/venv-python3.11
    [packaging-23.2] [spkg-pipinst] Using pip 23.3.1 from
    /Users/mkoeppe/s/sage/sage-rebasing/worktree-
    pristine/local/var/lib/sage/venv-python3.11/lib/python3.11/site-
    packages/pip (python 3.11)
    [packaging-23.2] [spkg-pipinst] Looking in links:
    /Users/mkoeppe/s/sage/sage-rebasing/worktree-
    pristine/local/var/lib/sage/venv-python3.11/var/lib/sage/wheels
    [packaging-23.2] [spkg-pipinst] Processing /Users/mkoeppe/s/sage/sage-
    rebasing/worktree-pristine/local/var/lib/sage/venv-
    python3.11/var/lib/sage/wheels/packaging-23.2-py3-none-any.whl (from -r
    /Users/mkoeppe/s/sage/sage-rebasing/worktree-
    pristine/local/var/lib/sage/venv-
    python3.11/var/lib/sage/scripts/packaging/spkg-requirements.txt (line
    1))
    [packaging-23.2] [spkg-pipinst] Installing collected packages: packaging
    [packaging-23.2] [spkg-pipinst] ERROR: pip's dependency resolver does
    not currently take into account all the packages that are installed.
    This behaviour is the source of the following dependency conflicts.
    [packaging-23.2] [spkg-pipinst] meson-python 0.15.0 requires
    meson>=0.63.3; python_version < "3.12", which is not installed.
    [packaging-23.2] [spkg-pipinst] tox 4.11.1 requires cachetools>=5.3.1,
    which is not installed.
    [packaging-23.2] [spkg-pipinst] tox 4.11.1 requires chardet>=5.2, which
    is not installed.
    [packaging-23.2] [spkg-pipinst] Successfully installed packaging-23.2
    [packaging-23.2] Deleting build directory /Users/mkoeppe/s/sage/sage-
    rebasing/worktree-pristine/local/var/lib/sage/venv-
    python3.11/var/tmp/sage/build/packaging-23.2
    [packaging-23.2] Finished installing packaging-23.2
    ```

    Also displaying build times for each package, even when using `make
    V=0`, but suppressing very short build times:
    ```
    $ make V=0
    ...
    [setuptools_scm-8.0.4] installing. Log file: /Users/mkoeppe/s/sage/sage-
    rebasing/worktree-pristine/logs/pkgs/setuptools_scm-8.0.4.log
    [hatchling-1.20.0] installing. Log file: /Users/mkoeppe/s/sage/sage-
    rebasing/worktree-pristine/logs/pkgs/hatchling-1.20.0.log
      [setuptools_scm-8.0.4] successfully installed.
      [hatchling-1.20.0] successfully installed.
    ...
      [sage_conf-10.3.beta8] successfully installed (real 11.36 user 8.32
    sys 2.67).
      [pyproject_metadata-0.7.1] successfully installed (real 16.57 user
    10.70 sys 2.97).
      [ipykernel-6.27.1] successfully installed (real 19.31 user 11.35 sys
    3.71).
    ```

    <!-- Why is this change required? What problem does it solve? -->
    <!-- If this PR resolves an open issue, please link to it here. For
    example "Fixes #12345". -->
    <!-- If your change requires a documentation PR, please link it
    appropriately. -->

    ### :memo: Checklist

    <!-- Put an `x` in all the boxes that apply. -->
    <!-- If your change requires a documentation PR, please link it
    appropriately -->
    <!-- If you're unsure about any of these, don't hesitate to ask. We're
    here to help! -->
    <!-- Feel free to remove irrelevant items. -->

    - [x] The title is concise, informative, and self-explanatory.
    - [ ] The description explains in detail what this PR is about.
    - [ ] I have linked a relevant issue or discussion.
    - [ ] I have created tests covering the changes.
    - [ ] I have updated the documentation accordingly.

    ### :hourglass: Dependencies

    <!-- List all open PRs that this PR logically depends on
    - #12345: short description why this is a dependency
    - #34567: ...
    -->

    <!-- If you're unsure about any of these, don't hesitate to ask. We're
    here to help! -->

    URL: https://github.com/sagemath/sage/pull/37391
    Reported by: Matthias Köppe
    Reviewer(s): Kwankyu Lee

commit 7855be084987c6e200d4c65fee0f9d819510a819
Merge: 031064b9ce 236361bce6
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:57:55 2024 +0200

    gh-37361: Add iterators, Whitney numbers, characteristic polynomial, etc

    Changes (mostly in `matroid.pyx`):
    - Add `_iterator` functions for `bases`, `circuits`, etc, and use them
    internally (this avoids memory consumption/blowups)
    - Add Whitney numbers functions (for the first and second kind)
    - Correct `f_vector` definition (the definition up till now referred to
    the Whitney numbers of second kind)
    - Add characteristic polynomial
    - Correct `is_valid` function to be `False` on a negative rank value
    - Optimize `circuits` function (e.g. `sage: %time C =
    matroids.CompleteGraphic(8).circuits()` drops from `4m` to `1m`)
    - Optimize `broken_circuit_complex` function
    - Improve docstrings (1-line outputs and other changes)

    ### ⌛ Dependencies
    * Depends on #37667

    URL: https://github.com/sagemath/sage/pull/37361
    Reported by: gmou3
    Reviewer(s): gmou3, Matthias Köppe, Travis Scrimshaw

commit 031064b9cee8f7bec802ff0af0c9c28e3fb31b44
Merge: ad0a4b03b3 34564a3962
Author: Release Manager <release@sagemath.org>
Date:   Sun Apr 7 13:57:47 2024 +0200

    gh-37340: Add class FlatsMatroid

    This matroid subclass allows the definition and internal representation
    of a matroid based on its flats (closed sets). This representation can
    be advantageous for some algorithms. This completes the list of the most
    standard matroid definitions (bases, circui…
jacksonwalters added a commit to jacksonwalters/sage that referenced this pull request Apr 9, 2024
commit a047ccfd4c4454411027afb9dd0981d0ae4a8293
Merge: cc1aa671e5 14a1e5c078
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Tue Apr 9 14:41:10 2024 -0400

    Merge branch 'pr/37748' of https://github.com/jacksonwalters/sage into pr/37748

commit cc1aa671e549388cc5d325cce8893062125c52dd
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Tue Apr 9 14:39:37 2024 -0400

    Squashed commit of the following:

    commit 14a1e5c078d1684f751b9e7ef450f197e7bcf27f
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 23:01:35 2024 -0400

        Update src/sage/combinat/symmetric_group_algebra.py

        Good idea.

        moved description from _dft_modular to dft docstring

        remove doctest with p=3, n=3

        Update src/sage/combinat/symmetric_group_algebra.py

        Update src/sage/combinat/symmetric_group_algebra.py

        Co-Authored-By: Travis Scrimshaw <clfrngrown@aol.com>

    commit f3807cb141bae308906295f605939d4b2b205a5a
    Merge: 9ad2152942 8ea5214695
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 20:12:53 2024 -0400

        Merge branch 'develop' into pr/37748

    commit 8ea5214695f742eccd34bd88600771b7121cdb9f
    Author: Release Manager <release@sagemath.org>
    Date:   Tue Apr 9 00:29:19 2024 +0200

        Updated SageMath version to 10.4.beta2

    commit 9ad2152942819a55c20d80485ad8cd8925969c6c
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 13:38:43 2024 -0400

        double backslash for math

    commit 619a48dea00a0a67b8d4e542948200dc23e9589a
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 13:33:00 2024 -0400

        add examples

    commit 527ae2670dd3a37b25a192ab49dad7f4c16dd5aa
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 13:24:13 2024 -0400

        form should default to None

        if form is None, check if characteristic of field divides order of group. if so, it's the modular case, and we return the projection onto idempotents change-of-basis, i.e. the MFT. if not, use semi-normal form.

    commit 488e931da94f4872047ff8e839edc4a0c99b163e
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 13:09:54 2024 -0400

        missing parantheses

    commit 7e96c904b6bc47d2108930c039b95a14155d425b
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 13:00:57 2024 -0400

        Update src/sage/combinat/symmetric_group_algebra.py

        Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

    commit cf27c64dff0b77c6cca162849ec923ae14f4920f
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 13:00:14 2024 -0400

        Update src/sage/combinat/symmetric_group_algebra.py

        I thought I could do this, don't know why I convinced myself I needed flatten.

        Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

    commit 92699f42eba524047b09d527981dab2456802958
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 12:59:16 2024 -0400

        Update src/sage/combinat/symmetric_group_algebra.py

        Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

    commit 68f2ef140f91356f55290d100ad8a5282f19c206
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 12:58:30 2024 -0400

        Update src/sage/combinat/symmetric_group_algebra.py

        Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

    commit 618d5e1a8cb11006ef9fa6642e33f06d5728d6ae
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 12:57:18 2024 -0400

        Update src/sage/combinat/symmetric_group_algebra.py

        Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

    commit 04db911e3f6a08b3be1bf5c295e913a40ee8b28a
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 12:56:37 2024 -0400

        Update src/sage/combinat/symmetric_group_algebra.py

        I see, so "None" if the user doesn't specify, and we determine which form based on whether p|n!. Sounds good.

        Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

    commit e86f79410ebda01b8a85598a5754f9c383336ae1
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 11:09:57 2024 -0400

        add doctest to ensure issue 37751 is fixed

    commit f8c64d16b3d1c7b3d338d9d2339ae2e284df3c58
    Merge: aedd2f3927 3079e2d897
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 10:55:44 2024 -0400

        Merge branch 'pr/37748' of https://github.com/jacksonwalters/sage into pr/37748

    commit aedd2f3927aac05dceeb97bd484afa82557652a8
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 10:55:43 2024 -0400

        remove multiplication stars

    commit 3079e2d897396222b0f23784a4d07a40f25b3c1f
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 10:54:38 2024 -0400

        Update src/sage/combinat/symmetric_group_algebra.py

        Co-authored-by: grhkm21 <83517584+grhkm21@users.noreply.github.com>

    commit b14565299a6f5a82e5fae5080de88b455ce696e5
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 10:51:59 2024 -0400

        docstring lines are wrapped at 80 characters

        ensure each line is less than 80 characters

    commit e3fcc1f59c4668f88c184649c18627480365e646
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Mon Apr 8 10:24:51 2024 -0400

        keep form argument

         keep form since there is a one year deprecation warning before removing arguments. show deprecation warning when default seminormal form is called, but suggest modular form which works in all cases

    commit 6d187b153b5b5c3e29fe07d9efe925e34bf5baa5
    Merge: 551139c09f c8d260a6fe
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 23:34:58 2024 +0200

        gh-37764: ECM-related tests fail after an incremental build

        ### TL;DR:

        This is because setting the default ECMBIN=ecm is only done when using
        the configure test, but not when skipping the configure test because the
        spkg is already installed.

        ### Steps to reproduce:
        * ecm is not installed in the base os
        * Sage make distclean && make succeeeds
        * Tests succeed
        * re-running ./bootstrap && ./configure && make works
        * Tests now fail with PermissionError: [Errno 13] Permission denied: ''

        ### Dependencies
        See also:
         * https://github.com/sagemath/sage/pull/37701
         * https://github.com/sagemath/sage/pull/37011#issuecomment-2023089743

        URL: https://github.com/sagemath/sage/pull/37764
        Reported by: Volker Braun
        Reviewer(s): Matthias Köppe

    commit 71ad110e196d9f17934d030ce1c000e11b50fee8
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Sun Apr 7 19:57:42 2024 -0400

        trigger GitHub actions

    commit c8d260a6fe37cb0379690e57dab6fd2a3d5d8048
    Author: Volker Braun <tarpit@vbraun.imap.cc>
    Date:   Sun Apr 7 22:13:11 2024 +0200

        Update build/pkgs/ecm/spkg-configure.m4

        Co-authored-by: Matthias Köppe <mkoeppe@math.ucdavis.edu>

    commit fbf896681da3ad1fad6c164e4d5a7cf452ec2eec
    Author: Volker Braun <tarpit@vbraun.imap.cc>
    Date:   Sun Apr 7 21:35:42 2024 +0200

        Update build/pkgs/ecm/spkg-configure.m4

        Co-authored-by: Matthias Köppe <mkoeppe@math.ucdavis.edu>

    commit 6531f7e415230d62fecd0a38fd804081341a9f32
    Author: Volker Braun <tarpit@vbraun.imap.cc>
    Date:   Sun Apr 7 21:35:38 2024 +0200

        Update build/pkgs/ecm/spkg-configure.m4

        Co-authored-by: Matthias Köppe <mkoeppe@math.ucdavis.edu>

    commit af0e24286a62a06d85e1baf49d0dc8f624965e5c
    Author: Volker Braun <vbraun.name@gmail.com>
    Date:   Sun Apr 7 19:17:37 2024 +0200

        ECM-related tests fail after an incremental build

        This is because setting the default ECMBIN=ecm is only done when using
        the configure test, but not when skipping the configure test because
        the spkg is already installed.

        Steps to reproduce:
        * ecm is not installed in the base os
        * Sage make distclean && make succeeeds
        * Tests succeed
        * re-running ./bootstrap && ./configure && make works
        * Tests now fail with PermissionError: [Errno 13] Permission denied: ''

        See also:
         * https://github.com/sagemath/sage/pull/37701
         * https://github.com/sagemath/sage/pull/37011#issuecomment-2023089743

    commit 551139c09f26a5da96b1187c3f0dd17b8d80ef84
    Merge: 03be519274 547d502ed5
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 14:00:43 2024 +0200

        gh-37763: Fix tolerance for scipy 1.13

        After updating scipy to 1.13:
        ```
        **********************************************************************
        File "pkgs/sagemath-standard/build/lib.linux-x86_64-cpython-
        312/sage/matrix/matrix_double_dense.pyx", line 3686, in
        sage.matrix.matrix_double_dense.Matrix_double_dense.exp
        Failed example:
            A.exp()  # tol 1.1e-14
        # needs sage.symbolic
        Expected:
            [-19.614602953804912 + 12.517743846762578*I   3.7949636449582176 +
        28.88379930658099*I]
            [ -32.383580980922254 + 21.88423595789845*I   2.269633004093535 +
        44.901324827684824*I]
        Got:
            [-19.61460295380496 + 12.517743846762578*I  3.7949636449581874 +
        28.88379930658104*I]
            [-32.38358098092232 + 21.884235957898436*I 2.2696330040934853 +
        44.901324827684896*I]
        Tolerance exceeded in 1 of 8:
            2.269633004093535 vs 2.2696330040934853, tolerance 3e-14 > 1.1e-14
        **********************************************************************
        ```

        This PR raises the tolerance to `3e-14` to fix this.

        ### :memo: Checklist

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.

        URL: https://github.com/sagemath/sage/pull/37763
        Reported by: Gonzalo Tornaría
        Reviewer(s): Antonio Rojas

    commit 03be519274f1e3aa424ea729f406180a10df1498
    Merge: 4d88e898e2 cd41d1e414
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 14:00:37 2024 +0200

        gh-37755: src/sage/graphs/graph_decompositions/tdlib.pyx: Use -std=c++11

        <!-- ^ Please provide a concise and informative title. -->
        <!-- ^ Don't put issue numbers in the title, do this in the PR
        description below. -->
        <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
        to calculate 1 + 2". -->
        <!-- v Describe your changes below in detail. -->
        <!-- v Why is this change required? What problem does it solve? -->
        <!-- v If this PR resolves an open issue, please link to it here. For
        example, "Fixes #12345". -->

        This is needed with the current Xcode command line tools on macOS with
        boost from homebrew.

        Similar to
        https://github.com/sagemath/sage/pull/37646#issuecomment-2017108199

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.
        - [x] I have linked a relevant issue or discussion.
        - [ ] I have created tests covering the changes.
        - [ ] I have updated the documentation accordingly.

        ### :hourglass: Dependencies

        <!-- List all open PRs that this PR logically depends on. For example,
        -->
        <!-- - #12345: short description why this is a dependency -->
        <!-- - #34567: ... -->

        URL: https://github.com/sagemath/sage/pull/37755
        Reported by: Matthias Köppe
        Reviewer(s): David Coudert

    commit 4d88e898e203d9b7297d224f40d659c213701ccb
    Merge: 9971cec642 6722976389
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 14:00:34 2024 +0200

        gh-37753: Added rank check to doctest in `.gauss_on_polys`

        Fixes #37732. Also removed assignment of vectors `v` in the same doctest
        since they are not used.

        URL: https://github.com/sagemath/sage/pull/37753
        Reported by: Sebastian A. Spindler
        Reviewer(s): Martin Rubey

    commit 9971cec64239679ee00ee7b22415b98ed53fbbf6
    Merge: 3df3305a64 80239bc925
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 14:00:31 2024 +0200

        gh-37736: Reimplementing the Witt (Sym Func) change of basis, caches, and omega involution

        <!-- ^ Please provide a concise and informative title. -->
        <!-- ^ Don't put issue numbers in the title, do this in the PR
        description below. -->
        <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
        to calculate 1 + 2". -->
        <!-- v Describe your changes below in detail. -->
        <!-- v Why is this change required? What problem does it solve? -->
        <!-- v If this PR resolves an open issue, please link to it here. For
        example, "Fixes #12345". -->

        We reimplement the coercion from the Witt basis of symmetric functions
        to the $h$, $e$, and $p$ bases and their inverses by using the
        generating function identities and recursion for $w_n, h_n, e_n, p_n$
        and the mulitplicative basis property for the general shape (in
        particular, we attempt to minimize the number of multiplications and
        maximize the use of the cache by recursively splitting the partition by
        its smallest part). We cache the result using `@cached_method` instead
        of custom classes. We also deprecate the `coerce_*` inputs.

        We also take advantage that $\omega w_n = w_n$ when $n$ is odd to
        compute the omega involution. This extends to a faster computation of
        the antipode.

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.
        - [x] I have linked a relevant issue or discussion.
        - [x] I have created tests covering the changes.
        - [x] I have updated the documentation accordingly.

        ### :hourglass: Dependencies

        <!-- List all open PRs that this PR logically depends on. For example,
        -->
        <!-- - #12345: short description why this is a dependency -->
        <!-- - #34567: ... -->

        URL: https://github.com/sagemath/sage/pull/37736
        Reported by: Travis Scrimshaw
        Reviewer(s): Darij Grinberg, Martin Rubey

    commit 3df3305a6493f88ce86a1bc73e17c34ad01fbe33
    Merge: 01333dfec1 ddcb3e45ca
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 14:00:27 2024 +0200

        gh-37725: Fix typo/phrasing in README.md

        <!-- ^ Please provide a concise and informative title. -->
        <!-- ^ Don't put issue numbers in the title, do this in the PR
        description below. -->
        <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
        to calculate 1 + 2". -->
        <!-- v Describe your changes below in detail. -->
        <!-- v Why is this change required? What problem does it solve? -->
        <!-- v If this PR resolves an open issue, please link to it here. For
        example, "Fixes #12345". -->

        - Removed the phrase "It assumes that you have already cloned the git
        repository" from the setup guide since the guide actually contains
        instructions on cloning the repository
        - Removed a random misplaced period

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.
        - [ ] I have linked a relevant issue or discussion.
        - [ ] I have created tests covering the changes.
        - [ ] I have updated the documentation accordingly.

        ### :hourglass: Dependencies

        <!-- List all open PRs that this PR logically depends on. For example,
        -->
        <!-- - #12345: short description why this is a dependency -->
        <!-- - #34567: ... -->

        URL: https://github.com/sagemath/sage/pull/37725
        Reported by: Faisal
        Reviewer(s): gmou3

    commit 01333dfec1ae7a518260c0178d4a0b254b886157
    Merge: bcbb58f10a 8378fe6fdd
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 14:00:24 2024 +0200

        gh-37721: Renamed "ring" argument of matrix contructor to "base_ring"

        <!-- ^ Please provide a concise and informative title. -->
        <!-- ^ Don't put issue numbers in the title, do this in the PR
        description below. -->
        <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
        to calculate 1 + 2". -->
        <!-- v Describe your changes below in detail. -->
        <!-- v Why is this change required? What problem does it solve? -->
        <!-- v If this PR resolves an open issue, please link to it here. For
        example, "Fixes #12345". -->

        The matrix constructor used to accept ``ring`` as argument to specify a
        the base ring of a matrix.
        It now takes ``base_ring`` instead. ``ring`` is still accepted but
        deprecated (I added a deprecation in the code).
        This is for unification (``base_ring`` is what users expect from their
        experience with other classes).
        This solves @mkoeppe's issue #33380.

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.
        - [x] I have linked a relevant issue or discussion.
        - [x] I have created tests covering the changes.
        - [x] I have updated the documentation accordingly.

        ### :hourglass: Dependencies

        <!-- List all open PRs that this PR logically depends on. For example,
        -->
        <!-- - #12345: short description why this is a dependency -->
        <!-- - #34567: ... -->

        URL: https://github.com/sagemath/sage/pull/37721
        Reported by: SandwichGouda
        Reviewer(s): Matthias Köppe

    commit bcbb58f10a840f43c1359934b85bfef9c143731c
    Merge: 08d5d97336 9b3ddf95fd
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 14:00:21 2024 +0200

        gh-37720: pkgs/sagemath-repl/pyproject.toml.m4: Declare extra 'sphinx'

        <!-- ^ Please provide a concise and informative title. -->
        <!-- ^ Don't put issue numbers in the title, do this in the PR
        description below. -->
        <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
        to calculate 1 + 2". -->
        <!-- v Describe your changes below in detail. -->
        <!-- v Why is this change required? What problem does it solve? -->
        <!-- v If this PR resolves an open issue, please link to it here. For
        example, "Fixes #12345". -->

        As discussed in
        https://github.com/sagemath/sage/pull/37589#issuecomment-2030456264, the
        Sage documentation system uses Sphinx to format the documentation in the
        terminal, for example in the help system.

        For the modularization project, a simple fallback for the case of Sphinx
        not being present was added.

        Here we declare the corresponding "extra" so that users can do `pip
        install sagemath-repl[sphinx]`.

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.
        - [x] I have linked a relevant issue or discussion.
        - [ ] I have created tests covering the changes.
        - [ ] I have updated the documentation accordingly.

        ### :hourglass: Dependencies

        <!-- List all open PRs that this PR logically depends on. For example,
        -->
        <!-- - #12345: short description why this is a dependency -->
        <!-- - #34567: ... -->

        URL: https://github.com/sagemath/sage/pull/37720
        Reported by: Matthias Köppe
        Reviewer(s):

    commit 08d5d97336d5cb87f4e9731b724b320e8cef771f
    Merge: 253169ff7b 5a61d3c103
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 14:00:18 2024 +0200

        gh-37712: src/tox.ini (rst): Add missing Sphinx roles

        <!-- ^ Please provide a concise and informative title. -->
        <!-- ^ Don't put issue numbers in the title, do this in the PR
        description below. -->
        <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
        to calculate 1 + 2". -->
        <!-- v Describe your changes below in detail. -->
        <!-- v Why is this change required? What problem does it solve? -->
        <!-- v If this PR resolves an open issue, please link to it here. For
        example, "Fixes #12345". -->

        Fixes #37711

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [ ] The description explains in detail what this PR is about.
        - [x] I have linked a relevant issue or discussion.
        - [ ] I have created tests covering the changes.
        - [ ] I have updated the documentation accordingly.

        ### :hourglass: Dependencies

        <!-- List all open PRs that this PR logically depends on. For example,
        -->
        <!-- - #12345: short description why this is a dependency -->
        <!-- - #34567: ... -->

        URL: https://github.com/sagemath/sage/pull/37712
        Reported by: Matthias Köppe
        Reviewer(s): Frédéric Chapoton

    commit 253169ff7b83df66d20846983ac9ce2982f3a18e
    Merge: 35f34ee0f6 3dc65b5797
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 14:00:16 2024 +0200

        gh-37707: Implement an iterator for absolute number fields

        <!-- ^ Please provide a concise and informative title. -->
        <!-- ^ Don't put issue numbers in the title, do this in the PR
        description below. -->
        <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
        to calculate 1 + 2". -->
        <!-- v Describe your changes below in detail. -->
        <!-- v Why is this change required? What problem does it solve? -->
        <!-- v If this PR resolves an open issue, please link to it here. For
        example, "Fixes #12345". -->

        We use the $\mathbb{Q}$ vector space structure. Although because of
        #37706, we go through `cartesian_product`.

        If there is an easy way to implement this in full generality (i.e., all
        number fields), please let me know.

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.
        - [x] I have linked a relevant issue or discussion.
        - [x] I have created tests covering the changes.
        - [x] I have updated the documentation accordingly.

        ### :hourglass: Dependencies

        <!-- List all open PRs that this PR logically depends on. For example,
        -->
        <!-- - #12345: short description why this is a dependency -->
        <!-- - #34567: ... -->

        URL: https://github.com/sagemath/sage/pull/37707
        Reported by: Travis Scrimshaw
        Reviewer(s): Matthias Köppe

    commit 35f34ee0f66904d9f2766b646664ae67cedd3aae
    Merge: 0a16c78b4e e077f1edf7
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 14:00:11 2024 +0200

        gh-37703: Implement an is_nilpotent() method for matrices

        <!-- ^ Please provide a concise and informative title. -->
        <!-- ^ Don't put issue numbers in the title, do this in the PR
        description below. -->
        <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
        to calculate 1 + 2". -->
        <!-- v Describe your changes below in detail. -->
        <!-- v Why is this change required? What problem does it solve? -->
        <!-- v If this PR resolves an open issue, please link to it here. For
        example, "Fixes #12345". -->

        Checking if a matrix is nilpotent is a fundamental test that Sage is
        (surprisingly) missing. We check this by using the char poly.

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.
        - [x] I have linked a relevant issue or discussion.
        - [x] I have created tests covering the changes.
        - [x] I have updated the documentation accordingly.

        ### :hourglass: Dependencies

        <!-- List all open PRs that this PR logically depends on. For example,
        -->
        <!-- - #12345: short description why this is a dependency -->
        <!-- - #34567: ... -->

        URL: https://github.com/sagemath/sage/pull/37703
        Reported by: Travis Scrimshaw
        Reviewer(s): Frédéric Chapoton, Martin Rubey

    commit 0a16c78b4e2b677ba30b198fdc781d38e595c9d8
    Merge: 9d788cb197 7e8aa98fa6
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 14:00:04 2024 +0200

        gh-37699: Add `approximate_closest_vector` to `IntegerLattice`, using Babai's nearest plane algorithm

        This PR implements Babai's nearest plane algorithm to find vectors close
        to a given vector in an integer lattice.

        I would appreciate if someone could verify the bound stated in the
        docstring, it is inferred from Babai's original paper but parameterized
        to use the `delta` parameter of the LLL algorithm.

        Ideas for improvements:
         - The doctest is currently the same as for `closest_vector`, this could
        be expanded
         - The `delta` parameter for LLL needs to be kept track of by the user.
        How "much" the basis has been reduced (i.e to how high a `delta` value)
        could be kept track of by the class and if a further reduction is needed
        for some given bound then it could be performed.

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.
        - [ ] I have linked a relevant issue or discussion.
        - [x] I have created tests covering the changes.
        - [x] I have updated the documentation accordingly.

        URL: https://github.com/sagemath/sage/pull/37699
        Reported by: TheBlupper
        Reviewer(s): grhkm21, TheBlupper

    commit 9d788cb19732f9f750c6d5a25c28ccb958414112
    Merge: 6925269840 d63ab2607e
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 14:00:02 2024 +0200

        gh-37689: Fix changes.html in doc preview

        <!-- ^ Please provide a concise and informative title. -->
        <!-- ^ Don't put issue numbers in the title, do this in the PR
        description below. -->
        <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
        to calculate 1 + 2". -->
        <!-- v Describe your changes below in detail. -->
        <!-- v Why is this change required? What problem does it solve? -->
        <!-- v If this PR resolves an open issue, please link to it here. For
        example, "Fixes #12345". -->

        by changing the base doc url.

        The base doc url is where the doc preview for the released version is
        uploaded. It changed recently:
        https://github.com/sagemath/sage/issues/34874#issuecomment-1870589626,
        but we didn't fix accordingly here: [.ci/create-changes-
        html.sh](https://github.com/sagemath/sage/blob/develop/.ci/create-
        changes-html.sh)

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.
        - [ ] I have linked a relevant issue or discussion.
        - [ ] I have created tests covering the changes.
        - [ ] I have updated the documentation accordingly.

        ### :hourglass: Dependencies

        <!-- List all open PRs that this PR logically depends on. For example,
        -->
        <!-- - #12345: short description why this is a dependency -->
        <!-- - #34567: ... -->

        URL: https://github.com/sagemath/sage/pull/37689
        Reported by: Kwankyu Lee
        Reviewer(s):

    commit 6925269840b81d3a1085ae900037e71dfd440c87
    Merge: 12a003eddd 3b137b50a0
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:59:59 2024 +0200

        gh-37688: typo

        Small typo

        URL: https://github.com/sagemath/sage/pull/37688
        Reported by: Dennis Yurichev
        Reviewer(s): Martin Rubey

    commit 12a003eddd08bcac14c88becd82bf52af599fe6c
    Merge: 3c9a67a2f0 6184336d73
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:59:56 2024 +0200

        gh-37687: provide a construction functor using a single functor for families

        We enable sage to find common parents also when symmetric functions are
        involved. In particular, we provide a functorial construction that takes
        a commutative (coefficient) ring and produces a (commutative) ring of
        symmetric functions over this ring.

        For Macdonald polynomials and other symmetric functions that involve
        parameters we cheat a bit: the categories should actually be commutative
        rings with distinguished elements (namely, the parameters). However,
        having these is very likely overkill.

        This is an alternative to #37220, relying on individual construction
        functors instead of passing around strings, and #37686, which provides
        an individual functor for each family.

        URL: https://github.com/sagemath/sage/pull/37687
        Reported by: Martin Rubey
        Reviewer(s): Travis Scrimshaw

    commit 3c9a67a2f0f8d42c1167f7fa192c70d29cdf6766
    Merge: 1ab35e3a69 31645a4f35
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:59:53 2024 +0200

        gh-37683: some shortcuts using bool

        fixes suggested by `ruff --select=SIM210`

        namely use `bool` for concision

        ### :memo: Checklist

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.

        URL: https://github.com/sagemath/sage/pull/37683
        Reported by: Frédéric Chapoton
        Reviewer(s): Matthias Köppe, Travis Scrimshaw

    commit 1ab35e3a696baf5a2fdd866a670c32611fa4a996
    Merge: 654ed08b89 449864f0af
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:59:49 2024 +0200

        gh-37680: a few more uses of "in Fields()"

        Just replacing some tests by `R in Fields()` in some pyx files outside
        the `rings` folder

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.

        URL: https://github.com/sagemath/sage/pull/37680
        Reported by: Frédéric Chapoton
        Reviewer(s): Matthias Köppe

    commit 654ed08b899e3a0bcd2d72a9ea66e5f1a96569a8
    Merge: 042153b0d9 a8671aef33
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:59:44 2024 +0200

        gh-37679: simplifications in symmetric_ideal.py

        some simplifications in `symmetric_ideal`

        ### :memo: Checklist

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.

        URL: https://github.com/sagemath/sage/pull/37679
        Reported by: Frédéric Chapoton
        Reviewer(s): Matthias Köppe

    commit 042153b0d976f8ec7b7489c404a17084321e3e06
    Merge: 0de7848873 5d4a91fa85
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:59:41 2024 +0200

        gh-37677: some simplifications in moment-angle complex

        a bunch of code details in the modified file

        fixes #36217

        ### :memo: Checklist

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.
        - [x] I have linked a relevant issue or discussion.

        URL: https://github.com/sagemath/sage/pull/37677
        Reported by: Frédéric Chapoton
        Reviewer(s): Travis Scrimshaw

    commit 0de7848873bcda21b916e13ad71dd0dbe6aa9ff0
    Merge: 014ccc31c4 e0ef88414d
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:59:38 2024 +0200

        gh-37674: some pep8 and ruff cleanups in modules/

        some ruff and pep8 cleanup in the `modules` folder

        ### :memo: Checklist

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.

        URL: https://github.com/sagemath/sage/pull/37674
        Reported by: Frédéric Chapoton
        Reviewer(s): Travis Scrimshaw

    commit 014ccc31c4118b929bb46c0811331f828041aee4
    Merge: 93cc706453 42b4b671c3
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:59:34 2024 +0200

        gh-37673: upgrade msolve to 0.6.5

        routine upgrade, dropping already applied patch

        URL: https://github.com/sagemath/sage/pull/37673
        Reported by: Dima Pasechnik
        Reviewer(s): Dima Pasechnik, Marc Mezzarobba, Matthias Köppe

    commit 93cc7064532b3456e5520833121e761078078576
    Merge: cf431c8d40 f9ddc324b8
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:59:31 2024 +0200

        gh-37672: src/sage/modular/quasimodform/ring.py: Fix pycodestyle warning

        <!-- ^ Please provide a concise and informative title. -->
        <!-- ^ Don't put issue numbers in the title, do this in the PR
        description below. -->
        <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
        to calculate 1 + 2". -->
        <!-- v Describe your changes below in detail. -->
        <!-- v Why is this change required? What problem does it solve? -->
        <!-- v If this PR resolves an open issue, please link to it here. For
        example, "Fixes #12345". -->

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [ ] The title is concise and informative.
        - [ ] The description explains in detail what this PR is about.
        - [ ] I have linked a relevant issue or discussion.
        - [ ] I have created tests covering the changes.
        - [ ] I have updated the documentation accordingly.

        ### :hourglass: Dependencies

        <!-- List all open PRs that this PR logically depends on. For example,
        -->
        <!-- - #12345: short description why this is a dependency -->
        <!-- - #34567: ... -->

        URL: https://github.com/sagemath/sage/pull/37672
        Reported by: Matthias Köppe
        Reviewer(s): Frédéric Chapoton

    commit cf431c8d40397205bb0f2e1f2843beec16788236
    Merge: 2c71f81f0d 378ec74794
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:59:28 2024 +0200

        gh-37671: pkgs/sagemath-standard: Support gpep517

        From https://github.com/sagemath/sage/pull/37138#issuecomment-2018937633

        <!-- ^ Please provide a concise and informative title. -->
        <!-- ^ Don't put issue numbers in the title, do this in the PR
        description below. -->
        <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
        to calculate 1 + 2". -->
        <!-- v Describe your changes below in detail. -->
        <!-- v Why is this change required? What problem does it solve? -->
        <!-- v If this PR resolves an open issue, please link to it here. For
        example, "Fixes #12345". -->

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [ ] The description explains in detail what this PR is about.
        - [x] I have linked a relevant issue or discussion.
        - [ ] I have created tests covering the changes.
        - [ ] I have updated the documentation accordingly.

        ### :hourglass: Dependencies

        <!-- List all open PRs that this PR logically depends on. For example,
        -->
        <!-- - #12345: short description why this is a dependency -->
        <!-- - #34567: ... -->

        URL: https://github.com/sagemath/sage/pull/37671
        Reported by: Matthias Köppe
        Reviewer(s): François Bissey

    commit 2c71f81f0d804932deb11f3d28eb6e7962593076
    Merge: 5801382f06 b8757d814e
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:59:24 2024 +0200

        gh-37668: Wrong results in is_isotopic method of the Link class for certain chiral link

        <!-- ^ Please provide a concise and informative title. -->
        <!-- ^ Don't put issue numbers in the title, do this in the PR
        description below. -->
        <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
        to calculate 1 + 2". -->
        <!-- v Describe your changes below in detail. -->
        <!-- v Why is this change required? What problem does it solve? -->
        <!-- v If this PR resolves an open issue, please link to it here. For
        example, "Fixes #12345". -->
        The following result is wrong, since `K10_67` is a chiral knot:

        ```
        sage: L = KnotInfo.K10_67
        ....: L1 = L.link()
        ....: L1r = L.link().reverse()
        ....: L1.is_isotopic(L1r)
        True
        ```

        The problem is that the `get_knotinfo` method currently does not
        distinguish between all four symmetry mutants of a chiral knot or link.
        In the example, `get_knotinfo` detects both knots as *not mirrored* to
        the symmetry mutant of `K10_67` recorded in the KnotInfo database, as
        you can see from the verbose messages:

        ```
        sage: set_verbose(1)
        sage: L1.is_isotopic(L1r)
        verbose 1 (4365: link.py, is_isotopic) KnotInfo other: KnotInfo.K10_67
        mirrored False
        True
        ```

        The wrong conclusion in `is_isotopic` is that they must be isotopic.

        The idea in this PR is to replace the boolean `mirrored` in the output
        of `get_knotinfo` with the value of an enum representing all symmetry
        mutants for an entry of the KnotInfo database. Of course, this requires
        major revisions in the `get_knotinfo` and `is_isotopic` methods. The key
        to this is a new local method `_knotinfo_matching_dict` that builds on
        `_knotinfo_matching_list` and returns the matching list for all symmetry
        mutants.

        On the occasion of that revision, I also fix other wrong results for
        example this one of a multi-component link which is not amphicheiral,
        but reversible:

        ```
        sage: L = KnotInfo.L6a2_0
        sage: L1 = L.link()
        sage: L2 = L.link(L.items.braid_notation)
        sage: L1.is_isotopic(L2)
        False
        ```

        This bug is due to `get_knotinfo` returning the wrong mirror version for
        `L1` concerning `L6a2_1`:

        ```
        ...
        sage: L1.get_knotinfo(unique=False)
        [(<KnotInfo.L6a2_0: 'L6a2{0}'>, False), (<KnotInfo.L6a2_1: 'L6a2{1}'>,
        False)]
        sage: L2.get_knotinfo(unique=False)
        [(<KnotInfo.L6a2_0: 'L6a2{0}'>, False), (<KnotInfo.L6a2_1: 'L6a2{1}'>,
        True)]
        ```

        In addition to these fixes, improvements and corresponding adjustments,
        I correct some document formatting.

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.
        - [ ] I have linked a relevant issue or discussion.
        - [x] I have created tests covering the changes.
        - [x] I have updated the documentation accordingly.

        ### :hourglass: Dependencies

        <!-- List all open PRs that this PR logically depends on. For example,
        -->
        <!-- - #12345: short description why this is a dependency -->
        <!-- - #34567: ... -->

        URL: https://github.com/sagemath/sage/pull/37668
        Reported by: Sebastian Oehms
        Reviewer(s): Sebastian Oehms, Travis Scrimshaw

    commit 5801382f0638c7c8f50ae5a906b85306e5350fb5
    Merge: cf365e5e51 bcc326d972
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:59:11 2024 +0200

        gh-37667: Fix noexcept clauses (#37560)

        In #36507 I added a lot of `noexcept` clauses guided by a warning which
        is not quite right (see
        https://github.com/cython/cython/pull/5999#issuecomment-1986868208).

        A new warning in 3.0.9 shows the mistake (incorrectly added `noexcept`
        clauses). This broke some doctests (#37560) and a workaround was
        implemented for 10.3 (#37583) since we were too close to release.

        This PR now does the proper fix, removing all the incorrect `noexcept`,
        and also adding a few missing `noexcept`.

        Note: if one tries this PR with cython <= 3.0.8 it seems it's wrong in
        the sense that it will show 40k more warnings after the PR. These are
        *incorrect* warnings.

        If one uses cython 3.0.9 each of these 40k lines give a correct warning
        before this PR and an incorrect warnings after the PR, and there is no
        way to avoid 40k warnings.

        To confirm this PR is a good one, one needs to use cython 3.0.9 +
        https://github.com/cython/cython/pull/6087 or wait for cython 3.0.10. In
        this case, the warnings are correct and one will get 40k warnings before
        the PR and no warning after the PR.

        The last commit reverts the workaround from #37583 so we don't silence
        these warnings on `cython()` now that we have our own code right.

        @vbraun: this is "almost trivial" but touches too many files. Could we
        merge it in beta0 to avoid conflicts? I did this "kind of" automatically
        and I've been testing it for two weeks in almost all my builds. The
        changes made should not affect behaviour at all in the legacy mode we
        are using cython.

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.
        - [x] I have linked a relevant issue or discussion.

        URL: https://github.com/sagemath/sage/pull/37667
        Reported by: Gonzalo Tornaría
        Reviewer(s): Gonzalo Tornaría, Matthias Köppe

    commit cf365e5e51d30495f823ed928e0fe027166545d0
    Merge: 59bf21efe7 a47b98b32e
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:59:08 2024 +0200

        gh-37663: sage/rings/{complex,real}*: Untitlecase titles, add refs to libraries

        <!-- ^ Please provide a concise and informative title. -->
        <!-- ^ Don't put issue numbers in the title, do this in the PR
        description below. -->
        <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
        to calculate 1 + 2". -->
        <!-- v Describe your changes below in detail. -->
        <!-- v Why is this change required? What problem does it solve? -->
        <!-- v If this PR resolves an open issue, please link to it here. For
        example, "Fixes #12345". -->

        This cleans up the table of contents
        https://deploy-preview-37663--
        sagemath.netlify.app/html/en/reference/rings_numerical/

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [ ] The description explains in detail what this PR is about.
        - [ ] I have linked a relevant issue or discussion.
        - [ ] I have created tests covering the changes.
        - [ ] I have updated the documentation accordingly.

        ### :hourglass: Dependencies

        <!-- List all open PRs that this PR logically depends on. For example,
        -->
        <!-- - #12345: short description why this is a dependency -->
        <!-- - #34567: ... -->

        - Depends on #37406 (merged here to resolve merge conflict)

        URL: https://github.com/sagemath/sage/pull/37663
        Reported by: Matthias Köppe
        Reviewer(s): Marc Mezzarobba

    commit 59bf21efe755cac20496bb417285a7e3545bc790
    Merge: 2fd04522f3 210c5d8389
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:59:06 2024 +0200

        gh-37661: some cross-references btw doc of RR, RBF, ...

        (mainly intended to make RBF and CBF, which are the most powerful
        implementations for most purposes, more discoverable)

        URL: https://github.com/sagemath/sage/pull/37661
        Reported by: Marc Mezzarobba
        Reviewer(s):

    commit 2fd04522f3caaca5fff0f78f1f1dccc6c0027475
    Merge: 03f81897de 16a5261134
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:59:02 2024 +0200

        gh-37660: Fix e302 libs pyx

        This is adding missing empty lines (pycodestyle E302) in pyx files in
        the `modules` and `libs` folders.

        Also some little tweak in code in the singular libs files.

        ### :memo: Checklist

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.

        URL: https://github.com/sagemath/sage/pull/37660
        Reported by: Frédéric Chapoton
        Reviewer(s): David Coudert

    commit 03f81897de2bf0aaf6b7fa82982b17251b0c9fd1
    Merge: 81b4ddccd1 23c45b1d61
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:58:59 2024 +0200

        gh-37659: fix ruff codes UP012 and UP023

        scripted using `ruff` ; only two minor changes

        see https://docs.astral.sh/ruff/rules/#pyupgrade-up

        ### :memo: Checklist

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.

        URL: https://github.com/sagemath/sage/pull/37659
        Reported by: Frédéric Chapoton
        Reviewer(s): Matthias Köppe

    commit 81b4ddccd1de963f7731661106e1e425efd2e76b
    Merge: 74a82d7ce4 4fa6f09984
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:58:54 2024 +0200

        gh-37655: Removed caching of determinant in LLL for the `NTL:LLL`-algorithm

        The method previously computed the square root of the squared
        determinant to cache, thus caching the absolute value of the determinant
        instead of the determinant. Therefore we remove this caching completely,
        which fixes #37236.

        URL: https://github.com/sagemath/sage/pull/37655
        Reported by: Sebastian A. Spindler
        Reviewer(s): Vincent Delecroix

    commit 74a82d7ce445d8d9e66595887e9fcdf40f838702
    Merge: 34539cdb4b 51d423d5a2
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:58:52 2024 +0200

        gh-37652: fix typos and no "Algebra" in the doc

        This fixes a bunch of typos in the doc, and also rewrites one example to
        use `Parent` instead of the auld `Algebra`

        ### :memo: Checklist

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.

        URL: https://github.com/sagemath/sage/pull/37652
        Reported by: Frédéric Chapoton
        Reviewer(s): Matthias Köppe

    commit 34539cdb4b65fbb8f34f738c15f41a800de25141
    Merge: 7a5ba77a93 5f32f5f882
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:58:49 2024 +0200

        gh-37651: use parent in asymptotic ring

        trying to use the modern `Parent` and categories in the asymptotic ring,
        instead of the auld `Algebra`

        ### :memo: Checklist

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.

        URL: https://github.com/sagemath/sage/pull/37651
        Reported by: Frédéric Chapoton
        Reviewer(s): Marc Mezzarobba

    commit 7a5ba77a93cef0ee7a44f4228070e48b890d2b73
    Merge: d4ab336474 4fa36454b5
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:58:45 2024 +0200

        gh-37640: Modified `.is_reduced()` of `binary_qf.py` to avoid square root computation

        Adapted the checks in `.is_reduced()` to avoid the square root
        computation, which fixes #37635. Furthermore added a non-singularity
        check.

        This adaption is based on the observation that $$|\sqrt{D} - 2 \cdot
        |a|| < b < \sqrt{D}$$
        if and only if $$b > 0, \ a \cdot c < 0 \text{ and } (a-c)^2 < D$$
        are all satisfied simultaneously (where $D = b^2 - 4ac > 0$).

        The above can be proven in a straightforward manner by taking squares
        and square roots while making sure that the numbers being squared are
        always positive, so that inequalities are preserved.

        URL: https://github.com/sagemath/sage/pull/37640
        Reported by: Sebastian A. Spindler
        Reviewer(s): Lorenz Panny

    commit d4ab336474b9f40b9e7f637c9b3ba6ac8bbc2135
    Merge: 3c174ef6a6 bf0c3695cc
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:58:41 2024 +0200

        gh-37639: add Legendre transform and suspension for lazy symmetric functions

        This adds two useful functions, particularly important when working with
        operads and Koszul duality.

        ### :memo: Checklist

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.
        - [ ] I have linked a relevant issue or discussion.
        - [x] I have created tests covering the changes.
        - [x] I have updated the documentation accordingly.

        URL: https://github.com/sagemath/sage/pull/37639
        Reported by: Frédéric Chapoton
        Reviewer(s): Martin Rubey, Travis Scrimshaw

    commit 3c174ef6a69d80e733dc7461b44fbc8b646ac30d
    Merge: 6ab45f666b d7021096c4
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:58:38 2024 +0200

        gh-37638: use strings as label in modular-decomposition trees

        Fixing #37631

        and adding a note saying that labels of rooted trees must be comparable

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.
        - [ ] I have linked a relevant issue or discussion.
        - [x] I have created tests covering the changes.
        - [x] I have updated the documentation accordingly.

        URL: https://github.com/sagemath/sage/pull/37638
        Reported by: Frédéric Chapoton
        Reviewer(s): cyrilbouvier

    commit 6ab45f666ba665ee9a0c517233830bafbea544b9
    Merge: 8e26e27572 c4c26ee1bf
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:58:36 2024 +0200

        gh-37637: Update jupyter-sphinx to version 0.5.3 and pin thebe to version 0.8.2

        <!-- ^ Please provide a concise and informative title. -->
        <!-- ^ Don't put issue numbers in the title, do this in the PR
        description below. -->
        <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
        to calculate 1 + 2". -->
        <!-- v Describe your changes below in detail. -->
        <!-- v Why is this change required? What problem does it solve? -->
        <!-- v If this PR resolves an open issue, please link to it here. For
        example, "Fixes #12345". -->

        jupyter-sphinx that we are shipping was patched to use thebe@latest,
        which is the cause of the current breakdown of the sage live doc.

        The patch to jupyter-sphinx is partly based on
        https://github.com/jupyter/jupyter-sphinx/pull/231

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.
        - [x] I have linked a relevant issue or discussion.
        - [ ] I have created tests covering the changes.
        - [ ] I have updated the documentation accordingly.

        ### :hourglass: Dependencies

        <!-- List all open PRs that this PR logically depends on. For example,
        -->
        <!-- - #12345: short description why this is a dependency -->
        <!-- - #34567: ... -->

        URL: https://github.com/sagemath/sage/pull/37637
        Reported by: Kwankyu Lee
        Reviewer(s): Matthias Köppe

    commit 8e26e27572073bc9f54839143f52d2d7e4c710e0
    Merge: 13a555d970 af97e6da28
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:58:28 2024 +0200

        gh-37634: The Glaisher-Franklin bijections on integer partitions

        The Glaisher-Franklin bijections, for a positive integer $s$, map the
        set of parts divisible by $s$ to the set of parts which occur at least
        $s$ times, see https://www.findstat.org/MapsDatabase/Mp00312 for the
        $s=2$ case.

        This generalizes and streamlines the code from findstat.

        URL: https://github.com/sagemath/sage/pull/37634
        Reported by: Martin Rubey
        Reviewer(s): Martin Rubey, Travis Scrimshaw

    commit 13a555d970eefceddd20728c6a3275447713ea7e
    Merge: 58e8c578fd d45422e64e
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:58:23 2024 +0200

        gh-37606: Border matrix

        <!-- ^ Please provide a concise and informative title. -->
        <!-- ^ Don't put issue numbers in the title, do this in the PR
        description below. -->
        <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
        to calculate 1 + 2". -->
        <!-- v Describe your changes below in detail. -->
        <!-- v Why is this change required? What problem does it solve? -->
        <!-- v If this PR resolves an open issue, please link to it here. For
        example, "Fixes #12345". -->
        Plain TeX users may remember `\bordermatrix`. Here we implement this as
        options of the `Matrix` class's `str` method.
        ```
                    sage: M = matrix([[1,2,3], [4,5,6], [7,8,9]])
                    sage: M.subdivide(None, 2)
                    sage: print(M.str(unicode=True,
                    ....:             top_border=['ab', 'cde', 'f'],
                    ....:             bottom_border=['*', '', ''],
                    ....:             left_border=[1, 10, 100],
                    ....:             right_border=['', ' <', '']))
                                ab cde   f
                             1⎛  1   2│  3⎞
                            10⎜  4   5│  6⎟ <
                           100⎝  7   8│  9⎠
                                 *
        ```

        Follow-up PR: As the guiding application for this feature, we equip
        finite-dimensional modules with basis with methods `_repr_matrix`,
        `_ascii_art_matrix`, `_unicode_art_matrix` that can be used as in this
        example:
        ```
                        sage: M = matrix(ZZ, [[1, 0, 0], [0, 1, 0]],
                        ....:            column_keys=['a', 'b', 'c'],
                        ....:            row_keys=['v', 'w']); M
                        Generic morphism:
                        From: Free module generated by {'a', 'b', 'c'} over
        Integer Ring
                        To:   Free module generated by {'v', 'w'} over Integer
        Ring
                        sage: M._unicode_art_ = M._unicode_art_matrix
                        sage: unicode_art(M)                            #
        indirect doctest
                            a b c
                          v⎛1 0 0⎞
                          w⎝0 1 0⎠
        ```

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.
        - [ ] I have linked a relevant issue or discussion.
        - [ ] I have created tests covering the changes.
        - [ ] I have updated the documentation accordingly.

        ### :hourglass: Dependencies

        <!-- List all open PRs that this PR logically depends on. For example,
        -->
        <!-- - #12345: short description why this is a dependency -->
        <!-- - #34567: ... -->

        URL: https://github.com/sagemath/sage/pull/37606
        Reported by: Matthias Köppe
        Reviewer(s): David Coudert, Matthias Köppe

    commit 58e8c578fdc79d94dba5de30ae3a5ba6c08630ef
    Merge: 294eed4041 c1d38c77d2
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:58:20 2024 +0200

        gh-37563: trying a change in unique_representation

        namely break the loop over `mro` once found what we want

        I am not sure at all that this keeps the expected properties, but this
        is more efficient..

        ### :memo: Checklist

        - [x] The title is concise and informative.
        - [x] The description explains in detail what this PR is about.

        URL: https://github.com/sagemath/sage/pull/37563
        Reported by: Frédéric Chapoton
        Reviewer(s): Travis Scrimshaw

    commit 294eed4041447cb7420462f9548bc9195e376565
    Merge: 14da417689 def8e56c30
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:58:17 2024 +0200

        gh-37546: Sphinx ext links for Sage source files

        <!-- ^ Please provide a concise and informative title. -->
        <!-- ^ Don't put issue numbers in the title, do this in the PR
        description below. -->
        <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
        to calculate 1 + 2". -->
        <!-- v Describe your changes below in detail. -->
        <!-- v Why is this change required? What problem does it solve? -->
        <!-- v If this PR resolves an open issue, please link to it here. For
        example, "Fixes #12345". -->

        In the documentation, we can now write `` :sage_root:`src/setup.py` ``
        or `` :sage_root:`src/doc/en/installation` ``, and it will be formatted
        uniformly, and a link to the file in the repository will be created.

        - Rebased version of #33756

        Fixes #33756.

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->

        - [x] The title is concise and informative.
        - [ ] The description explains in detail what this PR is about.
        - [x] I have linked a relevant issue or discussion.
        - [ ] I have created tests covering the changes.
        - [ ] I have updated the documentation accordingly.

        ### :hourglass: Dependencies

        <!-- List all open PRs that this PR logically depends on. For example,
        -->
        <!-- - #12345: short description why this is a dependency -->
        <!-- - #34567: ... -->

        URL: https://github.com/sagemath/sage/pull/37546
        Reported by: Matthias Köppe
        Reviewer(s): David Coudert, Kwankyu Lee

    commit 14da417689b26c72b4369c8a352d3f8345a3c259
    Merge: 59ced5e363 1e66857af1
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:58:13 2024 +0200

        gh-37497: remove zombie code

        We remove zombie code for solving linear systems over a finite field,
        which was (likely accidentally) created in #23214, but leads to errors
        when solving sparse linear equations over finite fields.

        This does not quite fix the issue, because we now fall back to generic
        code.

        Fixes #28586

        URL: https://github.com/sagemath/sage/pull/37497
        Reported by: Martin Rubey
        Reviewer(s): Matthias Köppe

    commit 59ced5e363eef8f18c34b65fbde75f007015ee0f
    Merge: fbaec798ee 6704b34380
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:58:09 2024 +0200

        gh-37425: Remove mention of patchbot, remove 'make buildbot-python3'

        <!-- ^^^^^
        Please provide a concise, informative and self-explanatory title.
        Don't put issue numbers in there, do this in the PR body below.
        For example, instead of "Fixes #1234" use "Introduce new method to
        calculate 1+1"
        -->
        <!-- Describe your changes here in detail -->

        <!-- Why is this change required? What problem does it solve? -->
        <!-- If this PR resolves an open issue, please link to it here. For
        example "Fixes #12345". -->
        <!-- If your change requires a documentation PR, please link it
        appropriately. -->

        ### :memo: Checklist

        <!-- Put an `x` in all the boxes that apply. -->
        <!-- If your change requires a documentation PR, please link it
        appropriately -->
        <!-- If you're unsure about any of these, don't hesitate to ask. We're
        here to help! -->
        <!-- Feel free to remove irrelevant items. -->

        - [x] The title is concise, informative, and self-explanatory.
        - [ ] The description explains in detail what this PR is about.
        - [ ] I have linked a relevant issue or discussion.
        - [ ] I have created tests covering the changes.
        - [ ] I have updated the documentation accordingly.

        ### :hourglass: Dependencies

        <!-- List all open PRs that this PR logically depends on
        - #12345: short description why this is a dependency
        - #34567: ...
        -->
        - Depends on https://github.com/sagemath/sage/pull/37421

        <!-- If you're unsure about any of these, don't hesitate to ask. We're
        here to help! -->

        URL: https://github.com/sagemath/sage/pull/37425
        Reported by: Matthias Köppe
        Reviewer(s): Frédéric Chapoton

    commit fbaec798ee1a0df0e9ded0dd2dd0811387cbb797
    Merge: 7855be0849 cb4e7184b3
    Author: Release Manager <release@sagemath.org>
    Date:   Sun Apr 7 13:58:06 2024 +0200

        gh-37391: Make installation of "wheel" packages less noisy

        <!-- ^^^^^
        Please provide a concise, informative and self-explanatory title.
        Don't put issue numbers in there, do this in the PR body below.
        For example, instead of "Fixes #1234" use "Introduce new method to
        calculate 1+1"
        -->
        <!-- Describe your changes here in detail -->
        Some care for `build/bin/sage-spkg`, reducing unhelpful verbosity. In
        particular, for "wheel" packages (https://deploy-livedoc--
        sagemath.netlify.app/html/en/developer/packaging#package-source-types),
        there is no build step, so there is no point in talking about what C
        compiler is in use.

        Also saving a few lines of output (and making it clearer who does what)
        by prefixing the output from the various `spkg-...` scripts.

        Example:
        ```
        $ make packaging-no-deps
        [packaging-23.2] Using cached file /Users/mkoeppe/s/sage/sage-
        rebasing/worktree-pristine/upstream/packaging-23.2-py3-none-any.whl
        [packaging-23.2] Setting up build directory /Users/mkoeppe/s/sage/sage-
        rebasing/worktree-pristine/local/var/lib/sage/venv-
        python3.11/var/tmp/sage/build/packaging-23.2
        [packaging-23.2] [spkg-piprm] Found existing installation: packaging
        23.2
        [packaging-23.2] [spkg-piprm] Uninstalling packaging-23.2:
        [packaging-23.2] [spkg-piprm]   Successfully uninstalled packaging-23.2
        [packaging-23.2] Removing stamp file /Users/mkoeppe/s/sage/sage-
        rebasing/worktree-pristine/local/var/lib/sage/venv-
        python3.11/var/lib/sage/installed/packaging-23.2
        [packaging-23.2] [spkg-install] Staged wheel file, staged
        /Users/mkoeppe/s/sage/sage-rebasing/worktree-
        pristine/local/var/lib/sage/venv-
        python3.11/var/lib/sage/scripts/packaging/spkg-requirements.txt
        [packaging-23.2] Moving package files from temporary location
        /Users/mkoeppe/s/sage/sage-rebasing/worktree-
        pristine/local/var/lib/sage/venv-
        python3.11/var/tmp/sage/build/packaging-23.2/inst to
        /Users/mkoeppe/s/sage/sage-rebasing/worktree-
        pristine/local/var/lib/sage/venv-python3.11
        [packaging-23.2] [spkg-pipinst] Using pip 23.3.…
jacksonwalters added a commit to jacksonwalters/sage that referenced this pull request Apr 9, 2024
commit 1d08fd591fb1694aff33cf5047f890cb8bf3b0e4
Merge: 14a1e5c078 a03a19d0be
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Tue Apr 9 15:10:30 2024 -0400

    Merge branch 'pr/37748' of https://github.com/jacksonwalters/sage into pr/37748

commit a03a19d0be7b13f6ed9d082ecdef692dfcfb100f
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Tue Apr 9 14:58:25 2024 -0400

    Reapply "Squashed commit of the following:"

    This reverts commit 794503ca9f61504c80874e26d7cc71a37de4debc.

commit 794503ca9f61504c80874e26d7cc71a37de4debc
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Tue Apr 9 14:56:20 2024 -0400

    Revert "Squashed commit of the following:"

    This reverts commit da28bff0c7bb201a2795bb8cc974df69239954ef.

commit da28bff0c7bb201a2795bb8cc974df69239954ef
Author: Jackson Walters <jacksonwalters@gmail.com>
Date:   Tue Apr 9 14:46:40 2024 -0400

    Squashed commit of the following:

    commit a047ccfd4c4454411027afb9dd0981d0ae4a8293
    Merge: cc1aa671e5 14a1e5c078
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Tue Apr 9 14:41:10 2024 -0400

        Merge branch 'pr/37748' of https://github.com/jacksonwalters/sage into pr/37748

    commit cc1aa671e549388cc5d325cce8893062125c52dd
    Author: Jackson Walters <jacksonwalters@gmail.com>
    Date:   Tue Apr 9 14:39:37 2024 -0400

        Squashed commit of the following:

        commit 14a1e5c078d1684f751b9e7ef450f197e7bcf27f
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 23:01:35 2024 -0400

            Update src/sage/combinat/symmetric_group_algebra.py

            Good idea.

            moved description from _dft_modular to dft docstring

            remove doctest with p=3, n=3

            Update src/sage/combinat/symmetric_group_algebra.py

            Update src/sage/combinat/symmetric_group_algebra.py

            Co-Authored-By: Travis Scrimshaw <clfrngrown@aol.com>

        commit f3807cb141bae308906295f605939d4b2b205a5a
        Merge: 9ad2152942 8ea5214695
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 20:12:53 2024 -0400

            Merge branch 'develop' into pr/37748

        commit 8ea5214695f742eccd34bd88600771b7121cdb9f
        Author: Release Manager <release@sagemath.org>
        Date:   Tue Apr 9 00:29:19 2024 +0200

            Updated SageMath version to 10.4.beta2

        commit 9ad2152942819a55c20d80485ad8cd8925969c6c
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 13:38:43 2024 -0400

            double backslash for math

        commit 619a48dea00a0a67b8d4e542948200dc23e9589a
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 13:33:00 2024 -0400

            add examples

        commit 527ae2670dd3a37b25a192ab49dad7f4c16dd5aa
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 13:24:13 2024 -0400

            form should default to None

            if form is None, check if characteristic of field divides order of group. if so, it's the modular case, and we return the projection onto idempotents change-of-basis, i.e. the MFT. if not, use semi-normal form.

        commit 488e931da94f4872047ff8e839edc4a0c99b163e
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 13:09:54 2024 -0400

            missing parantheses

        commit 7e96c904b6bc47d2108930c039b95a14155d425b
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 13:00:57 2024 -0400

            Update src/sage/combinat/symmetric_group_algebra.py

            Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

        commit cf27c64dff0b77c6cca162849ec923ae14f4920f
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 13:00:14 2024 -0400

            Update src/sage/combinat/symmetric_group_algebra.py

            I thought I could do this, don't know why I convinced myself I needed flatten.

            Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

        commit 92699f42eba524047b09d527981dab2456802958
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 12:59:16 2024 -0400

            Update src/sage/combinat/symmetric_group_algebra.py

            Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

        commit 68f2ef140f91356f55290d100ad8a5282f19c206
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 12:58:30 2024 -0400

            Update src/sage/combinat/symmetric_group_algebra.py

            Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

        commit 618d5e1a8cb11006ef9fa6642e33f06d5728d6ae
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 12:57:18 2024 -0400

            Update src/sage/combinat/symmetric_group_algebra.py

            Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

        commit 04db911e3f6a08b3be1bf5c295e913a40ee8b28a
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 12:56:37 2024 -0400

            Update src/sage/combinat/symmetric_group_algebra.py

            I see, so "None" if the user doesn't specify, and we determine which form based on whether p|n!. Sounds good.

            Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>

        commit e86f79410ebda01b8a85598a5754f9c383336ae1
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 11:09:57 2024 -0400

            add doctest to ensure issue 37751 is fixed

        commit f8c64d16b3d1c7b3d338d9d2339ae2e284df3c58
        Merge: aedd2f3927 3079e2d897
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 10:55:44 2024 -0400

            Merge branch 'pr/37748' of https://github.com/jacksonwalters/sage into pr/37748

        commit aedd2f3927aac05dceeb97bd484afa82557652a8
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 10:55:43 2024 -0400

            remove multiplication stars

        commit 3079e2d897396222b0f23784a4d07a40f25b3c1f
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 10:54:38 2024 -0400

            Update src/sage/combinat/symmetric_group_algebra.py

            Co-authored-by: grhkm21 <83517584+grhkm21@users.noreply.github.com>

        commit b14565299a6f5a82e5fae5080de88b455ce696e5
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 10:51:59 2024 -0400

            docstring lines are wrapped at 80 characters

            ensure each line is less than 80 characters

        commit e3fcc1f59c4668f88c184649c18627480365e646
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Mon Apr 8 10:24:51 2024 -0400

            keep form argument

             keep form since there is a one year deprecation warning before removing arguments. show deprecation warning when default seminormal form is called, but suggest modular form which works in all cases

        commit 6d187b153b5b5c3e29fe07d9efe925e34bf5baa5
        Merge: 551139c09f c8d260a6fe
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 23:34:58 2024 +0200

            gh-37764: ECM-related tests fail after an incremental build

            ### TL;DR:

            This is because setting the default ECMBIN=ecm is only done when using
            the configure test, but not when skipping the configure test because the
            spkg is already installed.

            ### Steps to reproduce:
            * ecm is not installed in the base os
            * Sage make distclean && make succeeeds
            * Tests succeed
            * re-running ./bootstrap && ./configure && make works
            * Tests now fail with PermissionError: [Errno 13] Permission denied: ''

            ### Dependencies
            See also:
             * https://github.com/sagemath/sage/pull/37701
             * https://github.com/sagemath/sage/pull/37011#issuecomment-2023089743

            URL: https://github.com/sagemath/sage/pull/37764
            Reported by: Volker Braun
            Reviewer(s): Matthias Köppe

        commit 71ad110e196d9f17934d030ce1c000e11b50fee8
        Author: Jackson Walters <jacksonwalters@gmail.com>
        Date:   Sun Apr 7 19:57:42 2024 -0400

            trigger GitHub actions

        commit c8d260a6fe37cb0379690e57dab6fd2a3d5d8048
        Author: Volker Braun <tarpit@vbraun.imap.cc>
        Date:   Sun Apr 7 22:13:11 2024 +0200

            Update build/pkgs/ecm/spkg-configure.m4

            Co-authored-by: Matthias Köppe <mkoeppe@math.ucdavis.edu>

        commit fbf896681da3ad1fad6c164e4d5a7cf452ec2eec
        Author: Volker Braun <tarpit@vbraun.imap.cc>
        Date:   Sun Apr 7 21:35:42 2024 +0200

            Update build/pkgs/ecm/spkg-configure.m4

            Co-authored-by: Matthias Köppe <mkoeppe@math.ucdavis.edu>

        commit 6531f7e415230d62fecd0a38fd804081341a9f32
        Author: Volker Braun <tarpit@vbraun.imap.cc>
        Date:   Sun Apr 7 21:35:38 2024 +0200

            Update build/pkgs/ecm/spkg-configure.m4

            Co-authored-by: Matthias Köppe <mkoeppe@math.ucdavis.edu>

        commit af0e24286a62a06d85e1baf49d0dc8f624965e5c
        Author: Volker Braun <vbraun.name@gmail.com>
        Date:   Sun Apr 7 19:17:37 2024 +0200

            ECM-related tests fail after an incremental build

            This is because setting the default ECMBIN=ecm is only done when using
            the configure test, but not when skipping the configure test because
            the spkg is already installed.

            Steps to reproduce:
            * ecm is not installed in the base os
            * Sage make distclean && make succeeeds
            * Tests succeed
            * re-running ./bootstrap && ./configure && make works
            * Tests now fail with PermissionError: [Errno 13] Permission denied: ''

            See also:
             * https://github.com/sagemath/sage/pull/37701
             * https://github.com/sagemath/sage/pull/37011#issuecomment-2023089743

        commit 551139c09f26a5da96b1187c3f0dd17b8d80ef84
        Merge: 03be519274 547d502ed5
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 14:00:43 2024 +0200

            gh-37763: Fix tolerance for scipy 1.13

            After updating scipy to 1.13:
            ```
            **********************************************************************
            File "pkgs/sagemath-standard/build/lib.linux-x86_64-cpython-
            312/sage/matrix/matrix_double_dense.pyx", line 3686, in
            sage.matrix.matrix_double_dense.Matrix_double_dense.exp
            Failed example:
                A.exp()  # tol 1.1e-14
            # needs sage.symbolic
            Expected:
                [-19.614602953804912 + 12.517743846762578*I   3.7949636449582176 +
            28.88379930658099*I]
                [ -32.383580980922254 + 21.88423595789845*I   2.269633004093535 +
            44.901324827684824*I]
            Got:
                [-19.61460295380496 + 12.517743846762578*I  3.7949636449581874 +
            28.88379930658104*I]
                [-32.38358098092232 + 21.884235957898436*I 2.2696330040934853 +
            44.901324827684896*I]
            Tolerance exceeded in 1 of 8:
                2.269633004093535 vs 2.2696330040934853, tolerance 3e-14 > 1.1e-14
            **********************************************************************
            ```

            This PR raises the tolerance to `3e-14` to fix this.

            ### :memo: Checklist

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.

            URL: https://github.com/sagemath/sage/pull/37763
            Reported by: Gonzalo Tornaría
            Reviewer(s): Antonio Rojas

        commit 03be519274f1e3aa424ea729f406180a10df1498
        Merge: 4d88e898e2 cd41d1e414
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 14:00:37 2024 +0200

            gh-37755: src/sage/graphs/graph_decompositions/tdlib.pyx: Use -std=c++11

            <!-- ^ Please provide a concise and informative title. -->
            <!-- ^ Don't put issue numbers in the title, do this in the PR
            description below. -->
            <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
            to calculate 1 + 2". -->
            <!-- v Describe your changes below in detail. -->
            <!-- v Why is this change required? What problem does it solve? -->
            <!-- v If this PR resolves an open issue, please link to it here. For
            example, "Fixes #12345". -->

            This is needed with the current Xcode command line tools on macOS with
            boost from homebrew.

            Similar to
            https://github.com/sagemath/sage/pull/37646#issuecomment-2017108199

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.
            - [x] I have linked a relevant issue or discussion.
            - [ ] I have created tests covering the changes.
            - [ ] I have updated the documentation accordingly.

            ### :hourglass: Dependencies

            <!-- List all open PRs that this PR logically depends on. For example,
            -->
            <!-- - #12345: short description why this is a dependency -->
            <!-- - #34567: ... -->

            URL: https://github.com/sagemath/sage/pull/37755
            Reported by: Matthias Köppe
            Reviewer(s): David Coudert

        commit 4d88e898e203d9b7297d224f40d659c213701ccb
        Merge: 9971cec642 6722976389
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 14:00:34 2024 +0200

            gh-37753: Added rank check to doctest in `.gauss_on_polys`

            Fixes #37732. Also removed assignment of vectors `v` in the same doctest
            since they are not used.

            URL: https://github.com/sagemath/sage/pull/37753
            Reported by: Sebastian A. Spindler
            Reviewer(s): Martin Rubey

        commit 9971cec64239679ee00ee7b22415b98ed53fbbf6
        Merge: 3df3305a64 80239bc925
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 14:00:31 2024 +0200

            gh-37736: Reimplementing the Witt (Sym Func) change of basis, caches, and omega involution

            <!-- ^ Please provide a concise and informative title. -->
            <!-- ^ Don't put issue numbers in the title, do this in the PR
            description below. -->
            <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
            to calculate 1 + 2". -->
            <!-- v Describe your changes below in detail. -->
            <!-- v Why is this change required? What problem does it solve? -->
            <!-- v If this PR resolves an open issue, please link to it here. For
            example, "Fixes #12345". -->

            We reimplement the coercion from the Witt basis of symmetric functions
            to the $h$, $e$, and $p$ bases and their inverses by using the
            generating function identities and recursion for $w_n, h_n, e_n, p_n$
            and the mulitplicative basis property for the general shape (in
            particular, we attempt to minimize the number of multiplications and
            maximize the use of the cache by recursively splitting the partition by
            its smallest part). We cache the result using `@cached_method` instead
            of custom classes. We also deprecate the `coerce_*` inputs.

            We also take advantage that $\omega w_n = w_n$ when $n$ is odd to
            compute the omega involution. This extends to a faster computation of
            the antipode.

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.
            - [x] I have linked a relevant issue or discussion.
            - [x] I have created tests covering the changes.
            - [x] I have updated the documentation accordingly.

            ### :hourglass: Dependencies

            <!-- List all open PRs that this PR logically depends on. For example,
            -->
            <!-- - #12345: short description why this is a dependency -->
            <!-- - #34567: ... -->

            URL: https://github.com/sagemath/sage/pull/37736
            Reported by: Travis Scrimshaw
            Reviewer(s): Darij Grinberg, Martin Rubey

        commit 3df3305a6493f88ce86a1bc73e17c34ad01fbe33
        Merge: 01333dfec1 ddcb3e45ca
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 14:00:27 2024 +0200

            gh-37725: Fix typo/phrasing in README.md

            <!-- ^ Please provide a concise and informative title. -->
            <!-- ^ Don't put issue numbers in the title, do this in the PR
            description below. -->
            <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
            to calculate 1 + 2". -->
            <!-- v Describe your changes below in detail. -->
            <!-- v Why is this change required? What problem does it solve? -->
            <!-- v If this PR resolves an open issue, please link to it here. For
            example, "Fixes #12345". -->

            - Removed the phrase "It assumes that you have already cloned the git
            repository" from the setup guide since the guide actually contains
            instructions on cloning the repository
            - Removed a random misplaced period

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.
            - [ ] I have linked a relevant issue or discussion.
            - [ ] I have created tests covering the changes.
            - [ ] I have updated the documentation accordingly.

            ### :hourglass: Dependencies

            <!-- List all open PRs that this PR logically depends on. For example,
            -->
            <!-- - #12345: short description why this is a dependency -->
            <!-- - #34567: ... -->

            URL: https://github.com/sagemath/sage/pull/37725
            Reported by: Faisal
            Reviewer(s): gmou3

        commit 01333dfec1ae7a518260c0178d4a0b254b886157
        Merge: bcbb58f10a 8378fe6fdd
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 14:00:24 2024 +0200

            gh-37721: Renamed "ring" argument of matrix contructor to "base_ring"

            <!-- ^ Please provide a concise and informative title. -->
            <!-- ^ Don't put issue numbers in the title, do this in the PR
            description below. -->
            <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
            to calculate 1 + 2". -->
            <!-- v Describe your changes below in detail. -->
            <!-- v Why is this change required? What problem does it solve? -->
            <!-- v If this PR resolves an open issue, please link to it here. For
            example, "Fixes #12345". -->

            The matrix constructor used to accept ``ring`` as argument to specify a
            the base ring of a matrix.
            It now takes ``base_ring`` instead. ``ring`` is still accepted but
            deprecated (I added a deprecation in the code).
            This is for unification (``base_ring`` is what users expect from their
            experience with other classes).
            This solves @mkoeppe's issue #33380.

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.
            - [x] I have linked a relevant issue or discussion.
            - [x] I have created tests covering the changes.
            - [x] I have updated the documentation accordingly.

            ### :hourglass: Dependencies

            <!-- List all open PRs that this PR logically depends on. For example,
            -->
            <!-- - #12345: short description why this is a dependency -->
            <!-- - #34567: ... -->

            URL: https://github.com/sagemath/sage/pull/37721
            Reported by: SandwichGouda
            Reviewer(s): Matthias Köppe

        commit bcbb58f10a840f43c1359934b85bfef9c143731c
        Merge: 08d5d97336 9b3ddf95fd
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 14:00:21 2024 +0200

            gh-37720: pkgs/sagemath-repl/pyproject.toml.m4: Declare extra 'sphinx'

            <!-- ^ Please provide a concise and informative title. -->
            <!-- ^ Don't put issue numbers in the title, do this in the PR
            description below. -->
            <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
            to calculate 1 + 2". -->
            <!-- v Describe your changes below in detail. -->
            <!-- v Why is this change required? What problem does it solve? -->
            <!-- v If this PR resolves an open issue, please link to it here. For
            example, "Fixes #12345". -->

            As discussed in
            https://github.com/sagemath/sage/pull/37589#issuecomment-2030456264, the
            Sage documentation system uses Sphinx to format the documentation in the
            terminal, for example in the help system.

            For the modularization project, a simple fallback for the case of Sphinx
            not being present was added.

            Here we declare the corresponding "extra" so that users can do `pip
            install sagemath-repl[sphinx]`.

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.
            - [x] I have linked a relevant issue or discussion.
            - [ ] I have created tests covering the changes.
            - [ ] I have updated the documentation accordingly.

            ### :hourglass: Dependencies

            <!-- List all open PRs that this PR logically depends on. For example,
            -->
            <!-- - #12345: short description why this is a dependency -->
            <!-- - #34567: ... -->

            URL: https://github.com/sagemath/sage/pull/37720
            Reported by: Matthias Köppe
            Reviewer(s):

        commit 08d5d97336d5cb87f4e9731b724b320e8cef771f
        Merge: 253169ff7b 5a61d3c103
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 14:00:18 2024 +0200

            gh-37712: src/tox.ini (rst): Add missing Sphinx roles

            <!-- ^ Please provide a concise and informative title. -->
            <!-- ^ Don't put issue numbers in the title, do this in the PR
            description below. -->
            <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
            to calculate 1 + 2". -->
            <!-- v Describe your changes below in detail. -->
            <!-- v Why is this change required? What problem does it solve? -->
            <!-- v If this PR resolves an open issue, please link to it here. For
            example, "Fixes #12345". -->

            Fixes #37711

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [ ] The description explains in detail what this PR is about.
            - [x] I have linked a relevant issue or discussion.
            - [ ] I have created tests covering the changes.
            - [ ] I have updated the documentation accordingly.

            ### :hourglass: Dependencies

            <!-- List all open PRs that this PR logically depends on. For example,
            -->
            <!-- - #12345: short description why this is a dependency -->
            <!-- - #34567: ... -->

            URL: https://github.com/sagemath/sage/pull/37712
            Reported by: Matthias Köppe
            Reviewer(s): Frédéric Chapoton

        commit 253169ff7b83df66d20846983ac9ce2982f3a18e
        Merge: 35f34ee0f6 3dc65b5797
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 14:00:16 2024 +0200

            gh-37707: Implement an iterator for absolute number fields

            <!-- ^ Please provide a concise and informative title. -->
            <!-- ^ Don't put issue numbers in the title, do this in the PR
            description below. -->
            <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
            to calculate 1 + 2". -->
            <!-- v Describe your changes below in detail. -->
            <!-- v Why is this change required? What problem does it solve? -->
            <!-- v If this PR resolves an open issue, please link to it here. For
            example, "Fixes #12345". -->

            We use the $\mathbb{Q}$ vector space structure. Although because of
            #37706, we go through `cartesian_product`.

            If there is an easy way to implement this in full generality (i.e., all
            number fields), please let me know.

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.
            - [x] I have linked a relevant issue or discussion.
            - [x] I have created tests covering the changes.
            - [x] I have updated the documentation accordingly.

            ### :hourglass: Dependencies

            <!-- List all open PRs that this PR logically depends on. For example,
            -->
            <!-- - #12345: short description why this is a dependency -->
            <!-- - #34567: ... -->

            URL: https://github.com/sagemath/sage/pull/37707
            Reported by: Travis Scrimshaw
            Reviewer(s): Matthias Köppe

        commit 35f34ee0f66904d9f2766b646664ae67cedd3aae
        Merge: 0a16c78b4e e077f1edf7
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 14:00:11 2024 +0200

            gh-37703: Implement an is_nilpotent() method for matrices

            <!-- ^ Please provide a concise and informative title. -->
            <!-- ^ Don't put issue numbers in the title, do this in the PR
            description below. -->
            <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
            to calculate 1 + 2". -->
            <!-- v Describe your changes below in detail. -->
            <!-- v Why is this change required? What problem does it solve? -->
            <!-- v If this PR resolves an open issue, please link to it here. For
            example, "Fixes #12345". -->

            Checking if a matrix is nilpotent is a fundamental test that Sage is
            (surprisingly) missing. We check this by using the char poly.

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.
            - [x] I have linked a relevant issue or discussion.
            - [x] I have created tests covering the changes.
            - [x] I have updated the documentation accordingly.

            ### :hourglass: Dependencies

            <!-- List all open PRs that this PR logically depends on. For example,
            -->
            <!-- - #12345: short description why this is a dependency -->
            <!-- - #34567: ... -->

            URL: https://github.com/sagemath/sage/pull/37703
            Reported by: Travis Scrimshaw
            Reviewer(s): Frédéric Chapoton, Martin Rubey

        commit 0a16c78b4e2b677ba30b198fdc781d38e595c9d8
        Merge: 9d788cb197 7e8aa98fa6
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 14:00:04 2024 +0200

            gh-37699: Add `approximate_closest_vector` to `IntegerLattice`, using Babai's nearest plane algorithm

            This PR implements Babai's nearest plane algorithm to find vectors close
            to a given vector in an integer lattice.

            I would appreciate if someone could verify the bound stated in the
            docstring, it is inferred from Babai's original paper but parameterized
            to use the `delta` parameter of the LLL algorithm.

            Ideas for improvements:
             - The doctest is currently the same as for `closest_vector`, this could
            be expanded
             - The `delta` parameter for LLL needs to be kept track of by the user.
            How "much" the basis has been reduced (i.e to how high a `delta` value)
            could be kept track of by the class and if a further reduction is needed
            for some given bound then it could be performed.

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.
            - [ ] I have linked a relevant issue or discussion.
            - [x] I have created tests covering the changes.
            - [x] I have updated the documentation accordingly.

            URL: https://github.com/sagemath/sage/pull/37699
            Reported by: TheBlupper
            Reviewer(s): grhkm21, TheBlupper

        commit 9d788cb19732f9f750c6d5a25c28ccb958414112
        Merge: 6925269840 d63ab2607e
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 14:00:02 2024 +0200

            gh-37689: Fix changes.html in doc preview

            <!-- ^ Please provide a concise and informative title. -->
            <!-- ^ Don't put issue numbers in the title, do this in the PR
            description below. -->
            <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
            to calculate 1 + 2". -->
            <!-- v Describe your changes below in detail. -->
            <!-- v Why is this change required? What problem does it solve? -->
            <!-- v If this PR resolves an open issue, please link to it here. For
            example, "Fixes #12345". -->

            by changing the base doc url.

            The base doc url is where the doc preview for the released version is
            uploaded. It changed recently:
            https://github.com/sagemath/sage/issues/34874#issuecomment-1870589626,
            but we didn't fix accordingly here: [.ci/create-changes-
            html.sh](https://github.com/sagemath/sage/blob/develop/.ci/create-
            changes-html.sh)

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.
            - [ ] I have linked a relevant issue or discussion.
            - [ ] I have created tests covering the changes.
            - [ ] I have updated the documentation accordingly.

            ### :hourglass: Dependencies

            <!-- List all open PRs that this PR logically depends on. For example,
            -->
            <!-- - #12345: short description why this is a dependency -->
            <!-- - #34567: ... -->

            URL: https://github.com/sagemath/sage/pull/37689
            Reported by: Kwankyu Lee
            Reviewer(s):

        commit 6925269840b81d3a1085ae900037e71dfd440c87
        Merge: 12a003eddd 3b137b50a0
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:59:59 2024 +0200

            gh-37688: typo

            Small typo

            URL: https://github.com/sagemath/sage/pull/37688
            Reported by: Dennis Yurichev
            Reviewer(s): Martin Rubey

        commit 12a003eddd08bcac14c88becd82bf52af599fe6c
        Merge: 3c9a67a2f0 6184336d73
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:59:56 2024 +0200

            gh-37687: provide a construction functor using a single functor for families

            We enable sage to find common parents also when symmetric functions are
            involved. In particular, we provide a functorial construction that takes
            a commutative (coefficient) ring and produces a (commutative) ring of
            symmetric functions over this ring.

            For Macdonald polynomials and other symmetric functions that involve
            parameters we cheat a bit: the categories should actually be commutative
            rings with distinguished elements (namely, the parameters). However,
            having these is very likely overkill.

            This is an alternative to #37220, relying on individual construction
            functors instead of passing around strings, and #37686, which provides
            an individual functor for each family.

            URL: https://github.com/sagemath/sage/pull/37687
            Reported by: Martin Rubey
            Reviewer(s): Travis Scrimshaw

        commit 3c9a67a2f0f8d42c1167f7fa192c70d29cdf6766
        Merge: 1ab35e3a69 31645a4f35
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:59:53 2024 +0200

            gh-37683: some shortcuts using bool

            fixes suggested by `ruff --select=SIM210`

            namely use `bool` for concision

            ### :memo: Checklist

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.

            URL: https://github.com/sagemath/sage/pull/37683
            Reported by: Frédéric Chapoton
            Reviewer(s): Matthias Köppe, Travis Scrimshaw

        commit 1ab35e3a696baf5a2fdd866a670c32611fa4a996
        Merge: 654ed08b89 449864f0af
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:59:49 2024 +0200

            gh-37680: a few more uses of "in Fields()"

            Just replacing some tests by `R in Fields()` in some pyx files outside
            the `rings` folder

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.

            URL: https://github.com/sagemath/sage/pull/37680
            Reported by: Frédéric Chapoton
            Reviewer(s): Matthias Köppe

        commit 654ed08b899e3a0bcd2d72a9ea66e5f1a96569a8
        Merge: 042153b0d9 a8671aef33
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:59:44 2024 +0200

            gh-37679: simplifications in symmetric_ideal.py

            some simplifications in `symmetric_ideal`

            ### :memo: Checklist

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.

            URL: https://github.com/sagemath/sage/pull/37679
            Reported by: Frédéric Chapoton
            Reviewer(s): Matthias Köppe

        commit 042153b0d976f8ec7b7489c404a17084321e3e06
        Merge: 0de7848873 5d4a91fa85
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:59:41 2024 +0200

            gh-37677: some simplifications in moment-angle complex

            a bunch of code details in the modified file

            fixes #36217

            ### :memo: Checklist

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.
            - [x] I have linked a relevant issue or discussion.

            URL: https://github.com/sagemath/sage/pull/37677
            Reported by: Frédéric Chapoton
            Reviewer(s): Travis Scrimshaw

        commit 0de7848873bcda21b916e13ad71dd0dbe6aa9ff0
        Merge: 014ccc31c4 e0ef88414d
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:59:38 2024 +0200

            gh-37674: some pep8 and ruff cleanups in modules/

            some ruff and pep8 cleanup in the `modules` folder

            ### :memo: Checklist

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.

            URL: https://github.com/sagemath/sage/pull/37674
            Reported by: Frédéric Chapoton
            Reviewer(s): Travis Scrimshaw

        commit 014ccc31c4118b929bb46c0811331f828041aee4
        Merge: 93cc706453 42b4b671c3
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:59:34 2024 +0200

            gh-37673: upgrade msolve to 0.6.5

            routine upgrade, dropping already applied patch

            URL: https://github.com/sagemath/sage/pull/37673
            Reported by: Dima Pasechnik
            Reviewer(s): Dima Pasechnik, Marc Mezzarobba, Matthias Köppe

        commit 93cc7064532b3456e5520833121e761078078576
        Merge: cf431c8d40 f9ddc324b8
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:59:31 2024 +0200

            gh-37672: src/sage/modular/quasimodform/ring.py: Fix pycodestyle warning

            <!-- ^ Please provide a concise and informative title. -->
            <!-- ^ Don't put issue numbers in the title, do this in the PR
            description below. -->
            <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
            to calculate 1 + 2". -->
            <!-- v Describe your changes below in detail. -->
            <!-- v Why is this change required? What problem does it solve? -->
            <!-- v If this PR resolves an open issue, please link to it here. For
            example, "Fixes #12345". -->

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [ ] The title is concise and informative.
            - [ ] The description explains in detail what this PR is about.
            - [ ] I have linked a relevant issue or discussion.
            - [ ] I have created tests covering the changes.
            - [ ] I have updated the documentation accordingly.

            ### :hourglass: Dependencies

            <!-- List all open PRs that this PR logically depends on. For example,
            -->
            <!-- - #12345: short description why this is a dependency -->
            <!-- - #34567: ... -->

            URL: https://github.com/sagemath/sage/pull/37672
            Reported by: Matthias Köppe
            Reviewer(s): Frédéric Chapoton

        commit cf431c8d40397205bb0f2e1f2843beec16788236
        Merge: 2c71f81f0d 378ec74794
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:59:28 2024 +0200

            gh-37671: pkgs/sagemath-standard: Support gpep517

            From https://github.com/sagemath/sage/pull/37138#issuecomment-2018937633

            <!-- ^ Please provide a concise and informative title. -->
            <!-- ^ Don't put issue numbers in the title, do this in the PR
            description below. -->
            <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
            to calculate 1 + 2". -->
            <!-- v Describe your changes below in detail. -->
            <!-- v Why is this change required? What problem does it solve? -->
            <!-- v If this PR resolves an open issue, please link to it here. For
            example, "Fixes #12345". -->

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [ ] The description explains in detail what this PR is about.
            - [x] I have linked a relevant issue or discussion.
            - [ ] I have created tests covering the changes.
            - [ ] I have updated the documentation accordingly.

            ### :hourglass: Dependencies

            <!-- List all open PRs that this PR logically depends on. For example,
            -->
            <!-- - #12345: short description why this is a dependency -->
            <!-- - #34567: ... -->

            URL: https://github.com/sagemath/sage/pull/37671
            Reported by: Matthias Köppe
            Reviewer(s): François Bissey

        commit 2c71f81f0d804932deb11f3d28eb6e7962593076
        Merge: 5801382f06 b8757d814e
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:59:24 2024 +0200

            gh-37668: Wrong results in is_isotopic method of the Link class for certain chiral link

            <!-- ^ Please provide a concise and informative title. -->
            <!-- ^ Don't put issue numbers in the title, do this in the PR
            description below. -->
            <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
            to calculate 1 + 2". -->
            <!-- v Describe your changes below in detail. -->
            <!-- v Why is this change required? What problem does it solve? -->
            <!-- v If this PR resolves an open issue, please link to it here. For
            example, "Fixes #12345". -->
            The following result is wrong, since `K10_67` is a chiral knot:

            ```
            sage: L = KnotInfo.K10_67
            ....: L1 = L.link()
            ....: L1r = L.link().reverse()
            ....: L1.is_isotopic(L1r)
            True
            ```

            The problem is that the `get_knotinfo` method currently does not
            distinguish between all four symmetry mutants of a chiral knot or link.
            In the example, `get_knotinfo` detects both knots as *not mirrored* to
            the symmetry mutant of `K10_67` recorded in the KnotInfo database, as
            you can see from the verbose messages:

            ```
            sage: set_verbose(1)
            sage: L1.is_isotopic(L1r)
            verbose 1 (4365: link.py, is_isotopic) KnotInfo other: KnotInfo.K10_67
            mirrored False
            True
            ```

            The wrong conclusion in `is_isotopic` is that they must be isotopic.

            The idea in this PR is to replace the boolean `mirrored` in the output
            of `get_knotinfo` with the value of an enum representing all symmetry
            mutants for an entry of the KnotInfo database. Of course, this requires
            major revisions in the `get_knotinfo` and `is_isotopic` methods. The key
            to this is a new local method `_knotinfo_matching_dict` that builds on
            `_knotinfo_matching_list` and returns the matching list for all symmetry
            mutants.

            On the occasion of that revision, I also fix other wrong results for
            example this one of a multi-component link which is not amphicheiral,
            but reversible:

            ```
            sage: L = KnotInfo.L6a2_0
            sage: L1 = L.link()
            sage: L2 = L.link(L.items.braid_notation)
            sage: L1.is_isotopic(L2)
            False
            ```

            This bug is due to `get_knotinfo` returning the wrong mirror version for
            `L1` concerning `L6a2_1`:

            ```
            ...
            sage: L1.get_knotinfo(unique=False)
            [(<KnotInfo.L6a2_0: 'L6a2{0}'>, False), (<KnotInfo.L6a2_1: 'L6a2{1}'>,
            False)]
            sage: L2.get_knotinfo(unique=False)
            [(<KnotInfo.L6a2_0: 'L6a2{0}'>, False), (<KnotInfo.L6a2_1: 'L6a2{1}'>,
            True)]
            ```

            In addition to these fixes, improvements and corresponding adjustments,
            I correct some document formatting.

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.
            - [ ] I have linked a relevant issue or discussion.
            - [x] I have created tests covering the changes.
            - [x] I have updated the documentation accordingly.

            ### :hourglass: Dependencies

            <!-- List all open PRs that this PR logically depends on. For example,
            -->
            <!-- - #12345: short description why this is a dependency -->
            <!-- - #34567: ... -->

            URL: https://github.com/sagemath/sage/pull/37668
            Reported by: Sebastian Oehms
            Reviewer(s): Sebastian Oehms, Travis Scrimshaw

        commit 5801382f0638c7c8f50ae5a906b85306e5350fb5
        Merge: cf365e5e51 bcc326d972
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:59:11 2024 +0200

            gh-37667: Fix noexcept clauses (#37560)

            In #36507 I added a lot of `noexcept` clauses guided by a warning which
            is not quite right (see
            https://github.com/cython/cython/pull/5999#issuecomment-1986868208).

            A new warning in 3.0.9 shows the mistake (incorrectly added `noexcept`
            clauses). This broke some doctests (#37560) and a workaround was
            implemented for 10.3 (#37583) since we were too close to release.

            This PR now does the proper fix, removing all the incorrect `noexcept`,
            and also adding a few missing `noexcept`.

            Note: if one tries this PR with cython <= 3.0.8 it seems it's wrong in
            the sense that it will show 40k more warnings after the PR. These are
            *incorrect* warnings.

            If one uses cython 3.0.9 each of these 40k lines give a correct warning
            before this PR and an incorrect warnings after the PR, and there is no
            way to avoid 40k warnings.

            To confirm this PR is a good one, one needs to use cython 3.0.9 +
            https://github.com/cython/cython/pull/6087 or wait for cython 3.0.10. In
            this case, the warnings are correct and one will get 40k warnings before
            the PR and no warning after the PR.

            The last commit reverts the workaround from #37583 so we don't silence
            these warnings on `cython()` now that we have our own code right.

            @vbraun: this is "almost trivial" but touches too many files. Could we
            merge it in beta0 to avoid conflicts? I did this "kind of" automatically
            and I've been testing it for two weeks in almost all my builds. The
            changes made should not affect behaviour at all in the legacy mode we
            are using cython.

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.
            - [x] I have linked a relevant issue or discussion.

            URL: https://github.com/sagemath/sage/pull/37667
            Reported by: Gonzalo Tornaría
            Reviewer(s): Gonzalo Tornaría, Matthias Köppe

        commit cf365e5e51d30495f823ed928e0fe027166545d0
        Merge: 59bf21efe7 a47b98b32e
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:59:08 2024 +0200

            gh-37663: sage/rings/{complex,real}*: Untitlecase titles, add refs to libraries

            <!-- ^ Please provide a concise and informative title. -->
            <!-- ^ Don't put issue numbers in the title, do this in the PR
            description below. -->
            <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
            to calculate 1 + 2". -->
            <!-- v Describe your changes below in detail. -->
            <!-- v Why is this change required? What problem does it solve? -->
            <!-- v If this PR resolves an open issue, please link to it here. For
            example, "Fixes #12345". -->

            This cleans up the table of contents
            https://deploy-preview-37663--
            sagemath.netlify.app/html/en/reference/rings_numerical/

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [ ] The description explains in detail what this PR is about.
            - [ ] I have linked a relevant issue or discussion.
            - [ ] I have created tests covering the changes.
            - [ ] I have updated the documentation accordingly.

            ### :hourglass: Dependencies

            <!-- List all open PRs that this PR logically depends on. For example,
            -->
            <!-- - #12345: short description why this is a dependency -->
            <!-- - #34567: ... -->

            - Depends on #37406 (merged here to resolve merge conflict)

            URL: https://github.com/sagemath/sage/pull/37663
            Reported by: Matthias Köppe
            Reviewer(s): Marc Mezzarobba

        commit 59bf21efe755cac20496bb417285a7e3545bc790
        Merge: 2fd04522f3 210c5d8389
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:59:06 2024 +0200

            gh-37661: some cross-references btw doc of RR, RBF, ...

            (mainly intended to make RBF and CBF, which are the most powerful
            implementations for most purposes, more discoverable)

            URL: https://github.com/sagemath/sage/pull/37661
            Reported by: Marc Mezzarobba
            Reviewer(s):

        commit 2fd04522f3caaca5fff0f78f1f1dccc6c0027475
        Merge: 03f81897de 16a5261134
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:59:02 2024 +0200

            gh-37660: Fix e302 libs pyx

            This is adding missing empty lines (pycodestyle E302) in pyx files in
            the `modules` and `libs` folders.

            Also some little tweak in code in the singular libs files.

            ### :memo: Checklist

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.

            URL: https://github.com/sagemath/sage/pull/37660
            Reported by: Frédéric Chapoton
            Reviewer(s): David Coudert

        commit 03f81897de2bf0aaf6b7fa82982b17251b0c9fd1
        Merge: 81b4ddccd1 23c45b1d61
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:58:59 2024 +0200

            gh-37659: fix ruff codes UP012 and UP023

            scripted using `ruff` ; only two minor changes

            see https://docs.astral.sh/ruff/rules/#pyupgrade-up

            ### :memo: Checklist

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.

            URL: https://github.com/sagemath/sage/pull/37659
            Reported by: Frédéric Chapoton
            Reviewer(s): Matthias Köppe

        commit 81b4ddccd1de963f7731661106e1e425efd2e76b
        Merge: 74a82d7ce4 4fa6f09984
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:58:54 2024 +0200

            gh-37655: Removed caching of determinant in LLL for the `NTL:LLL`-algorithm

            The method previously computed the square root of the squared
            determinant to cache, thus caching the absolute value of the determinant
            instead of the determinant. Therefore we remove this caching completely,
            which fixes #37236.

            URL: https://github.com/sagemath/sage/pull/37655
            Reported by: Sebastian A. Spindler
            Reviewer(s): Vincent Delecroix

        commit 74a82d7ce445d8d9e66595887e9fcdf40f838702
        Merge: 34539cdb4b 51d423d5a2
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:58:52 2024 +0200

            gh-37652: fix typos and no "Algebra" in the doc

            This fixes a bunch of typos in the doc, and also rewrites one example to
            use `Parent` instead of the auld `Algebra`

            ### :memo: Checklist

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.

            URL: https://github.com/sagemath/sage/pull/37652
            Reported by: Frédéric Chapoton
            Reviewer(s): Matthias Köppe

        commit 34539cdb4b65fbb8f34f738c15f41a800de25141
        Merge: 7a5ba77a93 5f32f5f882
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:58:49 2024 +0200

            gh-37651: use parent in asymptotic ring

            trying to use the modern `Parent` and categories in the asymptotic ring,
            instead of the auld `Algebra`

            ### :memo: Checklist

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.

            URL: https://github.com/sagemath/sage/pull/37651
            Reported by: Frédéric Chapoton
            Reviewer(s): Marc Mezzarobba

        commit 7a5ba77a93cef0ee7a44f4228070e48b890d2b73
        Merge: d4ab336474 4fa36454b5
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:58:45 2024 +0200

            gh-37640: Modified `.is_reduced()` of `binary_qf.py` to avoid square root computation

            Adapted the checks in `.is_reduced()` to avoid the square root
            computation, which fixes #37635. Furthermore added a non-singularity
            check.

            This adaption is based on the observation that $$|\sqrt{D} - 2 \cdot
            |a|| < b < \sqrt{D}$$
            if and only if $$b > 0, \ a \cdot c < 0 \text{ and } (a-c)^2 < D$$
            are all satisfied simultaneously (where $D = b^2 - 4ac > 0$).

            The above can be proven in a straightforward manner by taking squares
            and square roots while making sure that the numbers being squared are
            always positive, so that inequalities are preserved.

            URL: https://github.com/sagemath/sage/pull/37640
            Reported by: Sebastian A. Spindler
            Reviewer(s): Lorenz Panny

        commit d4ab336474b9f40b9e7f637c9b3ba6ac8bbc2135
        Merge: 3c174ef6a6 bf0c3695cc
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:58:41 2024 +0200

            gh-37639: add Legendre transform and suspension for lazy symmetric functions

            This adds two useful functions, particularly important when working with
            operads and Koszul duality.

            ### :memo: Checklist

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.
            - [ ] I have linked a relevant issue or discussion.
            - [x] I have created tests covering the changes.
            - [x] I have updated the documentation accordingly.

            URL: https://github.com/sagemath/sage/pull/37639
            Reported by: Frédéric Chapoton
            Reviewer(s): Martin Rubey, Travis Scrimshaw

        commit 3c174ef6a69d80e733dc7461b44fbc8b646ac30d
        Merge: 6ab45f666b d7021096c4
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:58:38 2024 +0200

            gh-37638: use strings as label in modular-decomposition trees

            Fixing #37631

            and adding a note saying that labels of rooted trees must be comparable

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.
            - [ ] I have linked a relevant issue or discussion.
            - [x] I have created tests covering the changes.
            - [x] I have updated the documentation accordingly.

            URL: https://github.com/sagemath/sage/pull/37638
            Reported by: Frédéric Chapoton
            Reviewer(s): cyrilbouvier

        commit 6ab45f666ba665ee9a0c517233830bafbea544b9
        Merge: 8e26e27572 c4c26ee1bf
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:58:36 2024 +0200

            gh-37637: Update jupyter-sphinx to version 0.5.3 and pin thebe to version 0.8.2

            <!-- ^ Please provide a concise and informative title. -->
            <!-- ^ Don't put issue numbers in the title, do this in the PR
            description below. -->
            <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
            to calculate 1 + 2". -->
            <!-- v Describe your changes below in detail. -->
            <!-- v Why is this change required? What problem does it solve? -->
            <!-- v If this PR resolves an open issue, please link to it here. For
            example, "Fixes #12345". -->

            jupyter-sphinx that we are shipping was patched to use thebe@latest,
            which is the cause of the current breakdown of the sage live doc.

            The patch to jupyter-sphinx is partly based on
            https://github.com/jupyter/jupyter-sphinx/pull/231

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.
            - [x] I have linked a relevant issue or discussion.
            - [ ] I have created tests covering the changes.
            - [ ] I have updated the documentation accordingly.

            ### :hourglass: Dependencies

            <!-- List all open PRs that this PR logically depends on. For example,
            -->
            <!-- - #12345: short description why this is a dependency -->
            <!-- - #34567: ... -->

            URL: https://github.com/sagemath/sage/pull/37637
            Reported by: Kwankyu Lee
            Reviewer(s): Matthias Köppe

        commit 8e26e27572073bc9f54839143f52d2d7e4c710e0
        Merge: 13a555d970 af97e6da28
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:58:28 2024 +0200

            gh-37634: The Glaisher-Franklin bijections on integer partitions

            The Glaisher-Franklin bijections, for a positive integer $s$, map the
            set of parts divisible by $s$ to the set of parts which occur at least
            $s$ times, see https://www.findstat.org/MapsDatabase/Mp00312 for the
            $s=2$ case.

            This generalizes and streamlines the code from findstat.

            URL: https://github.com/sagemath/sage/pull/37634
            Reported by: Martin Rubey
            Reviewer(s): Martin Rubey, Travis Scrimshaw

        commit 13a555d970eefceddd20728c6a3275447713ea7e
        Merge: 58e8c578fd d45422e64e
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:58:23 2024 +0200

            gh-37606: Border matrix

            <!-- ^ Please provide a concise and informative title. -->
            <!-- ^ Don't put issue numbers in the title, do this in the PR
            description below. -->
            <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
            to calculate 1 + 2". -->
            <!-- v Describe your changes below in detail. -->
            <!-- v Why is this change required? What problem does it solve? -->
            <!-- v If this PR resolves an open issue, please link to it here. For
            example, "Fixes #12345". -->
            Plain TeX users may remember `\bordermatrix`. Here we implement this as
            options of the `Matrix` class's `str` method.
            ```
                        sage: M = matrix([[1,2,3], [4,5,6], [7,8,9]])
                        sage: M.subdivide(None, 2)
                        sage: print(M.str(unicode=True,
                        ....:             top_border=['ab', 'cde', 'f'],
                        ....:             bottom_border=['*', '', ''],
                        ....:             left_border=[1, 10, 100],
                        ....:             right_border=['', ' <', '']))
                                    ab cde   f
                                 1⎛  1   2│  3⎞
                                10⎜  4   5│  6⎟ <
                               100⎝  7   8│  9⎠
                                     *
            ```

            Follow-up PR: As the guiding application for this feature, we equip
            finite-dimensional modules with basis with methods `_repr_matrix`,
            `_ascii_art_matrix`, `_unicode_art_matrix` that can be used as in this
            example:
            ```
                            sage: M = matrix(ZZ, [[1, 0, 0], [0, 1, 0]],
                            ....:            column_keys=['a', 'b', 'c'],
                            ....:            row_keys=['v', 'w']); M
                            Generic morphism:
                            From: Free module generated by {'a', 'b', 'c'} over
            Integer Ring
                            To:   Free module generated by {'v', 'w'} over Integer
            Ring
                            sage: M._unicode_art_ = M._unicode_art_matrix
                            sage: unicode_art(M)                            #
            indirect doctest
                                a b c
                              v⎛1 0 0⎞
                              w⎝0 1 0⎠
            ```

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.
            - [ ] I have linked a relevant issue or discussion.
            - [ ] I have created tests covering the changes.
            - [ ] I have updated the documentation accordingly.

            ### :hourglass: Dependencies

            <!-- List all open PRs that this PR logically depends on. For example,
            -->
            <!-- - #12345: short description why this is a dependency -->
            <!-- - #34567: ... -->

            URL: https://github.com/sagemath/sage/pull/37606
            Reported by: Matthias Köppe
            Reviewer(s): David Coudert, Matthias Köppe

        commit 58e8c578fdc79d94dba5de30ae3a5ba6c08630ef
        Merge: 294eed4041 c1d38c77d2
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:58:20 2024 +0200

            gh-37563: trying a change in unique_representation

            namely break the loop over `mro` once found what we want

            I am not sure at all that this keeps the expected properties, but this
            is more efficient..

            ### :memo: Checklist

            - [x] The title is concise and informative.
            - [x] The description explains in detail what this PR is about.

            URL: https://github.com/sagemath/sage/pull/37563
            Reported by: Frédéric Chapoton
            Reviewer(s): Travis Scrimshaw

        commit 294eed4041447cb7420462f9548bc9195e376565
        Merge: 14da417689 def8e56c30
        Author: Release Manager <release@sagemath.org>
        Date:   Sun Apr 7 13:58:17 2024 +0200

            gh-37546: Sphinx ext links for Sage source files

            <!-- ^ Please provide a concise and informative title. -->
            <!-- ^ Don't put issue numbers in the title, do this in the PR
            description below. -->
            <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
            to calculate 1 + 2". -->
            <!-- v Describe your changes below in detail. -->
            <!-- v Why is this change required? What problem does it solve? -->
            <!-- v If this PR resolves an open issue, please link to it here. For
            example, "Fixes #12345". -->

            In the documentation, we can now write `` :sage_root:`src/setup.py` ``
            or `` :sage_root:`src/doc/en/installation` ``, and it will be formatted
            uniformly, and a link to the file in the repository will be created.

            - Rebased version of #33756

            Fixes #33756.

            ### :memo: Checklist

            <!-- Put an `x` in all the boxes that apply. -->

            - [x] The title is concise and informative.
            - [ ] The description explains in detail what this PR is about.
            - [x] I have linked a relevant issue or discussion.
            - [ ] I have created tests covering the changes.
            - [ ] I have updated the documentation accordingly.

            ### :hourglass: Dependencies

            <!-- List all open PRs that this PR logically depends on. For example,
            -->
   …
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants