Skip to content

Conversation

@dimpase
Copy link
Member

@dimpase dimpase commented Oct 19, 2025

Fixes #41065 along the way

📝 Checklist

  • 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 and checked the documentation preview.

⌛ Dependencies

#40801 - removing obsolete magic comments

@github-actions
Copy link

github-actions bot commented Oct 19, 2025

Documentation preview for this PR (built with commit 3f4b392; changes) is ready! 🎉
This preview will update shortly after each push to this PR.

@dcoudert
Copy link
Contributor

With this PR, after running ./sage -i tdlib, I still get

sage: G.treewidth(algorithm='tdlib')
---------------------------------------------------------------------------
FeatureNotPresentError                    Traceback (most recent call last)
Cell In[2], line 1
----> 1 G.treewidth(algorithm='tdlib')

File sage/graphs/graph_decompositions/tree_decomposition.pyx:678, in sage.graphs.graph_decompositions.tree_decomposition.treewidth()

FeatureNotPresentError: tdlib is not available.
No equivalent system packages for homebrew are known to Sage.
To install tdlib using the Sage package manager, you can try to run:
  !sage -i tdlib
No equivalent system packages for pip are known to Sage.

@dimpase
Copy link
Member Author

dimpase commented Oct 19, 2025

please run make and try your test again

In more detail: sage -i tdlib (or make tdlib) only installs the library tdlib; it does not do anything with the cython interface to it.

The latter is only built when the library is found.
Now, there is a tricky part about meson: the information on whether or not the library is found is cached by meson.
And it could happen that once the library is installed, meson still relies on this no longer correct cached info.

One way around this is to wipe the sagelib build, by "make sagelib-clean".
This is too expensive, time-wise, the full rebuild of sagelib is totally unneeded in this case.
@tobiasdiez - is there a way to invalidate the configuration cache, without wiping the whole sagelib?
(even better, invalidate a particular entry in there)

PS. I found that

meson configure --clearcache build/sage-distro

suffices to clean the cache in question.
I gather this should be run automatically, any time a library is installed or removed?


So here is a complete, quick, and bullet-proof way to test this:

./bootstrap
./configure --enable-tdlib=yes [and other options one wants ..] 
meson configure --clearcache build/sage-distro
make

should result in tdlib being installed, and cython interface to it built.

@dimpase
Copy link
Member Author

dimpase commented Oct 20, 2025

@tobiasdiez - what do you think about the above remark - calling

meson configure --clearcache build/sage-distro

somewhere automatically, to ensure installed/removed dependencies get correctly picked up?
These checks are much quicker than building ninja build file.

@dcoudert
Copy link
Contributor

With this PR, I can install tdlib and call G.treewidth(algorithm='tdlib').
I tried using a fresh clone.

This is a huge PR, so I don't know what else should be tested to know if it's not creating new issues...

@dimpase
Copy link
Member Author

dimpase commented Oct 20, 2025 via email

@dcoudert
Copy link
Contributor

After running make testlong, I see

----------------------------------------------------------------------
src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/env.py  # 1 doctest failed
src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/schemes/generic/algebraic_scheme.py  # 1 doctest failed
src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/schemes/curves/affine_curve.py  # 2 doctests failed
src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/sandpiles/sandpile.py  # 9 doctests failed
src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/libs/singular/function.pyx  # 2 doctests failed
src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/rings/real_mpfr.pyx  # 1 doctest failed
src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/rings/polynomial/polynomial_singular_interface.py  # 1 doctest failed
src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/rings/polynomial/multi_polynomial_ideal.py  # 1 doctest failed
src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/geometry/hyperplane_arrangement/arrangement.py  # 1 doctest failed
src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/geometry/hyperplane_arrangement/library.py  # 1 doctest failed
src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/interfaces/singular.py  # 2 doctests failed
src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/interfaces/fricas.py  # 1 doctest failed
src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/doc/en/thematic_tutorials/sandpile.rst  # 6 doctests failed
----------------------------------------------------------------------
Total time for all tests: 6901.6 seconds
    cpu time: 5950.4 seconds
    cumulative wall time: 5981.2 seconds
Features detected for doctesting: conway_polynomials,cvxopt,database_cremona_mini_ellcurve,database_ellcurves,database_graphs,dvipng,fpylll,fricas,gap_package_polycyclic,gfan,graphviz,imagemagick,info,jupyter_sphinx,lrcalc_python,meson_editable,mpmath,nauty,networkx,numpy,palp,pandoc,pdf2svg,pdftocairo,pexpect,pillow,polytopes_db,pplpy,primecountpy,ptyprocess,pyparsing,rpy2,sage.combinat,sage.geometry.polyhedron,sage.graphs,sage.groups,sage.libs.braiding,sage.libs.ecl,sage.libs.flint,sage.libs.gap,sage.libs.homfly,sage.libs.linbox,sage.libs.m4ri,sage.libs.ntl,sage.libs.pari,sage.libs.singular,sage.misc.cython,sage.modular,sage.modules,sage.numerical.mip,sage.plot,sage.rings.complex_double,sage.rings.finite_rings,sage.rings.function_field,sage.rings.number_field,sage.rings.padics,sage.rings.polynomial.pbori,sage.rings.real_double,sage.rings.real_mpfr,sage.schemes,sage.symbolic,scipy,singular,sphinx,sympy,tdlib
./tools/test-git-no-uncommitted-changes
Error: the git repo has uncommitted changes:
 M conftest.py
?? pkgs/sagemath-bliss/
?? pkgs/sagemath-coxeter3/
?? pkgs/sagemath-mcqd/
?? pkgs/sagemath-meataxe/
?? pkgs/sagemath-sirocco/
?? pkgs/sagemath-tdlib/

make[2]: *** [test-git-no-uncommitted-changes] Error 1
make[1]: *** [test] Error 2
make: *** [testlong] Error 2

Details below:

src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/env.py
**********************************************************************
File "src/sage/env.py", line 377, in sage.env.cython_aliases
Failed example:
    cython(                                               # optional - sage.misc.cython
    '''
    #distutils: extra_compile_args = OPENMP_CFLAGS
    #distutils: extra_link_args = OPENMP_CFLAGS
    from cython.parallel import prange

    cdef int i
    cdef int n = 30
    cdef int sum = 0

    for i in prange(n, num_threads=4, nogil=True):
        sum += i

    print(sum)
    ''')
