passagemath-environment 10.4.58__tar.gz → 10.5.1__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 (117) hide show
  1. {passagemath_environment-10.4.58/passagemath_environment.egg-info → passagemath_environment-10.5.1}/PKG-INFO +5 -5
  2. passagemath_environment-10.5.1/VERSION.txt +1 -0
  3. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage +1 -1
  4. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-env +5 -2
  5. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-fixdoctests +13 -11
  6. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-version.sh +3 -3
  7. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1/passagemath_environment.egg-info}/PKG-INFO +5 -5
  8. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/passagemath_environment.egg-info/SOURCES.txt +5 -0
  9. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/passagemath_environment.egg-info/requires.txt +4 -4
  10. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/pyproject.toml +4 -4
  11. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/env.py +14 -4
  12. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/cddlib.py +1 -1
  13. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/databases.py +13 -4
  14. passagemath_environment-10.5.1/sage/features/dot2tex.py +42 -0
  15. passagemath_environment-10.5.1/sage/features/eclib.py +46 -0
  16. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/ecm.py +9 -5
  17. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/fricas.py +10 -4
  18. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/frobby.py +9 -5
  19. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/gfan.py +10 -5
  20. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/giac.py +9 -4
  21. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/graph_generators.py +3 -3
  22. passagemath_environment-10.5.1/sage/features/info.py +30 -0
  23. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/macaulay2.py +8 -4
  24. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/mip_backends.py +21 -1
  25. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/msolve.py +7 -3
  26. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/qepcad.py +7 -3
  27. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/rubiks.py +4 -3
  28. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/sagemath.py +6 -6
  29. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/sat.py +3 -3
  30. passagemath_environment-10.5.1/sage/features/sloane_database.py +59 -0
  31. passagemath_environment-10.5.1/sage/features/sympow.py +48 -0
  32. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/misc/viewer.py +2 -1
  33. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/version.py +3 -3
  34. passagemath_environment-10.4.58/VERSION.txt +0 -1
  35. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/MANIFEST.in +0 -0
  36. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/README.rst +0 -0
  37. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/math-readline +0 -0
  38. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-cachegrind +0 -0
  39. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-callgrind +0 -0
  40. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-cleaner +0 -0
  41. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-coverage +0 -0
  42. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-cython +0 -0
  43. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-env-config.in +0 -0
  44. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-eval +0 -0
  45. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-grep +0 -0
  46. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-grepdoc +0 -0
  47. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-inline-fortran +0 -0
  48. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-ipynb2rst +0 -0
  49. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-ipython +0 -0
  50. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-list-packages +0 -0
  51. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-massif +0 -0
  52. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-notebook +0 -0
  53. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-num-threads.py +0 -0
  54. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-omega +0 -0
  55. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-preparse +0 -0
  56. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-python +0 -0
  57. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-run +0 -0
  58. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-run-cython +0 -0
  59. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-runtests +0 -0
  60. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-src-env-config.in +0 -0
  61. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-startuptime.py +0 -0
  62. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-update-version +0 -0
  63. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-valgrind +0 -0
  64. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/bin/sage-venv-config +0 -0
  65. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/passagemath_environment.egg-info/dependency_links.txt +0 -0
  66. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/passagemath_environment.egg-info/top_level.txt +0 -0
  67. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/pyproject.toml.m4 +0 -0
  68. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/requirements-editable.txt.m4 +0 -0
  69. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/requirements.txt.m4 +0 -0
  70. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/all__sagemath_environment.py +0 -0
  71. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/__init__.py +0 -0
  72. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/all.py +0 -0
  73. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/bliss.py +0 -0
  74. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/coxeter3.py +0 -0
  75. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/csdp.py +0 -0
  76. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/cython.py +0 -0
  77. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/dvipng.py +0 -0
  78. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/ffmpeg.py +0 -0
  79. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/four_ti_2.py +0 -0
  80. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/gap.py +0 -0
  81. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/graphviz.py +0 -0
  82. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/igraph.py +0 -0
  83. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/imagemagick.py +0 -0
  84. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/interfaces.py +0 -0
  85. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/internet.py +0 -0
  86. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/jmol.py +0 -0
  87. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/join_feature.py +0 -0
  88. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/kenzo.py +0 -0
  89. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/latex.py +0 -0
  90. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/latte.py +0 -0
  91. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/lrs.py +0 -0
  92. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/mcqd.py +0 -0
  93. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/meataxe.py +0 -0
  94. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/nauty.py +0 -0
  95. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/normaliz.py +0 -0
  96. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/palp.py +0 -0
  97. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/pandoc.py +0 -0
  98. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/pdf2svg.py +0 -0
  99. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/phitigra.py +0 -0
  100. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/pkg_systems.py +0 -0
  101. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/polymake.py +0 -0
  102. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/poppler.py +0 -0
  103. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/singular.py +0 -0
  104. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/sirocco.py +0 -0
  105. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/sphinx.py +0 -0
  106. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/standard.py +0 -0
  107. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/symengine_py.py +0 -0
  108. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/tdlib.py +0 -0
  109. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/threejs.py +0 -0
  110. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/features/topcom.py +0 -0
  111. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/misc/all__sagemath_environment.py +0 -0
  112. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/misc/package.py +0 -0
  113. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/misc/package_dir.py +0 -0
  114. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/sage/misc/temporary_file.py +0 -0
  115. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/setup.cfg +0 -0
  116. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/setup.py +0 -0
  117. {passagemath_environment-10.4.58 → passagemath_environment-10.5.1}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: passagemath-environment
