passagemath-repl 10.5.43__tar.gz → 10.6.1rc2__tar.gz

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.
Files changed (243) hide show
  1. {passagemath_repl-10.5.43/passagemath_repl.egg-info → passagemath_repl-10.6.1rc2}/PKG-INFO +5 -6
  2. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/README.rst +1 -1
  3. passagemath_repl-10.6.1rc2/VERSION.txt +1 -0
  4. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2/passagemath_repl.egg-info}/PKG-INFO +5 -6
  5. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/passagemath_repl.egg-info/requires.txt +2 -2
  6. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/pyproject.toml +5 -6
  7. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/all__sagemath_repl.py +0 -6
  8. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/__main__.py +1 -1
  9. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/control.py +30 -28
  10. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/external.py +31 -27
  11. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/fixtures.py +37 -11
  12. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/forker.py +8 -5
  13. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/parsing.py +42 -27
  14. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/sources.py +10 -0
  15. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/test.py +18 -5
  16. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/tests/fail_and_die.rst +4 -1
  17. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/util.py +7 -4
  18. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/banner.py +12 -4
  19. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/cython.py +8 -5
  20. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/dev_tools.py +10 -84
  21. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/gperftools.py +13 -14
  22. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/configuration.py +4 -4
  23. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/ipython_extension.py +12 -8
  24. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/ipython_kernel/install.py +1 -1
  25. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/ipython_kernel/widgets.py +1 -1
  26. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/ipython_tests.py +19 -2
  27. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/backend_ipython.py +0 -1
  28. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/display_manager.py +1 -1
  29. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/benchmark.py +6 -2
  30. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/domaines_doctest.py +1 -1
  31. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/premierspas_doctest.py +1 -1
  32. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/cmdline.py +6 -4
  33. passagemath_repl-10.6.1rc2/sage/tests/memcheck/__init__.py +1 -0
  34. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/startup.py +1 -1
  35. passagemath_repl-10.5.43/VERSION.txt +0 -1
  36. passagemath_repl-10.5.43/sage/tests/all.py +0 -0
  37. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/MANIFEST.in +0 -0
  38. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-cachegrind +0 -0
  39. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-callgrind +0 -0
  40. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-cleaner +0 -0
  41. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-coverage +0 -0
  42. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-eval +0 -0
  43. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-fixdoctests +0 -0
  44. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-inline-fortran +0 -0
  45. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-ipynb2rst +0 -0
  46. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-ipython +0 -0
  47. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-massif +0 -0
  48. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-notebook +0 -0
  49. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-omega +0 -0
  50. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-preparse +0 -0
  51. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-run +0 -0
  52. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-run-cython +0 -0
  53. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-runtests +0 -0
  54. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-startuptime.py +0 -0
  55. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/bin/sage-valgrind +0 -0
  56. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/passagemath_repl.egg-info/SOURCES.txt +0 -0
  57. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/passagemath_repl.egg-info/dependency_links.txt +0 -0
  58. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/passagemath_repl.egg-info/top_level.txt +0 -0
  59. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/__init__.py +0 -0
  60. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/all.py +0 -0
  61. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/check_tolerance.py +0 -0
  62. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/marked_output.py +0 -0
  63. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/parsing_test.py +0 -0
  64. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/reporting.py +0 -0
  65. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/rif_tol.py +0 -0
  66. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/tests/1second.rst +0 -0
  67. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/tests/99seconds.rst +0 -0
  68. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/tests/abort.rst +0 -0
  69. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/tests/atexit.rst +0 -0
  70. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/tests/initial.rst +0 -0
  71. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/tests/interrupt.rst +0 -0
  72. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/tests/interrupt_diehard.rst +0 -0
  73. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/tests/keyboardinterrupt.rst +0 -0
  74. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/tests/longtime.rst +0 -0
  75. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/tests/nodoctest +0 -0
  76. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/tests/random_seed.rst +0 -0
  77. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/tests/show_skipped.rst +0 -0
  78. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/tests/sig_on.rst +0 -0
  79. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/tests/simple_failure.rst +0 -0
  80. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/tests/sleep_and_raise.rst +0 -0
  81. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/doctest/tests/tolerance.rst +0 -0
  82. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/ext_data/all__sagemath_repl.py +0 -0
  83. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/ext_data/notebook-ipython/logo-64x64.png +0 -0
  84. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/ext_data/notebook-ipython/logo.svg +0 -0
  85. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/interfaces/all__sagemath_repl.py +0 -0
  86. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/all__sagemath_repl.py +0 -0
  87. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/benchmark.py +0 -0
  88. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/classgraph.py +0 -0
  89. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/copying.py +0 -0
  90. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/edit_module.py +0 -0
  91. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/explain_pickle.py +0 -0
  92. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/inline_fortran.py +0 -0
  93. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/messaging.py +0 -0
  94. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/pager.py +0 -0
  95. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/profiler.py +0 -0
  96. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/python.py +0 -0
  97. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/remote_file.py +0 -0
  98. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/sage_eval.py +0 -0
  99. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/sage_input.py +0 -0
  100. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/sagedoc.py +0 -0
  101. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/sh.py +0 -0
  102. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/misc/trace.py +0 -0
  103. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/__init__.py +0 -0
  104. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/all.py +0 -0
  105. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/attach.py +0 -0
  106. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/display/__init__.py +0 -0
  107. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/display/fancy_repr.py +0 -0
  108. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/display/formatter.py +0 -0
  109. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/display/jsmol_iframe.py +0 -0
  110. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/display/pretty_print.py +0 -0
  111. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/display/util.py +0 -0
  112. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/image.py +0 -0
  113. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/inputhook.py +0 -0
  114. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/interface_magic.py +0 -0
  115. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/interpreter.py +0 -0
  116. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/ipython_kernel/__init__.py +0 -0
  117. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/ipython_kernel/__main__.py +0 -0
  118. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/ipython_kernel/all_jupyter.py +0 -0
  119. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/ipython_kernel/interact.py +0 -0
  120. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/ipython_kernel/kernel.py +0 -0
  121. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/ipython_kernel/widgets_sagenb.py +0 -0
  122. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/load.py +0 -0
  123. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/preparse.py +0 -0
  124. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/prompts.py +0 -0
  125. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/__init__.py +0 -0
  126. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/backend_base.py +0 -0
  127. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/backend_doctest.py +0 -0
  128. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/backend_emacs.py +0 -0
  129. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/buffer.py +0 -0
  130. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example.avi +0 -0
  131. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example.canvas3d +0 -0
  132. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example.dvi +0 -0
  133. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example.flv +0 -0
  134. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example.gif +0 -0
  135. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example.jpg +0 -0
  136. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example.mkv +0 -0
  137. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example.mov +0 -0
  138. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example.mp4 +0 -0
  139. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example.ogv +0 -0
  140. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example.pdf +0 -0
  141. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example.png +0 -0
  142. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example.svg +0 -0
  143. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example.webm +0 -0
  144. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example.wmv +0 -0
  145. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example_jmol.spt.zip +0 -0
  146. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example_wavefront_scene.mtl +0 -0
  147. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/example_wavefront_scene.obj +0 -0
  148. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/output_basic.py +0 -0
  149. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/output_browser.py +0 -0
  150. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/output_catalog.py +0 -0
  151. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/output_graphics.py +0 -0
  152. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/output_graphics3d.py +0 -0
  153. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/output_video.py +0 -0
  154. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/preferences.py +0 -0
  155. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/pretty_print.py +0 -0
  156. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/rich_output/test_backend.py +0 -0
  157. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/repl/user_globals.py +0 -0
  158. /passagemath_repl-10.5.43/sage/tests/books/computational-mathematics-with-sagemath/__init__.py → /passagemath_repl-10.6.1rc2/sage/tests/all.py +0 -0
  159. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/all__sagemath_repl.py +0 -0
  160. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/article_heuberger_krenn_kropf_fsm-in-sage.py +0 -0
  161. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/arxiv_0812_2725.py +0 -0
  162. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/book_schilling_zabrocki_kschur_primer.py +0 -0
  163. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/book_stein_ent.py +0 -0
  164. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/book_stein_modform.py +0 -0
  165. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/__init__.py +0 -0
  166. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/README +0 -0
  167. {passagemath_repl-10.5.43/sage/tests/books/computational-mathematics-with-sagemath/sol → passagemath_repl-10.6.1rc2/sage/tests/books/computational-mathematics-with-sagemath}/__init__.py +0 -0
  168. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/calculus_doctest.py +0 -0
  169. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/combinat_doctest.py +0 -0
  170. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/float_doctest.py +0 -0
  171. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/graphique_doctest.py +0 -0
  172. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/graphtheory_doctest.py +0 -0
  173. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/integration_doctest.py +0 -0
  174. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/linalg_doctest.py +0 -0
  175. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/linsolve_doctest.py +0 -0
  176. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/lp_doctest.py +0 -0
  177. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/mpoly_doctest.py +0 -0
  178. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/nonlinear_doctest.py +0 -0
  179. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/numbertheory_doctest.py +0 -0
  180. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/polynomes_doctest.py +0 -0
  181. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/programmation_doctest.py +0 -0
  182. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/recequadiff_doctest.py +0 -0
  183. {passagemath_repl-10.5.43/sage/tests/books/judson-abstract-algebra → passagemath_repl-10.6.1rc2/sage/tests/books/computational-mathematics-with-sagemath/sol}/__init__.py +0 -0
  184. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/sol/calculus_doctest.py +0 -0
  185. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/sol/combinat_doctest.py +0 -0
  186. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/sol/domaines_doctest.py +0 -0
  187. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/sol/float_doctest.py +0 -0
  188. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/sol/graphique_doctest.py +0 -0
  189. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/sol/graphtheory_doctest.py +0 -0
  190. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/sol/integration_doctest.py +0 -0
  191. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/sol/linalg_doctest.py +0 -0
  192. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/sol/linsolve_doctest.py +0 -0
  193. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/sol/lp_doctest.py +0 -0
  194. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/sol/mpoly_doctest.py +0 -0
  195. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/sol/nonlinear_doctest.py +0 -0
  196. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/sol/numbertheory_doctest.py +0 -0
  197. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/sol/polynomes_doctest.py +0 -0
  198. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/computational-mathematics-with-sagemath/sol/recequadiff_doctest.py +0 -0
  199. {passagemath_repl-10.5.43/sage/tests/memcheck → passagemath_repl-10.6.1rc2/sage/tests/books/judson-abstract-algebra}/__init__.py +0 -0
  200. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/actions-sage-exercises.py +0 -0
  201. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/actions-sage.py +0 -0
  202. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/algcodes-sage.py +0 -0
  203. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/boolean-sage.py +0 -0
  204. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/cosets-sage-exercises.py +0 -0
  205. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/cosets-sage.py +0 -0
  206. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/crypt-sage.py +0 -0
  207. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/cyclic-sage.py +0 -0
  208. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/domains-sage.py +0 -0
  209. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/fields-sage.py +0 -0
  210. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/finite-sage.py +0 -0
  211. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/galois-sage.py +0 -0
  212. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/groups-sage.py +0 -0
  213. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/homomorph-sage-exercises.py +0 -0
  214. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/homomorph-sage.py +0 -0
  215. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/integers-sage.py +0 -0
  216. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/isomorph-sage.py +0 -0
  217. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/normal-sage.py +0 -0
  218. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/permute-sage.py +0 -0
  219. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/poly-sage.py +0 -0
  220. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/rings-sage.py +0 -0
  221. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/sets-sage.py +0 -0
  222. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/struct-sage.py +0 -0
  223. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/sylow-sage.py +0 -0
  224. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/vect-sage-exercises.py +0 -0
  225. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/books/judson-abstract-algebra/vect-sage.py +0 -0
  226. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/combinatorial_hopf_algebras.py +0 -0
  227. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/finite_poset.py +0 -0
  228. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/functools_partial_src.py +0 -0
  229. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/gosper-sum.py +0 -0
  230. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/lazy_imports.py +0 -0
  231. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/memcheck/run_tests.py +0 -0
  232. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/memcheck/run_tests_in_valgrind.py +0 -0
  233. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/memcheck/symbolic_expression.py +0 -0
  234. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/memcheck/verify_no_leak.py +0 -0
  235. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/meson.build +0 -0
  236. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/modular_group_cohomology.py +0 -0
  237. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/numpy.py +0 -0
  238. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/parigp.py +0 -0
  239. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/symbolic-series.py +0 -0
  240. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/sympy.py +0 -0
  241. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/sage/tests/test_deprecation.py +0 -0
  242. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/setup.cfg +0 -0
  243. {passagemath_repl-10.5.43 → passagemath_repl-10.6.1rc2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: passagemath-repl
3
- Version: 10.5.43
3
+ Version: 10.6.1rc2
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.9
28
+ Requires-Python: <3.14,>=3.10
30
29
  Description-Content-Type: text/x-rst
31
- Requires-Dist: passagemath-objects~=10.5.43.0
32
- Requires-Dist: passagemath-environment~=10.5.43.0
30
+ Requires-Dist: passagemath-objects==10.6.1rc2
31
+ Requires-Dist: passagemath-environment==10.6.1rc2
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.9.x-3.12.x.
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
 
@@ -39,7 +39,7 @@ passagemath attempts to support all major Linux distributions and recent version
39
39
  macOS. Use on Windows currently requires the use of Windows Subsystem for Linux or
40
40
  virtualization.
41
41
 
42
- Complete sets of binary wheels are provided on PyPI for Python versions 3.9.x-3.12.x.
42
+ Complete sets of binary wheels are provided on PyPI for Python versions 3.10.x-3.13.x.
43
43
  Python 3.13.x is also supported, but some third-party packages are still missing wheels,
44
44
  so compilation from source is triggered for those.
45
45
 
@@ -0,0 +1 @@
1
+ 10.6.1.rc2
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: passagemath-repl
3
- Version: 10.5.43
3
+ Version: 10.6.1rc2
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.9
28
+ Requires-Python: <3.14,>=3.10
30
29
  Description-Content-Type: text/x-rst
31
- Requires-Dist: passagemath-objects~=10.5.43.0
32
- Requires-Dist: passagemath-environment~=10.5.43.0
30
+ Requires-Dist: passagemath-objects==10.6.1rc2
31
+ Requires-Dist: passagemath-environment==10.6.1rc2
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.9.x-3.12.x.
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,5 +1,5 @@
1
- passagemath-objects~=10.5.43.0
2
- passagemath-environment~=10.5.43.0
1
+ passagemath-objects==10.6.1rc2
2
+ passagemath-environment==10.6.1rc2
3
3
  ipykernel>=5.2.1
4
4
  ipython>=7.13.0
5
5
  ipywidgets>=7.5.1
@@ -2,8 +2,8 @@
2
2
  [build-system]
3
3
  # Minimum requirements for the build system to execute.
4
4
  requires = [
5
- 'passagemath-setup ~= 10.5.43.0',
6
- 'passagemath-environment ~= 10.5.43.0',
5
+ 'passagemath-setup == 10.6.1rc2',
6
+ 'passagemath-environment == 10.6.1rc2',
7
7
  'setuptools >= 77.0.0',
8
8
  ]
9
9
  build-backend = "setuptools.build_meta"
@@ -12,8 +12,8 @@ build-backend = "setuptools.build_meta"
12
12
  name = "passagemath-repl"
13
13
  description = "passagemath: IPython kernel, Sage preparser, doctester"
14
14
  dependencies = [
15
- 'passagemath-objects ~= 10.5.43.0',
16
- 'passagemath-environment ~= 10.5.43.0',
15
+ 'passagemath-objects == 10.6.1rc2',
16
+ 'passagemath-environment == 10.6.1rc2',
17
17
  'ipykernel >=5.2.1',
18
18
  'ipython >=7.13.0',
19
19
  'ipywidgets >=7.5.1',
@@ -34,7 +34,6 @@ classifiers = [
34
34
  "Operating System :: POSIX",
35
35
  "Operating System :: MacOS :: MacOS X",
36
36
  "Programming Language :: Python :: 3 :: Only",
37
- "Programming Language :: Python :: 3.9",
38
37
  "Programming Language :: Python :: 3.10",
39
38
  "Programming Language :: Python :: 3.11",
40
39
  "Programming Language :: Python :: 3.12",
@@ -42,7 +41,7 @@ classifiers = [
42
41
  "Programming Language :: Python :: Implementation :: CPython",
43
42
  "Topic :: Scientific/Engineering :: Mathematics",
44
43
  ]
45
- requires-python = ">=3.9, <3.14"
44
+ requires-python = ">=3.10, <3.14"
46
45
 
47
46
  [project.urls]
48
47
  "release notes" = "https://github.com/passagemath/passagemath/releases"
@@ -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
 
@@ -142,7 +142,7 @@ def _make_parser():
142
142
  choices=["DEFAULT", "ALWAYS", "NEVER"],
143
143
  default=0,
144
144
  action=GCAction,
145
- help="control garbarge collection "
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
@@ -33,28 +33,31 @@ AUTHORS:
33
33
  # ****************************************************************************
34
34
 
35
35
  import importlib
36
- import random
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 .sources import FileDocTestSource, DictAsObject, get_basename
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 optionaltag_regex.search(h):
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 optionaltag_regex.search(o[1:]):
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 optionaltag_regex.search(o):
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 optionaltag_regex.search(o):
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 SAGE_SRC, SAGE_DOC_SRC, SAGE_ROOT, SAGE_ROOT_GIT, SAGE_DOC
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
- else:
1048
- if not skipfile(path, bool(self.options.optional),
1049
- if_installed=self.options.if_installed, log=self.log): # log when directly specified filenames are skipped
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 SAGE_ROOT_GIT, SAGE_LOCAL, SAGE_VENV
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', 'NoColor')
1693
+ IP.run_line_magic('colors', 'nocolor')
1692
1694
  old_config_color = IP.config.TerminalInteractiveShell.colors
1693
- IP.config.TerminalInteractiveShell.colors = 'NoColor'
1695
+ IP.config.TerminalInteractiveShell.colors = 'nocolor'
1694
1696
 
1695
1697
  try:
1696
1698
  DC.run()
@@ -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
- # http://www.gnu.org/licenses/
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 external_software() -> list[str]:
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 = external_software()
407
+ external_software: list[str] = _external_software()
404
408
 
405
409
 
406
410
  class AvailableSoftware:
@@ -33,15 +33,15 @@ communicates with its surroundings::
33
33
  exit f -> None
34
34
  """
35
35
 
36
- #*****************************************************************************
36
+ # ****************************************************************************
37
37
  # Copyright (C) 2014-2015 Martin von Gagern <Martin.vGagern@gmx.net>
38
38
  #
39
39
  # This program is free software: you can redistribute it and/or modify
40
40
  # it under the terms of the GNU General Public License as published by
41
41
  # the Free Software Foundation, either version 2 of the License, or
42
42
  # (at your option) any later version.
43
- # http://www.gnu.org/licenses/
44
- #*****************************************************************************
43
+ # https://www.gnu.org/licenses/
44
+ # ****************************************************************************
45
45
 
46
46
  from functools import wraps
47
47
 
@@ -50,6 +50,15 @@ def reproducible_repr(val):
50
50
  r"""
51
51
  String representation of an object in a reproducible way.
52
52
 
53
+ .. NOTE::
54
+
55
+ This function is deprecated, in most cases it suffices to use
56
+ the automatic sorting of dictionary keys and set items by a displayhook.
57
+ See :func:`sage.doctest.forker.init_sage`.
58
+ If used in a format string, use :func:`IPython.lib.pretty.pretty`.
59
+ In the rare cases where the ordering of the elements is not reliable
60
+ or transitive, ``sorted`` with a sane key can be used instead.
61
+
53
62
  This tries to ensure that the returned string does not depend on
54
63
  factors outside the control of the doctest.
55
64
  One example is the order of elements in a hash-based structure.
@@ -74,6 +83,7 @@ def reproducible_repr(val):
74
83
 
75
84
  EXAMPLES::
76
85
 
86
+ sage: # not tested (test fails because of deprecation warning)
77
87
  sage: from sage.doctest.fixtures import reproducible_repr
78
88
  sage: print(reproducible_repr(set(["a", "c", "b", "d"])))
79
89
  set(['a', 'b', 'c', 'd'])
@@ -85,7 +95,20 @@ def reproducible_repr(val):
85
95
  {'2': 'two', 1: 'one', 3.00000000000000: 'three'}
86
96
  sage: print(reproducible_repr("foo\nbar")) # demonstrate default case
87
97
  'foo\nbar'
98
+
99
+ TESTS:
100
+
101
+ Ensures deprecation warning is printed out::
102
+
103
+ sage: from sage.doctest.fixtures import reproducible_repr
104
+ sage: print(reproducible_repr(set(["a", "c", "b", "d"])))
105
+ doctest:warning...
106
+ DeprecationWarning: reproducible_repr is deprecated, see its documentation for details
107
+ See https://github.com/sagemath/sage/issues/39420 for details.
108
+ set(['a', 'b', 'c', 'd'])
88
109
  """
110
+ from sage.misc.superseded import deprecation
111
+ deprecation(39420, 'reproducible_repr is deprecated, see its documentation for details')
89
112
 
90
113
  def sorted_pairs(iterable, pairs=False):
91
114
  # We don't know whether container data structures will have
@@ -181,22 +204,23 @@ class AttributeAccessTracerHelper:
181
204
  4
182
205
  """
183
206
  val = getattr(self.delegate, name)
207
+ from IPython.lib.pretty import pretty
184
208
  if callable(val) and name not in self.delegate.__dict__:
185
209
  @wraps(val)
186
210
  def wrapper(*args, **kwds):
187
- arglst = [reproducible_repr(arg) for arg in args]
188
- arglst.extend("{}={}".format(k, reproducible_repr(v))
211
+ arglst = [pretty(arg) for arg in args]
212
+ arglst.extend("{}={}".format(k, pretty(v))
189
213
  for k, v in sorted(kwds.items()))
190
214
  res = val(*args, **kwds)
191
215
  print("{}call {}({}) -> {}"
192
216
  .format(self.prefix, name, ", ".join(arglst),
193
- reproducible_repr(res)))
217
+ pretty(res)))
194
218
  return res
195
219
  return wrapper
196
220
  else:
197
221
  if self.reads:
198
222
  print("{}read {} = {}".format(self.prefix, name,
199
- reproducible_repr(val)))
223
+ pretty(val)))
200
224
  return val