Exception raised:
    Traceback (most recent call last):
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/_distutils/spawn.py", line 87, in spawn
        subprocess.check_call(cmd, env=_inject_macos_ver(env))
        ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/opt/homebrew/Cellar/[email protected]/3.13.9/Frameworks/Python.framework/Versions/3.13/lib/python3.13/subprocess.py", line 419, in check_call
        raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command '['/usr/bin/gcc', '-fno-strict-overflow', '-Wsign-compare', '-Wunreachable-code', '-fno-common', '-dynamic', '-DNDEBUG', '-g', '-O3', '-Wall', '-I/Users/dcoudert/tmp/sage', '-I/Users/dcoudert/tmp/sage/src', '-I/Users/dcoudert/tmp/sage/build/sage-distro/src', '-I/Users/dcoudert/tmp/sage/local/var/lib/sage/venv-python3.13/include', '-I/opt/homebrew/opt/python@3.13/Frameworks/Python.framework/Versions/3.13/include/python3.13', '-c', '/var/folders/hw/w6ldqpgn52vdvv03cgbkkr3h3lhtdp/T/sage_86qanc3l/spyx_r1dstnfb/_var_folders_hw_w6ldqpgn52vdvv03cgbkkr3h3lhtdp_T_sage_86qanc3l_tmp_7thi5fde_pyx/_var_folders_hw_w6ldqpgn52vdvv03cgbkkr3h3lhtdp_T_sage_86qanc3l_tmp_7thi5fde_pyx_0.c', '-o', '/var/folders/hw/w6ldqpgn52vdvv03cgbkkr3h3lhtdp/T/sage_86qanc3l/spyx_r1dstnfb/_var_folders_hw_w6ldqpgn52vdvv03cgbkkr3h3lhtdp_T_sage_86qanc3l_tmp_7thi5fde_pyx/build/temp.macosx-15.0-arm64-cpython-313/var/folders/hw/w6ldqpgn52vdvv03cgbkkr3h3lhtdp/T/sage_86qanc3l/spyx_r1dstnfb/_var_folders_hw_w6ldqpgn52vdvv03cgbkkr3h3lhtdp_T_sage_86qanc3l_tmp_7thi5fde_pyx/_var_folders_hw_w6ldqpgn52vdvv03cgbkkr3h3lhtdp_T_sage_86qanc3l_tmp_7thi5fde_pyx_0.o', '-fopenmp', '-w']' returned non-zero exit status 1.

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last):
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/_distutils/compilers/C/unix.py", line 221, in _compile
        self.spawn(compiler_so + cc_args + [src, '-o', obj] + extra_postargs)
        ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/_distutils/compilers/C/base.py", line 1158, in spawn
        spawn(cmd, dry_run=self.dry_run, **kwargs)
        ~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/_distutils/spawn.py", line 93, in spawn
        raise DistutilsExecError(
            f"command {_debug(cmd)!r} failed with exit code {err.returncode}"
        ) from err
    distutils.errors.DistutilsExecError: command '/usr/bin/gcc' failed with exit code 1

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "/Users/dcoudert/tmp/sage/src/sage/misc/cython.py", line 461, in cython
        dist.run_command("build")
        ~~~~~~~~~~~~~~~~^^^^^^^^^
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/dist.py", line 1102, in run_command
        super().run_command(command)
        ~~~~~~~~~~~~~~~~~~~^^^^^^^^^
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/_distutils/dist.py", line 1021, in run_command
        cmd_obj.run()
        ~~~~~~~~~~~^^
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/_distutils/command/build.py", line 135, in run
        self.run_command(cmd_name)
        ~~~~~~~~~~~~~~~~^^^^^^^^^^
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/_distutils/cmd.py", line 357, in run_command
        self.distribution.run_command(command)
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/dist.py", line 1102, in run_command
        super().run_command(command)
        ~~~~~~~~~~~~~~~~~~~^^^^^^^^^
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/_distutils/dist.py", line 1021, in run_command
        cmd_obj.run()
        ~~~~~~~~~~~^^
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/command/build_ext.py", line 96, in run
        _build_ext.run(self)
        ~~~~~~~~~~~~~~^^^^^^
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/_distutils/command/build_ext.py", line 368, in run
        self.build_extensions()
        ~~~~~~~~~~~~~~~~~~~~~^^
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/_distutils/command/build_ext.py", line 484, in build_extensions
        self._build_extensions_serial()
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/_distutils/command/build_ext.py", line 510, in _build_extensions_serial
        self.build_extension(ext)
        ~~~~~~~~~~~~~~~~~~~~^^^^^
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/command/build_ext.py", line 261, in build_extension
        _build_ext.build_extension(self, ext)
        ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
      File "/Users/dcoudert/tmp/sage/local/var/lib/sage/venv-python3.13/lib/python3.13/site-packages/Cython/Distutils/build_ext.py", line 136, in build_extension
        super().build_extension(ext)
        ~~~~~~~~~~~~~~~~~~~~~~~^^^^^
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/_distutils/command/build_ext.py", line 565, in build_extension
        objects = self.compiler.compile(
            sources,
        ...<5 lines>...
            depends=ext.depends,
        )
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/_distutils/compilers/C/base.py", line 655, in compile
        self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
        ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/opt/homebrew/lib/python3.13/site-packages/setuptools/_distutils/compilers/C/unix.py", line 223, in _compile
        raise CompileError(msg)
    distutils.compilers.C.errors.CompileError: command '/usr/bin/gcc' failed with exit code 1

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "/Users/dcoudert/tmp/sage/src/sage/doctest/forker.py", line 734, in _run
        self.compile_and_execute(example, compiler, test.globs)
        ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/Users/dcoudert/tmp/sage/src/sage/doctest/forker.py", line 1158, in compile_and_execute
        exec(compiled, globs)
        ~~~~^^^^^^^^^^^^^^^^^
      File "<doctest sage.env.cython_aliases[5]>", line 1, in <module>
        cython(                                               # optional - sage.misc.cython
        ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        '''
        ^^^
        ...<11 lines>...
        print(sum)
        ^^^^^^^^^^
        ''')
        ^^^^
      File "sage/misc/lazy_import.pyx", line 413, in sage.misc.lazy_import.LazyImport.__call__
      File "/Users/dcoudert/tmp/sage/src/sage/misc/cython.py", line 734, in cython_compile
        return cython_import_all(tmpfile, get_globals(), **kwds)
      File "/Users/dcoudert/tmp/sage/src/sage/misc/cython.py", line 620, in cython_import_all
        m = cython_import(filename, **kwds)
      File "/Users/dcoudert/tmp/sage/src/sage/misc/cython.py", line 588, in cython_import
        name, build_dir = cython(filename, **kwds)
                          ~~~~~~^^^^^^^^^^^^^^^^^^
      File "/Users/dcoudert/tmp/sage/src/sage/misc/cython.py", line 467, in cython
        raise RuntimeError(msg.strip())
    RuntimeError: command '/usr/bin/gcc' failed with exit code 1
    clang: error: unsupported option '-fopenmp'
**********************************************************************
1 item had failures:
   1 of   7 in sage.env.cython_aliases
    [37 tests, 1 failure, 2.20s wall]

src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/schemes/generic/algebraic_scheme.py
**********************************************************************
File "src/sage/schemes/generic/algebraic_scheme.py", line 1200, in sage.schemes.generic.algebraic_scheme.AlgebraicScheme_subscheme.irreducible_components
Failed example:
    V.irreducible_components()                                            # needs sage.libs.singular
