-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
sagemath: rebuild for singular update
Also fix doctests for pkg updates: - matplotlib 3.7 - ipython 8.12 - nauty 2.8.6 - pythran 0.12.1 We add patches from upstream sagemath to fix these. Also add pythran and sphinx to checkdepends to make sure doctests pass when they are installed.
- Loading branch information
Showing
10 changed files
with
341 additions
and
14 deletions.
There are no files selected for viewing
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
diff --git a/src/sage/plot/complex_plot.pyx b/src/sage/plot/complex_plot.pyx | ||
index b77c69b2f77..0586a96ae55 100644 | ||
--- a/src/sage/plot/complex_plot.pyx | ||
+++ b/src/sage/plot/complex_plot.pyx | ||
@@ -563,7 +563,7 @@ def complex_to_cmap_rgb(z_values, cmap='turbo', contoured=False, tiled=False, | ||
import matplotlib as mpl | ||
|
||
if isinstance(cmap, str): | ||
- cmap = mpl.cm.get_cmap(cmap) | ||
+ cmap = mpl.colormaps[cmap] | ||
|
||
if contour_base is None: | ||
if contour_type == "linear": | ||
@@ -1206,11 +1206,11 @@ def complex_plot(f, x_range, y_range, contoured=False, tiled=False, cmap=None, | ||
domain = np.linspace(0, 1, 256) | ||
shifted_domain = np.roll(domain, 128) | ||
default_cmap = mpl.colors.LinearSegmentedColormap.from_list( | ||
- "sage_default", mpl.cm.get_cmap('hsv')(shifted_domain) | ||
+ "sage_default", mpl.colormaps['hsv'](shifted_domain) | ||
) | ||
cmap = default_cmap | ||
else: | ||
- cmap = mpl.cm.get_cmap(cmap) | ||
+ cmap = mpl.colormaps[cmap] | ||
rgbs = complex_to_cmap_rgb( | ||
z_values, cmap=cmap, contoured=contoured, tiled=tiled, | ||
contour_type=contour_type, contour_base=contour_base, | ||
diff --git a/src/sage/plot/contour_plot.py b/src/sage/plot/contour_plot.py | ||
index c0cab456686..4accb309580 100644 | ||
--- a/src/sage/plot/contour_plot.py | ||
+++ b/src/sage/plot/contour_plot.py | ||
@@ -848,9 +848,7 @@ def f(x,y): return cos(x) + sin(y) | ||
|
||
sage: contour_plot(lambda x,y: 0, (-1,1), (-1,1), | ||
....: contours=[0], fill=False, cmap=['blue']) | ||
- ... | ||
- UserWarning: No contour levels were found within the data range. | ||
- Graphics object consisting of 1 graphics primitive | ||
+ ...Graphics object consisting of 1 graphics primitive | ||
|
||
.. PLOT:: | ||
|
||
@@ -874,8 +872,7 @@ def f(x,y): return cos(x) + sin(y) | ||
Check that :trac:`18074` is fixed:: | ||
|
||
sage: contour_plot(0, (0,1), (0,1)) | ||
- ... UserWarning: No contour levels were found within the data range. | ||
- Graphics object consisting of 1 graphics primitive | ||
+ ...Graphics object consisting of 1 graphics primitive | ||
|
||
Domain points in :trac:`11648` with complex output are now skipped:: | ||
|
||
diff --git a/src/sage/plot/graphics.py b/src/sage/plot/graphics.py | ||
index 64ea1a7e10f..cdc99ced263 100644 | ||
--- a/src/sage/plot/graphics.py | ||
+++ b/src/sage/plot/graphics.py | ||
@@ -2341,7 +2341,7 @@ def _matplotlib_tick_formatter(self, subplot, base=(10, 10), | ||
sage: subplot = Figure().add_subplot(111) | ||
sage: p._objects[0]._render_on_subplot(subplot) | ||
sage: p._matplotlib_tick_formatter(subplot, **d) | ||
- (<AxesSubplot:...>, | ||
+ (<Axes...>, | ||
<matplotlib.ticker.MaxNLocator object at ...>, | ||
<matplotlib.ticker.MaxNLocator object at ...>, | ||
<matplotlib.ticker.ScalarFormatter object at ...>, | ||
diff --git a/src/sage/plot/multigraphics.py b/src/sage/plot/multigraphics.py | ||
index 99c817f03a6..ae85183dc93 100644 | ||
--- a/src/sage/plot/multigraphics.py | ||
+++ b/src/sage/plot/multigraphics.py | ||
@@ -1207,7 +1207,7 @@ def _add_subplot(self, figure, index, **options): | ||
sage: fig = Figure() | ||
sage: ax1 = G._add_subplot(fig, 0) | ||
sage: type(ax1) | ||
- <class 'matplotlib.axes._subplots.AxesSubplot'> | ||
+ <class 'matplotlib.axes...'> | ||
sage: ax2 = G._add_subplot(fig, 1) | ||
sage: fig.get_axes() == [ax1, ax2] | ||
True | ||
diff --git a/src/sage/plot/plot3d/plot_field3d.py b/src/sage/plot/plot3d/plot_field3d.py | ||
index bdf39391d3e..fe10e27f58f 100644 | ||
--- a/src/sage/plot/plot3d/plot_field3d.py | ||
+++ b/src/sage/plot/plot3d/plot_field3d.py | ||
@@ -126,9 +126,9 @@ def plot_vector_field3d(functions, xrange, yrange, zrange, | ||
vectors = [vector((ff(*point), gg(*point), hh(*point))) for point in points] | ||
|
||
try: | ||
- from matplotlib.cm import get_cmap | ||
- cm = get_cmap(colors) | ||
- except (TypeError, ValueError): | ||
+ import matplotlib as mpl | ||
+ cm = mpl.colormaps[colors] | ||
+ except (TypeError, KeyError): | ||
cm = None | ||
if cm is None: | ||
if isinstance(colors, (list, tuple)): |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
diff --git a/src/sage/interfaces/maxima_lib.py b/src/sage/interfaces/maxima_lib.py | ||
index c9ca5e30939..9459cb70334 100644 | ||
--- a/src/sage/interfaces/maxima_lib.py | ||
+++ b/src/sage/interfaces/maxima_lib.py | ||
@@ -77,6 +77,26 @@ | ||
sage: bar == foo | ||
True | ||
|
||
+TESTS: | ||
+ | ||
+Check our workaround for a race in ecl works, see :trac:`26968`. | ||
+We use a temporary `MAXIMA_USERDIR` so it's empty; we place it | ||
+in `DOT_SAGE` since we expect it to have more latency than `/tmp`. | ||
+ | ||
+ sage: import tempfile, subprocess | ||
+ sage: tmpdir = tempfile.TemporaryDirectory(dir=DOT_SAGE) | ||
+ sage: _ = subprocess.run(['sage', '-c', # long time | ||
+ ....: f''' | ||
+ ....: import os | ||
+ ....: os.environ["MAXIMA_USERDIR"] = "{tmpdir.name}" | ||
+ ....: if not os.fork(): | ||
+ ....: import sage.interfaces.maxima_lib | ||
+ ....: else: | ||
+ ....: import sage.interfaces.maxima_lib | ||
+ ....: os.wait() | ||
+ ....: ''']) | ||
+ sage: tmpdir.cleanup() | ||
+ | ||
""" | ||
|
||
# **************************************************************************** | ||
@@ -116,7 +136,23 @@ | ||
ecl_eval("(setq $nolabels t))") | ||
ecl_eval("(defvar *MAXIMA-LANG-SUBDIR* NIL)") | ||
ecl_eval("(set-locale-subdir)") | ||
-ecl_eval("(set-pathnames)") | ||
+ | ||
+try: | ||
+ ecl_eval("(set-pathnames)") | ||
+except RuntimeError: | ||
+ # Recover from :trac:`26968` by creating `*maxima-objdir*` here. | ||
+ # This cannot be done before calling `(set-pathnames)` since | ||
+ # `*maxima-objdir*` is computed there. | ||
+ # We use python `os.makedirs()` which is immune to the race. | ||
+ # Using `(ensure-directories-exist ...)` in lisp would be | ||
+ # subject to the same race condition and since `*maxima-objdir*` | ||
+ # has multiple components this is quite plausible to happen. | ||
+ maxima_objdir = ecl_eval("*maxima-objdir*").python()[1:-1] | ||
+ import os | ||
+ os.makedirs(maxima_objdir, exist_ok=True) | ||
+ # Call `(set-pathnames)` again to complete its job. | ||
+ ecl_eval("(set-pathnames)") | ||
+ | ||
ecl_eval("(defun add-lineinfo (x) x)") | ||
ecl_eval('(defun principal nil (cond ($noprincipal (diverg)) ((not pcprntd) (merror "Divergent Integral"))))') | ||
ecl_eval("(remprop 'mfactorial 'grind)") # don't use ! for factorials (#11539) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
diff --git a/src/bin/sage-cleaner b/src/bin/sage-cleaner | ||
index e2e578eec60..dc7d8f0482e 100755 | ||
--- a/src/bin/sage-cleaner | ||
+++ b/src/bin/sage-cleaner | ||
@@ -99,6 +99,15 @@ def cleanup(): | ||
|
||
return len(pid_list) | ||
|
||
+def cleanup_cruft(): | ||
+ """ remove directories leftover from improper shutdown """ | ||
+ tmp_dirs = os.listdir(SAGE_TMP_ROOT) | ||
+ for dir_entry in tmp_dirs: | ||
+ baddir = os.path.join(SAGE_TMP_ROOT, dir_entry) | ||
+ if os.path.isdir(baddir): | ||
+ logger.warning('Removing old directory %s from SAGE_TMP_ROOT', baddir) | ||
+ rm_rf(baddir) | ||
+ | ||
def kill_spawned_jobs(jobfile, parent_pid): | ||
logger.info("Killing %s's spawned jobs", parent_pid) | ||
killed_them_all = True | ||
@@ -193,6 +202,7 @@ if __name__ == '__main__': | ||
setup_daemon() | ||
fix_old_mistakes() | ||
logger.info("Starting sage-cleaner with PID %s", os.getpid()) | ||
+ cleanup_cruft() | ||
|
||
if len(sys.argv) > 1: | ||
wait = int(sys.argv[1]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
diff --git a/src/sage/graphs/generators/families.py b/src/sage/graphs/generators/families.py | ||
index ec6a5c19e60..9dd7bc1cb1e 100644 | ||
--- a/src/sage/graphs/generators/families.py | ||
+++ b/src/sage/graphs/generators/families.py | ||
@@ -3660,7 +3660,7 @@ def nauty_gentreeg(options="", debug=False): | ||
|
||
sage: gen = graphs.nauty_gentreeg("4", debug=True) | ||
sage: print(next(gen)) | ||
- >A ...gentreeg Z=2:3 D=3 n=4 | ||
+ >A ...gentreeg ... | ||
sage: gen = graphs.nauty_gentreeg("4 -q", debug=True) | ||
sage: next(gen) | ||
'' | ||
@@ -3687,7 +3687,7 @@ def nauty_gentreeg(options="", debug=False): | ||
sage: list(graphs.nauty_gentreeg("3 -x", debug=True)) | ||
['>E Usage: ...gentreeg [-D#] [-Z#:#] [-ulps] [-q] n [res/mod] ... | ||
sage: list(graphs.nauty_gentreeg("3", debug=True)) | ||
- ['>A ...gentreeg Z=2:2 D=2 n=3\n', Graph on 3 vertices] | ||
+ ['>A ...gentreeg ...\n', Graph on 3 vertices] | ||
""" | ||
import shlex | ||
from sage.features.nauty import NautyExecutable | ||
diff --git a/src/sage/graphs/graph_generators.py b/src/sage/graphs/graph_generators.py | ||
index df88bbe2713..1a8016976c2 100644 | ||
--- a/src/sage/graphs/graph_generators.py | ||
+++ b/src/sage/graphs/graph_generators.py | ||
@@ -966,7 +966,7 @@ def nauty_geng(self, options="", debug=False): | ||
... | ||
ValueError: wrong format of parameter option | ||
sage: list(graphs.nauty_geng("-c3", debug=True)) | ||
- ['>E Usage: ...geng [-cCmtfbd#D#] [-uygsnh] [-lvq] ... | ||
+ ['>E Usage: ...geng ...\n'] | ||
sage: list(graphs.nauty_geng("-c 3", debug=True)) | ||
['>A ...geng -cd1D2 n=3 e=2-3\n', Graph on 3 vertices, Graph on 3 vertices] | ||
""" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
diff --git a/src/sage/repl/inputhook.py b/src/sage/repl/inputhook.py | ||
index da5df0268c0..7f7894f6dcf 100644 | ||
--- a/src/sage/repl/inputhook.py | ||
+++ b/src/sage/repl/inputhook.py | ||
@@ -17,6 +17,8 @@ | ||
|
||
import select | ||
import errno | ||
+import contextlib | ||
+import io | ||
|
||
from IPython import get_ipython | ||
from IPython.terminal.pt_inputhooks import register | ||
@@ -47,15 +49,27 @@ def install(): | ||
""" | ||
Install the Sage input hook | ||
|
||
- EXAMPLES:: | ||
+ EXAMPLES: | ||
+ | ||
+ Make sure ipython is running so we really test this function:: | ||
+ | ||
+ sage: from sage.repl.interpreter import get_test_shell | ||
+ sage: get_test_shell() | ||
+ <sage.repl.interpreter.SageTestShell object at ...> | ||
+ | ||
+ Run the function twice, to check it is idempotent (see :trac:`35235`):: | ||
|
||
sage: from sage.repl.inputhook import install | ||
sage: install() | ||
+ sage: install() | ||
""" | ||
ip = get_ipython() | ||
if not ip: | ||
return # Not running in ipython, e.g. doctests | ||
- ip.enable_gui('sage') | ||
+ if ip._inputhook != sage_inputhook: | ||
+ # silence `ip.enable_gui()` useless output | ||
+ with contextlib.redirect_stdout(io.StringIO()): | ||
+ ip.enable_gui('sage') | ||
|
||
|
||
def uninstall(): | ||
@@ -71,4 +85,6 @@ def uninstall(): | ||
if not ip: | ||
return | ||
if ip._inputhook == sage_inputhook: | ||
- ip.enable_gui(None) | ||
+ # silence `ip.enable_gui()` useless output | ||
+ with contextlib.redirect_stdout(io.StringIO()): | ||
+ ip.enable_gui(None) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
From 532fbbaf71bb41c73920b584108eb2a09d6deeb1 Mon Sep 17 00:00:00 2001 | ||
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <[email protected]> | ||
Date: Tue, 4 Apr 2023 12:56:57 -0300 | ||
Subject: [PATCH] Ignore deprecation warnings triggered by pythran 0.12.1 | ||
|
||
These happen with python 3.11, setuptools 67.6.1, numpy 1.24.2. | ||
When pythran 0.12.1 is installed, I get 24 doctest failures due to | ||
deprecation warnings; they are all gone with this commit. | ||
|
||
[backported from 839a6e928c264a9863bd42860c78ae95a6d9f3e0] | ||
--- | ||
src/sage/all.py | 12 ++++++++++-- | ||
1 file changed, 10 insertions(+), 2 deletions(-) | ||
|
||
diff --git a/src/sage/all.py b/src/sage/all.py | ||
index 93588df1b93..ee775aad0e9 100644 | ||
--- a/src/sage/all.py | ||
+++ b/src/sage/all.py | ||
@@ -96,9 +96,17 @@ warnings.filterwarnings('ignore', category=DeprecationWarning, | ||
warnings.filterwarnings('ignore', category=DeprecationWarning, | ||
module='(.*[.]_vendor[.])?packaging') | ||
|
||
-# Ignore numpy warnings triggered by pythran | ||
+# Ignore a few warnings triggered by pythran 0.12.1 | ||
warnings.filterwarnings('ignore', category=DeprecationWarning, | ||
- module='pythran') | ||
+ message='\n\n `numpy.distutils` is deprecated since NumPy 1.23.0', | ||
+ module='pythran.dist') | ||
+warnings.filterwarnings('ignore', category=DeprecationWarning, | ||
+ message='pkg_resources is deprecated as an API|' | ||
+ 'Deprecated call to `pkg_resources.declare_namespace(.*)`', | ||
+ module='pkg_resources') | ||
+warnings.filterwarnings('ignore', category=DeprecationWarning, | ||
+ message='msvccompiler is deprecated and slated to be removed', | ||
+ module='distutils.msvccompiler') | ||
|
||
warnings.filterwarnings('ignore', category=DeprecationWarning, | ||
message='The distutils(.sysconfig module| package) is deprecated', | ||
-- | ||
2.40.0 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.