3
- Version: 10.4.58
3
+ Version: 10.5.1
4
4
  Summary: passagemath: System and software environment
5
5
  Author-email: The Sage Developers <sage-support@googlegroups.com>
6
6
  Maintainer: Matthias Köppe, passagemath contributors
@@ -29,11 +29,11 @@ Classifier: Topic :: Scientific/Engineering :: Mathematics
29
29
  Requires-Python: <3.13,>=3.9
30
30
  Description-Content-Type: text/x-rst
31
31
  Provides-Extra: conf
32
- Requires-Dist: passagemath-conf~=10.4.58.0; extra == "conf"
32
+ Requires-Dist: passagemath-conf~=10.5.1.0; extra == "conf"
33
33
  Provides-Extra: docbuild
34
- Requires-Dist: passagemath-docbuild~=10.4.58.0; extra == "docbuild"
34
+ Requires-Dist: passagemath-docbuild~=10.5.1.0; extra == "docbuild"
35
35
  Provides-Extra: sage
36
- Requires-Dist: passagemath-standard~=10.4.58.0; extra == "sage"
36
+ Requires-Dist: passagemath-standard~=10.5.1.0; extra == "sage"
37
37
  Provides-Extra: cython
38
38
  Requires-Dist: cython!=3.0.3,<4.0,>=3.0; extra == "cython"
39
39
  Requires-Dist: cython<3.1.0,>=3.0.8; extra == "cython"
@@ -44,7 +44,7 @@ Requires-Dist: rst2ipynb>=0.2.2; extra == "rst2ipynb"
44
44
  Provides-Extra: tox
45
45
  Requires-Dist: tox>=4.11; extra == "tox"
46
46
  Provides-Extra: sws2rst
47
- Requires-Dist: passagemath-sws2rst~=10.4.58.0; extra == "sws2rst"
47
+ Requires-Dist: passagemath-sws2rst~=10.5.1.0; extra == "sws2rst"
48
48
 
49
49
  =========================================================================
50
50
  passagemath: System and software environment
@@ -0,0 +1 @@
1
+ 10.5.1
@@ -173,7 +173,7 @@ if [ -x "${SELF}-venv-config" ]; then
173
173
  if [ -z "$SAGE_VENV" ]; then
174
174
  export SAGE_VENV=$("${SELF}-venv-config" SAGE_VENV)
175
175
  fi
176
- SAGE_WHEELS_PATH=$("${SELF}-venv-config" SAGE_WHEELS_PATH)
176
+ SAGE_WHEELS_PATH=$("${SELF}-venv-config" SAGE_WHEELS_PATH 2>/dev/null)
177
177
  fi
178
178
  if [ -f "${SELF}-env-config" ]; then
179
179
  # As of Issue #22731, sage-env-config is optional.
@@ -386,12 +386,15 @@ if [ -n "$SAGE_LOCAL" ]; then
386
386
  # "Toolchains/XcodeDefault.xctoolchain/usr/bin/". (See #37237.)
387
387
  if [ -z "$LD" ]; then
388
388
  # Running xcode-select on a system with no toolchain writes an
389
- # error message to stderr, so redirect stderr to /dev/null.
389
+ # error message to stderr, so redirect stderr to /dev/null.
390
390
  XCODE_PATH=$(/usr/bin/xcode-select -p 2> /dev/null)
391
391
  if [ -n $XCODE_PATH ]; then
392
392
  if [ -x "$XCODE_PATH/usr/bin/ld-classic" -o \
393
393
  -x "$XCODE_PATH/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld-classic" ]; then
394
- LDFLAGS="$LDFLAGS -Wl,-ld_classic"
394
+ # Add -ld_classic only if -ld_classic is not deprecated.
395
+ if [ -z "$(ld -ld_classic 2>&1 | grep 'ld_classic is deprecated')" ]; then
396
+ LDFLAGS="$LDFLAGS -Wl,-ld_classic"
397
+ fi
395
398
  fi