Expected:
    [Closed subscheme of Projective Space of dimension 4 over Rational Field defined by:
       w,
     Closed subscheme of Projective Space of dimension 4 over Rational Field defined by:
       x^2 - y^2 - z^2,
     Closed subscheme of Projective Space of dimension 4 over Rational Field defined by:
       x^2*z - v^3,
     Closed subscheme of Projective Space of dimension 4 over Rational Field defined by:
       w^5 - 2*z^3*v^2]
Got:
    [Closed subscheme of Projective Space of dimension 4 over Rational Field defined by:
       -w^5 + 2*z^3*v^2,
     Closed subscheme of Projective Space of dimension 4 over Rational Field defined by:
       -x^2*z + v^3,
     Closed subscheme of Projective Space of dimension 4 over Rational Field defined by:
       -x^2 + y^2 + z^2,
     Closed subscheme of Projective Space of dimension 4 over Rational Field defined by:
       w]
**********************************************************************
1 item had failures:
   1 of  13 in sage.schemes.generic.algebraic_scheme.AlgebraicScheme_subscheme.irreducible_components
    [402 tests, 1 failure, 3.84s wall]

src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/schemes/curves/affine_curve.py
**********************************************************************
File "src/sage/schemes/curves/affine_curve.py", line 1235, in sage.schemes.curves.affine_curve.AffineCurve_field.blowup
Failed example:
    C.blowup(Q)
Expected:
    ((Affine Plane Curve over Rational Field
       defined by x^3 - s1^3 + 7*x^2 + 16*x + 12,
      Affine Plane Curve over Rational Field
       defined by 8*y^3*s0^6 - 36*y^2*s0^6 + 8*y^2*s0^5
                  + 54*y*s0^6 - 24*y*s0^5 - 27*s0^6 + 18*s0^5 - 8),
     ([Scheme endomorphism of Affine Plane Curve over Rational Field
        defined by x^3 - s1^3 + 7*x^2 + 16*x + 12
         Defn: Defined on coordinates by sending (x, s1) to (x, s1),
       Scheme morphism:
         From: Affine Plane Curve over Rational Field
               defined by x^3 - s1^3 + 7*x^2 + 16*x + 12
         To:   Affine Plane Curve over Rational Field
               defined by 8*y^3*s0^6 - 36*y^2*s0^6 + 8*y^2*s0^5
                          + 54*y*s0^6 - 24*y*s0^5 - 27*s0^6 + 18*s0^5 - 8
         Defn: Defined on coordinates by sending (x, s1) to
               (x*s1 + 2*s1 + 3/2, 1/s1)],
      [Scheme morphism:
         From: Affine Plane Curve over Rational Field
               defined by 8*y^3*s0^6 - 36*y^2*s0^6 + 8*y^2*s0^5
                          + 54*y*s0^6 - 24*y*s0^5 - 27*s0^6 + 18*s0^5 - 8
         To:   Affine Plane Curve over Rational Field
               defined by x^3 - s1^3 + 7*x^2 + 16*x + 12
         Defn: Defined on coordinates by sending (y, s0) to
               (y*s0 - 3/2*s0 - 2, 1/s0),
       Scheme endomorphism of Affine Plane Curve over Rational Field
        defined by 8*y^3*s0^6 - 36*y^2*s0^6 + 8*y^2*s0^5 + 54*y*s0^6
                   - 24*y*s0^5 - 27*s0^6 + 18*s0^5 - 8
         Defn: Defined on coordinates by sending (y, s0) to (y, s0)]),
     (Scheme morphism:
        From: Affine Plane Curve over Rational Field
              defined by x^3 - s1^3 + 7*x^2 + 16*x + 12
        To:   Affine Plane Curve over Rational Field
              defined by -x^6 - 13*x^5 - 70*x^4 - 200*x^3 + y^3
                         - 320*x^2 - 9/2*y^2 - 272*x + 27/4*y - 795/8
        Defn: Defined on coordinates by sending (x, s1) to
              (x, x*s1 + 2*s1 + 3/2),
      Scheme morphism:
        From: Affine Plane Curve over Rational Field
              defined by 8*y^3*s0^6 - 36*y^2*s0^6 + 8*y^2*s0^5
                         + 54*y*s0^6 - 24*y*s0^5 - 27*s0^6 + 18*s0^5 - 8
        To:   Affine Plane Curve over Rational Field
              defined by -x^6 - 13*x^5 - 70*x^4 - 200*x^3 + y^3
                         - 320*x^2 - 9/2*y^2 - 272*x + 27/4*y - 795/8
        Defn: Defined on coordinates by sending (y, s0) to
              (y*s0 - 3/2*s0 - 2, y)))
Got:
    ((Affine Plane Curve over Rational Field defined by -x^3 + s1^3 - 7*x^2 - 16*x - 12,
      Affine Plane Curve over Rational Field defined by 8*y^3*s0^6 - 36*y^2*s0^6 + 8*y^2*s0^5 + 54*y*s0^6 - 24*y*s0^5 - 27*s0^6 + 18*s0^5 - 8),
     ([Scheme endomorphism of Affine Plane Curve over Rational Field defined by -x^3 + s1^3 - 7*x^2 - 16*x - 12
         Defn: Defined on coordinates by sending (x, s1) to
               (x, s1),
       Scheme morphism:
         From: Affine Plane Curve over Rational Field defined by -x^3 + s1^3 - 7*x^2 - 16*x - 12
         To:   Affine Plane Curve over Rational Field defined by 8*y^3*s0^6 - 36*y^2*s0^6 + 8*y^2*s0^5 + 54*y*s0^6 - 24*y*s0^5 - 27*s0^6 + 18*s0^5 - 8
         Defn: Defined on coordinates by sending (x, s1) to
               (x*s1 + 2*s1 + 3/2, 1/s1)],
      [Scheme morphism:
         From: Affine Plane Curve over Rational Field defined by 8*y^3*s0^6 - 36*y^2*s0^6 + 8*y^2*s0^5 + 54*y*s0^6 - 24*y*s0^5 - 27*s0^6 + 18*s0^5 - 8
         To:   Affine Plane Curve over Rational Field defined by -x^3 + s1^3 - 7*x^2 - 16*x - 12
         Defn: Defined on coordinates by sending (y, s0) to
               (y*s0 - 3/2*s0 - 2, 1/s0),
       Scheme endomorphism of Affine Plane Curve over Rational Field defined by 8*y^3*s0^6 - 36*y^2*s0^6 + 8*y^2*s0^5 + 54*y*s0^6 - 24*y*s0^5 - 27*s0^6 + 18*s0^5 - 8
         Defn: Defined on coordinates by sending (y, s0) to
               (y, s0)]),
     (Scheme morphism:
        From: Affine Plane Curve over Rational Field defined by -x^3 + s1^3 - 7*x^2 - 16*x - 12
        To:   Affine Plane Curve over Rational Field defined by -x^6 - 13*x^5 - 70*x^4 - 200*x^3 + y^3 - 320*x^2 - 9/2*y^2 - 272*x + 27/4*y - 795/8
        Defn: Defined on coordinates by sending (x, s1) to
              (x, x*s1 + 2*s1 + 3/2),
      Scheme morphism:
        From: Affine Plane Curve over Rational Field defined by 8*y^3*s0^6 - 36*y^2*s0^6 + 8*y^2*s0^5 + 54*y*s0^6 - 24*y*s0^5 - 27*s0^6 + 18*s0^5 - 8
        To:   Affine Plane Curve over Rational Field defined by -x^6 - 13*x^5 - 70*x^4 - 200*x^3 + y^3 - 320*x^2 - 9/2*y^2 - 272*x + 27/4*y - 795/8
        Defn: Defined on coordinates by sending (y, s0) to
              (y*s0 - 3/2*s0 - 2, y)))