201
225
 
202
226
  def set(self, name, val):
@@ -218,8 +242,9 @@ class AttributeAccessTracerHelper:
218
242
  sage: foo.x
219
243
  2
220
244
  """
245
+ from IPython.lib.pretty import pretty
221
246
  print("{}write {} = {}".format(self.prefix, name,
222
- reproducible_repr(val)))
247
+ pretty(val)))
223
248
  setattr(self.delegate, name, val)
224
249
 
225
250
 
@@ -373,11 +398,12 @@ def trace_method(obj, meth, **kwds):
373
398
 
374
399
  @wraps(f)
375
400
  def g(*args, **kwds):
376
- arglst = [reproducible_repr(arg) for arg in args]
377
- arglst.extend("{}={}".format(k, reproducible_repr(v))
401
+ from IPython.lib.pretty import pretty
402
+ arglst = [pretty(arg) for arg in args]
403
+ arglst.extend("{}={}".format(k, pretty(v))
378
404
  for k, v in sorted(kwds.items()))
379
405
  print("enter {}({})".format(meth, ", ".join(arglst)))
380
406
  res = f(t, *args, **kwds)
381
- print("exit {} -> {}".format(meth, reproducible_repr(res)))
407
+ print("exit {} -> {}".format(meth, pretty(res)))
382
408
  return res
383
409
  setattr(obj, meth, g)