396
399
  else
397
400
  # On a macOS system with no toolchain we don't want this script
@@ -56,6 +56,8 @@ parser.add_argument("--distribution", type=str, default=[], action='append',
56
56
  help="distribution package to test, e.g., 'sagemath-graphs', 'sagemath-combinat[modules]'; sets defaults for --venv and --environment. This option can be repeated to test several distributions")
57
57
  parser.add_argument("--fixed-point", default=False, action="store_true",
58
58
  help="whether to repeat until stable")
59
+ parser.add_argument("--toxenv", type=str, default='sagepython-sagewheels-nopypi-norequirements',
60
+ help="tox environment name where 'sage -t' is to be run")
59
61
  parser.add_argument("--venv", type=str, default='',
60
62
  help="directory name of a venv where 'sage -t' is to be run")
61
63
  parser.add_argument("--environment", type=str, default='',
@@ -95,10 +97,10 @@ def plain_distribution_and_extras(distribution):
95
97
  m = re.fullmatch(r'([^[]*)(\[([^]]*)\])?', distribution)
96
98
  return m.group(1), m.group(3)
97
99
 
98
- def default_venv_environment_from_distribution(distribution):
100
+ def default_venv_environment_from_distribution(distribution, toxenv):
99
101
  if distribution:
100
102
  plain_distribution, extras = plain_distribution_and_extras(distribution)
101
- tox_env_name = 'sagepython-sagewheels-nopypi-norequirements'
103
+ tox_env_name = toxenv or 'sagepython-sagewheels-nopypi-norequirements'
102
104
  if extras:
103
105
  tox_env_name += '-' + extras.replace(',', '-')
104
106
  default_venv = os.path.join(SAGE_ROOT, 'pkgs', plain_distribution, '.tox', tox_env_name)
@@ -113,16 +115,16 @@ def default_venv_environment_from_distribution(distribution):
113
115
 
114
116
 
115
117
  @cached_function
116
- def venv_explainer(distribution, venv=None, environment=None):
118
+ def venv_explainer(distribution, venv=None, environment=None, toxenv=None):
117
119
  venv_explainers = []
118
- default_venv, default_environment = default_venv_environment_from_distribution(distribution)
120
+ default_venv, default_environment = default_venv_environment_from_distribution(distribution, toxenv)
119
121
  if venv:
120
122
  if m := re.search(f'pkgs/(sage[^/]*)/[.]tox/((sagepython|sagewheels|nopypi|norequirements)-*)*([^/]*)$',
121
123
  venv):
122
124
  distribution, extras = m.group(1), m.group(4)
123
125
  if extras:
124
126
  distribution += '[' + extras.replace('-', ',') + ']'
125
- default_venv_given_distribution, default_environment_given_distribution = default_venv_environment_from_distribution(distribution)
127
+ default_venv_given_distribution, default_environment_given_distribution = default_venv_environment_from_distribution(distribution, toxenv)
126
128
 
127
129
  if (Path(venv).resolve() == Path(default_venv_given_distribution).resolve()
128
130
  or not environment or environment == default_environment_given_distribution):
@@ -557,11 +559,11 @@ def process_grouped_blocks(grouped_iterator, distribution=None, venv=None, envir
557
559
  print(f"{count:6} {' '.join(sorted(tags)) or '(untagged)'}")
558
560
 
559
561
 
560
- def fix_with_distribution(file_set, distribution=None, verbose=False):
562
+ def fix_with_distribution(file_set, distribution=None, toxenv=None, verbose=False):
561
563
  if verbose:
562
564
  print("#" * 78)
563
565
  print(f"sage-fixdoctests: Fixing with --distribution={shlex.quote(distribution)}")
564
- default_venv, default_environment = default_venv_environment_from_distribution(distribution)
566
+ default_venv, default_environment = default_venv_environment_from_distribution(distribution, toxenv)
565
567
  venv = args.venv or default_venv
566
568
  environment = args.environment or default_environment
567
569
  file_set_to_process = sorted(file_set)
@@ -641,10 +643,10 @@ if __name__ == "__main__":
641
643
  if args.no_test:
642
644
  pass
643
645
  elif len(args.distribution) == 1 and not args.fixed_point:
644
- fix_with_distribution(set(unprocessed_files), args.distribution[0])
646
+ fix_with_distribution(set(unprocessed_files), args.distribution[0], toxenv=args.toxenv)
645
647
  else:
646
648
  for distribution, file_set in venv_files.items():
647
- fix_with_distribution(file_set, distribution, verbose=True)
649
+ fix_with_distribution(file_set, distribution, verbose=True, toxenv=args.toxenv)
648
650
  if args.fixed_point:
649
651
  if args.probe:
650
652
  print(f"sage-fixdoctests: Turning off --probe for the following iterations")
@@ -657,7 +659,7 @@ if __name__ == "__main__":
657
659
  if not file_set:
658
660
  break
659
661
  while file_set:
660
- fix_with_distribution(file_set, distribution, verbose=True)
662
+ fix_with_distribution(file_set, distribution, verbose=True, toxenv=args.toxenv)
661
663
  # Immediately re-run with the same distribution to continue chains of
662
664
  # "NameError" / "variable was set only in doctest" fixes
663
665
 
@@ -679,7 +681,7 @@ if __name__ == "__main__":
679
681
  if distribution == '':
680
682
  continue
681
683
  plain_distribution, extras = plain_distribution_and_extras(distribution)
682
- default_venv, _ = default_venv_environment_from_distribution(distribution)
684
+ default_venv, _ = default_venv_environment_from_distribution(distribution, args.toxenv)
683
685
  venv = args.venv or default_venv
684
686
  try:
685
687
  stats_filename = os.path.join(default_venv, '.sage/timings2.json')
@@ -4,6 +4,6 @@
4
4
  # which stops "setup.py develop" from rewriting it as a Python file.
5
5
  :
6
6
  # This file is auto-generated by the sage-update-version script, do not edit!
7
- SAGE_VERSION='10.4.58'
8
- SAGE_RELEASE_DATE='2024-11-11'
9
- SAGE_VERSION_BANNER='passagemath version 10.4.58, Release Date: 2024-11-11'
7
+ SAGE_VERSION='10.5.1'
8
+ SAGE_RELEASE_DATE='2024-12-05'
9
+ SAGE_VERSION_BANNER='passagemath version 10.5.1, Release Date: 2024-12-05'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: passagemath-environment
3
- Version: 10.4.58
3
+ Version: 10.5.1
4
4
  Summary: passagemath: System and software environment
5
5
  Author-email: The Sage Developers <sage-support@googlegroups.com>
6
6
  Maintainer: Matthias Köppe, passagemath contributors
@@ -29,11 +29,11 @@ Classifier: Topic :: Scientific/Engineering :: Mathematics
29
29
  Requires-Python: <3.13,>=3.9
30
30
  Description-Content-Type: text/x-rst
31
31
  Provides-Extra: conf
32
- Requires-Dist: passagemath-conf~=10.4.58.0; extra == "conf"
32
+ Requires-Dist: passagemath-conf~=10.5.1.0; extra == "conf"
33
33
  Provides-Extra: docbuild
34
- Requires-Dist: passagemath-docbuild~=10.4.58.0; extra == "docbuild"
34
+ Requires-Dist: passagemath-docbuild~=10.5.1.0; extra == "docbuild"
35
35
  Provides-Extra: sage
36
- Requires-Dist: passagemath-standard~=10.4.58.0; extra == "sage"
36
+ Requires-Dist: passagemath-standard~=10.5.1.0; extra == "sage"
37
37
  Provides-Extra: cython
38
38
  Requires-Dist: cython!=3.0.3,<4.0,>=3.0; extra == "cython"
39
39
  Requires-Dist: cython<3.1.0,>=3.0.8; extra == "cython"
@@ -44,7 +44,7 @@ Requires-Dist: rst2ipynb>=0.2.2; extra == "rst2ipynb"
44
44
  Provides-Extra: tox
45
45
  Requires-Dist: tox>=4.11; extra == "tox"
46
46
  Provides-Extra: sws2rst
47
- Requires-Dist: passagemath-sws2rst~=10.4.58.0; extra == "sws2rst"
47
+ Requires-Dist: passagemath-sws2rst~=10.5.1.0; extra == "sws2rst"
48
48
 
49
49
  =========================================================================
50
50
  passagemath: System and software environment
@@ -55,7 +55,9 @@ sage/features/coxeter3.py
55
55
  sage/features/csdp.py
56
56
  sage/features/cython.py
57
57
  sage/features/databases.py
58
+ sage/features/dot2tex.py
58
59
  sage/features/dvipng.py
60
+ sage/features/eclib.py
59
61
  sage/features/ecm.py
60
62
  sage/features/ffmpeg.py
61
63
  sage/features/four_ti_2.py
@@ -68,6 +70,7 @@ sage/features/graph_generators.py
68
70
  sage/features/graphviz.py
69
71
  sage/features/igraph.py
70
72
  sage/features/imagemagick.py
73
+ sage/features/info.py
71
74
  sage/features/interfaces.py
72
75
  sage/features/internet.py
73
76
  sage/features/jmol.py
@@ -96,9 +99,11 @@ sage/features/sagemath.py
96
99
  sage/features/sat.py
97
100
  sage/features/singular.py
98
101
  sage/features/sirocco.py
102
+ sage/features/sloane_database.py
99
103
  sage/features/sphinx.py
100
104
  sage/features/standard.py
101
105
  sage/features/symengine_py.py
106
+ sage/features/sympow.py
102
107
  sage/features/tdlib.py
103
108
  sage/features/threejs.py
104
109
  sage/features/topcom.py
@@ -1,13 +1,13 @@
1
1
 
2
2
  [conf]
3
- passagemath-conf~=10.4.58.0
3
+ passagemath-conf~=10.5.1.0
4
4
 
5
5
  [cython]
6
6
  cython!=3.0.3,<4.0,>=3.0
7
7
  cython<3.1.0,>=3.0.8
8
8
 
9
9
  [docbuild]
10
- passagemath-docbuild~=10.4.58.0
10
+ passagemath-docbuild~=10.5.1.0
11
11
 
12
12
  [pytest]
13
13
  pytest
@@ -16,10 +16,10 @@ pytest
16
16
  rst2ipynb>=0.2.2
17
17
 
18
18
  [sage]
19
- passagemath-standard~=10.4.58.0
19
+ passagemath-standard~=10.5.1.0
20
20
 
21
21
  [sws2rst]
22
- passagemath-sws2rst~=10.4.58.0
22
+ passagemath-sws2rst~=10.5.1.0
23
23
 
24
24
  [tox]
25
25
  tox>=4.11
@@ -46,14 +46,14 @@ documentation = "https://doc.sagemath.org"
46
46
  "tracker" = "https://github.com/passagemath/passagemath/issues"
47
47
 
48
48
  [project.optional-dependencies]
49
- conf = ['passagemath-conf ~= 10.4.58.0',] # sage.env can optionally use sage_conf
50
- docbuild = ['passagemath-docbuild ~= 10.4.58.0',] # For "sage --docbuild"
51
- sage = ['passagemath-standard ~= 10.4.58.0',] # For "sage", "sage -t", ...
49
+ conf = ['passagemath-conf ~= 10.5.1.0',] # sage.env can optionally use sage_conf
50
+ docbuild = ['passagemath-docbuild ~= 10.5.1.0',] # For "sage --docbuild"
51
+ sage = ['passagemath-standard ~= 10.5.1.0',] # For "sage", "sage -t", ...
52
52
  cython = ['cython >=3.0, != 3.0.3, <4.0', 'cython >=3.0.8,<3.1.0',] # For "sage --cython"
53
53
  pytest = ['pytest',] # For "sage --pytest"
54
54
  rst2ipynb = ['rst2ipynb >=0.2.2',] # For "sage --rst2ipynb"
55
55
  tox = ['tox >= 4.11',] # For "sage --tox"
56
- sws2rst = ['passagemath-sws2rst ~= 10.4.58.0',] # For "sage --sws2rst"
56
+ sws2rst = ['passagemath-sws2rst ~= 10.5.1.0',] # For "sage --sws2rst"
57
57
 
58
58
  [project.readme]
59
59
  file = "README.rst"
@@ -36,6 +36,7 @@ AUTHORS:
36
36
 
37
37
  from typing import Optional
38
38
  import sage
39
+ import platform
39
40
  import os
40
41
  import socket
41
42
  import sys
@@ -165,7 +166,6 @@ def var(key: str, *fallbacks: Optional[str], force: bool = False) -> Optional[st
165
166
 
166
167
 
167
168
  # system info
168
- UNAME = var("UNAME", os.uname()[0])
169
169
  HOSTNAME = var("HOSTNAME", socket.gethostname())
170
170
  LOCAL_IDENTIFIER = var("LOCAL_IDENTIFIER", "{}.{}".format(HOSTNAME, os.getpid()))
171
171
 
@@ -207,12 +207,22 @@ SAGE_STARTUP_FILE = var("SAGE_STARTUP_FILE", join(DOT_SAGE, "init.sage"))
207
207
  SAGE_ARCHFLAGS = var("SAGE_ARCHFLAGS", "unset")
208
208
  SAGE_PKG_CONFIG_PATH = var("SAGE_PKG_CONFIG_PATH")
209
209
 
210
+ try:
211
+ import sage_wheels
212
+ except ImportError:
213
+ _sage_wheels_path = []
214
+ else:
215
+ _sage_wheels_path = sage_wheels.__path__
216
+
210
217
  # colon-separated search path for databases.
211
218
  SAGE_DATA_PATH = var("SAGE_DATA_PATH",
212
219
  os.pathsep.join(filter(None, [
213
- join(DOT_SAGE, "db"),
214
- join(SAGE_SHARE, "sagemath"),
215
- SAGE_SHARE,
220
+ join(DOT_SAGE, "db"),
221
+ ] + [
222
+ join(p, "share") for p in _sage_wheels_path
223
+ ] + [
224
+ join(SAGE_SHARE, "sagemath"),
225
+ SAGE_SHARE,
216
226
  ])))
217
227
 
218
228
  # database directories, the default is to search in SAGE_DATA_PATH
@@ -23,7 +23,7 @@ class CddExecutable(Executable):
23
23
  EXAMPLES::
24
24
 
25
25
  sage: from sage.features.cddlib import CddExecutable
26
- sage: CddExecutable().is_present()
26
+ sage: CddExecutable().is_present() # needs cddexec_gmp
27
27
  FeatureTestResult('cddexec_gmp', True)
28
28
  """
29
29
  def __init__(self, name='cddexec_gmp'):
@@ -69,7 +69,7 @@ class DatabaseCremona(StaticFile):
69
69
  from sage.env import CREMONA_MINI_DATA_DIR, CREMONA_LARGE_DATA_DIR
70
70
  CREMONA_DATA_DIRS = set([CREMONA_MINI_DATA_DIR, CREMONA_LARGE_DATA_DIR])
71
71
  CREMONA_DATA_DIRS.discard(None)
72
- search_path = CREMONA_DATA_DIRS or sage_data_path("cremona")
72
+ search_path = list(CREMONA_DATA_DIRS) + sage_data_path("cremona")
73
73
 
74
74
  spkg = "database_cremona_ellcurve"
75
75
  spkg_type = "optional"
@@ -106,7 +106,10 @@ class DatabaseEllcurves(StaticFile):
106
106
  True
107
107
  """
108
108
  from sage.env import ELLCURVE_DATA_DIR
109
- search_path = ELLCURVE_DATA_DIR or sage_data_path("ellcurves")
109
+ search_path = []
110
+ if ELLCURVE_DATA_DIR is not None:
111
+ search_path.append(ELLCURVE_DATA_DIR)
112
+ search_path.extend(sage_data_path("ellcurves"))
110
113
 
111
114
  StaticFile.__init__(self, "database_ellcurves",
112
115
  filename='rank0',
@@ -136,7 +139,10 @@ class DatabaseGraphs(StaticFile):
136
139
  True
137
140
  """
138
141
  from sage.env import GRAPHS_DATA_DIR
139
- search_path = GRAPHS_DATA_DIR or sage_data_path("graphs")
142
+ search_path = []
143
+ if GRAPHS_DATA_DIR is not None:
144
+ search_path.append(GRAPHS_DATA_DIR)
145
+ search_path.extend(sage_data_path("graphs"))
140
146
 
141
147
  StaticFile.__init__(self, "database_graphs",
142
148
  filename='graphs.db',
@@ -277,7 +283,10 @@ class DatabaseReflexivePolytopes(StaticFile):
277
283
  'Hodge4d'
278
284
  """
279
285
  from sage.env import POLYTOPE_DATA_DIR
280
- search_path = POLYTOPE_DATA_DIR or sage_data_path("reflexive_polytopes")
286
+ search_path = []
287
+ if POLYTOPE_DATA_DIR is not None:
288
+ search_path.append(POLYTOPE_DATA_DIR)
289
+ search_path.extend(sage_data_path("reflexive_polytopes"))
281
290
 
282
291
  dirname = "Full3d"
283
292
  if name == "polytopes_db_4d":
@@ -0,0 +1,42 @@
1
+ # sage_setup: distribution = sagemath-environment
2
+ r"""
3
+ Check for ``dot2tex``
4
+ """
5
+
6
+ # *****************************************************************************
7
+ # Copyright (C) 2024 Kwankyu Lee
8
+ #
9
+ # Distributed under the terms of the GNU General Public License (GPL)
10
+ # as published by the Free Software Foundation; either version 2 of
11
+ # the License, or (at your option) any later version.
12
+ # https://www.gnu.org/licenses/
13
+ # *****************************************************************************
14
+
15
+ from . import PythonModule
16
+
17
+
18
+ class dot2tex(PythonModule):
19
+ r"""
20
+ A :class:`sage.features.Feature` describing the presence of :ref:`dot2tex <spkg_dot2tex>`.
21
+
22
+ dot2tex is provided by an optional package in the Sage distribution.
23
+
24
+ EXAMPLES::
25
+
26
+ sage: from sage.features.dot2tex import dot2tex
27
+ sage: dot2tex().is_present() # optional - dot2tex
28
+ FeatureTestResult('dot2tex', True)
29
+ """
30
+ def __init__(self):
31
+ r"""
32
+ TESTS::
33
+
34
+ sage: from sage.features.dot2tex import dot2tex
35
+ sage: isinstance(dot2tex(), dot2tex)
36
+ True
37
+ """
38
+ PythonModule.__init__(self, 'dot2tex', spkg='dot2tex')
39
+
40
+
41
+ def all_features():
42
+ return [dot2tex()]
@@ -0,0 +1,46 @@
1
+ # sage_setup: distribution = sagemath-environment
2
+ r"""
3
+ Feature for testing the presence of eclib
4
+ """
5
+
6
+ # *****************************************************************************
7
+ # Copyright (C) 2024 Matthias Koeppe
8
+ #
9
+ # Distributed under the terms of the GNU General Public License (GPL)
10
+ # as published by the Free Software Foundation; either version 2 of
11
+ # the License, or (at your option) any later version.
12
+ # https://www.gnu.org/licenses/
13
+ # *****************************************************************************
14
+
15
+ import subprocess
16
+ from . import Executable, FeatureTestResult, PythonModule
17
+ from .join_feature import JoinFeature
18
+
19
+
20
+ class Mwrank(Executable):
21
+ r"""
22
+ A :class:`~sage.features.Feature` describing the presence of mwrank.
23
+
24
+ EXAMPLES::
25
+
26
+ sage: from sage.features.eclib import Mwrank
27
+ sage: Mwrank().is_present() # needs eclib
28
+ FeatureTestResult('mwrank', True)
29
+ """
30
+ def __init__(self):
31
+ r"""
32
+ TESTS::
33
+
34
+ sage: from sage.features.eclib import Mwrank
35
+ sage: isinstance(Mwrank(), Mwrank)
36
+ True
37
+ """
38
+ Executable.__init__(self, "mwrank", executable='mwrank',
39
+ spkg='eclib', type='standard')
40
+
41
+
42
+ def all_features():
43
+ return [JoinFeature("eclib",
44
+ (Mwrank(),
45
+ PythonModule('sage.libs.eclib')),
46
+ spkg='sagemath_eclib', type='standard')]
@@ -12,7 +12,8 @@ Feature for testing the presence of ``ecm`` or ``gmp-ecm``
12
12
  # https://www.gnu.org/licenses/
13
13
  # ****************************************************************************
14
14
 
15
- from . import Executable
15
+ from . import Executable, PythonModule
16
+ from .join_feature import JoinFeature
16
17
  from sage.env import SAGE_ECMBIN
17
18
 
18
19
 
@@ -23,8 +24,8 @@ class Ecm(Executable):
23
24
  EXAMPLES::
24
25
 
25
26
  sage: from sage.features.ecm import Ecm
26
- sage: Ecm().is_present()
27
- FeatureTestResult('ecm', True)
27
+ sage: Ecm().is_present() # needs ecm
28
+ FeatureTestResult('ecm_executable', True)
28
29
  """
29
30
  def __init__(self):
30
31
  r"""
@@ -34,9 +35,12 @@ class Ecm(Executable):
34
35
  sage: isinstance(Ecm(), Ecm)
35
36
  True
36
37
  """
37
- Executable.__init__(self, name='ecm', executable=SAGE_ECMBIN,
38
+ Executable.__init__(self, name='ecm_executable', executable=SAGE_ECMBIN,
38
39
  spkg='ecm', type='standard')
39
40
 
40
41
 
41
42
  def all_features():
42
- return [Ecm()]
43
+ return [JoinFeature("ecm",
44
+ (Ecm(),
45
+ PythonModule('sage.interfaces.ecm')),
46
+ spkg='sagemath_libecm', type='standard')]
@@ -14,7 +14,9 @@ Features for testing the presence of ``fricas``
14
14
 
15
15
  import os
16
16
  import subprocess
17
- from . import Executable, FeatureTestResult
17
+ from . import Executable, FeatureTestResult, PythonModule
18
+ from .join_feature import JoinFeature
19
+
18
20
 
19
21
  class FriCAS(Executable):
20
22
  r"""
@@ -24,7 +26,7 @@ class FriCAS(Executable):
24
26
 
25
27
  sage: from sage.features.fricas import FriCAS
26
28
  sage: FriCAS().is_present() # optional - fricas
27
- FeatureTestResult('fricas', True)
29
+ FeatureTestResult('fricas_executable', True)
28
30
  """
29
31
  def __init__(self):
30
32
  r"""
@@ -34,7 +36,7 @@ class FriCAS(Executable):
34
36
  sage: isinstance(FriCAS(), FriCAS)
35
37
  True
36
38
  """
37
- Executable.__init__(self, name='fricas', spkg='fricas',
39
+ Executable.__init__(self, name='fricas_executable', spkg='fricas',
38
40
  executable='fricas',
39
41
  url='https://fricas.github.io')
40
42
 
@@ -62,5 +64,9 @@ class FriCAS(Executable):
62
64
 
63
65
  return FeatureTestResult(self, True)
64
66
 
67
+
65
68
  def all_features():
66
- return [FriCAS()]
69
+ return [JoinFeature("fricas",
70
+ (FriCAS(),
71
+ PythonModule('sage.interfaces.fricas')),
72
+ spkg='sagemath_fricas')]
@@ -13,8 +13,9 @@ Feature for testing the presence of FROBBY
13
13
  # *****************************************************************************
14
14
 
15
15
  import subprocess
16
- from . import Executable
17
- from . import FeatureTestResult
16
+ from . import Executable, FeatureTestResult, PythonModule
17
+ from .join_feature import JoinFeature
18
+
18
19
 
19
20
  class Frobby(Executable):
20
21
  r"""
@@ -24,7 +25,7 @@ class Frobby(Executable):
24
25
 
25
26
  sage: from sage.features.frobby import Frobby
26
27
  sage: Frobby().is_present() # optional - frobby
27
- FeatureTestResult('frobby', True)
28
+ FeatureTestResult('frobby_executable', True)
28
29
  """
29
30
  def __init__(self):
30
31
  r"""
@@ -34,9 +35,12 @@ class Frobby(Executable):
34
35
  sage: isinstance(Frobby(), Frobby)
35
36
  True
36
37
  """
37
- Executable.__init__(self, "frobby", executable='frobby',
38
+ Executable.__init__(self, "frobby_executable", executable='frobby',
38
39
  spkg='frobby')
39
40
 
40
41
 
41
42
  def all_features():
42
- return [Frobby()]
43
+ return [JoinFeature("frobby",
44
+ (Frobby(),
45
+ PythonModule('sage.interfaces.frobby')),
46
+ spkg='sagemath_frobby')]
@@ -12,7 +12,8 @@ Features for testing the presence of ``gfan``
12
12
  # https://www.gnu.org/licenses/
13
13
  # *****************************************************************************
14
14
 
15
- from . import Executable
15
+ from . import Executable, PythonModule
16
+ from .join_feature import JoinFeature
16
17
 
17
18
 
18
19
  class GfanExecutable(Executable):
@@ -28,11 +29,15 @@ class GfanExecutable(Executable):
28
29
  True
29
30
  """
30
31
  if cmd is None:
31
- name = "gfan"
32
+ name = "gfan_executable"
33
+ executable = "gfan"
32
34
  else:
33
- name = f"gfan_{cmd}"
34
- Executable.__init__(self, name, executable=name, spkg='gfan', type='standard')
35
+ executable = name = f"gfan_{cmd}"
36
+ Executable.__init__(self, name, executable=executable, spkg='gfan', type='standard')
35
37
 
36
38
 
37
39
  def all_features():
38
- return [GfanExecutable()]
40
+ return [JoinFeature("gfan",
41
+ (GfanExecutable(),
42
+ PythonModule('sage.interfaces.gfan')),
43
+ spkg='sagemath_gfan', type='standard')]
@@ -3,7 +3,9 @@ r"""
3
3
  Feature for testing the presence of ``giac``
4
4
  """
5
5
 
6
- from . import Executable, FeatureTestResult
6
+ from . import Executable, FeatureTestResult, PythonModule
7
+ from .join_feature import JoinFeature
8
+
7
9
 
8
10
  class Giac(Executable):
9
11
  r"""
@@ -13,7 +15,7 @@ class Giac(Executable):
13
15
 
14
16
  sage: from sage.features.giac import Giac
15
17
  sage: Giac().is_present() # needs giac
16
- FeatureTestResult('giac', True)
18
+ FeatureTestResult('giac_executable', True)
17
19
  """
18
20
  def __init__(self):
19
21
  r"""
@@ -23,8 +25,11 @@ class Giac(Executable):
23
25
  sage: isinstance(Giac(), Giac)
24
26
  True
25
27
  """
26
- Executable.__init__(self, 'giac', executable='giac',
28
+ Executable.__init__(self, 'giac_executable', executable='giac',
27
29
  spkg='giac', type='standard')
28
30
 
29
31
  def all_features():
30
- return [Giac()]
32
+ return [JoinFeature("giac",
33
+ (Giac(),
34
+ PythonModule('sage.interfaces.giac')),
35
+ spkg='sagemath_giac', type='standard')]