**********************************************************************
File "src/sage/schemes/curves/affine_curve.py", line 1486, in sage.schemes.curves.affine_curve.AffineCurve_field.resolution_of_singularities
Failed example:
    C.resolution_of_singularities(extend=True)[0]         # long time (2 s)
Expected:
    (Affine Plane Curve over Number Field in a0
      with defining polynomial y^4 - 4*y^2 + 16
      defined by 24*x^2*ss1^3 + 24*ss1^3 + (a0^3 - 8*a0),
     Affine Plane Curve over Number Field in a0
      with defining polynomial y^4 - 4*y^2 + 16
      defined by 24*s1^2*ss0 + (a0^3 - 8*a0)*ss0^2 + (-6*a0^3)*s1,
     Affine Plane Curve over Number Field in a0
      with defining polynomial y^4 - 4*y^2 + 16
      defined by 8*y^2*s0^4 + (4*a0^3)*y*s0^3 - 32*s0^2 + (a0^3 - 8*a0)*y)
Got:
    (Affine Plane Curve over Number Field in a0 with defining polynomial y^4 - 4*y^2 + 16 defined by x^2*ss1^3 + ss1^3 + (1/24*a0^3 - 1/3*a0),
     Affine Plane Curve over Number Field in a0 with defining polynomial y^4 - 4*y^2 + 16 defined by s1^2*ss0 + (1/24*a0^3 - 1/3*a0)*ss0^2 + (-1/4*a0^3)*s1,
     Affine Plane Curve over Number Field in a0 with defining polynomial y^4 - 4*y^2 + 16 defined by y^2*s0^4 + (1/2*a0^3)*y*s0^3 - 4*s0^2 + (1/8*a0^3 - a0)*y)
**********************************************************************
2 items had failures:
   1 of  26 in sage.schemes.curves.affine_curve.AffineCurve_field.blowup
   1 of  23 in sage.schemes.curves.affine_curve.AffineCurve_field.resolution_of_singularities
    [450 tests, 2 failures, 16.85s wall]

src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/sandpiles/sandpile.py
**********************************************************************
File "src/sage/sandpiles/sandpile.py", line 215, in sage.sandpiles.sandpile
Failed example:
    S.resolution()                                                                # needs sage.libs.singular
Expected:
    'R^1 <-- R^7 <-- R^15 <-- R^13 <-- R^4'
Got:
    'R^1 <-- R^7 <-- R^15 <-- R^13 <-- R^4 <-- R^0'
**********************************************************************
File "src/sage/sandpiles/sandpile.py", line 2367, in sage.sandpiles.sandpile.Sandpile.betti_complexes
Failed example:
    S.resolution()                                                        # needs sage.libs.singular
Expected:
    'R^1 <-- R^5 <-- R^5 <-- R^1'
Got:
    'R^1 <-- R^5 <-- R^5 <-- R^1 <-- R^0'
**********************************************************************
File "src/sage/sandpiles/sandpile.py", line 2575, in sage.sandpiles.sandpile.Sandpile.resolution
Failed example:
    S.resolution()  # a Gorenstein sandpile graph
Expected:
    'R^1 <-- R^5 <-- R^5 <-- R^1'
Got:
    'R^1 <-- R^5 <-- R^5 <-- R^1 <-- R^0'
**********************************************************************
File "src/sage/sandpiles/sandpile.py", line 2577, in sage.sandpiles.sandpile.Sandpile.resolution
Failed example:
    S.resolution(True)
Expected:
    [
    [ x1^2 - x3*x0 x3*x1 - x2*x0  x3^2 - x2*x1  x2*x3 - x0^2  x2^2 - x1*x0],
    <BLANKLINE>
    [ x3  x2   0  x0   0]  [ x2^2 - x1*x0]
    [-x1 -x3  x2   0 -x0]  [-x2*x3 + x0^2]
    [ x0  x1   0  x2   0]  [-x3^2 + x2*x1]
    [  0   0 -x1 -x3  x2]  [x3*x1 - x2*x0]
    [  0   0  x0  x1 -x3], [ x1^2 - x3*x0]
    ]
Got:
    [
    [ x1^2 - x3*x0 x3*x1 - x2*x0  x3^2 - x2*x1  x2*x3 - x0^2  x2^2 - x1*x0],
    <BLANKLINE>
    [ x3  x2   0  x0   0]  [ x2^2 - x1*x0]    
    [-x1 -x3  x2   0 -x0]  [-x2*x3 + x0^2]    
    [ x0  x1   0  x2   0]  [-x3^2 + x2*x1]    
    [  0   0 -x1 -x3  x2]  [x3*x1 - x2*x0]    
    [  0   0  x0  x1 -x3], [ x1^2 - x3*x0], []
    ]
**********************************************************************
File "src/sage/sandpiles/sandpile.py", line 2656, in sage.sandpiles.sandpile.Sandpile.betti
Failed example:
    S.betti(False)                                                        # needs sage.libs.singular
Expected:
    [1, 6, 9, 4]
Got:
    [1, 6, 9, 4, 0]
**********************************************************************
File "src/sage/sandpiles/sandpile.py", line 5882, in sage.sandpiles.sandpile.sandlib
Failed example:
    S.resolution()                                                        # needs sage.libs.singular
Expected:
    'R^1 <-- R^5 <-- R^5 <-- R^1'
Got:
    'R^1 <-- R^5 <-- R^5 <-- R^1 <-- R^0'
**********************************************************************
File "src/sage/sandpiles/sandpile.py", line 6067, in sage.sandpiles.sandpile.glue_graphs
Failed example:
    S.resolution()                                                            # needs sage.libs.singular
Expected:
    'R^1 <-- R^7 <-- R^21 <-- R^35 <-- R^35 <-- R^21 <-- R^7 <-- R^1'
Got:
    'R^1 <-- R^7 <-- R^21 <-- R^35 <-- R^35 <-- R^21 <-- R^7 <-- R^1 <-- R^0'
