Date: Tuesday, September 20, 2022 @ 08:44:47 Author: arojas Revision: 1305433
upgpkg: sagemath 9.7-1: Update to 9.7 Modified: sagemath/trunk/PKGBUILD sagemath/trunk/sagemath-bliss-0.77.patch sagemath/trunk/sagemath-gap-4.12.patch sagemath/trunk/sagemath-ipywidgets-8.patch sagemath/trunk/sagemath-optional-packages.patch sagemath/trunk/sagemath-tachyon-0.99.patch sagemath/trunk/test-optional.patch Deleted: sagemath/trunk/sagemath-jupyter-jsmol.patch ----------------------------------+ PKGBUILD | 25 -- sagemath-bliss-0.77.patch | 91 ------- sagemath-gap-4.12.patch | 13 + sagemath-ipywidgets-8.patch | 443 +++++++++++++++++++++++++++++++++++++ sagemath-jupyter-jsmol.patch | 22 - sagemath-optional-packages.patch | 2 sagemath-tachyon-0.99.patch | 31 +- test-optional.patch | 5 8 files changed, 498 insertions(+), 134 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2022-09-20 08:18:39 UTC (rev 1305432) +++ PKGBUILD 2022-09-20 08:44:47 UTC (rev 1305433) @@ -6,8 +6,8 @@ # Contributor: Stefan Husmann <stefan-husmann at t-online dot de> pkgname=sagemath -pkgver=9.6 -pkgrel=11 +pkgver=9.7 +pkgrel=1 pkgdesc='Open Source Mathematics Software, free alternative to Magma, Maple, Mathematica, and Matlab' arch=(x86_64) url='http://www.sagemath.org' @@ -47,7 +47,8 @@ 'sage-notebook-exporter: convert flask notebooks to Jupyter' 'python-database-knotinfo: interface to the KnotInfo and LinkInfo databases' 'python-phitigra: graph editor' - 'topcom: to compute triangulations of point configurations') + 'topcom: to compute triangulations of point configurations' + 'python-database-cubic-hecke: cubic Hecke algebras') makedepends=(cython boost python-jinja sirocco mcqd coxeter bliss tdlib python-pkgconfig shared_meataxe) conflicts=(sagemath-jupyter) replaces=(sagemath-jupyter) @@ -58,20 +59,18 @@ sagemath-linbox-1.7.patch sagemath-bliss-0.77.patch sagemath-tachyon-0.99.patch - sagemath-jupyter-jsmol.patch sagemath-gap-4.12.patch sagemath-ipywidgets-8.patch sagemath-tdlib-0.9.patch) -sha256sums=('c6225d48f70ac955fceed5c1fddfdd7294001d460b43a686329d5d44d836f6a3' - 'e24c075a9f8e562fe9d85e6fd5b01eac4691683c01d4d22c83cde145b63f4dba' +sha256sums=('9f26f14aa322e3cf38a71835b12ac34b23026b467f74d54b064c5d025e76fbfd' + 'eee5fa15d8c7be7e009166dbde3ea24bb10d7793dc12880516f278f86b1a6694' 'bd188af45ce31579b82407adee8e9bf6033a996f7ea6e328fabca526f31c08ba' - '89c1f82dbba376087f08b39b11f43bf781cec199d7d894713167d09dc32e3e18' + '9d042070df3dfd53a1248659677798da888f733548eda91a6d5169c7aa1907e1' 'eacea27b214d32cb886a75695153dfc36b5bad2fd2517e8e4eee18e74220e9e3' - 'b467a41e1e0a0850f7722d875a743233751966a206c2f61401c7582aa722f84e' - '4ee8071efd7b9ad66ac5bbfe081fe670cc58cfcac8fb783d5a40b6da3593cbf4' - '14431ef93a68324ed276d79d7be66b0fb6b73df74f0e049be522480153e22afa' - 'dfa0288904504065ffae13e19ccd11e625f5b4a61fd07bf2f78f90ca2e2cb0be' - '9d6ac3b241eaf6c110a090807d99643eae83b20708baa35f322cdfb70ac2b565' + '3e1f866944235b999d2d727ed1ced431bd67405b053701c21068607ec76f23c3' + '9760db6c6ec40cc16ab8a0cbf3d019df7f6a69ff292e35622f282b7c888aac77' + '84c1700e285ab1d94d16d0a602417a414447d8a23ac2e55a093285cc4bd2916d' + 'bdf56f85b608da12074780271ae134b02a03278f7b53a183f6dd97d8d72073e0' '56a83abecf2ff5a500442adc7a50abbb70006037dd39c39dcdb04b3ca9fb51e2') prepare(){ @@ -96,8 +95,6 @@ patch -p1 -i ../test-optional.patch # use correct latte-count binary name patch -p1 -i ../latte-count.patch -# port to new jupyter-jsmol extension name - patch -p1 -i ../sagemath-jupyter-jsmol.patch # update to tdlib 0.9 (Fedora) patch -p1 -i ../sagemath-tdlib-0.9.patch Modified: sagemath-bliss-0.77.patch =================================================================== --- sagemath-bliss-0.77.patch 2022-09-20 08:18:39 UTC (rev 1305432) +++ sagemath-bliss-0.77.patch 2022-09-20 08:44:47 UTC (rev 1305433) @@ -1,34 +1,3 @@ -diff --git a/build/pkgs/bliss/SPKG.rst b/build/pkgs/bliss/SPKG.rst -index 236b87a199..77407f16ac 100644 ---- a/build/pkgs/bliss/SPKG.rst -+++ b/build/pkgs/bliss/SPKG.rst -@@ -10,20 +10,19 @@ canonical forms of graphs. - License - ------- - --LGPL -+LGPL3 - - - Upstream Contact - ---------------- - --Bliss is currently being maintained by Tommi Junttila and Petteri Kaski. -+Bliss is currently being maintained by Tommi Junttila at - --http://www.tcs.tkk.fi/Software/bliss/index.html -+https://users.aalto.fi/~tjunttil/bliss/index.html -+ -+Bliss used to be maintained by Tommi Junttila and Petteri Kaski up to version 0.73 at - --We apply patches generated from https://github.com/mkoeppe/bliss (branch --apply_debian_patches) as our upstream. This tracks the patches from the --Debian package, adding an autotools build system and adjusting the --include file locations. -+http://www.tcs.tkk.fi/Software/bliss/index.html - - Dependencies - ------------ diff --git a/build/pkgs/bliss/checksums.ini b/build/pkgs/bliss/checksums.ini index e97d89587b..0c1ebf647b 100644 --- a/build/pkgs/bliss/checksums.ini @@ -44,7 +13,7 @@ +cksum=1626493724 +upstream_url=https://users.aalto.fi/~tjunttil/bliss/downloads/bliss-VERSION.zip diff --git a/build/pkgs/bliss/dependencies b/build/pkgs/bliss/dependencies -index 3546cda461..66d6773d90 100644 +index 4f00de2037..c225c495cc 100644 --- a/build/pkgs/bliss/dependencies +++ b/build/pkgs/bliss/dependencies @@ -1,4 +1,4 @@ @@ -60,44 +29,6 @@ @@ -1 +1 @@ -0.73+debian-1+sage-2016-08-02.p0 +0.77 -diff --git a/build/pkgs/bliss/patches/bliss-0.77-install.patch b/build/pkgs/bliss/patches/bliss-0.77-install.patch -new file mode 100644 -index 0000000000..caab14aa40 ---- /dev/null -+++ b/build/pkgs/bliss/patches/bliss-0.77-install.patch -@@ -0,0 +1,32 @@ -+diff --git a/CMakeLists.txt b/CMakeLists.txt -+index 01ed093..cfdb0a6 100644 -+--- a/CMakeLists.txt -++++ b/CMakeLists.txt -+@@ -62,3 +62,27 @@ if(USE_GMP) -+ target_link_libraries(bliss-executable ${GMP_LIBRARIES}) -+ endif(USE_GMP) -+ set_target_properties(bliss-executable PROPERTIES OUTPUT_NAME bliss) -++ -++include(GNUInstallDirs) -++ -++set( -++ BLISS_HEADERS -++ src/bliss_C.h -++ src/uintseqhash.hh -++ src/abstractgraph.hh -++ src/stats.hh -++ src/digraph.hh -++ src/defs.hh -++ src/heap.hh -++ src/graph.hh -++ src/partition.hh -++ src/kqueue.hh -++ src/utils.hh -++ src/orbit.hh -++ src/timer.hh -++ src/bignum.hh -++) -++ -++install(TARGETS bliss-executable RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -++install(TARGETS bliss LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) -++install(FILES ${BLISS_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/bliss) diff --git a/build/pkgs/bliss/spkg-install.in b/build/pkgs/bliss/spkg-install.in index aaf4c3037b..4124a2338e 100644 --- a/build/pkgs/bliss/spkg-install.in @@ -143,7 +74,7 @@ - - diff --git a/src/sage/graphs/bliss.pyx b/src/sage/graphs/bliss.pyx -index bf15833664..4f4e0ee3ca 100644 +index 921bc6a765..1f1f502558 100644 --- a/src/sage/graphs/bliss.pyx +++ b/src/sage/graphs/bliss.pyx @@ -47,22 +47,23 @@ cdef extern from "bliss/graph.hh" namespace "bliss": @@ -150,11 +81,11 @@ cdef cppclass Graph(AbstractGraph): Graph(const unsigned int) void add_edge(const unsigned int, const unsigned int) -- void find_automorphisms(Stats&, void (*)(void* , unsigned int, -- const unsigned int*), void*) +- void find_automorphisms(Stats&, void (*)(void*, unsigned int, +- const unsigned int*), void*) void change_color(const unsigned int, const unsigned int) -- const unsigned int* canonical_form(Stats&, void (*)(void*,unsigned int, -- const unsigned int*), void*) +- const unsigned int* canonical_form(Stats&, void (*)(void*, unsigned int, +- const unsigned int*), void*) + const unsigned int* canonical_form(Stats&) + +cdef extern from "bliss/digraph.hh" namespace "bliss": @@ -162,11 +93,11 @@ cdef cppclass Digraph(AbstractGraph): Digraph(const unsigned int) void add_edge(const unsigned int, const unsigned int) -- void find_automorphisms(Stats&, void (*)(void* , unsigned int, -- const unsigned int*), void*) +- void find_automorphisms(Stats&, void (*)(void*, unsigned int, +- const unsigned int*), void*) void change_color(const unsigned int, const unsigned int) -- const unsigned int* canonical_form(Stats&, void (*)(void*,unsigned int, -- const unsigned int*), void*) +- const unsigned int* canonical_form(Stats&, void (*)(void*, unsigned int, +- const unsigned int*), void*) + const unsigned int* canonical_form(Stats&) unsigned int get_hash() @@ -182,7 +113,7 @@ sig_free(done) --cdef void empty_hook(void *user_param , unsigned int n, const unsigned int *aut): +-cdef void empty_hook(void *user_param, unsigned int n, const unsigned int *aut): - return - ##################################################### Modified: sagemath-gap-4.12.patch =================================================================== --- sagemath-gap-4.12.patch 2022-09-20 08:18:39 UTC (rev 1305432) +++ sagemath-gap-4.12.patch 2022-09-20 08:44:47 UTC (rev 1305433) @@ -21,6 +21,19 @@ X.10 4 -2 . -1 . . . 2 . . 1 . -4 X.11 4 2 . -1 . . . -2 . . 1 . -4 X.12 6 . -2 . . -2 -2 . . . . 2 6 +diff --git a/src/sage/coding/codecan/autgroup_can_label.pyx b/src/sage/coding/codecan/autgroup_can_label.pyx +index de5db985e0..c83b9264e4 100644 +--- a/src/sage/coding/codecan/autgroup_can_label.pyx ++++ b/src/sage/coding/codecan/autgroup_can_label.pyx +@@ -76,7 +76,7 @@ columns do share the same coloring:: + ((1,), + (2,), + (3, 5, 4), +- (6, 19, 16, 9, 21, 10, 8, 15, 14, 11, 20, 13, 12, 7, 17, 18)) ++ (6, 19, 16, 21, 9, 10, 15, 8, 20, 11, 14, 13, 7, 12, 18, 17)) + + We can also restrict the group action to linear isometries:: + diff --git a/src/sage/coding/linear_code.py b/src/sage/coding/linear_code.py index e8e32f82c9..9d45160f44 100644 --- a/src/sage/coding/linear_code.py Modified: sagemath-ipywidgets-8.patch =================================================================== --- sagemath-ipywidgets-8.patch 2022-09-20 08:18:39 UTC (rev 1305432) +++ sagemath-ipywidgets-8.patch 2022-09-20 08:44:47 UTC (rev 1305433) @@ -1,7 +1,29 @@ +diff --git a/src/sage/combinat/cluster_algebra_quiver/cluster_seed.py b/src/sage/combinat/cluster_algebra_quiver/cluster_seed.py +index e65d605..d7c4d84 100644 +--- a/src/sage/combinat/cluster_algebra_quiver/cluster_seed.py ++++ b/src/sage/combinat/cluster_algebra_quiver/cluster_seed.py +@@ -1062,7 +1062,7 @@ class ClusterSeed(SageObject): + + sage: S = ClusterSeed(['A',4]) + sage: S.interact() +- VBox(children=... ++ ...VBox(children=... + """ + return cluster_interact(self, fig_size, circular, kind='seed') + diff --git a/src/sage/combinat/cluster_algebra_quiver/interact.py b/src/sage/combinat/cluster_algebra_quiver/interact.py index 4e54c64..1c88e61 100644 --- a/src/sage/combinat/cluster_algebra_quiver/interact.py +++ b/src/sage/combinat/cluster_algebra_quiver/interact.py +@@ -27,7 +27,7 @@ def cluster_interact(self, fig_size=1, circular=True, kind='seed'): + + sage: S = ClusterSeed(['A',4]) + sage: S.interact() # indirect doctest +- VBox(children=... ++ ...VBox(children=... + """ + if kind not in ['seed', 'quiver']: + raise ValueError('kind must be "seed" or "quiver"') @@ -107,7 +107,7 @@ def cluster_interact(self, fig_size=1, circular=True, kind='seed'): show_lastmutation.observe(refresh, 'value') which_plot.observe(refresh, 'value') @@ -11,10 +33,340 @@ if kind == 'seed': top = widgets.HBox([show_seq, show_vars]) +diff --git a/src/sage/combinat/cluster_algebra_quiver/quiver.py b/src/sage/combinat/cluster_algebra_quiver/quiver.py +index 4f6e16b..14a176c 100644 +--- a/src/sage/combinat/cluster_algebra_quiver/quiver.py ++++ b/src/sage/combinat/cluster_algebra_quiver/quiver.py +@@ -699,7 +699,7 @@ class ClusterQuiver(SageObject): + + sage: S = ClusterQuiver(['A',4]) + sage: S.interact() +- VBox(children=... ++ ...VBox(children=... + """ + return cluster_interact(self, fig_size, circular, kind="quiver") + +diff --git a/src/sage/dynamics/complex_dynamics/mandel_julia.py b/src/sage/dynamics/complex_dynamics/mandel_julia.py +index 224a484..ce67274 100644 +--- a/src/sage/dynamics/complex_dynamics/mandel_julia.py ++++ b/src/sage/dynamics/complex_dynamics/mandel_julia.py +@@ -130,7 +130,7 @@ def mandelbrot_plot(f=None, **kwds): + ``interact`` to ``True``. (This is only implemented for ``z^2 + c``):: + + sage: mandelbrot_plot(interact=True) +- interactive(children=(FloatSlider(value=0.0, description='Real center', max=1.0, min=-1.0, step=1e-05), ++ ...interactive(children=(FloatSlider(value=0.0, description='Real center', max=1.0, min=-1.0, step=1e-05), + FloatSlider(value=0.0, description='Imag center', max=1.0, min=-1.0, step=1e-05), + FloatSlider(value=4.0, description='Width', max=4.0, min=1e-05, step=1e-05), + IntSlider(value=500, description='Iterations', max=1000), +@@ -144,7 +144,7 @@ def mandelbrot_plot(f=None, **kwds): + + sage: mandelbrot_plot(interact=True, x_center=-0.75, y_center=0.25, + ....: image_width=1/2, number_of_colors=75) +- interactive(children=(FloatSlider(value=-0.75, description='Real center', max=1.0, min=-1.0, step=1e-05), ++ ...interactive(children=(FloatSlider(value=-0.75, description='Real center', max=1.0, min=-1.0, step=1e-05), + FloatSlider(value=0.25, description='Imag center', max=1.0, min=-1.0, step=1e-05), + FloatSlider(value=0.5, description='Width', max=4.0, min=1e-05, step=1e-05), + IntSlider(value=500, description='Iterations', max=1000), +@@ -600,14 +600,14 @@ def julia_plot(f=None, **kwds): + the form ``f = z^2 + c``):: + + sage: julia_plot(interact=True) +- interactive(children=(FloatSlider(value=-1.0, description='Real c'... ++ ...interactive(children=(FloatSlider(value=-1.0, description='Real c'... + + :: + + sage: R.<z> = CC[] + sage: f = z^2 + 1/2 + sage: julia_plot(f,interact=True) +- interactive(children=(FloatSlider(value=0.5, description='Real c'... ++ ...interactive(children=(FloatSlider(value=0.5, description='Real c'... + + To return the Julia set of a random `c` value with (formal) cycle structure + `(2,3)`, set ``period = [2,3]``:: +diff --git a/src/sage/interacts/library.py b/src/sage/interacts/library.py +index 8166014..6a982db 100644 +--- a/src/sage/interacts/library.py ++++ b/src/sage/interacts/library.py +@@ -12,7 +12,7 @@ interactive mathlet. In the command line, it will simply return the underlying + HTML and Sage code which creates the mathlet:: + + sage: interacts.calculus.taylor_polynomial() +- Interactive function <function taylor_polynomial at ...> with 3 widgets ++ ...Interactive function <function taylor_polynomial at ...> with 3 widgets + title: HTMLText(value='<h2>Taylor polynomial</h2>') + f: EvalText(value='e^(-x)*sin(x)', description='$f(x)=$', layout=Layout(max_width='81em')) + order: SelectionSlider(description='order', options=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), value=1) +@@ -101,7 +101,7 @@ def library_interact( + ....: def f(n): + ....: print(n) + sage: f() # an interact appears if using the notebook, else code +- Interactive function <function f at ...> with 1 widget ++ ...Interactive function <function f at ...> with 1 widget + n: TransformIntSlider(value=5, description='n', max=15, min=-5) + + TESTS: +@@ -117,7 +117,7 @@ def library_interact( + DeprecationWarning: Use decorator factory @library_interact(widgets) instead of @library_interact without any arguments. + See https://trac.sagemath.org/33382 for details. + sage: f() # an interact appears if using the notebook, else code +- Interactive function <function f at ...> with 1 widget ++ ...Interactive function <function f at ...> with 1 widget + n: TransformIntSlider(value=5, description='n', max=15, min=-5) + + .. NOTE:: +@@ -183,7 +183,7 @@ def demo(n: int, m: int): + creates the mathlet:: + + sage: interacts.demo() +- Interactive function <function demo at ...> with 2 widgets ++ ...Interactive function <function demo at ...> with 2 widgets + n: SelectionSlider(description='n', options=(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), value=0) + m: SelectionSlider(description='m', options=(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), value=0) + """ +@@ -213,7 +213,7 @@ def taylor_polynomial(title, f, order: int): + creates the mathlet:: + + sage: interacts.calculus.taylor_polynomial() +- Interactive function <function taylor_polynomial at ...> with 3 widgets ++ ...Interactive function <function taylor_polynomial at ...> with 3 widgets + title: HTMLText(value='<h2>Taylor polynomial</h2>') + f: EvalText(value='e^(-x)*sin(x)', description='$f(x)=$', layout=Layout(max_width='81em')) + order: SelectionSlider(description='order', options=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), value=1) +@@ -259,7 +259,7 @@ def definite_integral(title, f, g, interval, x_range, selection): + creates the mathlet:: + + sage: interacts.calculus.definite_integral() +- Interactive function <function definite_integral at ...> with 6 widgets ++ ...Interactive function <function definite_integral at ...> with 6 widgets + title: HTMLText(value='<h2>Definite integral</h2>') + f: EvalText(value='3*x', description='$f(x)=$', layout=Layout(max_width='81em')) + g: EvalText(value='x^2', description='$g(x)=$', layout=Layout(max_width='81em')) +@@ -345,7 +345,7 @@ def function_derivative(title, function, x_range, y_range): + creates the mathlet:: + + sage: interacts.calculus.function_derivative() +- Interactive function <function function_derivative at ...> with 4 widgets ++ ...Interactive function <function function_derivative at ...> with 4 widgets + title: HTMLText(value='<h2>Derivative grapher</h2>') + function: EvalText(value='x^5-3*x^3+1', description='Function:', layout=Layout(max_width='81em')) + x_range: FloatRangeSlider(value=(-2.0, 2.0), description='Range (x)', max=15.0, min=-15.0) +@@ -393,7 +393,7 @@ def difference_quotient(title, f, interval, a, x0): + creates the mathlet:: + + sage: interacts.calculus.difference_quotient() +- Interactive function <function difference_quotient at ...> with 5 widgets ++ ...Interactive function <function difference_quotient at ...> with 5 widgets + title: HTMLText(value='<h2>Difference quotient</h2>') + f: EvalText(value='sin(x)', description='f(x)', layout=Layout(max_width='81em')) + interval: FloatRangeSlider(value=(0.0, 10.0), description='Range', max=10.0) +@@ -458,7 +458,7 @@ def quadratic_equation(A, B, C): + creates the mathlet:: + + sage: interacts.calculus.quadratic_equation() +- Interactive function <function quadratic_equation at ...> with 3 widgets ++ ...Interactive function <function quadratic_equation at ...> with 3 widgets + A: IntSlider(value=1, description='A', max=7, min=-7) + B: IntSlider(value=1, description='B', max=7, min=-7) + C: IntSlider(value=-2, description='C', max=7, min=-7) +@@ -520,7 +520,7 @@ def trigonometric_properties_triangle(a0, a1, a2): + creates the mathlet:: + + sage: interacts.geometry.trigonometric_properties_triangle() +- Interactive function <function trigonometric_properties_triangle at ...> with 3 widgets ++ ...Interactive function <function trigonometric_properties_triangle at ...> with 3 widgets + a0: IntSlider(value=30, description='A', max=360) + a1: IntSlider(value=180, description='B', max=360) + a2: IntSlider(value=300, description='C', max=360) +@@ -601,7 +601,7 @@ def unit_circle(function, x): + creates the mathlet:: + + sage: interacts.geometry.unit_circle() +- Interactive function <function unit_circle at ...> with 2 widgets ++ ...Interactive function <function unit_circle at ...> with 2 widgets + function: Dropdown(description='function', options=(('sin(x)', 0), ('cos(x)', 1), ('tan(x)', 2)), value=0) + x: TransformFloatSlider(value=0.0, description='x', max=6.283185307179586, step=0.015707963267948967) + """ +@@ -702,7 +702,7 @@ def special_points( + creates the mathlet:: + + sage: interacts.geometry.special_points() +- Interactive function <function special_points at ...> with 10 widgets ++ ...Interactive function <function special_points at ...> with 10 widgets + title: HTMLText(value='<h2>Special points in triangle</h2>') + a0: IntSlider(value=30, description='A', max=360) + a1: IntSlider(value=180, description='B', max=360) +@@ -875,7 +875,7 @@ def coin(n, interval): + creates the mathlet:: + + sage: interacts.statistics.coin() +- Interactive function <function coin at ...> with 2 widgets ++ ...Interactive function <function coin at ...> with 2 widgets + n: IntSlider(value=1000, description='Number of Tosses', max=10000, min=2, step=100) + interval: IntRangeSlider(value=(0, 0), description='Plotting range (y)', max=1) + """ +@@ -915,7 +915,7 @@ def bisection_method(title, f, interval, d, maxn): + creates the mathlet:: + + sage: interacts.calculus.secant_method() +- Interactive function <function secant_method at ...> with 5 widgets ++ ...Interactive function <function secant_method at ...> with 5 widgets + title: HTMLText(value='<h2>Secant method for numerical root finding</h2>') + f: EvalText(value='x^2-2', description='f(x)', layout=Layout(max_width='81em')) + interval: IntRangeSlider(value=(0, 4), description='range', max=5, min=-5) +@@ -995,7 +995,7 @@ def secant_method(title, f, interval, d, maxn): + creates the mathlet:: + + sage: interacts.calculus.secant_method() +- Interactive function <function secant_method at ...> with 5 widgets ++ ...Interactive function <function secant_method at ...> with 5 widgets + title: HTMLText(value='<h2>Secant method for numerical root finding</h2>') + f: EvalText(value='x^2-2', description='f(x)', layout=Layout(max_width='81em')) + interval: IntRangeSlider(value=(0, 4), description='range', max=5, min=-5) +@@ -1068,7 +1068,7 @@ def newton_method(title, f, c, d, maxn, interval, list_steps): + creates the mathlet:: + + sage: interacts.calculus.newton_method() +- Interactive function <function newton_method at ...> with 7 widgets ++ ...Interactive function <function newton_method at ...> with 7 widgets + title: HTMLText(value='<h2>Newton method</h2>') + f: EvalText(value='x^2 - 2', description='f', layout=Layout(max_width='81em')) + c: IntSlider(value=6, description='Start ($x$)', max=10, min=-10) +@@ -1152,7 +1152,7 @@ def trapezoid_integration( + creates the mathlet:: + + sage: interacts.calculus.trapezoid_integration() +- Interactive function <function trapezoid_integration at ...> with 7 widgets ++ ...Interactive function <function trapezoid_integration at ...> with 7 widgets + title: HTMLText(value='<h2>Trapezoid integration</h2>') + f: EvalText(value='x^2-5*x + 10', description='$f(x)=$', layout=Layout(max_width='81em')) + n: IntSlider(value=5, description='# divisions', min=1) +@@ -1284,7 +1284,7 @@ def simpson_integration( + creates the mathlet:: + + sage: interacts.calculus.simpson_integration() +- Interactive function <function simpson_integration at ...> with 7 widgets ++ ...Interactive function <function simpson_integration at ...> with 7 widgets + title: HTMLText(value='<h2>Simpson integration</h2>') + f: EvalText(value='x*sin(x)+x+1', description='$f(x)=$', layout=Layout(max_width='81em')) + n: IntSlider(value=6, description='# divisions', min=2, step=2) +@@ -1547,7 +1547,7 @@ def function_tool(f, g, xrange, yrange, a, action, do_plot): + creates the mathlet:: + + sage: interacts.calculus.function_tool() +- Interactive function <function function_tool at ...> with 7 widgets ++ ...Interactive function <function function_tool at ...> with 7 widgets + f: EvalText(value='sin(x)', description='f') + g: EvalText(value='cos(x)', description='g') + xrange: IntRangeSlider(value=(0, 1), description='x-range', max=3, min=-3) +@@ -1677,7 +1677,7 @@ def julia(expo, c_real, c_imag, iterations, zoom_x, zoom_y, plot_points, dpi): + creates the mathlet:: + + sage: interacts.fractals.julia() +- Interactive function <function julia at ...> with 8 widgets ++ ...Interactive function <function julia at ...> with 8 widgets + expo: FloatSlider(value=2.0, description='expo', max=10.0, min=-10.0) + c_real: FloatSlider(value=0.5, description='real part const.', max=2.0, min=-2.0, step=0.01) + c_imag: FloatSlider(value=0.5, description='imag part const.', max=2.0, min=-2.0, step=0.01) +@@ -1729,7 +1729,7 @@ def mandelbrot(expo, iterations, zoom_x, zoom_y, plot_points, dpi): + creates the mathlet:: + + sage: interacts.fractals.mandelbrot() +- Interactive function <function mandelbrot at ...> with 6 widgets ++ ...Interactive function <function mandelbrot at ...> with 6 widgets + expo: FloatSlider(value=2.0, description='expo', max=10.0, min=-10.0) + iterations: IntSlider(value=20, description='# iterations', min=1) + zoom_x: FloatRangeSlider(value=(-2.0, 1.0), description='Zoom X', max=2.0, min=-2.0, step=0.01) +@@ -1774,7 +1774,7 @@ def cellular_automaton(N, rule_number, size): + creates the mathlet:: + + sage: interacts.fractals.cellular_automaton() +- Interactive function <function cellular_automaton at ...> with 3 widgets ++ ...Interactive function <function cellular_automaton at ...> with 3 widgets + N: IntSlider(value=100, description='Number of iterations', max=500, min=1) + rule_number: IntSlider(value=110, description='Rule number', max=255) + size: IntSlider(value=6, description='size of graphic', max=11, min=1) +@@ -1833,7 +1833,7 @@ def polar_prime_spiral(interval, show_factors, highlight_primes, show_curves, n, + creates the mathlet:: + + sage: sage.interacts.algebra.polar_prime_spiral() +- Interactive function <function polar_prime_spiral at ...> with 6 widgets ++ ...Interactive function <function polar_prime_spiral at ...> with 6 widgets + interval: IntRangeSlider(value=(1, 1000), description='range', max=4000, min=1, step=10) + show_factors: Checkbox(value=True, description='show_factors') + highlight_primes: Checkbox(value=True, description='highlight_primes') +diff --git a/src/sage/plot/plot3d/plot3d.py b/src/sage/plot/plot3d/plot3d.py +index 44620a0..43e1ce9 100644 +--- a/src/sage/plot/plot3d/plot3d.py ++++ b/src/sage/plot/plot3d/plot3d.py +@@ -1300,7 +1300,7 @@ def plot3d(f, urange, vrange, adaptive=False, transformation=None, **kwds): + sage: @interact + ....: def _(which_plot=[A,B,C,D,E]): + ....: show(which_plot) +- Interactive function <function _ at ...> with 1 widget ++ ...Interactive function <function _ at ...> with 1 widget + which_plot: Dropdown(description='which_plot', options=(Graphics3d Object, Graphics3d Object, Graphics3d Object, Graphics3d Object, Graphics3d Object), value=Graphics3d Object) + + Now plot a function:: +@@ -1314,7 +1314,7 @@ def plot3d(f, urange, vrange, adaptive=False, transformation=None, **kwds): + sage: @interact + ....: def _(which_plot=[F, G, H, I, J]): + ....: show(which_plot) +- Interactive function <function _ at ...> with 1 widget ++ ...Interactive function <function _ at ...> with 1 widget + which_plot: Dropdown(description='which_plot', options=(Graphics3d Object, Graphics3d Object, Graphics3d Object, Graphics3d Object, Graphics3d Object), value=Graphics3d Object) + + TESTS: +diff --git a/src/sage/repl/display/formatter.py b/src/sage/repl/display/formatter.py +index adde08d..62bde3b 100644 +--- a/src/sage/repl/display/formatter.py ++++ b/src/sage/repl/display/formatter.py +@@ -169,8 +169,7 @@ class SageDisplayFormatter(DisplayFormatter): + sage: shell.run_cell('import ipywidgets') + sage: shell.run_cell('slider = ipywidgets.IntSlider()') + sage: shell.run_cell('get_ipython().display_formatter.format(slider)') +- IntSlider(value=0) +- ({}, {}) ++ ...IntSlider(value=0)..., {}) + + sage: shell.run_cell('%display default') + sage: shell.quit() diff --git a/src/sage/repl/ipython_kernel/interact.py b/src/sage/repl/ipython_kernel/interact.py index 9b94bc4..a2665a4 100644 --- a/src/sage/repl/ipython_kernel/interact.py +++ b/src/sage/repl/ipython_kernel/interact.py +@@ -18,7 +18,7 @@ EXAMPLES:: + sage: @interact + ....: def f(x=(0, 10)): + ....: pass +- Interactive function <function f at ...> with 1 widget ++ ...Interactive function <function f at ...> with 1 widget + x: IntSlider(value=5, description='x', max=10) + sage: f.widget.children + (IntSlider(value=5, description='x', max=10), Output()) +@@ -69,7 +69,7 @@ class sage_interactive(interactive): + sage: from sage.repl.ipython_kernel.interact import sage_interactive + sage: def myfunc(x=10, y="hello", z=None): pass + sage: sage_interactive(myfunc, x=(0,100), z=["one", "two", "three"]) +- Interactive function <function myfunc at ...> with 3 widgets ++ ...Interactive function <function myfunc at ...> with 3 widgets + x: IntSlider(value=10, description='x') + y: Text(value='hello', description='y') + z: Dropdown(description='z', options=('one', 'two', 'three'), value=None) +@@ -99,10 +99,10 @@ class sage_interactive(interactive): + + sage: def myfunc(auto_update=False): pass + sage: sage_interactive(myfunc) +- Manual interactive function <function myfunc ...> with 0 widgets ++ ...Manual interactive function <function myfunc ...> with 0 widgets + sage: def myfunc(auto_update=None): pass + sage: sage_interactive(myfunc) +- Interactive function <function myfunc ...> with 0 widgets ++ ...Interactive function <function myfunc ...> with 0 widgets + """ + # Use *args to avoid name clash with keyword arguments + if len(args) < 2: @@ -126,7 +126,7 @@ class sage_interactive(interactive): super(sage_interactive, self).__init__(f, options, **kwds) if self.manual: @@ -24,6 +376,97 @@ else: # In automatic mode, clicking on a ToggleButtons button # should also run the interact +@@ -143,7 +143,7 @@ class sage_interactive(interactive): + sage: from sage.repl.ipython_kernel.interact import sage_interactive + sage: def myfunc(): pass + sage: sage_interactive(myfunc) +- Interactive function <function myfunc ...> with 0 widgets ++ ...Interactive function <function myfunc ...> with 0 widgets + """ + s = "Manual interactive" if self.manual else "Interactive" + widgets = [w for w in self.children if isinstance(w, ValueWidget)] +@@ -164,7 +164,7 @@ class sage_interactive(interactive): + sage: from sage.repl.ipython_kernel.interact import sage_interactive + sage: def myfunc(x=[1,2,3], auto_update=False): pass + sage: sage_interactive(myfunc).signature().parameters +- mappingproxy({'x': <Parameter "x=[1, 2, 3]">}) ++ ...mappingproxy({'x': <Parameter "x=[1, 2, 3]">}) + """ + return self.__signature + +@@ -181,14 +181,14 @@ class sage_interactive(interactive): + + sage: from sage.repl.ipython_kernel.interact import sage_interactive + sage: sage_interactive.widget_from_single_value("sin(x)") +- Text(value='sin(x)') ++ ...Text(value='sin(x)') + sage: sage_interactive.widget_from_single_value(sin(x)) +- EvalText(value='sin(x)') ++ ...EvalText(value='sin(x)') + sage: from sage.plot.colors import Color + sage: sage_interactive.widget_from_single_value(matrix([[1, 2], [3, 4]])) +- Grid(value=[[1, 2], [3, 4]], children=(Label(value=''), VBox(children=(EvalText(value='1', layout=Layout(max_width='5em')), EvalText(value='3', layout=Layout(max_width='5em')))), VBox(children=(EvalText(value='2', layout=Layout(max_width='5em')), EvalText(value='4', layout=Layout(max_width='5em')))))) ++ ...Grid(value=[[1, 2], [3, 4]], children=(Label(value=''), VBox(children=(EvalText(value='1', layout=Layout(max_width='5em')), EvalText(value='3', layout=Layout(max_width='5em')))), VBox(children=(EvalText(value='2', layout=Layout(max_width='5em')), EvalText(value='4', layout=Layout(max_width='5em')))))) + sage: sage_interactive.widget_from_single_value(Color('cornflowerblue')) +- SageColorPicker(value='#6495ed') ++ ...SageColorPicker(value='#6495ed') + """ + # Support Sage matrices and colors + if isinstance(abbrev, Matrix): +@@ -219,15 +219,15 @@ class sage_interactive(interactive): + + sage: from sage.repl.ipython_kernel.interact import sage_interactive + sage: sage_interactive.widget_from_tuple( (0, 10) ) +- IntSlider(value=5, max=10) ++ ...IntSlider(value=5, max=10) + sage: sage_interactive.widget_from_tuple( ("number", (0, 10)) ) +- IntSlider(value=5, description='number', max=10) ++ ...IntSlider(value=5, description='number', max=10) + sage: sage_interactive.widget_from_tuple( (3, (0, 10)) ) +- IntSlider(value=3, max=10) +- sage: sage_interactive.widget_from_tuple((2, dict(one=1, two=2, three=3))) +- Dropdown(index=1, options={'one': 1, 'two': 2, 'three': 3}, value=2) ++ ...IntSlider(value=3, max=10) ++ sage: sage_interactive.widget_from_tuple((2, [('one', 1), ('two', 2), ('three', 3)])) ++ ...Dropdown(index=1, options=(('one', 1), ('two', 2), ('three', 3)), value=2) + sage: sage_interactive.widget_from_tuple( (sqrt(2), pi) ) +- FloatSlider(value=2.277903107981444, max=3.141592653589793, min=1.4142135623730951) ++ ...FloatSlider(value=2.277903107981444, max=3.141592653589793, min=1.4142135623730951) + + TESTS: + +@@ -235,7 +235,7 @@ class sage_interactive(interactive): + + sage: SCR = SR.subring(no_variables=True) + sage: sage_interactive.widget_from_tuple( (SCR(sqrt(2)), SCR(pi)) ) +- FloatSlider(value=2.277903107981444, max=3.141592653589793, min=1.4142135623730951) ++ ...FloatSlider(value=2.277903107981444, max=3.141592653589793, min=1.4142135623730951) + """ + # Support (description, abbrev) + if len(abbrev) == 2 and isinstance(abbrev[0], str): +@@ -269,17 +269,17 @@ class sage_interactive(interactive): + + sage: from sage.repl.ipython_kernel.interact import sage_interactive + sage: sage_interactive.widget_from_iterable([1..5]) +- Dropdown(options=(1, 2, 3, 4, 5), value=1) ++ ...Dropdown(options=(1, 2, 3, 4, 5), value=1) + sage: sage_interactive.widget_from_iterable(iter([1..5])) +- SelectionSlider(options=(1, 2, 3, 4, 5), value=1) ++ ...SelectionSlider(options=(1, 2, 3, 4, 5), value=1) + sage: sage_interactive.widget_from_iterable((1..5)) +- SelectionSlider(options=(1, 2, 3, 4, 5), value=1) ++ ...SelectionSlider(options=(1, 2, 3, 4, 5), value=1) + sage: sage_interactive.widget_from_iterable(x for x in [1..5]) +- SelectionSlider(options=(1, 2, 3, 4, 5), value=1) ++ ...SelectionSlider(options=(1, 2, 3, 4, 5), value=1) + sage: def gen(): + ....: yield 1; yield 2; yield 3; yield 4; yield 5 + sage: sage_interactive.widget_from_iterable(gen()) +- SelectionSlider(options=(1, 2, 3, 4, 5), value=1) ++ ...SelectionSlider(options=(1, 2, 3, 4, 5), value=1) + """ + if isinstance(abbrev, Iterator): + return SelectionSlider(options=list(abbrev)) diff --git a/src/sage/repl/ipython_kernel/widgets_sagenb.py b/src/sage/repl/ipython_kernel/widgets_sagenb.py index 2ce59d7..76f4f52 100644 --- a/src/sage/repl/ipython_kernel/widgets_sagenb.py Deleted: sagemath-jupyter-jsmol.patch =================================================================== --- sagemath-jupyter-jsmol.patch 2022-09-20 08:18:39 UTC (rev 1305432) +++ sagemath-jupyter-jsmol.patch 2022-09-20 08:44:47 UTC (rev 1305433) @@ -1,22 +0,0 @@ -diff --git a/src/sage/repl/display/jsmol_iframe.py b/src/sage/repl/display/jsmol_iframe.py -index 0917a59d47..4775d2a02e 100644 ---- a/src/sage/repl/display/jsmol_iframe.py -+++ b/src/sage/repl/display/jsmol_iframe.py -@@ -98,7 +98,7 @@ class JSMolHtml(SageObject): - instance. The 3-d scene to show. - - - ``path_to_jsmol`` -- string (optional, default is -- ``'/nbextensions/jupyter_jsmol/jsmol'``). The path (relative or absolute) -+ ``'/nbextensions/jupyter-jsmol/jsmol'``). The path (relative or absolute) - where ``JSmol.min.js`` is served on the web server. - - - ``width`` -- integer or string (optional, default: -@@ -121,7 +121,7 @@ class JSMolHtml(SageObject): - self._jmol = jmol - self._zip = zipfile.ZipFile(io.BytesIO(self._jmol.scene_zip.get())) - if path_to_jsmol is None: -- self._path = os.path.join('/', 'nbextensions', 'jupyter_jsmol', 'jsmol') -+ self._path = os.path.join('/', 'nbextensions', 'jupyter-jsmol', 'jsmol') - else: - self._path = path_to_jsmol - self._width = width Modified: sagemath-optional-packages.patch =================================================================== --- sagemath-optional-packages.patch 2022-09-20 08:18:39 UTC (rev 1305432) +++ sagemath-optional-packages.patch 2022-09-20 08:44:47 UTC (rev 1305433) @@ -3,7 +3,7 @@ --- a/pkgs/sagemath-standard/setup.py +++ b/pkgs/sagemath-standard/setup.py @@ -81,10 +81,9 @@ else: - from sage.misc.package import is_package_installed_and_updated + from sage_setup.optional_extension import is_package_installed_and_updated distributions = [''] optional_packages_with_extensions = ['mcqd', 'bliss', 'tdlib', - 'coxeter3', 'fes', 'sirocco', 'meataxe'] Modified: sagemath-tachyon-0.99.patch =================================================================== --- sagemath-tachyon-0.99.patch 2022-09-20 08:18:39 UTC (rev 1305432) +++ sagemath-tachyon-0.99.patch 2022-09-20 08:44:47 UTC (rev 1305433) @@ -1,21 +1,22 @@ --- a/src/sage/interfaces/tachyon.py +++ b/src/sage/interfaces/tachyon.py -@@ -261,13 +261,13 @@ written in the sequence they are listed in the examples in this section. - The {\bf PROJECTION} keyword must be followed by one of the supported - camera projection mode identifiers {\bf PERSPECTIVE}, {\bf PERSPECTIVE_DOF}, - {\bf ORTHOGRAPHIC}, or {\bf FISHEYE}. The {\bf FISHEYE} projection mode --requires two extra parameters {\bf FOCALLENGTH} and {\bf APERTURE} -+requires two extra parameters {\bf FOCALDIST} and {\bf APERTURE} - which precede the regular camera options. +@@ -140,14 +140,14 @@ written in the sequence they are listed in the examples in this section. + The ``PROJECTION`` keyword must be followed by one of the supported + camera projection mode identifiers ``PERSPECTIVE``, ``PERSPECTIVE_DOF``, + ``ORTHOGRAPHIC``, or ``FISHEYE``. The ``FISHEYE`` projection mode +-requires two extra parameters ``FOCALLENGTH`` and ``APERTURE`` which ++requires two extra parameters ``FOCALDIST`` and ``APERTURE`` which + precede the regular camera options. - \begin{verbatim} - Camera - projection perspective_dof -- focallength 0.75 -+ FOCALDIST 0.75 - aperture 0.02 - Zoom 0.666667 - Aspectratio 1.000000 + :: + + Camera + projection perspective_dof +- focallength 0.75 ++ FOCALDIST 0.75 + aperture 0.02 + Zoom 0.666667 + Aspectratio 1.000000 --- a/src/sage/plot/plot3d/tachyon.py +++ b/src/sage/plot/plot3d/tachyon.py @@ -92,7 +92,7 @@ angle, right angle):: Modified: test-optional.patch =================================================================== --- test-optional.patch 2022-09-20 08:18:39 UTC (rev 1305432) +++ test-optional.patch 2022-09-20 08:44:47 UTC (rev 1305433) @@ -2,7 +2,7 @@ index 2d93841e50..937e20cd2e 100644 --- a/src/sage/doctest/control.py +++ b/src/sage/doctest/control.py -@@ -411,11 +411,6 @@ class DocTestController(SageObject): +@@ -400,11 +400,6 @@ class DocTestController(SageObject): # that the package is actually installed). if 'optional' in options.optional: options.optional.discard('optional') @@ -13,4 +13,5 @@ - from sage.features import package_systems options.optional.update(system.name - for system in package_systems()) + +
