passagemath-repl 10.5.43__py3-none-any.whl → 10.6.1rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- passagemath_repl-10.6.1rc1.data/data/share/jupyter/kernels/sagemath/kernel.json +1 -0
- {passagemath_repl-10.5.43.dist-info → passagemath_repl-10.6.1rc1.dist-info}/METADATA +5 -6
- {passagemath_repl-10.5.43.dist-info → passagemath_repl-10.6.1rc1.dist-info}/RECORD +53 -52
- sage/all__sagemath_repl.py +0 -6
- sage/doctest/__main__.py +1 -1
- sage/doctest/control.py +30 -28
- sage/doctest/external.py +31 -27
- sage/doctest/fixtures.py +37 -11
- sage/doctest/forker.py +8 -5
- sage/doctest/parsing.py +42 -27
- sage/doctest/sources.py +10 -0
- sage/doctest/test.py +18 -5
- sage/doctest/tests/fail_and_die.rst +4 -1
- sage/doctest/util.py +7 -4
- sage/misc/banner.py +12 -4
- sage/misc/cython.py +8 -5
- sage/misc/dev_tools.py +10 -84
- sage/misc/gperftools.py +13 -14
- sage/repl/configuration.py +4 -4
- sage/repl/ipython_extension.py +12 -8
- sage/repl/ipython_kernel/install.py +1 -1
- sage/repl/ipython_kernel/widgets.py +1 -1
- sage/repl/ipython_tests.py +19 -2
- sage/repl/rich_output/backend_ipython.py +0 -1
- sage/repl/rich_output/display_manager.py +1 -1
- sage/tests/all.py +1 -0
- sage/tests/benchmark.py +6 -2
- sage/tests/books/computational-mathematics-with-sagemath/domaines_doctest.py +1 -1
- sage/tests/books/computational-mathematics-with-sagemath/premierspas_doctest.py +1 -1
- sage/tests/cmdline.py +6 -4
- sage/tests/startup.py +1 -1
- passagemath_repl-10.5.43.data/data/share/jupyter/kernels/sagemath/kernel.json +0 -1
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/data/share/jupyter/kernels/sagemath/logo-64x64.png +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/data/share/jupyter/kernels/sagemath/logo.svg +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-cachegrind +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-callgrind +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-cleaner +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-coverage +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-eval +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-fixdoctests +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-inline-fortran +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-ipynb2rst +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-ipython +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-massif +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-notebook +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-omega +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-preparse +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-run +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-run-cython +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-runtests +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-startuptime.py +0 -0
- {passagemath_repl-10.5.43.data → passagemath_repl-10.6.1rc1.data}/scripts/sage-valgrind +0 -0
- {passagemath_repl-10.5.43.dist-info → passagemath_repl-10.6.1rc1.dist-info}/WHEEL +0 -0
- {passagemath_repl-10.5.43.dist-info → passagemath_repl-10.6.1rc1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"argv": ["python3", "-m", "sage.repl.ipython_kernel", "-f", "{connection_file}"], "display_name": "passagemath 10.6.1.rc1", "language": "sage"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: passagemath-repl
|
3
|
-
Version: 10.
|
3
|
+
Version: 10.6.1rc1
|
4
4
|
Summary: passagemath: IPython kernel, Sage preparser, doctester
|
5
5
|
Author-email: The Sage Developers <sage-support@googlegroups.com>
|
6
6
|
Maintainer: Matthias Köppe, passagemath contributors
|
@@ -19,17 +19,16 @@ Classifier: Intended Audience :: Science/Research
|
|
19
19
|
Classifier: Operating System :: POSIX
|
20
20
|
Classifier: Operating System :: MacOS :: MacOS X
|
21
21
|
Classifier: Programming Language :: Python :: 3 :: Only
|
22
|
-
Classifier: Programming Language :: Python :: 3.9
|
23
22
|
Classifier: Programming Language :: Python :: 3.10
|
24
23
|
Classifier: Programming Language :: Python :: 3.11
|
25
24
|
Classifier: Programming Language :: Python :: 3.12
|
26
25
|
Classifier: Programming Language :: Python :: 3.13
|
27
26
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
28
27
|
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
29
|
-
Requires-Python: <3.14,>=3.
|
28
|
+
Requires-Python: <3.14,>=3.10
|
30
29
|
Description-Content-Type: text/x-rst
|
31
|
-
Requires-Dist: passagemath-objects
|
32
|
-
Requires-Dist: passagemath-environment
|
30
|
+
Requires-Dist: passagemath-objects==10.6.1rc1
|
31
|
+
Requires-Dist: passagemath-environment==10.6.1rc1
|
33
32
|
Requires-Dist: ipykernel>=5.2.1
|
34
33
|
Requires-Dist: ipython>=7.13.0
|
35
34
|
Requires-Dist: ipywidgets>=7.5.1
|
@@ -79,7 +78,7 @@ passagemath attempts to support all major Linux distributions and recent version
|
|
79
78
|
macOS. Use on Windows currently requires the use of Windows Subsystem for Linux or
|
80
79
|
virtualization.
|
81
80
|
|
82
|
-
Complete sets of binary wheels are provided on PyPI for Python versions 3.
|
81
|
+
Complete sets of binary wheels are provided on PyPI for Python versions 3.10.x-3.13.x.
|
83
82
|
Python 3.13.x is also supported, but some third-party packages are still missing wheels,
|
84
83
|
so compilation from source is triggered for those.
|
85
84
|
|
@@ -1,46 +1,46 @@
|
|
1
|
-
passagemath_repl-10.
|
2
|
-
passagemath_repl-10.
|
3
|
-
passagemath_repl-10.
|
4
|
-
passagemath_repl-10.
|
5
|
-
passagemath_repl-10.
|
6
|
-
passagemath_repl-10.
|
7
|
-
passagemath_repl-10.
|
8
|
-
passagemath_repl-10.
|
9
|
-
passagemath_repl-10.
|
10
|
-
passagemath_repl-10.
|
11
|
-
passagemath_repl-10.
|
12
|
-
passagemath_repl-10.
|
13
|
-
passagemath_repl-10.
|
14
|
-
passagemath_repl-10.
|
15
|
-
passagemath_repl-10.
|
16
|
-
passagemath_repl-10.
|
17
|
-
passagemath_repl-10.
|
18
|
-
passagemath_repl-10.
|
19
|
-
passagemath_repl-10.
|
20
|
-
passagemath_repl-10.
|
21
|
-
passagemath_repl-10.
|
22
|
-
sage/all__sagemath_repl.py,sha256=
|
1
|
+
passagemath_repl-10.6.1rc1.data/data/share/jupyter/kernels/sagemath/kernel.json,sha256=8SIu3wTn79K8-fE1TQ8y9I9i3-rhH1E3czdxf_6xME8,144
|
2
|
+
passagemath_repl-10.6.1rc1.data/data/share/jupyter/kernels/sagemath/logo-64x64.png,sha256=pE3myKl2ywp6zDUD0JiMs-lvAk6T4O3z5PdEC_B0ZL4,3421
|
3
|
+
passagemath_repl-10.6.1rc1.data/data/share/jupyter/kernels/sagemath/logo.svg,sha256=C9lkyX-_DqtTKOlcLFRu36k7scdBufRnYdy4AMHa7GQ,19074
|
4
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-cachegrind,sha256=FRrT4BoRsrATlQOrXALHAbDI_KLhz0XuDOD6xzECEl8,651
|
5
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-callgrind,sha256=pWhrI8NsVa_XSuay052htjxcM3thrpX8rI6Uj_pK5Uo,442
|
6
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-cleaner,sha256=vM0CkzbxiSCE0Z85AViQIvoxb5oUz5WOmVOvShbLDUY,7778
|
7
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-coverage,sha256=IhvqnFvmvNJBMQtiSu5_Qy52a67hG-r3cAeyhYOOj7w,10199
|
8
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-eval,sha256=4IHv01xH34wJPj61wzcL5ufhoO6Y3UTTGz7b-0YKJFw,266
|
9
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-fixdoctests,sha256=xcbw2EmxtwE6Xkrdxx2-59srUwSgzenrNwLP0757UNs,37571
|
10
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-inline-fortran,sha256=T3U943WNPKrxQJuanBhTpXU3jJ5vjaXd56R8yWv_8PM,234
|
11
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-ipynb2rst,sha256=PynBPdthnpwGbILDRA38IwpT319Ze-g8UMmWaaTnimQ,1345
|
12
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-ipython,sha256=RYYd8-gmE5JE_-dCkOSDpC6rRsX6i6tma3pqgmXYJvM,342
|
13
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-massif,sha256=Tfqb6ON9d0OZnt6VlGS21asbdMq8zWzx8ZnvV1n_buI,613
|
14
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-notebook,sha256=QJ1Y4eTptc6TbNVXZswpcsn-NqaQNuSwjWE-lYmGpW8,8453
|
15
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-omega,sha256=4ARnHyZyB69ltxHj9xYpzad_YCBT3Nk0Wq3Ke09gExM,595
|
16
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-preparse,sha256=3L1KKgvSApvoK467Wza0S4WQLCXiYvivrhDKIvA1omc,10595
|
17
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-run,sha256=F1oAgPN7Kh5dO1smCyfGVT0Dy46NQ_dQ3OQZ8Wa6foM,689
|
18
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-run-cython,sha256=02mTGXokayRxISoCWWsDcKZwGrmh5B0mJJxTT87J01Q,235
|
19
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-runtests,sha256=nUvI3fCrBjqPUict01wIxwYPjvaZf4ttLp85tavUEpY,111
|
20
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-startuptime.py,sha256=RtIuC7jM3SOwROXTa6nnpJhzK0sQ24nDqyE6zXpCWEI,6209
|
21
|
+
passagemath_repl-10.6.1rc1.data/scripts/sage-valgrind,sha256=fZxy00oXU4PpHf_wc2uYKb7lzqSBY4VkhUxiuvXHKhA,1201
|
22
|
+
sage/all__sagemath_repl.py,sha256=N6FW5haXlnecMMj9JS9f3oCixqoDpmgf6vF8nAN2Cf8,5410
|
23
23
|
sage/doctest/__init__.py,sha256=JJMNkq7Rh3gCshtynqXDTLJgUKweNFlUhpnbvTLRMwg,166
|
24
|
-
sage/doctest/__main__.py,sha256=
|
24
|
+
sage/doctest/__main__.py,sha256=gX1z-oKoU4JmoD8jC4uHXYQ6C0DB7JlJxRewQoXfhjQ,13646
|
25
25
|
sage/doctest/all.py,sha256=SRWEXRjzsrFyY1rrErA7--1DrvjUQR0Th30P6vubnZ0,157
|
26
26
|
sage/doctest/check_tolerance.py,sha256=YnYr981uSUZWfuv5OrXdytXsZx6PtJnQ7Mg8-Lj7pB4,8945
|
27
|
-
sage/doctest/control.py,sha256=
|
28
|
-
sage/doctest/external.py,sha256=
|
29
|
-
sage/doctest/fixtures.py,sha256=
|
30
|
-
sage/doctest/forker.py,sha256=
|
27
|
+
sage/doctest/control.py,sha256=DXlQq8jLbHZdyACAieEK0I5HowP4BjppwI5SN1ONy6o,68027
|
28
|
+
sage/doctest/external.py,sha256=JlYJSRR4RtOcXeQnWrdwnJG2QQKqaDFB02NtFBo3oXk,15857
|
29
|
+
sage/doctest/fixtures.py,sha256=ohN8nTvmR5MAjenv_kJuFYjw06XTgfqP9PYP9Y4CD1g,13911
|
30
|
+
sage/doctest/forker.py,sha256=GhHf3NtZ9lb_hEz_jB3Ds4quoOC28dVfiB6aOCaMdb8,111457
|
31
31
|
sage/doctest/marked_output.py,sha256=EJThXbkhYvYR5r1uuZyfPjeYHiLpHUgqTm1QZ5JTDgw,3034
|
32
|
-
sage/doctest/parsing.py,sha256=
|
32
|
+
sage/doctest/parsing.py,sha256=u0FnYkw3p6XyAZy8vPjVXM4ci45GrA7QbyxMzIg-UWM,71742
|
33
33
|
sage/doctest/parsing_test.py,sha256=7v3Y6kgLr7x5UF3CkdyNbRyhH4VRX275QPdCqG-jMxg,2652
|
34
34
|
sage/doctest/reporting.py,sha256=8SBJ7I6Ea8OAENNdtfns4TlhLNvgF8Ss1Y8tef5-02o,33383
|
35
35
|
sage/doctest/rif_tol.py,sha256=m8XljRCPyaj_Kpng-sNxsRSo0BJR3QY3CArhjEZ9c5s,4973
|
36
|
-
sage/doctest/sources.py,sha256=
|
37
|
-
sage/doctest/test.py,sha256=
|
38
|
-
sage/doctest/util.py,sha256=
|
36
|
+
sage/doctest/sources.py,sha256=qFxqbnSN0Qh9IScGLszsscXFE2Zq3ivVPuqaVVtZXXU,63778
|
37
|
+
sage/doctest/test.py,sha256=RHF3gIs2ZYd87x0Cts5u9Ec--e87K227nwiPxAITUn8,23321
|
38
|
+
sage/doctest/util.py,sha256=AGVnKp1nU6zmsrGY_CNvhbVPrnBK7dS5_r1wE9iSI-c,31054
|
39
39
|
sage/doctest/tests/1second.rst,sha256=CHBQjhfvPPyBQmTslo-G7kC8Jr6i5DujXTT19AewsIk,74
|
40
40
|
sage/doctest/tests/99seconds.rst,sha256=1FUWC-u5vVHqYd2VUUe_GELikmMvUEDZDt-kAU8u4TA,75
|
41
41
|
sage/doctest/tests/abort.rst,sha256=lqKD_TZvcnO38zmXrp76HyLlVZNKd72rbaGGGhPgywQ,164
|
42
42
|
sage/doctest/tests/atexit.rst,sha256=jRRcy7lhpNl01Ho9jnba-o9eSkPj2S3BsLDQW2SD81c,253
|
43
|
-
sage/doctest/tests/fail_and_die.rst,sha256=
|
43
|
+
sage/doctest/tests/fail_and_die.rst,sha256=YcSU72z5wpAAfOzp6szbt-OYkK4LAFWkLNjLdkxewCg,309
|
44
44
|
sage/doctest/tests/initial.rst,sha256=KND6KnKczk0MA6VDKrN44LQxBkd1t4nUuyaEqYsvVJk,330
|
45
45
|
sage/doctest/tests/interrupt.rst,sha256=Zm5HOSnUIXazy_hhg_GGjdJyGH5aGGtPPlpSEBQNxpw,188
|
46
46
|
sage/doctest/tests/interrupt_diehard.rst,sha256=TxJaZDeMmhOMpUp4Onb3Ob8F8gpYbur-pVlx_2DuYFU,517
|
@@ -58,15 +58,15 @@ sage/ext_data/notebook-ipython/logo-64x64.png,sha256=pE3myKl2ywp6zDUD0JiMs-lvAk6
|
|
58
58
|
sage/ext_data/notebook-ipython/logo.svg,sha256=C9lkyX-_DqtTKOlcLFRu36k7scdBufRnYdy4AMHa7GQ,19074
|
59
59
|
sage/interfaces/all__sagemath_repl.py,sha256=6mNw0BEw6mZsoOi004elrLvD4m4RffLmgY921IwsNXk,43
|
60
60
|
sage/misc/all__sagemath_repl.py,sha256=Qxsf_bNAVB4CScgVoD0Lb9_RFwdK8BI3S0aqjFBz88c,1791
|
61
|
-
sage/misc/banner.py,sha256=
|
61
|
+
sage/misc/banner.py,sha256=bc81_S22PfVvr_VHTHrKXNfsSNcStRf7Xt7QZLIaz0g,8103
|
62
62
|
sage/misc/benchmark.py,sha256=4hW6hTGWfPb_E_U8V19Y_CPRN9_mUMsefrIb1rkzhfQ,6162
|
63
63
|
sage/misc/classgraph.py,sha256=e9xZbH4cZhkY8uuNL-PrS1tyFXm8JcnhyE8uTDYOCoE,5155
|
64
64
|
sage/misc/copying.py,sha256=jyY_AyAAFHAYGkj6Ca-kRd-PcW4qg18kDIUp1dVPk0M,423
|
65
|
-
sage/misc/cython.py,sha256=
|
66
|
-
sage/misc/dev_tools.py,sha256=
|
65
|
+
sage/misc/cython.py,sha256=loGC4rXRzogGhpYU4OsH4J5ba6XITKraERFIrhee2T8,26053
|
66
|
+
sage/misc/dev_tools.py,sha256=aRYppIYFv5AEpkTEcXovxjW27SxurTuF580R1tfJuVw,25564
|
67
67
|
sage/misc/edit_module.py,sha256=A3EctK2BgolhFtsCXtiShKzr_c0r3eGmb9HYnKPyOto,10528
|
68
68
|
sage/misc/explain_pickle.py,sha256=KLuoOx_7xEeawgnLvheim4qmgMhPPOL0CcRxbP7CpWM,107704
|
69
|
-
sage/misc/gperftools.py,sha256
|
69
|
+
sage/misc/gperftools.py,sha256=-8ip5q6NEHctKuDfJ5WoNsdFBOvtGDv-9UWN_GNviac,10870
|
70
70
|
sage/misc/inline_fortran.py,sha256=EFTYpw420JNKZdNNSuOcD4_TONPnfJRZ0UX9PZUO5so,6838
|
71
71
|
sage/misc/messaging.py,sha256=NdHinsgrUq3Kd8QC-c8oIHqt3_hPQ2hEd20rih91qgY,3203
|
72
72
|
sage/misc/pager.py,sha256=bTxQlO2MuJ54ZulqzkcpDW5Yoseile5M9q7RoklrLU0,664
|
@@ -81,13 +81,13 @@ sage/misc/trace.py,sha256=xEwmVVALZ7aCciIRpspoY4IJuE1T9502P5KL2VH0yl0,2978
|
|
81
81
|
sage/repl/__init__.py,sha256=n6Dp28k-5BZmi9cePkg8G6S9qFWUGPBiFVRSiwsPLqk,663
|
82
82
|
sage/repl/all.py,sha256=nh532qefRODsltlLeN-zFkX8UHc6g09pFh5gdIvMORI,508
|
83
83
|
sage/repl/attach.py,sha256=XkGHf5OTMAwnTDqqRT6sw92G5pWMVDUueXrYAlWZQ40,19811
|
84
|
-
sage/repl/configuration.py,sha256=
|
84
|
+
sage/repl/configuration.py,sha256=TKAQIGNGfdsNU3-eBlh7Vg-xeGFTABZeEGoaqUZ5KRU,6040
|
85
85
|
sage/repl/image.py,sha256=wS_m2idzx2PuKjh8yCj18RUi6MT1_C08oH3VaeUKieA,9337
|
86
86
|
sage/repl/inputhook.py,sha256=o3Z6kWs_37yOBMZzoJNj48ajAc3KkMW3M8gydruEFrY,2506
|
87
87
|
sage/repl/interface_magic.py,sha256=WFAC_HHNmenOfCF8IXq3FOnNGX799BiEJdkg7p346f4,9412
|
88
88
|
sage/repl/interpreter.py,sha256=EL0grJK963zyiVg2Gki3XtGLCOG8pWdqvHVCBB8pLiI,30435
|
89
|
-
sage/repl/ipython_extension.py,sha256=
|
90
|
-
sage/repl/ipython_tests.py,sha256=
|
89
|
+
sage/repl/ipython_extension.py,sha256=zTVg6kGj7TddK5KrYy68dnlebfwLyiWHNEm-jabOGUM,26592
|
90
|
+
sage/repl/ipython_tests.py,sha256=o0l_Cjc7mwP1K3OioleI_2Ya0XJQ9B8YX29d7Ture68,5338
|
91
91
|
sage/repl/load.py,sha256=njH3sRvMV56p0-Nbe2IpQqA6u2k0rxAPfCVWdCHvdzk,11824
|
92
92
|
sage/repl/preparse.py,sha256=ktz7bWppMvtBTSpOs6EPC76nKuna9MFsX3txoZJt5WY,77117
|
93
93
|
sage/repl/prompts.py,sha256=wyd7z3sdOaOevvnqfwrQBiCaj6hLiWYJ3De6eePbQEA,2253
|
@@ -101,18 +101,18 @@ sage/repl/display/util.py,sha256=fL0GUr7NcB_AbWUFAgrADcyq212eEqJi0toEdJaVyFk,600
|
|
101
101
|
sage/repl/ipython_kernel/__init__.py,sha256=6mNw0BEw6mZsoOi004elrLvD4m4RffLmgY921IwsNXk,43
|
102
102
|
sage/repl/ipython_kernel/__main__.py,sha256=lS2SaEWCtM5I5LykXB0FBQA-5XIVkolXMpRSTSnMP8w,195
|
103
103
|
sage/repl/ipython_kernel/all_jupyter.py,sha256=hpNw0ZQK89PkavLZD0UWqgPcA4AneXEIc5VOztOxLkA,364
|
104
|
-
sage/repl/ipython_kernel/install.py,sha256=
|
104
|
+
sage/repl/ipython_kernel/install.py,sha256=b8eeZfK8v0lCt9ilcfUZFRonCh3LhiUK9naOnhGrXNs,9503
|
105
105
|
sage/repl/ipython_kernel/interact.py,sha256=gqs9DTksXsbbVkvRGIbW_UnraoMZpoUuZWJjll_FE9k,11603
|
106
106
|
sage/repl/ipython_kernel/kernel.py,sha256=uFQUDxGPtcLcP0YjNvFvLHNM-IIqPTpjG0sX4kF_pYs,7117
|
107
|
-
sage/repl/ipython_kernel/widgets.py,sha256=
|
107
|
+
sage/repl/ipython_kernel/widgets.py,sha256=LpXeZz7EBvenoOXbbV4PA_gCrIcz5EbZBlCRtzpzswA,14879
|
108
108
|
sage/repl/ipython_kernel/widgets_sagenb.py,sha256=VgauLJQlQsvszXU-Rox65MRu7jM8mkVgC8wYDEHVT-o,20178
|
109
109
|
sage/repl/rich_output/__init__.py,sha256=yHVVV_o6hHdQ5UscMtypHyqv_kl6uGC8SpkAsugLBCQ,132
|
110
110
|
sage/repl/rich_output/backend_base.py,sha256=HvMaVFC0MfqKAnabvvotaH027xbsVp-NFz_KDYiqjZI,22159
|
111
111
|
sage/repl/rich_output/backend_doctest.py,sha256=GUIcwHXWvTN16PFm3v4ZThk8F5FFnSkh1BIYlhVXMGo,13166
|
112
112
|
sage/repl/rich_output/backend_emacs.py,sha256=lFlPjVe7XPju9yVl92YVNGoKMQS-37GqSBbZkBbpAFk,5919
|
113
|
-
sage/repl/rich_output/backend_ipython.py,sha256
|
113
|
+
sage/repl/rich_output/backend_ipython.py,sha256=PgsGRyESdPwz-ce4U8iVie1Yx2JrhcTDkNcokGyuWX0,22115
|
114
114
|
sage/repl/rich_output/buffer.py,sha256=Lh2P_VBNQI8HIqwlyTmJ5uTsjg1sOWPeQ1tHdEnLns8,9928
|
115
|
-
sage/repl/rich_output/display_manager.py,sha256=
|
115
|
+
sage/repl/rich_output/display_manager.py,sha256=XOjzIAXvP74JgDxBEjuD-p1ms8IXAEZ2NO0TQftCBvs,29710
|
116
116
|
sage/repl/rich_output/example.avi,sha256=my4VexWs4c2gFV9mpO-BjvCMj1I241FjHkpk3-hQ8BY,7976
|
117
117
|
sage/repl/rich_output/example.canvas3d,sha256=mT094XaOVY5oJ5iu4RyOXfcaKWbo2IktOyA5FJ09aMo,829
|
118
118
|
sage/repl/rich_output/example.dvi,sha256=DdcTpMhkpPXSPiRJ_EexkihWPLgrykecbRUxFnJgb8k,212
|
@@ -140,14 +140,15 @@ sage/repl/rich_output/output_video.py,sha256=4-yQKBCr785qnb2Hdp2E8Ds39WbhNI5moHT
|
|
140
140
|
sage/repl/rich_output/preferences.py,sha256=AQNOC0RrkcVXsvMAfyAw1IJJgbG6Xd2YjAUt_LPzcJU,12896
|
141
141
|
sage/repl/rich_output/pretty_print.py,sha256=jtyu24T9vhStc74fRXKZFD5XAR8e3LJWs10kNK5V4fk,11057
|
142
142
|
sage/repl/rich_output/test_backend.py,sha256=lWvrkhnjXBMw4kAoBW2F0qJXRXk-tBnbQj1MJKHVH0A,6607
|
143
|
+
sage/tests/all.py,sha256=6mNw0BEw6mZsoOi004elrLvD4m4RffLmgY921IwsNXk,43
|
143
144
|
sage/tests/all__sagemath_repl.py,sha256=U0L7QUQRA5DQQ1cqv8tjHB1fr4uXj_q6q_H6e44PTh0,51
|
144
145
|
sage/tests/article_heuberger_krenn_kropf_fsm-in-sage.py,sha256=bam9TtDj7Wic1Fs5XL3TOX0G4svjBqF7jmAa4vnWZsQ,19928
|
145
146
|
sage/tests/arxiv_0812_2725.py,sha256=x1oO2O50QnrCm-zK2Wopzr5SnOlRz0LzNUo_AUORdZE,9942
|
146
|
-
sage/tests/benchmark.py,sha256=
|
147
|
+
sage/tests/benchmark.py,sha256=gnKmLVL938MnMEuaryu67qbaYMAacqpsQXKzxoo7_rc,55546
|
147
148
|
sage/tests/book_schilling_zabrocki_kschur_primer.py,sha256=mIr3XlcQKQXxjmagRuvBdpRG98PsDmx6ZCsGQfVdsq8,27118
|
148
149
|
sage/tests/book_stein_ent.py,sha256=DN35XiYn-X6aC3-HlG9164FwxSuv-p0PTH1Ij-KMakE,19795
|
149
150
|
sage/tests/book_stein_modform.py,sha256=zX0Y1OqrjXT5pEFSrhn6AwHkx43PhgpiLVh8lnPwKaM,21168
|
150
|
-
sage/tests/cmdline.py,sha256=
|
151
|
+
sage/tests/cmdline.py,sha256=IGDw44uJncT98xx-J2y0OPxcRjjXAVLb4oBuHxB13K4,26396
|
151
152
|
sage/tests/combinatorial_hopf_algebras.py,sha256=FTzMq8JyyKLAU3vFacMZZAer7PxALQpg3SFdEjBdo_s,1849
|
152
153
|
sage/tests/finite_poset.py,sha256=3lC1zEHE8_9uxsE0CPnZcgYsf8cFqfObYw7oAYfgFWI,26467
|
153
154
|
sage/tests/functools_partial_src.py,sha256=1AJUja_PgA88SuhEsB-kedq3EEbr8Ry3AaAwUV7OpoU,598
|
@@ -156,7 +157,7 @@ sage/tests/lazy_imports.py,sha256=BVyEp2w0j52sHHDS8JZi0_uNUwuE0t9pKJMA9015jEM,10
|
|
156
157
|
sage/tests/modular_group_cohomology.py,sha256=jeVYPdKlKoPIwYAFHn2TuRljQ2Ajc_oZI0qVBG4KP1E,2408
|
157
158
|
sage/tests/numpy.py,sha256=N6sQAKAS0-AL3WEq5CdPFi_UAuqO4lL-n3ORFL2ppBA,445
|
158
159
|
sage/tests/parigp.py,sha256=RaoBuT8kRh9GK7EDQHikejOTbCt-2DlakxrLdxgQyGA,3781
|
159
|
-
sage/tests/startup.py,sha256=
|
160
|
+
sage/tests/startup.py,sha256=Y6bCdu3ldKa5Y0_bXE1eVhnBU-8vBkvEUNPWCcNsPzg,1176
|
160
161
|
sage/tests/symbolic-series.py,sha256=5WlGSwW4eq-Ydev0jYtLDtuk1KCIJ7QCNE0IhZpc37Q,2991
|
161
162
|
sage/tests/sympy.py,sha256=SGzxN4faL0Y3lokTYV_n_IYjf65pc1foBfLbxDhPDgk,431
|
162
163
|
sage/tests/test_deprecation.py,sha256=Y2uvLozCshTPhQgfAxT_pAkkgX5Q16yJwQ0CleKHDJw,917
|
@@ -164,7 +165,7 @@ sage/tests/books/__init__.py,sha256=7FeABQKWv91MY03iyMjh0SjIIvwreXZPjgmpIlP7OjE,
|
|
164
165
|
sage/tests/books/computational-mathematics-with-sagemath/__init__.py,sha256=6mNw0BEw6mZsoOi004elrLvD4m4RffLmgY921IwsNXk,43
|
165
166
|
sage/tests/books/computational-mathematics-with-sagemath/calculus_doctest.py,sha256=cO1Nz5InC5OhbLFhzniyJ1UiwPnhgoRSvFHNcoymt3o,14315
|
166
167
|
sage/tests/books/computational-mathematics-with-sagemath/combinat_doctest.py,sha256=vSPxFXoKfqcWIFLvZRBbeqJXF2YkQInKNjTrDW9Vm6o,28342
|
167
|
-
sage/tests/books/computational-mathematics-with-sagemath/domaines_doctest.py,sha256=
|
168
|
+
sage/tests/books/computational-mathematics-with-sagemath/domaines_doctest.py,sha256=l2UY7z1nvzZrJ9l2Lf-JuLKOTenmTYwZt4OM9uaNLw8,10298
|
168
169
|
sage/tests/books/computational-mathematics-with-sagemath/float_doctest.py,sha256=FaQfsn95X3iEcUIpFGF3tmtSpcRNwvCYMaB0moH5umA,11659
|
169
170
|
sage/tests/books/computational-mathematics-with-sagemath/graphique_doctest.py,sha256=n0l4Z9pVbCcVRC9m9CVgkSaudIek1E34NV1ut_IzI6M,9771
|
170
171
|
sage/tests/books/computational-mathematics-with-sagemath/graphtheory_doctest.py,sha256=0_g61BiD1KN0uYbushiM8hFbcFhiC_RIJV0oUDyCMdA,12924
|
@@ -176,7 +177,7 @@ sage/tests/books/computational-mathematics-with-sagemath/mpoly_doctest.py,sha256
|
|
176
177
|
sage/tests/books/computational-mathematics-with-sagemath/nonlinear_doctest.py,sha256=dtmCBeceWs3S8FoNYprbC1kRphm7WNSnQmccXCoQ3gk,15994
|
177
178
|
sage/tests/books/computational-mathematics-with-sagemath/numbertheory_doctest.py,sha256=V0ODEcX8TKFR3RZFbzsy-sAUSDxuOPjkRkPnyMlEFMM,4287
|
178
179
|
sage/tests/books/computational-mathematics-with-sagemath/polynomes_doctest.py,sha256=4HvSa47suD18pocaTVyZ1-gM2OvtW0kLJvRzGm4PPR4,12171
|
179
|
-
sage/tests/books/computational-mathematics-with-sagemath/premierspas_doctest.py,sha256=
|
180
|
+
sage/tests/books/computational-mathematics-with-sagemath/premierspas_doctest.py,sha256=bLhoF_uNUfyP5hr_qPTIfknhJRMEmvYbl8XQhi-p1qE,3383
|
180
181
|
sage/tests/books/computational-mathematics-with-sagemath/programmation_doctest.py,sha256=y_4qVYnvDMQz30iZJzAuElXTZApvzv18TmoJ-1PIsEw,17837
|
181
182
|
sage/tests/books/computational-mathematics-with-sagemath/recequadiff_doctest.py,sha256=QvVGANF7q9BbKGRxLJsmFBDai1hqLypOzcuAvv0rOyw,11659
|
182
183
|
sage/tests/books/computational-mathematics-with-sagemath/sol/__init__.py,sha256=6mNw0BEw6mZsoOi004elrLvD4m4RffLmgY921IwsNXk,43
|
@@ -227,7 +228,7 @@ sage/tests/memcheck/run_tests.py,sha256=waPUB_tHk1YvSCd45BOXHeWubtA2St4ZQR-O88R3
|
|
227
228
|
sage/tests/memcheck/run_tests_in_valgrind.py,sha256=Ht4-bpgRl2sH4SICRKN5S5VyMhebmCvRRz4ktOmwKFo,933
|
228
229
|
sage/tests/memcheck/symbolic_expression.py,sha256=oEFxHEpGZK8-sCr_vTiVu8bk-e5lTzp4GQSepnGN-OQ,272
|
229
230
|
sage/tests/memcheck/verify_no_leak.py,sha256=6TiUam0TTe1D_Gbaftz5uGSb8QZygRGXQow-WpVH6kg,984
|
230
|
-
passagemath_repl-10.
|
231
|
-
passagemath_repl-10.
|
232
|
-
passagemath_repl-10.
|
233
|
-
passagemath_repl-10.
|
231
|
+
passagemath_repl-10.6.1rc1.dist-info/METADATA,sha256=0X_cFOHODQmd_BohQ8Che6ylBLxwOx2Awm0cNmQRvsQ,4558
|
232
|
+
passagemath_repl-10.6.1rc1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
233
|
+
passagemath_repl-10.6.1rc1.dist-info/top_level.txt,sha256=Kmzulf9WsphADFQuqgvdy5mvTLDj_V2zkFHU2s3UXos,6
|
234
|
+
passagemath_repl-10.6.1rc1.dist-info/RECORD,,
|
sage/all__sagemath_repl.py
CHANGED
@@ -100,12 +100,6 @@ warnings.filterwarnings('ignore', category=DeprecationWarning,
|
|
100
100
|
message=r"Pickle, copy, and deepcopy support will be "
|
101
101
|
r"removed from itertools in Python 3.14.")
|
102
102
|
|
103
|
-
# triggered in Python 3.9 on Redhat-based distributions
|
104
|
-
# https://github.com/sagemath/sage/issues/37863
|
105
|
-
# https://github.com/networkx/networkx/issues/7101
|
106
|
-
warnings.filterwarnings('ignore', category=RuntimeWarning,
|
107
|
-
message="networkx backend defined more than once: nx-loopback")
|
108
|
-
|
109
103
|
from sage.all__sagemath_objects import *
|
110
104
|
from sage.all__sagemath_environment import *
|
111
105
|
|
sage/doctest/__main__.py
CHANGED
@@ -142,7 +142,7 @@ def _make_parser():
|
|
142
142
|
choices=["DEFAULT", "ALWAYS", "NEVER"],
|
143
143
|
default=0,
|
144
144
|
action=GCAction,
|
145
|
-
help="control
|
145
|
+
help="control garbage collection "
|
146
146
|
"(ALWAYS: collect garbage before every test; NEVER: disable gc; DEFAULT: Python default)")
|
147
147
|
|
148
148
|
# The --serial option is only really for internal use, better not
|
sage/doctest/control.py
CHANGED
@@ -33,28 +33,31 @@ AUTHORS:
|
|
33
33
|
# ****************************************************************************
|
34
34
|
|
35
35
|
import importlib
|
36
|
-
import
|
36
|
+
import json
|
37
37
|
import os
|
38
|
+
import random
|
39
|
+
import shlex
|
38
40
|
import sys
|
39
41
|
import time
|
40
|
-
import json
|
41
|
-
import shlex
|
42
42
|
import types
|
43
|
-
import sage.misc.flatten
|
44
|
-
import sage.misc.randstate as randstate
|
45
|
-
from sage.structure.sage_object import SageObject
|
46
|
-
from sage.env import DOT_SAGE, SAGE_LIB, SAGE_SRC, SAGE_VENV, SAGE_EXTCODE
|
47
|
-
from sage.misc.temporary_file import tmp_dir
|
48
|
-
from cysignals.signals import AlarmInterrupt, init_cysignals
|
49
43
|
|
50
|
-
from .
|
51
|
-
from .forker import DocTestDispatcher
|
52
|
-
from .reporting import DocTestReporter
|
53
|
-
from .util import Timer, count_noun, dict_difference
|
54
|
-
from .external import available_software
|
55
|
-
from .parsing import parse_optional_tags, parse_file_optional_tags, unparse_optional_tags, \
|
56
|
-
nodoctest_regex, optionaltag_regex, optionalfiledirective_regex
|
44
|
+
from cysignals.signals import AlarmInterrupt, init_cysignals
|
57
45
|
|
46
|
+
import sage.misc.flatten
|
47
|
+
from sage.doctest.external import available_software
|
48
|
+
from sage.doctest.forker import DocTestDispatcher
|
49
|
+
from sage.doctest.parsing import (
|
50
|
+
optional_tag_regex,
|
51
|
+
parse_file_optional_tags,
|
52
|
+
unparse_optional_tags,
|
53
|
+
)
|
54
|
+
from sage.doctest.reporting import DocTestReporter
|
55
|
+
from sage.doctest.sources import DictAsObject, FileDocTestSource, get_basename
|
56
|
+
from sage.doctest.util import Timer, count_noun, dict_difference
|
57
|
+
from sage.env import DOT_SAGE, SAGE_EXTCODE, SAGE_LIB, SAGE_SRC
|
58
|
+
from sage.misc import randstate
|
59
|
+
from sage.misc.temporary_file import tmp_dir
|
60
|
+
from sage.structure.sage_object import SageObject
|
58
61
|
|
59
62
|
# Optional tags which are always automatically added
|
60
63
|
|
@@ -470,7 +473,7 @@ class DocTestController(SageObject):
|
|
470
473
|
s = options.hide.lower()
|
471
474
|
options.hide = set(s.split(','))
|
472
475
|
for h in options.hide:
|
473
|
-
if not
|
476
|
+
if not optional_tag_regex.search(h):
|
474
477
|
raise ValueError('invalid optional tag {!r}'.format(h))
|
475
478
|
if 'all' in options.hide:
|
476
479
|
options.hide.discard('all')
|
@@ -513,10 +516,10 @@ class DocTestController(SageObject):
|
|
513
516
|
# Check that all tags are valid
|
514
517
|
for o in options.optional:
|
515
518
|
if o.startswith('!'):
|
516
|
-
if not
|
519
|
+
if not optional_tag_regex.search(o[1:]):
|
517
520
|
raise ValueError('invalid optional tag {!r}'.format(o))
|
518
521
|
options.disabled_optional.add(o[1:])
|
519
|
-
elif not
|
522
|
+
elif not optional_tag_regex.search(o):
|
520
523
|
raise ValueError('invalid optional tag {!r}'.format(o))
|
521
524
|
|
522
525
|
options.optional |= auto_optional_tags
|
@@ -536,7 +539,7 @@ class DocTestController(SageObject):
|
|
536
539
|
else:
|
537
540
|
# Check that all tags are valid
|
538
541
|
for o in options.probe:
|
539
|
-
if not
|
542
|
+
if not optional_tag_regex.search(o):
|
540
543
|
raise ValueError('invalid optional tag {!r}'.format(o))
|
541
544
|
|
542
545
|
self.options = options
|
@@ -895,7 +898,7 @@ class DocTestController(SageObject):
|
|
895
898
|
Doctesting ...
|
896
899
|
"""
|
897
900
|
opj = os.path.join
|
898
|
-
from sage.env import
|
901
|
+
from sage.env import SAGE_DOC, SAGE_DOC_SRC, SAGE_ROOT, SAGE_ROOT_GIT, SAGE_SRC
|
899
902
|
# SAGE_ROOT_GIT can be None on distributions which typically
|
900
903
|
# only have the SAGE_LOCAL install tree but not SAGE_ROOT
|
901
904
|
if SAGE_ROOT_GIT is not None:
|
@@ -1044,10 +1047,9 @@ class DocTestController(SageObject):
|
|
1044
1047
|
bool(self.options.optional),
|
1045
1048
|
if_installed=self.options.if_installed):
|
1046
1049
|
yield os.path.join(root, file)
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1050
|
-
yield path
|
1050
|
+
elif not skipfile(path, bool(self.options.optional),
|
1051
|
+
if_installed=self.options.if_installed, log=self.log): # log when directly specified filenames are skipped
|
1052
|
+
yield path
|
1051
1053
|
self.sources = [FileDocTestSource(path, self.options) for path in expand()]
|
1052
1054
|
|
1053
1055
|
def filter_sources(self):
|
@@ -1553,7 +1555,7 @@ class DocTestController(SageObject):
|
|
1553
1555
|
return self.run_val_gdb()
|
1554
1556
|
else:
|
1555
1557
|
self.create_run_id()
|
1556
|
-
from sage.env import
|
1558
|
+
from sage.env import SAGE_LOCAL, SAGE_ROOT_GIT, SAGE_VENV
|
1557
1559
|
# SAGE_ROOT_GIT can be None on distributions which typically
|
1558
1560
|
# only have the SAGE_LOCAL install tree but not SAGE_ROOT
|
1559
1561
|
if (SAGE_ROOT_GIT is not None) and os.path.isdir(SAGE_ROOT_GIT):
|
@@ -1688,9 +1690,9 @@ def run_doctests(module, options=None):
|
|
1688
1690
|
IP = get_ipython()
|
1689
1691
|
if IP is not None:
|
1690
1692
|
old_color = IP.colors
|
1691
|
-
IP.run_line_magic('colors', '
|
1693
|
+
IP.run_line_magic('colors', 'nocolor')
|
1692
1694
|
old_config_color = IP.config.TerminalInteractiveShell.colors
|
1693
|
-
IP.config.TerminalInteractiveShell.colors = '
|
1695
|
+
IP.config.TerminalInteractiveShell.colors = 'nocolor'
|
1694
1696
|
|
1695
1697
|
try:
|
1696
1698
|
DC.run()
|
sage/doctest/external.py
CHANGED
@@ -16,7 +16,7 @@ AUTHORS:
|
|
16
16
|
- Kwankyu Lee (2016-03-09) -- initial version, based on code by Robert Bradshaw and Nathann Cohen
|
17
17
|
"""
|
18
18
|
|
19
|
-
|
19
|
+
# ****************************************************************************
|
20
20
|
# Copyright (C) 2016 Kwankyu Lee <ekwankyu@gmail.com>
|
21
21
|
# 2018 Thierry Monteil
|
22
22
|
# 2018-2021 Sébastien Labbé
|
@@ -28,8 +28,8 @@ AUTHORS:
|
|
28
28
|
# it under the terms of the GNU General Public License as published by
|
29
29
|
# the Free Software Foundation, either version 2 of the License, or
|
30
30
|
# (at your option) any later version.
|
31
|
-
#
|
32
|
-
|
31
|
+
# https://www.gnu.org/licenses/
|
32
|
+
# ****************************************************************************
|
33
33
|
|
34
34
|
import multiprocessing
|
35
35
|
import platform
|
@@ -46,7 +46,7 @@ Array = multiprocessing.Array
|
|
46
46
|
prefix = 'has_'
|
47
47
|
|
48
48
|
|
49
|
-
def has_internet():
|
49
|
+
def has_internet() -> bool:
|
50
50
|
"""
|
51
51
|
Test if Internet is available.
|
52
52
|
|
@@ -63,7 +63,7 @@ def has_internet():
|
|
63
63
|
return Internet().is_present()
|
64
64
|
|
65
65
|
|
66
|
-
def has_latex():
|
66
|
+
def has_latex() -> bool:
|
67
67
|
"""
|
68
68
|
Test if Latex is available.
|
69
69
|
|
@@ -77,7 +77,7 @@ def has_latex():
|
|
77
77
|
return latex().is_present()
|
78
78
|
|
79
79
|
|
80
|
-
def has_xelatex():
|
80
|
+
def has_xelatex() -> bool:
|
81
81
|
"""
|
82
82
|
Test if xelatex is available.
|
83
83
|
|
@@ -91,7 +91,7 @@ def has_xelatex():
|
|
91
91
|
return xelatex().is_present()
|
92
92
|
|
93
93
|
|
94
|
-
def has_pdflatex():
|
94
|
+
def has_pdflatex() -> bool:
|
95
95
|
"""
|
96
96
|
Test if pdflatex is available.
|
97
97
|
|
@@ -105,7 +105,7 @@ def has_pdflatex():
|
|
105
105
|
return pdflatex().is_present()
|
106
106
|
|
107
107
|
|
108
|
-
def has_lualatex():
|
108
|
+
def has_lualatex() -> bool:
|
109
109
|
"""
|
110
110
|
Test if lualatex is available.
|
111
111
|
|
@@ -119,7 +119,7 @@ def has_lualatex():
|
|
119
119
|
return lualatex().is_present()
|
120
120
|
|
121
121
|
|
122
|
-
def has_magma():
|
122
|
+
def has_magma() -> bool:
|
123
123
|
"""
|
124
124
|
Test if Magma is available.
|
125
125
|
|
@@ -133,7 +133,7 @@ def has_magma():
|
|
133
133
|
return Magma().is_present()
|
134
134
|
|
135
135
|
|
136
|
-
def has_matlab():
|
136
|
+
def has_matlab() -> bool:
|
137
137
|
"""
|
138
138
|
Test if Matlab is available.
|
139
139
|
|
@@ -147,7 +147,7 @@ def has_matlab():
|
|
147
147
|
return Matlab().is_present()
|
148
148
|
|
149
149
|
|
150
|
-
def has_mathematica():
|
150
|
+
def has_mathematica() -> bool:
|
151
151
|
"""
|
152
152
|
Test if Mathematica is available.
|
153
153
|
|
@@ -161,7 +161,7 @@ def has_mathematica():
|
|
161
161
|
return Mathematica().is_present()
|
162
162
|
|
163
163
|
|
164
|
-
def has_maple():
|
164
|
+
def has_maple() -> bool:
|
165
165
|
"""
|
166
166
|
Test if Maple is available.
|
167
167
|
|
@@ -175,7 +175,7 @@ def has_maple():
|
|
175
175
|
return Maple().is_present()
|
176
176
|
|
177
177
|
|
178
|
-
def has_macaulay2():
|
178
|
+
def has_macaulay2() -> bool:
|
179
179
|
"""
|
180
180
|
Test if Macaulay2 is available.
|
181
181
|
|
@@ -189,7 +189,7 @@ def has_macaulay2():
|
|
189
189
|
return Macaulay2().is_present()
|
190
190
|
|
191
191
|
|
192
|
-
def has_octave():
|
192
|
+
def has_octave() -> bool:
|
193
193
|
"""
|
194
194
|
Test if Octave is available.
|
195
195
|
|
@@ -203,7 +203,7 @@ def has_octave():
|
|
203
203
|
return Octave().is_present()
|
204
204
|
|
205
205
|
|
206
|
-
def has_pandoc():
|
206
|
+
def has_pandoc() -> bool:
|
207
207
|
"""
|
208
208
|
Test if pandoc is available.
|
209
209
|
|
@@ -217,7 +217,7 @@ def has_pandoc():
|
|
217
217
|
return Pandoc().is_present()
|
218
218
|
|
219
219
|
|
220
|
-
def has_scilab():
|
220
|
+
def has_scilab() -> bool:
|
221
221
|
"""
|
222
222
|
Test if Scilab is available.
|
223
223
|
|
@@ -235,7 +235,7 @@ def has_scilab():
|
|
235
235
|
return False
|
236
236
|
|
237
237
|
|
238
|
-
def has_cplex():
|
238
|
+
def has_cplex() -> bool:
|
239
239
|
"""
|
240
240
|
Test if CPLEX is available.
|
241
241
|
|
@@ -249,7 +249,7 @@ def has_cplex():
|
|
249
249
|
return CPLEX().is_present()
|
250
250
|
|
251
251
|
|
252
|
-
def has_gurobi():
|
252
|
+
def has_gurobi() -> bool:
|
253
253
|
"""
|
254
254
|
Test if Gurobi is available.
|
255
255
|
|
@@ -263,7 +263,7 @@ def has_gurobi():
|
|
263
263
|
return Gurobi().is_present()
|
264
264
|
|
265
265
|
|
266
|
-
def has_graphviz():
|
266
|
+
def has_graphviz() -> bool:
|
267
267
|
"""
|
268
268
|
Test if graphviz (dot, twopi, neato) are available.
|
269
269
|
|
@@ -277,7 +277,7 @@ def has_graphviz():
|
|
277
277
|
return Graphviz().is_present()
|
278
278
|
|
279
279
|
|
280
|
-
def has_ffmpeg():
|
280
|
+
def has_ffmpeg() -> bool:
|
281
281
|
"""
|
282
282
|
Test if ffmpeg is available.
|
283
283
|
|
@@ -291,7 +291,7 @@ def has_ffmpeg():
|
|
291
291
|
return FFmpeg().is_present()
|
292
292
|
|
293
293
|
|
294
|
-
def has_imagemagick():
|
294
|
+
def has_imagemagick() -> bool:
|
295
295
|
"""
|
296
296
|
Test if ImageMagick (command magick or convert) is available.
|
297
297
|
|
@@ -305,7 +305,7 @@ def has_imagemagick():
|
|
305
305
|
return ImageMagick().is_present()
|
306
306
|
|
307
307
|
|
308
|
-
def has_dvipng():
|
308
|
+
def has_dvipng() -> bool:
|
309
309
|
"""
|
310
310
|
Test if dvipng is available.
|
311
311
|
|
@@ -319,7 +319,7 @@ def has_dvipng():
|
|
319
319
|
return dvipng().is_present()
|
320
320
|
|
321
321
|
|
322
|
-
def has_pdf2svg():
|
322
|
+
def has_pdf2svg() -> bool:
|
323
323
|
"""
|
324
324
|
Test if pdf2svg is available.
|
325
325
|
|
@@ -333,7 +333,7 @@ def has_pdf2svg():
|
|
333
333
|
return pdf2svg().is_present()
|
334
334
|
|
335
335
|
|
336
|
-
def has_rubiks():
|
336
|
+
def has_rubiks() -> bool:
|
337
337
|
"""
|
338
338
|
Test if the rubiks package (``cu2``, ``cubex``, ``dikcube``,
|
339
339
|
``mcube``, ``optimal``, and ``size222``) is available.
|
@@ -348,7 +348,7 @@ def has_rubiks():
|
|
348
348
|
return Rubiks().is_present()
|
349
349
|
|
350
350
|
|
351
|
-
def has_4ti2():
|
351
|
+
def has_4ti2() -> bool:
|
352
352
|
"""
|
353
353
|
Test if the 4ti2 package is available.
|
354
354
|
|
@@ -366,6 +366,10 @@ def external_features():
|
|
366
366
|
r"""
|
367
367
|
Generate the features that are only to be tested if ``--optional=external`` is used.
|
368
368
|
|
369
|
+
.. SEEALSO::
|
370
|
+
|
371
|
+
:func:`sage.features.all.all_features`
|
372
|
+
|
369
373
|
EXAMPLES::
|
370
374
|
|
371
375
|
sage: from sage.doctest.external import external_features
|
@@ -387,7 +391,7 @@ def external_features():
|
|
387
391
|
yield Gurobi()
|
388
392
|
|
389
393
|
|
390
|
-
def
|
394
|
+
def _external_software() -> list[str]:
|
391
395
|
"""
|
392
396
|
Return the alphabetical list of external software supported by this module.
|
393
397
|
|
@@ -400,7 +404,7 @@ def external_software() -> list[str]:
|
|
400
404
|
return sorted(f.name for f in external_features())
|
401
405
|
|
402
406
|
|
403
|
-
external_software =
|
407
|
+
external_software: list[str] = _external_software()
|
404
408
|
|
405
409
|
|
406
410
|
class AvailableSoftware:
|