**********************************************************************
File "src/sage/sandpiles/sandpile.py", line 6223, in sage.sandpiles.sandpile.admissible_partitions
Failed example:
    for p in P:                                                               # needs sage.combinat
     sum([partition_sandpile(S, i).betti(verbose=False)[-1] for i in p])
Expected:
    6
    8
    3
Got:
    0
    0
    0
**********************************************************************
File "src/sage/sandpiles/sandpile.py", line 6262, in sage.sandpiles.sandpile.Sandpile
Failed example:
    for p in P:                                                               # needs sage.combinat
     sum([partition_sandpile(S, i).betti(verbose=False)[-1] for i in p])
Expected:
    6
    8
    3
Got:
    0
    0
    0
**********************************************************************
8 items had failures:
   1 of  81 in sage.sandpiles.sandpile
   1 of   6 in sage.sandpiles.sandpile.Sandpile
   1 of   4 in sage.sandpiles.sandpile.Sandpile.betti
   1 of   9 in sage.sandpiles.sandpile.Sandpile.betti_complexes
   2 of   7 in sage.sandpiles.sandpile.Sandpile.resolution
   1 of   8 in sage.sandpiles.sandpile.admissible_partitions
   1 of  10 in sage.sandpiles.sandpile.glue_graphs
   1 of   5 in sage.sandpiles.sandpile.sandlib
    [936 tests, 9 failures, 5.84s wall]

src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/repl/image.py
    [42 tests, 0.09s wall]
Exception ignored in: <sqlite3.Connection object at 0x125870c70>
Traceback (most recent call last):
  File "/Users/dcoudert/tmp/sage/local/var/lib/sage/venv-python3.13/lib/python3.13/site-packages/IPython/core/displayhook.py", line 322, in flush
    gc.collect()
ResourceWarning: unclosed database in <sqlite3.Connection object at 0x125870c70>
Exception ignored in: <sqlite3.Connection object at 0x125870d60>
Traceback (most recent call last):
  File "/Users/dcoudert/tmp/sage/local/var/lib/sage/venv-python3.13/lib/python3.13/site-packages/IPython/core/displayhook.py", line 322, in flush
    gc.collect()
ResourceWarning: unclosed database in <sqlite3.Connection object at 0x125870d60>
Exception ignored in: <sqlite3.Connection object at 0x11ef785e0>
Traceback (most recent call last):
  File "/Users/dcoudert/tmp/sage/local/var/lib/sage/venv-python3.13/lib/python3.13/site-packages/IPython/core/displayhook.py", line 322, in flush
    gc.collect()
ResourceWarning: unclosed database in <sqlite3.Connection object at 0x11ef785e0>
Exception ignored in: <sqlite3.Connection object at 0x11ef78130>
Traceback (most recent call last):
  File "/Users/dcoudert/tmp/sage/local/var/lib/sage/venv-python3.13/lib/python3.13/site-packages/IPython/core/displayhook.py", line 322, in flush
    gc.collect()
ResourceWarning: unclosed database in <sqlite3.Connection object at 0x11ef78130>
Exception ignored in: <sqlite3.Connection object at 0x11fe9be20>
Traceback (most recent call last):
  File "/Users/dcoudert/tmp/sage/local/var/lib/sage/venv-python3.13/lib/python3.13/site-packages/IPython/core/displayhook.py", line 322, in flush
    gc.collect()
ResourceWarning: unclosed database in <sqlite3.Connection object at 0x11fe9be20>
Exception ignored in: <sqlite3.Connection object at 0x11fe9bd30>
Traceback (most recent call last):
  File "/Users/dcoudert/tmp/sage/local/var/lib/sage/venv-python3.13/lib/python3.13/site-packages/IPython/core/displayhook.py", line 322, in flush
    gc.collect()
ResourceWarning: unclosed database in <sqlite3.Connection object at 0x11fe9bd30>

src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/libs/singular/function.pyx
**********************************************************************
File "src/sage/libs/singular/function.pyx", line 1275, in sage.libs.singular.function.SingularFunction.__call__
Failed example:
    _ = triangL(I)
Expected:
    Traceback (most recent call last):
    ...
    RuntimeError: error in Singular function call 'triangL':
    The input is no groebner basis.
    leaving triang.lib::triangL (0)
Got:
    <BLANKLINE>
**********************************************************************
File "src/sage/libs/singular/function.pyx", line 1352, in sage.libs.singular.function.SingularFunction._instancedoc_
Failed example:
    triangL(I, attributes={I:{'isSB':1}})
Expected:
    [[x2^4 + 4*x2^3 - 6*x2^2 - 20*x2 + 5, 8*x1 - x2^3 + x2^2 + 13*x2 - 5],
     [x2, x1^2],
     [x2, x1^2],
     [x2, x1^2]]
Got:
    [[x2^4 + 4*x2^3 - 6*x2^2 - 20*x2 + 5, 8*x1 - x2^3 + x2^2 + 13*x2 - 5],
     [x2, x1^2]]
**********************************************************************
2 items had failures:
   1 of  30 in sage.libs.singular.function.SingularFunction.__call__
   1 of  15 in sage.libs.singular.function.SingularFunction._instancedoc_
    [318 tests, 2 failures, 1.16s wall]

src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/rings/real_mpfr.pyx
**********************************************************************
File "src/sage/rings/real_mpfr.pyx", line 3331, in sage.rings.real_mpfr.RealNumber._axiom_
Failed example:
    fricas(R(pi))                         # optional - fricas
Expected:
    3.1415926535_8979323846_26433833
Got:
    doctest:warning
      File "<doctest sage.rings.real_mpfr.RealNumber._axiom_[2]>", line 1, in <module>
        fricas(R(pi))                         # optional - fricas
      File "/Users/dcoudert/tmp/sage/src/sage/interfaces/interface.py", line 307, in __call__
        result = self._coerce_from_special_method(x)
      File "/Users/dcoudert/tmp/sage/src/sage/interfaces/interface.py", line 335, in _coerce_from_special_method
        return (x.__getattribute__(s))(self)
      File "/Users/dcoudert/tmp/sage/src/sage/interfaces/interface.py", line 300, in __call__
        return cls(self, x, name=name)
      File "/Users/dcoudert/tmp/sage/src/sage/interfaces/expect.py", line 1499, in __init__
        self._name = parent._create(value, name=name)
      File "/Users/dcoudert/tmp/sage/src/sage/interfaces/interface.py", line 521, in _create
        self.set(name, value)
      File "/Users/dcoudert/tmp/sage/src/sage/interfaces/fricas.py", line 680, in set
        output = self.eval(cmd, reformat=False)
      File "/Users/dcoudert/tmp/sage/src/sage/interfaces/fricas.py", line 933, in eval
        output = Expect.eval(self, code, strip=strip,
      File "/Users/dcoudert/tmp/sage/src/sage/interfaces/expect.py", line 1414, in eval
        return '\n'.join(self._eval_line(L, allow_use_file=allow_use_file, **kwds)
      File "/Users/dcoudert/tmp/sage/src/sage/interfaces/expect.py", line 1414, in <genexpr>
        return '\n'.join(self._eval_line(L, allow_use_file=allow_use_file, **kwds)
      File "/Users/dcoudert/tmp/sage/src/sage/interfaces/expect.py", line 990, in _eval_line
        self._start()
      File "/Users/dcoudert/tmp/sage/src/sage/interfaces/fricas.py", line 347, in _start
        Expect._start(self)
      File "/Users/dcoudert/tmp/sage/src/sage/interfaces/expect.py", line 514, in _start
        self._expect = SageSpawn(cmd,
      File "/Users/dcoudert/tmp/sage/local/var/lib/sage/venv-python3.13/lib/python3.13/site-packages/pexpect/pty_spawn.py", line 205, in __init__
        self._spawn(command, args, preexec_fn, dimensions)
      File "/Users/dcoudert/tmp/sage/local/var/lib/sage/venv-python3.13/lib/python3.13/site-packages/pexpect/pty_spawn.py", line 303, in _spawn
        self.ptyproc = self._spawnpty(self.args, env=self.env,
      File "/Users/dcoudert/tmp/sage/local/var/lib/sage/venv-python3.13/lib/python3.13/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn
        pid, fd = pty.fork()
      File "/opt/homebrew/Cellar/[email protected]/3.13.9/Frameworks/Python.framework/Versions/3.13/lib/python3.13/pty.py", line 95, in fork
        pid, fd = os.forkpty()
      File "/opt/homebrew/Cellar/[email protected]/3.13.9/Frameworks/Python.framework/Versions/3.13/lib/python3.13/warnings.py", line 110, in _showwarnmsg
        sw(msg.message, msg.category, msg.filename, msg.lineno,
    :
    DeprecationWarning: This process (pid=47231) is multi-threaded, use of forkpty() may lead to deadlocks in the child.
    3.1415926535_8979323846_26433833
**********************************************************************
1 item had failures:
   1 of   4 in sage.rings.real_mpfr.RealNumber._axiom_
    [1060 tests, 1 failure, 1.30s wall]

src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/rings/polynomial/polynomial_singular_interface.py
**********************************************************************
File "src/sage/rings/polynomial/polynomial_singular_interface.py", line 203, in sage.rings.polynomial.polynomial_singular_interface.PolynomialRing_singular_repr._singular_
Failed example:
    singular(R)                                                           # needs sage.libs.singular sage.rings.real_mpfr
Expected:
    polynomial ring, over a field, global ordering
    // coefficients: Float()...
    // number of vars : 2
    //        block   1 : ordering dp
    //                  : names    x y
    //        block   2 : ordering C
Got:
    polynomial ring, over a field, global ordering
    // coefficients: Float(29,0) considered as a field
    // number of vars : 2
    //        block   1 : ordering dp
    //                  : names    x y
    //        block   2 : ordering C
**********************************************************************
1 item had failures:
   1 of  31 in sage.rings.polynomial.polynomial_singular_interface.PolynomialRing_singular_repr._singular_
    [68 tests, 1 failure, 0.50s wall]

src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/rings/polynomial/multi_polynomial_ideal.py
**********************************************************************
File "src/sage/rings/polynomial/multi_polynomial_ideal.py", line 1045, in sage.rings.polynomial.multi_polynomial_ideal.?.triangular_decomposition
Failed example:
    I.triangular_decomposition()
Expected:
    [Ideal (x2, x1^2) of Multivariate Polynomial Ring in x1, x2 over Rational Field,
     Ideal (x2, x1^2) of Multivariate Polynomial Ring in x1, x2 over Rational Field,
     Ideal (x2, x1^2) of Multivariate Polynomial Ring in x1, x2 over Rational Field,
     Ideal (x2^4 + 4*x2^3 - 6*x2^2 - 20*x2 + 5, 8*x1 - x2^3 + x2^2 + 13*x2 - 5)
      of Multivariate Polynomial Ring in x1, x2 over Rational Field]
Got:
    [Ideal (x2, x1^2) of Multivariate Polynomial Ring in x1, x2 over Rational Field,
     Ideal (x2^4 + 4*x2^3 - 6*x2^2 - 20*x2 + 5, 8*x1 - x2^3 + x2^2 + 13*x2 - 5) of Multivariate Polynomial Ring in x1, x2 over Rational Field]
**********************************************************************
1 item had failures:
   1 of  16 in sage.rings.polynomial.multi_polynomial_ideal.?.triangular_decomposition
    [963 tests, 1 failure, 6.75s wall]

src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/geometry/hyperplane_arrangement/arrangement.py
**********************************************************************
File "src/sage/geometry/hyperplane_arrangement/arrangement.py", line 3456, in sage.geometry.hyperplane_arrangement.arrangement.HyperplaneArrangementElement.bool
Failed example:
    for x in W:                                                           # needs sage.combinat sage.groups
       A = x.inversion_arrangement()
       assert A.matroid().is_chordal() == A.is_free()
Exception raised:
    Traceback (most recent call last):
      File "/Users/dcoudert/tmp/sage/src/sage/doctest/forker.py", line 734, in _run
        self.compile_and_execute(example, compiler, test.globs)
        ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/Users/dcoudert/tmp/sage/src/sage/doctest/forker.py", line 1158, in compile_and_execute
        exec(compiled, globs)
        ~~~~^^^^^^^^^^^^^^^^^
      File "<doctest sage.geometry.hyperplane_arrangement.arrangement.HyperplaneArrangementElement.bool[1]>", line 3, in <module>
        assert A.matroid().is_chordal() == A.is_free()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    AssertionError
**********************************************************************
1 item had failures:
   1 of  47 in sage.geometry.hyperplane_arrangement.arrangement.HyperplaneArrangementElement.bool
    [617 tests, 1 failure, 26.33s wall]
src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/geometry/hyperplane_arrangement/plot.py
    [59 tests, 3.17s wall]
src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/geometry/hyperplane_arrangement/library.py
**********************************************************************
File "src/sage/geometry/hyperplane_arrangement/library.py", line 556, in sage.geometry.hyperplane_arrangement.library.HyperplaneArrangementLibrary.IshB
Failed example:
    a.cone().is_free()                                                    # needs sage.libs.singular
Expected:
    True
Got:
    False
**********************************************************************
1 item had failures:
   1 of  11 in sage.geometry.hyperplane_arrangement.library.HyperplaneArrangementLibrary.IshB
    [95 tests, 1 failure, 2.31s wall]

src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/interfaces/singular.py
**********************************************************************
File "src/sage/interfaces/singular.py", line 626, in sage.interfaces.singular.Singular.eval
Failed example:
    o = s.hilb()
Expected:
    ...// dimension (affine) = 0
    // degree (affine)  = 8
    // ** right side is not a datum, assignment ignored
    ...
Got:
    // dimension (affine) = 0
    // degree (affine)  = 8
    // ** right side is not a datum, assignment to `sage135` ignored
    // ** in line >>def sage135=hilb(sage134);<<
**********************************************************************
File "src/sage/interfaces/singular.py", line 1769, in sage.interfaces.singular.SingularElement.sage_poly
Failed example:
    Rx("x + 7.5")._singular_().sage_poly()
Expected:
    x + 7.50000
Got:
    x + 7.50000000000000
**********************************************************************
2 items had failures:
   1 of  13 in sage.interfaces.singular.Singular.eval
   1 of  27 in sage.interfaces.singular.SingularElement.sage_poly
    [418 tests, 2 failures, 2.08s wall]

src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/sage/interfaces/fricas.py
**********************************************************************
File "src/sage/interfaces/fricas.py", line 292, in sage.interfaces.fricas.FriCAS.?
Failed example:
    fricas == loads(dumps(fricas))
Exception raised:
    Traceback (most recent call last):
      File "sage/misc/persist.pyx", line 337, in sage.misc.persist.dumps
      File "sage/structure/sage_object.pyx", line 507, in sage.structure.sage_object.SageObject.dumps
      File "sage/misc/persist.pyx", line 305, in sage.misc.persist._base_dumps
      File "sage/misc/persist.pyx", line 829, in sage.misc.persist.SagePickler.dumps
    TypeError: cannot pickle 'sage.misc.lazy_import.LazyImport' object

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "/Users/dcoudert/tmp/sage/src/sage/doctest/forker.py", line 734, in _run
        self.compile_and_execute(example, compiler, test.globs)
        ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/Users/dcoudert/tmp/sage/src/sage/doctest/forker.py", line 1158, in compile_and_execute
        exec(compiled, globs)
        ~~~~^^^^^^^^^^^^^^^^^
      File "<doctest sage.interfaces.fricas.FriCAS.?[0]>", line 1, in <module>
        fricas == loads(dumps(fricas))
                        ~~~~~^^^^^^^^
      File "sage/misc/persist.pyx", line 339, in sage.misc.persist.dumps
      File "sage/misc/persist.pyx", line 305, in sage.misc.persist._base_dumps
      File "sage/misc/persist.pyx", line 829, in sage.misc.persist.SagePickler.dumps
    TypeError: cannot pickle 'sage.misc.lazy_import.LazyImport' object
**********************************************************************
1 item had failures:
   1 of  10 in sage.interfaces.fricas.FriCAS.?
    [276 tests, 1 failure, 10.79s wall]

src/bin/sage -t --long --warn-long 30.0 --random-seed=288660920032434670678011244293111427550 src/doc/en/thematic_tutorials/sandpile.rst
**********************************************************************
File "src/doc/en/thematic_tutorials/sandpile.rst", line 602, in doc.en.thematic_tutorials.sandpile
Failed example:
    S.resolution() # long time
Expected:
    'R^1 <-- R^7 <-- R^19 <-- R^25 <-- R^16 <-- R^4'
Got:
    'R^1 <-- R^7 <-- R^19 <-- R^25 <-- R^16 <-- R^4 <-- R^0'
**********************************************************************
File "src/doc/en/thematic_tutorials/sandpile.rst", line 754, in doc.en.thematic_tutorials.sandpile
Failed example:
    S.resolution()
Expected:
    'R^1 <-- R^5 <-- R^5 <-- R^1'
Got:
    'R^1 <-- R^5 <-- R^5 <-- R^1 <-- R^0'
**********************************************************************
File "src/doc/en/thematic_tutorials/sandpile.rst", line 1119, in doc.en.thematic_tutorials.sandpile
Failed example:
    S.betti(False)
Expected:
    [1, 6, 9, 4]
Got:
    [1, 6, 9, 4, 0]
**********************************************************************
File "src/doc/en/thematic_tutorials/sandpile.rst", line 1140, in doc.en.thematic_tutorials.sandpile
Failed example:
    S.resolution()
Expected:
    'R^1 <-- R^5 <-- R^5 <-- R^1'
Got:
    'R^1 <-- R^5 <-- R^5 <-- R^1 <-- R^0'
**********************************************************************
File "src/doc/en/thematic_tutorials/sandpile.rst", line 2103, in doc.en.thematic_tutorials.sandpile
Failed example:
    S.resolution()  # a Gorenstein sandpile graph
Expected:
    'R^1 <-- R^5 <-- R^5 <-- R^1'
Got:
    'R^1 <-- R^5 <-- R^5 <-- R^1 <-- R^0'
**********************************************************************
File "src/doc/en/thematic_tutorials/sandpile.rst", line 2105, in doc.en.thematic_tutorials.sandpile
Failed example:
    S.resolution(True)
Expected:
    [
    [ x1^2 - x3*x0 x3*x1 - x2*x0  x3^2 - x2*x1  x2*x3 - x0^2  x2^2 - x1*x0],
    <BLANKLINE>
    [ x3  x2   0  x0   0]  [ x2^2 - x1*x0]
    [-x1 -x3  x2   0 -x0]  [-x2*x3 + x0^2]
    [ x0  x1   0  x2   0]  [-x3^2 + x2*x1]
    [  0   0 -x1 -x3  x2]  [x3*x1 - x2*x0]
    [  0   0  x0  x1 -x3], [ x1^2 - x3*x0]
    ]
Got:
    [
    [ x1^2 - x3*x0 x3*x1 - x2*x0  x3^2 - x2*x1  x2*x3 - x0^2  x2^2 - x1*x0],
    <BLANKLINE>
    [ x3  x2   0  x0   0]  [ x2^2 - x1*x0]    
    [-x1 -x3  x2   0 -x0]  [-x2*x3 + x0^2]    
    [ x0  x1   0  x2   0]  [-x3^2 + x2*x1]    
    [  0   0 -x1 -x3  x2]  [x3*x1 - x2*x0]    
    [  0   0  x0  x1 -x3], [ x1^2 - x3*x0], []
    ]
**********************************************************************
1 item had failures:
   6 of 705 in doc.en.thematic_tutorials.sandpile
    [704 tests, 6 failures, 6.54s wall]

@dimpase
Copy link
Member Author

dimpase commented Oct 20, 2025

not sure why conftest.py changed, but the other ?? things are due to them being removed in the branch,
but you haven't been cleaning enough. Anyhow these ?? are harmless and can be just removed.

Error: the git repo has uncommitted changes:
 M conftest.py
?? pkgs/sagemath-bliss/
?? pkgs/sagemath-coxeter3/
?? pkgs/sagemath-mcqd/
?? pkgs/sagemath-meataxe/
?? pkgs/sagemath-sirocco/
?? pkgs/sagemath-tdlib/

src/sage/env.py error is due to Sage not being careful enough with openmp on macOS. (Apple's clang does not support -fopenmp option, it needed -Xpreprocessor -fopenmp, Homebrew is in denial about it, there is an incompatible with "normal" openmp library libgomp used by Homebrew openblas, and so we cannot use the latter, all this madness...)
Nothing to do with this PR anyway.

The rest of errors has nothing to do with this PR either, it's all due to Singular changing formats of some outputs in the latest versions, and us being slow to fix these doctests.

Can you post the output of

git diff conftest.py

which seems to be the only unclear thing here.

@dcoudert
Copy link
Contributor

diff --git a/conftest.py b/conftest.py
index 5ab4ef025d4..e69de29bb2d 100644
--- a/conftest.py
+++ b/conftest.py
@@ -1,397 +0,0 @@
-# pyright: strict
-"""Configuration and fixtures for pytest.
-
-This file configures pytest and provides some global fixtures.
-See https://docs.pytest.org/en/latest/index.html for more details.
-"""
-
-from __future__ import annotations
-
-import doctest
-import inspect
-import sys
-import warnings
-from typing import Any, Iterable, Optional, TYPE_CHECKING
-
-import pytest
-from _pytest.doctest import (
-    DoctestItem,
-    DoctestModule,
-    _get_continue_on_failure,
-    _get_runner,
-    _is_mocked,
-    _patch_unwrap_mock_aware,
-    get_optionflags,
-)
-from _pytest.pathlib import ImportMode, import_path
-
.....

in fact, conftest.py is empty.

@dimpase
Copy link
Member Author

dimpase commented Oct 20, 2025

Ah, ok. This is a known issue; ./configure wipes most of the files with names starting from conf in the root directory, so we have a workaround for this, but it only works if it's not a recursive call to ./configure (in a normal world make should not be calling ./configure (or ./bootstrap), as it's a potentially self-modifying call loop, but it's a bit hard to control in our present setup)

@dcoudert
Copy link
Contributor

I just tried another round of distclean, bootstrap, configure, make, etc. up to installation of tdlib (and make again to be sure), and conftest.py is not there anymore. Let's hope we will be able to fix that sometime soon.

@dcoudert
Copy link
Contributor

So on my side, this PR seems ok. May be @tobiasdiez wants to do further tests ?

@cxzhong
Copy link
Contributor

cxzhong commented Oct 21, 2025

Looks good. I have tested

@dimpase
Copy link
Member Author

dimpase commented Oct 21, 2025

the next step will be to sort out linking problems with some of these packages. I prefer to do it on a separate PR, as it would need more dependent PRs.
I can confirm that tdlib interface works on macOS and on Linux with this PR.

@dcoudert
Copy link
Contributor

For such big change (including the PR on which this one depends), shouldn't we ask for more people to double check ? a mail on sage-devel ?

@dimpase
Copy link
Member Author

dimpase commented Oct 24, 2025

well, we just remove some broken things.
We can of course summon more reviewers.

@dcoudert
Copy link
Contributor

I wanted to try over last beta and got several merge conflicts

MAC-xxxxx:sage dcoudert$ git checkout -b tmp develop
D	conftest.py
Switched to a new branch 'tmp'
MAC-xxxxx:sage dcoudert$ git fetch upstream pull/41080/head:tmp2
remote: Enumerating objects: 38, done.
remote: Counting objects: 100% (30/30), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 38 (delta 12), reused 12 (delta 12), pack-reused 8 (from 2)
Unpacking objects: 100% (38/38), 70.30 KiB | 7.81 MiB/s, done.
From https://github.com/sagemath/sage
 * [new ref]                 refs/pull/41080/head -> tmp2
 * [new tag]                 10.8.beta8           -> 10.8.beta8
MAC-xxxxx:sage dcoudert$ git branch
  develop
* tmp
  tmp2
MAC-xxxxx:sage dcoudert$ git merge tmp2 -m "foo"
Auto-merging .github/workflows/dist.yml
Auto-merging .gitignore
Auto-merging Makefile
CONFLICT (modify/delete): build/pkgs/sagemath_bliss/version_requirements.txt deleted in tmp2 and modified in HEAD.  Version HEAD of build/pkgs/sagemath_bliss/version_requirements.txt left in tree.
CONFLICT (modify/delete): build/pkgs/sagemath_coxeter3/version_requirements.txt deleted in tmp2 and modified in HEAD.  Version HEAD of build/pkgs/sagemath_coxeter3/version_requirements.txt left in tree.
CONFLICT (modify/delete): build/pkgs/sagemath_mcqd/version_requirements.txt deleted in tmp2 and modified in HEAD.  Version HEAD of build/pkgs/sagemath_mcqd/version_requirements.txt left in tree.
CONFLICT (modify/delete): build/pkgs/sagemath_meataxe/version_requirements.txt deleted in tmp2 and modified in HEAD.  Version HEAD of build/pkgs/sagemath_meataxe/version_requirements.txt left in tree.
CONFLICT (modify/delete): build/pkgs/sagemath_sirocco/version_requirements.txt deleted in tmp2 and modified in HEAD.  Version HEAD of build/pkgs/sagemath_sirocco/version_requirements.txt left in tree.
CONFLICT (modify/delete): build/pkgs/sagemath_tdlib/dependencies deleted in tmp2 and modified in HEAD.  Version HEAD of build/pkgs/sagemath_tdlib/dependencies left in tree.
CONFLICT (modify/delete): build/pkgs/sagemath_tdlib/version_requirements.txt deleted in tmp2 and modified in HEAD.  Version HEAD of build/pkgs/sagemath_tdlib/version_requirements.txt left in tree.
CONFLICT (modify/delete): pkgs/sagemath-bliss/VERSION.txt deleted in tmp2 and modified in HEAD.  Version HEAD of pkgs/sagemath-bliss/VERSION.txt left in tree.
CONFLICT (modify/delete): pkgs/sagemath-coxeter3/VERSION.txt deleted in tmp2 and modified in HEAD.  Version HEAD of pkgs/sagemath-coxeter3/VERSION.txt left in tree.
CONFLICT (modify/delete): pkgs/sagemath-mcqd/VERSION.txt deleted in tmp2 and modified in HEAD.  Version HEAD of pkgs/sagemath-mcqd/VERSION.txt left in tree.
CONFLICT (modify/delete): pkgs/sagemath-meataxe/VERSION.txt deleted in tmp2 and modified in HEAD.  Version HEAD of pkgs/sagemath-meataxe/VERSION.txt left in tree.
CONFLICT (modify/delete): pkgs/sagemath-sirocco/VERSION.txt deleted in tmp2 and modified in HEAD.  Version HEAD of pkgs/sagemath-sirocco/VERSION.txt left in tree.
CONFLICT (modify/delete): pkgs/sagemath-tdlib/VERSION.txt deleted in tmp2 and modified in HEAD.  Version HEAD of pkgs/sagemath-tdlib/VERSION.txt left in tree.
Auto-merging src/doc/en/developer/packaging_sage_library.rst
Automatic merge failed; fix conflicts and then commit the result.

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.

unable to install optional package tdlib

4 participants