passagemath-categories 10.6.31rc3__cp314-cp314-macosx_13_0_arm64.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.
Files changed (717) hide show
  1. passagemath_categories-10.6.31rc3.dist-info/METADATA +156 -0
  2. passagemath_categories-10.6.31rc3.dist-info/RECORD +717 -0
  3. passagemath_categories-10.6.31rc3.dist-info/WHEEL +6 -0
  4. passagemath_categories-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_categories.dylibs/libgmp.10.dylib +0 -0
  6. sage/all__sagemath_categories.py +28 -0
  7. sage/arith/all.py +38 -0
  8. sage/arith/constants.pxd +27 -0
  9. sage/arith/functions.cpython-314-darwin.so +0 -0
  10. sage/arith/functions.pxd +4 -0
  11. sage/arith/functions.pyx +221 -0
  12. sage/arith/misc.py +6552 -0
  13. sage/arith/multi_modular.cpython-314-darwin.so +0 -0
  14. sage/arith/multi_modular.pxd +39 -0
  15. sage/arith/multi_modular.pyx +994 -0
  16. sage/arith/rational_reconstruction.cpython-314-darwin.so +0 -0
  17. sage/arith/rational_reconstruction.pxd +4 -0
  18. sage/arith/rational_reconstruction.pyx +115 -0
  19. sage/arith/srange.cpython-314-darwin.so +0 -0
  20. sage/arith/srange.pyx +571 -0
  21. sage/calculus/all__sagemath_categories.py +2 -0
  22. sage/calculus/functional.py +481 -0
  23. sage/calculus/functions.py +151 -0
  24. sage/categories/additive_groups.py +73 -0
  25. sage/categories/additive_magmas.py +1044 -0
  26. sage/categories/additive_monoids.py +114 -0
  27. sage/categories/additive_semigroups.py +184 -0
  28. sage/categories/affine_weyl_groups.py +238 -0
  29. sage/categories/algebra_ideals.py +95 -0
  30. sage/categories/algebra_modules.py +96 -0
  31. sage/categories/algebras.py +349 -0
  32. sage/categories/algebras_with_basis.py +377 -0
  33. sage/categories/all.py +160 -0
  34. sage/categories/aperiodic_semigroups.py +29 -0
  35. sage/categories/associative_algebras.py +47 -0
  36. sage/categories/bialgebras.py +101 -0
  37. sage/categories/bialgebras_with_basis.py +414 -0
  38. sage/categories/bimodules.py +206 -0
  39. sage/categories/chain_complexes.py +268 -0
  40. sage/categories/classical_crystals.py +480 -0
  41. sage/categories/coalgebras.py +405 -0
  42. sage/categories/coalgebras_with_basis.py +232 -0
  43. sage/categories/coercion_methods.cpython-314-darwin.so +0 -0
  44. sage/categories/coercion_methods.pyx +52 -0
  45. sage/categories/commutative_additive_groups.py +104 -0
  46. sage/categories/commutative_additive_monoids.py +45 -0
  47. sage/categories/commutative_additive_semigroups.py +48 -0
  48. sage/categories/commutative_algebra_ideals.py +87 -0
  49. sage/categories/commutative_algebras.py +94 -0
  50. sage/categories/commutative_ring_ideals.py +58 -0
  51. sage/categories/commutative_rings.py +736 -0
  52. sage/categories/complete_discrete_valuation.py +293 -0
  53. sage/categories/complex_reflection_groups.py +145 -0
  54. sage/categories/complex_reflection_or_generalized_coxeter_groups.py +1249 -0
  55. sage/categories/coxeter_group_algebras.py +186 -0
  56. sage/categories/coxeter_groups.py +3402 -0
  57. sage/categories/crystals.py +2628 -0
  58. sage/categories/cw_complexes.py +216 -0
  59. sage/categories/dedekind_domains.py +137 -0
  60. sage/categories/discrete_valuation.py +325 -0
  61. sage/categories/distributive_magmas_and_additive_magmas.py +100 -0
  62. sage/categories/division_rings.py +114 -0
  63. sage/categories/domains.py +95 -0
  64. sage/categories/drinfeld_modules.py +789 -0
  65. sage/categories/dual.py +42 -0
  66. sage/categories/enumerated_sets.py +1146 -0
  67. sage/categories/euclidean_domains.py +271 -0
  68. sage/categories/examples/algebras_with_basis.py +102 -0
  69. sage/categories/examples/all.py +1 -0
  70. sage/categories/examples/commutative_additive_monoids.py +130 -0
  71. sage/categories/examples/commutative_additive_semigroups.py +199 -0
  72. sage/categories/examples/coxeter_groups.py +8 -0
  73. sage/categories/examples/crystals.py +236 -0
  74. sage/categories/examples/cw_complexes.py +163 -0
  75. sage/categories/examples/facade_sets.py +187 -0
  76. sage/categories/examples/filtered_algebras_with_basis.py +204 -0
  77. sage/categories/examples/filtered_modules_with_basis.py +154 -0
  78. sage/categories/examples/finite_coxeter_groups.py +252 -0
  79. sage/categories/examples/finite_dimensional_algebras_with_basis.py +148 -0
  80. sage/categories/examples/finite_dimensional_lie_algebras_with_basis.py +495 -0
  81. sage/categories/examples/finite_enumerated_sets.py +208 -0
  82. sage/categories/examples/finite_monoids.py +150 -0
  83. sage/categories/examples/finite_semigroups.py +190 -0
  84. sage/categories/examples/finite_weyl_groups.py +191 -0
  85. sage/categories/examples/graded_connected_hopf_algebras_with_basis.py +152 -0
  86. sage/categories/examples/graded_modules_with_basis.py +168 -0
  87. sage/categories/examples/graphs.py +122 -0
  88. sage/categories/examples/hopf_algebras_with_basis.py +145 -0
  89. sage/categories/examples/infinite_enumerated_sets.py +190 -0
  90. sage/categories/examples/lie_algebras.py +352 -0
  91. sage/categories/examples/lie_algebras_with_basis.py +196 -0
  92. sage/categories/examples/magmas.py +162 -0
  93. sage/categories/examples/manifolds.py +94 -0
  94. sage/categories/examples/monoids.py +144 -0
  95. sage/categories/examples/posets.py +178 -0
  96. sage/categories/examples/semigroups.py +580 -0
  97. sage/categories/examples/semigroups_cython.cpython-314-darwin.so +0 -0
  98. sage/categories/examples/semigroups_cython.pyx +221 -0
  99. sage/categories/examples/semirings.py +249 -0
  100. sage/categories/examples/sets_cat.py +706 -0
  101. sage/categories/examples/sets_with_grading.py +101 -0
  102. sage/categories/examples/with_realizations.py +542 -0
  103. sage/categories/fields.py +991 -0
  104. sage/categories/filtered_algebras.py +63 -0
  105. sage/categories/filtered_algebras_with_basis.py +548 -0
  106. sage/categories/filtered_hopf_algebras_with_basis.py +138 -0
  107. sage/categories/filtered_modules.py +210 -0
  108. sage/categories/filtered_modules_with_basis.py +1209 -0
  109. sage/categories/finite_complex_reflection_groups.py +1506 -0
  110. sage/categories/finite_coxeter_groups.py +1138 -0
  111. sage/categories/finite_crystals.py +103 -0
  112. sage/categories/finite_dimensional_algebras_with_basis.py +1860 -0
  113. sage/categories/finite_dimensional_bialgebras_with_basis.py +33 -0
  114. sage/categories/finite_dimensional_coalgebras_with_basis.py +33 -0
  115. sage/categories/finite_dimensional_graded_lie_algebras_with_basis.py +231 -0
  116. sage/categories/finite_dimensional_hopf_algebras_with_basis.py +38 -0
  117. sage/categories/finite_dimensional_lie_algebras_with_basis.py +2774 -0
  118. sage/categories/finite_dimensional_modules_with_basis.py +1407 -0
  119. sage/categories/finite_dimensional_nilpotent_lie_algebras_with_basis.py +167 -0
  120. sage/categories/finite_dimensional_semisimple_algebras_with_basis.py +270 -0
  121. sage/categories/finite_enumerated_sets.py +769 -0
  122. sage/categories/finite_fields.py +252 -0
  123. sage/categories/finite_groups.py +256 -0
  124. sage/categories/finite_lattice_posets.py +242 -0
  125. sage/categories/finite_monoids.py +316 -0
  126. sage/categories/finite_permutation_groups.py +339 -0
  127. sage/categories/finite_posets.py +1994 -0
  128. sage/categories/finite_semigroups.py +136 -0
  129. sage/categories/finite_sets.py +93 -0
  130. sage/categories/finite_weyl_groups.py +39 -0
  131. sage/categories/finitely_generated_lambda_bracket_algebras.py +112 -0
  132. sage/categories/finitely_generated_lie_conformal_algebras.py +114 -0
  133. sage/categories/finitely_generated_magmas.py +57 -0
  134. sage/categories/finitely_generated_semigroups.py +214 -0
  135. sage/categories/function_fields.py +76 -0
  136. sage/categories/g_sets.py +77 -0
  137. sage/categories/gcd_domains.py +65 -0
  138. sage/categories/generalized_coxeter_groups.py +94 -0
  139. sage/categories/graded_algebras.py +85 -0
  140. sage/categories/graded_algebras_with_basis.py +258 -0
  141. sage/categories/graded_bialgebras.py +32 -0
  142. sage/categories/graded_bialgebras_with_basis.py +32 -0
  143. sage/categories/graded_coalgebras.py +65 -0
  144. sage/categories/graded_coalgebras_with_basis.py +51 -0
  145. sage/categories/graded_hopf_algebras.py +41 -0
  146. sage/categories/graded_hopf_algebras_with_basis.py +169 -0
  147. sage/categories/graded_lie_algebras.py +91 -0
  148. sage/categories/graded_lie_algebras_with_basis.py +44 -0
  149. sage/categories/graded_lie_conformal_algebras.py +74 -0
  150. sage/categories/graded_modules.py +133 -0
  151. sage/categories/graded_modules_with_basis.py +329 -0
  152. sage/categories/graphs.py +138 -0
  153. sage/categories/group_algebras.py +430 -0
  154. sage/categories/groupoid.py +94 -0
  155. sage/categories/groups.py +667 -0
  156. sage/categories/h_trivial_semigroups.py +64 -0
  157. sage/categories/hecke_modules.py +185 -0
  158. sage/categories/highest_weight_crystals.py +980 -0
  159. sage/categories/hopf_algebras.py +219 -0
  160. sage/categories/hopf_algebras_with_basis.py +309 -0
  161. sage/categories/infinite_enumerated_sets.py +115 -0
  162. sage/categories/integral_domains.py +203 -0
  163. sage/categories/j_trivial_semigroups.py +29 -0
  164. sage/categories/kac_moody_algebras.py +82 -0
  165. sage/categories/kahler_algebras.py +203 -0
  166. sage/categories/l_trivial_semigroups.py +63 -0
  167. sage/categories/lambda_bracket_algebras.py +280 -0
  168. sage/categories/lambda_bracket_algebras_with_basis.py +107 -0
  169. sage/categories/lattice_posets.py +89 -0
  170. sage/categories/left_modules.py +49 -0
  171. sage/categories/lie_algebras.py +1070 -0
  172. sage/categories/lie_algebras_with_basis.py +261 -0
  173. sage/categories/lie_conformal_algebras.py +350 -0
  174. sage/categories/lie_conformal_algebras_with_basis.py +147 -0
  175. sage/categories/lie_groups.py +73 -0
  176. sage/categories/loop_crystals.py +1290 -0
  177. sage/categories/magmas.py +1189 -0
  178. sage/categories/magmas_and_additive_magmas.py +149 -0
  179. sage/categories/magmatic_algebras.py +365 -0
  180. sage/categories/manifolds.py +352 -0
  181. sage/categories/matrix_algebras.py +40 -0
  182. sage/categories/metric_spaces.py +387 -0
  183. sage/categories/modular_abelian_varieties.py +78 -0
  184. sage/categories/modules.py +989 -0
  185. sage/categories/modules_with_basis.py +2794 -0
  186. sage/categories/monoid_algebras.py +38 -0
  187. sage/categories/monoids.py +739 -0
  188. sage/categories/noetherian_rings.py +87 -0
  189. sage/categories/number_fields.py +242 -0
  190. sage/categories/ore_modules.py +189 -0
  191. sage/categories/partially_ordered_monoids.py +49 -0
  192. sage/categories/permutation_groups.py +63 -0
  193. sage/categories/pointed_sets.py +42 -0
  194. sage/categories/polyhedra.py +74 -0
  195. sage/categories/poor_man_map.py +270 -0
  196. sage/categories/posets.py +722 -0
  197. sage/categories/principal_ideal_domains.py +270 -0
  198. sage/categories/quantum_group_representations.py +543 -0
  199. sage/categories/quotient_fields.py +728 -0
  200. sage/categories/r_trivial_semigroups.py +45 -0
  201. sage/categories/regular_crystals.py +898 -0
  202. sage/categories/regular_supercrystals.py +170 -0
  203. sage/categories/right_modules.py +49 -0
  204. sage/categories/ring_ideals.py +74 -0
  205. sage/categories/rings.py +1904 -0
  206. sage/categories/rngs.py +175 -0
  207. sage/categories/schemes.py +393 -0
  208. sage/categories/semigroups.py +1060 -0
  209. sage/categories/semirings.py +71 -0
  210. sage/categories/semisimple_algebras.py +114 -0
  211. sage/categories/sets_with_grading.py +235 -0
  212. sage/categories/shephard_groups.py +43 -0
  213. sage/categories/signed_tensor.py +120 -0
  214. sage/categories/simplicial_complexes.py +134 -0
  215. sage/categories/simplicial_sets.py +1206 -0
  216. sage/categories/super_algebras.py +149 -0
  217. sage/categories/super_algebras_with_basis.py +144 -0
  218. sage/categories/super_hopf_algebras_with_basis.py +126 -0
  219. sage/categories/super_lie_conformal_algebras.py +193 -0
  220. sage/categories/super_modules.py +229 -0
  221. sage/categories/super_modules_with_basis.py +193 -0
  222. sage/categories/supercommutative_algebras.py +99 -0
  223. sage/categories/supercrystals.py +406 -0
  224. sage/categories/tensor.py +110 -0
  225. sage/categories/topological_spaces.py +170 -0
  226. sage/categories/triangular_kac_moody_algebras.py +439 -0
  227. sage/categories/tutorial.py +58 -0
  228. sage/categories/unique_factorization_domains.py +318 -0
  229. sage/categories/unital_algebras.py +426 -0
  230. sage/categories/vector_bundles.py +159 -0
  231. sage/categories/vector_spaces.py +357 -0
  232. sage/categories/weyl_groups.py +853 -0
  233. sage/combinat/all__sagemath_categories.py +34 -0
  234. sage/combinat/backtrack.py +180 -0
  235. sage/combinat/combinat.py +2269 -0
  236. sage/combinat/combinat_cython.cpython-314-darwin.so +0 -0
  237. sage/combinat/combinat_cython.pxd +6 -0
  238. sage/combinat/combinat_cython.pyx +390 -0
  239. sage/combinat/combination.py +796 -0
  240. sage/combinat/combinatorial_map.py +416 -0
  241. sage/combinat/composition.py +2192 -0
  242. sage/combinat/dlx.py +510 -0
  243. sage/combinat/integer_lists/__init__.py +7 -0
  244. sage/combinat/integer_lists/base.cpython-314-darwin.so +0 -0
  245. sage/combinat/integer_lists/base.pxd +16 -0
  246. sage/combinat/integer_lists/base.pyx +713 -0
  247. sage/combinat/integer_lists/invlex.cpython-314-darwin.so +0 -0
  248. sage/combinat/integer_lists/invlex.pxd +4 -0
  249. sage/combinat/integer_lists/invlex.pyx +1650 -0
  250. sage/combinat/integer_lists/lists.py +328 -0
  251. sage/combinat/integer_lists/nn.py +48 -0
  252. sage/combinat/integer_vector.py +1818 -0
  253. sage/combinat/integer_vector_weighted.py +413 -0
  254. sage/combinat/matrices/all__sagemath_categories.py +5 -0
  255. sage/combinat/matrices/dancing_links.cpython-314-darwin.so +0 -0
  256. sage/combinat/matrices/dancing_links.pyx +1159 -0
  257. sage/combinat/matrices/dancing_links_c.h +380 -0
  258. sage/combinat/matrices/dlxcpp.py +136 -0
  259. sage/combinat/partition.py +10070 -0
  260. sage/combinat/partitions.cpython-314-darwin.so +0 -0
  261. sage/combinat/partitions.pyx +743 -0
  262. sage/combinat/permutation.py +10168 -0
  263. sage/combinat/permutation_cython.cpython-314-darwin.so +0 -0
  264. sage/combinat/permutation_cython.pxd +11 -0
  265. sage/combinat/permutation_cython.pyx +407 -0
  266. sage/combinat/q_analogues.py +1090 -0
  267. sage/combinat/ranker.py +268 -0
  268. sage/combinat/subset.py +1561 -0
  269. sage/combinat/subsets_hereditary.py +202 -0
  270. sage/combinat/subsets_pairwise.py +184 -0
  271. sage/combinat/tools.py +63 -0
  272. sage/combinat/tuple.py +348 -0
  273. sage/data_structures/all.py +2 -0
  274. sage/data_structures/all__sagemath_categories.py +2 -0
  275. sage/data_structures/binary_matrix.pxd +138 -0
  276. sage/data_structures/binary_search.cpython-314-darwin.so +0 -0
  277. sage/data_structures/binary_search.pxd +3 -0
  278. sage/data_structures/binary_search.pyx +66 -0
  279. sage/data_structures/bitset.cpython-314-darwin.so +0 -0
  280. sage/data_structures/bitset.pxd +40 -0
  281. sage/data_structures/bitset.pyx +2385 -0
  282. sage/data_structures/bitset_base.cpython-314-darwin.so +0 -0
  283. sage/data_structures/bitset_base.pxd +926 -0
  284. sage/data_structures/bitset_base.pyx +117 -0
  285. sage/data_structures/bitset_intrinsics.h +487 -0
  286. sage/data_structures/blas_dict.cpython-314-darwin.so +0 -0
  287. sage/data_structures/blas_dict.pxd +12 -0
  288. sage/data_structures/blas_dict.pyx +469 -0
  289. sage/data_structures/list_of_pairs.cpython-314-darwin.so +0 -0
  290. sage/data_structures/list_of_pairs.pxd +16 -0
  291. sage/data_structures/list_of_pairs.pyx +122 -0
  292. sage/data_structures/mutable_poset.py +3312 -0
  293. sage/data_structures/pairing_heap.cpython-314-darwin.so +0 -0
  294. sage/data_structures/pairing_heap.h +346 -0
  295. sage/data_structures/pairing_heap.pxd +88 -0
  296. sage/data_structures/pairing_heap.pyx +1464 -0
  297. sage/data_structures/sparse_bitset.pxd +62 -0
  298. sage/data_structures/stream.py +5070 -0
  299. sage/databases/all__sagemath_categories.py +7 -0
  300. sage/databases/sql_db.py +2236 -0
  301. sage/ext/all__sagemath_categories.py +3 -0
  302. sage/ext/fast_callable.cpython-314-darwin.so +0 -0
  303. sage/ext/fast_callable.pxd +4 -0
  304. sage/ext/fast_callable.pyx +2746 -0
  305. sage/ext/fast_eval.cpython-314-darwin.so +0 -0
  306. sage/ext/fast_eval.pxd +1 -0
  307. sage/ext/fast_eval.pyx +102 -0
  308. sage/ext/interpreters/__init__.py +1 -0
  309. sage/ext/interpreters/all__sagemath_categories.py +2 -0
  310. sage/ext/interpreters/wrapper_el.cpython-314-darwin.so +0 -0
  311. sage/ext/interpreters/wrapper_el.pxd +18 -0
  312. sage/ext/interpreters/wrapper_el.pyx +148 -0
  313. sage/ext/interpreters/wrapper_py.cpython-314-darwin.so +0 -0
  314. sage/ext/interpreters/wrapper_py.pxd +17 -0
  315. sage/ext/interpreters/wrapper_py.pyx +133 -0
  316. sage/functions/airy.py +937 -0
  317. sage/functions/all.py +97 -0
  318. sage/functions/bessel.py +2102 -0
  319. sage/functions/error.py +784 -0
  320. sage/functions/exp_integral.py +1529 -0
  321. sage/functions/gamma.py +1087 -0
  322. sage/functions/generalized.py +672 -0
  323. sage/functions/hyperbolic.py +747 -0
  324. sage/functions/hypergeometric.py +1156 -0
  325. sage/functions/jacobi.py +1705 -0
  326. sage/functions/log.py +1402 -0
  327. sage/functions/min_max.py +338 -0
  328. sage/functions/orthogonal_polys.py +3106 -0
  329. sage/functions/other.py +2303 -0
  330. sage/functions/piecewise.py +1505 -0
  331. sage/functions/prime_pi.cpython-314-darwin.so +0 -0
  332. sage/functions/prime_pi.pyx +262 -0
  333. sage/functions/special.py +1212 -0
  334. sage/functions/spike_function.py +278 -0
  335. sage/functions/transcendental.py +690 -0
  336. sage/functions/trig.py +1062 -0
  337. sage/functions/wigner.py +726 -0
  338. sage/geometry/abc.cpython-314-darwin.so +0 -0
  339. sage/geometry/abc.pyx +82 -0
  340. sage/geometry/all__sagemath_categories.py +1 -0
  341. sage/groups/all__sagemath_categories.py +11 -0
  342. sage/groups/generic.py +1733 -0
  343. sage/groups/groups_catalog.py +113 -0
  344. sage/groups/perm_gps/all__sagemath_categories.py +1 -0
  345. sage/groups/perm_gps/partn_ref/all.py +1 -0
  346. sage/groups/perm_gps/partn_ref/all__sagemath_categories.py +1 -0
  347. sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.cpython-314-darwin.so +0 -0
  348. sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pxd +52 -0
  349. sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pyx +906 -0
  350. sage/groups/perm_gps/partn_ref/canonical_augmentation.cpython-314-darwin.so +0 -0
  351. sage/groups/perm_gps/partn_ref/canonical_augmentation.pxd +85 -0
  352. sage/groups/perm_gps/partn_ref/canonical_augmentation.pyx +534 -0
  353. sage/groups/perm_gps/partn_ref/data_structures.cpython-314-darwin.so +0 -0
  354. sage/groups/perm_gps/partn_ref/data_structures.pxd +576 -0
  355. sage/groups/perm_gps/partn_ref/data_structures.pyx +1792 -0
  356. sage/groups/perm_gps/partn_ref/double_coset.cpython-314-darwin.so +0 -0
  357. sage/groups/perm_gps/partn_ref/double_coset.pxd +45 -0
  358. sage/groups/perm_gps/partn_ref/double_coset.pyx +739 -0
  359. sage/groups/perm_gps/partn_ref/refinement_lists.cpython-314-darwin.so +0 -0
  360. sage/groups/perm_gps/partn_ref/refinement_lists.pxd +18 -0
  361. sage/groups/perm_gps/partn_ref/refinement_lists.pyx +82 -0
  362. sage/groups/perm_gps/partn_ref/refinement_python.cpython-314-darwin.so +0 -0
  363. sage/groups/perm_gps/partn_ref/refinement_python.pxd +16 -0
  364. sage/groups/perm_gps/partn_ref/refinement_python.pyx +564 -0
  365. sage/groups/perm_gps/partn_ref/refinement_sets.cpython-314-darwin.so +0 -0
  366. sage/groups/perm_gps/partn_ref/refinement_sets.pxd +60 -0
  367. sage/groups/perm_gps/partn_ref/refinement_sets.pyx +858 -0
  368. sage/interfaces/abc.py +140 -0
  369. sage/interfaces/all.py +58 -0
  370. sage/interfaces/all__sagemath_categories.py +1 -0
  371. sage/interfaces/expect.py +1643 -0
  372. sage/interfaces/interface.py +1682 -0
  373. sage/interfaces/process.cpython-314-darwin.so +0 -0
  374. sage/interfaces/process.pxd +5 -0
  375. sage/interfaces/process.pyx +288 -0
  376. sage/interfaces/quit.py +167 -0
  377. sage/interfaces/sage0.py +604 -0
  378. sage/interfaces/sagespawn.cpython-314-darwin.so +0 -0
  379. sage/interfaces/sagespawn.pyx +308 -0
  380. sage/interfaces/tab_completion.py +101 -0
  381. sage/misc/all__sagemath_categories.py +78 -0
  382. sage/misc/allocator.cpython-314-darwin.so +0 -0
  383. sage/misc/allocator.pxd +6 -0
  384. sage/misc/allocator.pyx +47 -0
  385. sage/misc/binary_tree.cpython-314-darwin.so +0 -0
  386. sage/misc/binary_tree.pxd +29 -0
  387. sage/misc/binary_tree.pyx +537 -0
  388. sage/misc/callable_dict.cpython-314-darwin.so +0 -0
  389. sage/misc/callable_dict.pyx +89 -0
  390. sage/misc/citation.cpython-314-darwin.so +0 -0
  391. sage/misc/citation.pyx +159 -0
  392. sage/misc/converting_dict.py +293 -0
  393. sage/misc/defaults.py +129 -0
  394. sage/misc/derivative.cpython-314-darwin.so +0 -0
  395. sage/misc/derivative.pyx +223 -0
  396. sage/misc/functional.py +2005 -0
  397. sage/misc/html.py +589 -0
  398. sage/misc/latex.py +2673 -0
  399. sage/misc/latex_macros.py +236 -0
  400. sage/misc/latex_standalone.py +1833 -0
  401. sage/misc/map_threaded.py +38 -0
  402. sage/misc/mathml.py +76 -0
  403. sage/misc/method_decorator.py +88 -0
  404. sage/misc/mrange.py +755 -0
  405. sage/misc/multireplace.py +41 -0
  406. sage/misc/object_multiplexer.py +92 -0
  407. sage/misc/parser.cpython-314-darwin.so +0 -0
  408. sage/misc/parser.pyx +1107 -0
  409. sage/misc/random_testing.py +264 -0
  410. sage/misc/rest_index_of_methods.py +377 -0
  411. sage/misc/search.cpython-314-darwin.so +0 -0
  412. sage/misc/search.pxd +2 -0
  413. sage/misc/search.pyx +68 -0
  414. sage/misc/stopgap.cpython-314-darwin.so +0 -0
  415. sage/misc/stopgap.pyx +95 -0
  416. sage/misc/table.py +853 -0
  417. sage/monoids/all__sagemath_categories.py +1 -0
  418. sage/monoids/indexed_free_monoid.py +1071 -0
  419. sage/monoids/monoid.py +82 -0
  420. sage/numerical/all__sagemath_categories.py +1 -0
  421. sage/numerical/backends/all__sagemath_categories.py +1 -0
  422. sage/numerical/backends/generic_backend.cpython-314-darwin.so +0 -0
  423. sage/numerical/backends/generic_backend.pxd +61 -0
  424. sage/numerical/backends/generic_backend.pyx +1893 -0
  425. sage/numerical/backends/generic_sdp_backend.cpython-314-darwin.so +0 -0
  426. sage/numerical/backends/generic_sdp_backend.pxd +38 -0
  427. sage/numerical/backends/generic_sdp_backend.pyx +755 -0
  428. sage/parallel/all.py +6 -0
  429. sage/parallel/decorate.py +575 -0
  430. sage/parallel/map_reduce.py +1997 -0
  431. sage/parallel/multiprocessing_sage.py +76 -0
  432. sage/parallel/ncpus.py +35 -0
  433. sage/parallel/parallelism.py +364 -0
  434. sage/parallel/reference.py +47 -0
  435. sage/parallel/use_fork.py +333 -0
  436. sage/rings/abc.cpython-314-darwin.so +0 -0
  437. sage/rings/abc.pxd +31 -0
  438. sage/rings/abc.pyx +526 -0
  439. sage/rings/algebraic_closure_finite_field.py +1154 -0
  440. sage/rings/all__sagemath_categories.py +91 -0
  441. sage/rings/big_oh.py +227 -0
  442. sage/rings/continued_fraction.py +2754 -0
  443. sage/rings/continued_fraction_gosper.py +220 -0
  444. sage/rings/factorint.cpython-314-darwin.so +0 -0
  445. sage/rings/factorint.pyx +295 -0
  446. sage/rings/fast_arith.cpython-314-darwin.so +0 -0
  447. sage/rings/fast_arith.pxd +21 -0
  448. sage/rings/fast_arith.pyx +535 -0
  449. sage/rings/finite_rings/all__sagemath_categories.py +9 -0
  450. sage/rings/finite_rings/conway_polynomials.py +542 -0
  451. sage/rings/finite_rings/element_base.cpython-314-darwin.so +0 -0
  452. sage/rings/finite_rings/element_base.pxd +12 -0
  453. sage/rings/finite_rings/element_base.pyx +1176 -0
  454. sage/rings/finite_rings/finite_field_base.cpython-314-darwin.so +0 -0
  455. sage/rings/finite_rings/finite_field_base.pxd +7 -0
  456. sage/rings/finite_rings/finite_field_base.pyx +2171 -0
  457. sage/rings/finite_rings/finite_field_constructor.py +827 -0
  458. sage/rings/finite_rings/finite_field_prime_modn.py +372 -0
  459. sage/rings/finite_rings/galois_group.py +154 -0
  460. sage/rings/finite_rings/hom_finite_field.cpython-314-darwin.so +0 -0
  461. sage/rings/finite_rings/hom_finite_field.pxd +23 -0
  462. sage/rings/finite_rings/hom_finite_field.pyx +856 -0
  463. sage/rings/finite_rings/hom_prime_finite_field.cpython-314-darwin.so +0 -0
  464. sage/rings/finite_rings/hom_prime_finite_field.pxd +15 -0
  465. sage/rings/finite_rings/hom_prime_finite_field.pyx +164 -0
  466. sage/rings/finite_rings/homset.py +357 -0
  467. sage/rings/finite_rings/integer_mod.cpython-314-darwin.so +0 -0
  468. sage/rings/finite_rings/integer_mod.pxd +56 -0
  469. sage/rings/finite_rings/integer_mod.pyx +4586 -0
  470. sage/rings/finite_rings/integer_mod_limits.h +11 -0
  471. sage/rings/finite_rings/integer_mod_ring.py +2044 -0
  472. sage/rings/finite_rings/residue_field.cpython-314-darwin.so +0 -0
  473. sage/rings/finite_rings/residue_field.pxd +30 -0
  474. sage/rings/finite_rings/residue_field.pyx +1811 -0
  475. sage/rings/finite_rings/stdint.pxd +19 -0
  476. sage/rings/fraction_field.py +1452 -0
  477. sage/rings/fraction_field_element.cpython-314-darwin.so +0 -0
  478. sage/rings/fraction_field_element.pyx +1357 -0
  479. sage/rings/function_field/all.py +7 -0
  480. sage/rings/function_field/all__sagemath_categories.py +2 -0
  481. sage/rings/function_field/constructor.py +218 -0
  482. sage/rings/function_field/element.cpython-314-darwin.so +0 -0
  483. sage/rings/function_field/element.pxd +11 -0
  484. sage/rings/function_field/element.pyx +1008 -0
  485. sage/rings/function_field/element_rational.cpython-314-darwin.so +0 -0
  486. sage/rings/function_field/element_rational.pyx +513 -0
  487. sage/rings/function_field/extensions.py +230 -0
  488. sage/rings/function_field/function_field.py +1468 -0
  489. sage/rings/function_field/function_field_rational.py +1005 -0
  490. sage/rings/function_field/ideal.py +1155 -0
  491. sage/rings/function_field/ideal_rational.py +629 -0
  492. sage/rings/function_field/jacobian_base.py +826 -0
  493. sage/rings/function_field/jacobian_hess.py +1053 -0
  494. sage/rings/function_field/jacobian_khuri_makdisi.py +1027 -0
  495. sage/rings/function_field/maps.py +1039 -0
  496. sage/rings/function_field/order.py +281 -0
  497. sage/rings/function_field/order_basis.py +586 -0
  498. sage/rings/function_field/order_rational.py +576 -0
  499. sage/rings/function_field/place.py +426 -0
  500. sage/rings/function_field/place_rational.py +181 -0
  501. sage/rings/generic.py +320 -0
  502. sage/rings/homset.py +332 -0
  503. sage/rings/ideal.py +1885 -0
  504. sage/rings/ideal_monoid.py +215 -0
  505. sage/rings/infinity.py +1890 -0
  506. sage/rings/integer.cpython-314-darwin.so +0 -0
  507. sage/rings/integer.pxd +45 -0
  508. sage/rings/integer.pyx +7871 -0
  509. sage/rings/integer_ring.cpython-314-darwin.so +0 -0
  510. sage/rings/integer_ring.pxd +8 -0
  511. sage/rings/integer_ring.pyx +1693 -0
  512. sage/rings/laurent_series_ring.py +931 -0
  513. sage/rings/laurent_series_ring_element.cpython-314-darwin.so +0 -0
  514. sage/rings/laurent_series_ring_element.pxd +11 -0
  515. sage/rings/laurent_series_ring_element.pyx +1927 -0
  516. sage/rings/lazy_series.py +7815 -0
  517. sage/rings/lazy_series_ring.py +4356 -0
  518. sage/rings/localization.py +1043 -0
  519. sage/rings/morphism.cpython-314-darwin.so +0 -0
  520. sage/rings/morphism.pxd +39 -0
  521. sage/rings/morphism.pyx +3299 -0
  522. sage/rings/multi_power_series_ring.py +1145 -0
  523. sage/rings/multi_power_series_ring_element.py +2184 -0
  524. sage/rings/noncommutative_ideals.cpython-314-darwin.so +0 -0
  525. sage/rings/noncommutative_ideals.pyx +423 -0
  526. sage/rings/number_field/all__sagemath_categories.py +1 -0
  527. sage/rings/number_field/number_field_base.cpython-314-darwin.so +0 -0
  528. sage/rings/number_field/number_field_base.pxd +8 -0
  529. sage/rings/number_field/number_field_base.pyx +507 -0
  530. sage/rings/number_field/number_field_element_base.cpython-314-darwin.so +0 -0
  531. sage/rings/number_field/number_field_element_base.pxd +6 -0
  532. sage/rings/number_field/number_field_element_base.pyx +36 -0
  533. sage/rings/number_field/number_field_ideal.py +3550 -0
  534. sage/rings/padics/all__sagemath_categories.py +4 -0
  535. sage/rings/padics/local_generic.py +1670 -0
  536. sage/rings/padics/local_generic_element.cpython-314-darwin.so +0 -0
  537. sage/rings/padics/local_generic_element.pxd +5 -0
  538. sage/rings/padics/local_generic_element.pyx +1017 -0
  539. sage/rings/padics/misc.py +256 -0
  540. sage/rings/padics/padic_generic.py +1911 -0
  541. sage/rings/padics/pow_computer.cpython-314-darwin.so +0 -0
  542. sage/rings/padics/pow_computer.pxd +38 -0
  543. sage/rings/padics/pow_computer.pyx +671 -0
  544. sage/rings/padics/precision_error.py +24 -0
  545. sage/rings/polynomial/all__sagemath_categories.py +25 -0
  546. sage/rings/polynomial/commutative_polynomial.cpython-314-darwin.so +0 -0
  547. sage/rings/polynomial/commutative_polynomial.pxd +6 -0
  548. sage/rings/polynomial/commutative_polynomial.pyx +24 -0
  549. sage/rings/polynomial/cyclotomic.cpython-314-darwin.so +0 -0
  550. sage/rings/polynomial/cyclotomic.pyx +404 -0
  551. sage/rings/polynomial/flatten.py +711 -0
  552. sage/rings/polynomial/ideal.py +102 -0
  553. sage/rings/polynomial/infinite_polynomial_element.py +1768 -0
  554. sage/rings/polynomial/infinite_polynomial_ring.py +1653 -0
  555. sage/rings/polynomial/laurent_polynomial.cpython-314-darwin.so +0 -0
  556. sage/rings/polynomial/laurent_polynomial.pxd +18 -0
  557. sage/rings/polynomial/laurent_polynomial.pyx +2190 -0
  558. sage/rings/polynomial/laurent_polynomial_ideal.py +590 -0
  559. sage/rings/polynomial/laurent_polynomial_ring.py +832 -0
  560. sage/rings/polynomial/laurent_polynomial_ring_base.py +708 -0
  561. sage/rings/polynomial/multi_polynomial.cpython-314-darwin.so +0 -0
  562. sage/rings/polynomial/multi_polynomial.pxd +12 -0
  563. sage/rings/polynomial/multi_polynomial.pyx +3082 -0
  564. sage/rings/polynomial/multi_polynomial_element.py +2570 -0
  565. sage/rings/polynomial/multi_polynomial_ideal.py +5771 -0
  566. sage/rings/polynomial/multi_polynomial_ring.py +947 -0
  567. sage/rings/polynomial/multi_polynomial_ring_base.cpython-314-darwin.so +0 -0
  568. sage/rings/polynomial/multi_polynomial_ring_base.pxd +15 -0
  569. sage/rings/polynomial/multi_polynomial_ring_base.pyx +1855 -0
  570. sage/rings/polynomial/multi_polynomial_sequence.py +2204 -0
  571. sage/rings/polynomial/polydict.cpython-314-darwin.so +0 -0
  572. sage/rings/polynomial/polydict.pxd +45 -0
  573. sage/rings/polynomial/polydict.pyx +2701 -0
  574. sage/rings/polynomial/polynomial_compiled.cpython-314-darwin.so +0 -0
  575. sage/rings/polynomial/polynomial_compiled.pxd +59 -0
  576. sage/rings/polynomial/polynomial_compiled.pyx +509 -0
  577. sage/rings/polynomial/polynomial_element.cpython-314-darwin.so +0 -0
  578. sage/rings/polynomial/polynomial_element.pxd +64 -0
  579. sage/rings/polynomial/polynomial_element.pyx +13255 -0
  580. sage/rings/polynomial/polynomial_element_generic.py +1637 -0
  581. sage/rings/polynomial/polynomial_fateman.py +97 -0
  582. sage/rings/polynomial/polynomial_quotient_ring.py +2465 -0
  583. sage/rings/polynomial/polynomial_quotient_ring_element.py +779 -0
  584. sage/rings/polynomial/polynomial_ring.py +3784 -0
  585. sage/rings/polynomial/polynomial_ring_constructor.py +1051 -0
  586. sage/rings/polynomial/polynomial_ring_homomorphism.cpython-314-darwin.so +0 -0
  587. sage/rings/polynomial/polynomial_ring_homomorphism.pxd +5 -0
  588. sage/rings/polynomial/polynomial_ring_homomorphism.pyx +121 -0
  589. sage/rings/polynomial/polynomial_singular_interface.py +549 -0
  590. sage/rings/polynomial/symmetric_ideal.py +989 -0
  591. sage/rings/polynomial/symmetric_reduction.cpython-314-darwin.so +0 -0
  592. sage/rings/polynomial/symmetric_reduction.pxd +8 -0
  593. sage/rings/polynomial/symmetric_reduction.pyx +669 -0
  594. sage/rings/polynomial/term_order.py +2279 -0
  595. sage/rings/polynomial/toy_buchberger.py +449 -0
  596. sage/rings/polynomial/toy_d_basis.py +387 -0
  597. sage/rings/polynomial/toy_variety.py +362 -0
  598. sage/rings/power_series_mpoly.cpython-314-darwin.so +0 -0
  599. sage/rings/power_series_mpoly.pxd +9 -0
  600. sage/rings/power_series_mpoly.pyx +161 -0
  601. sage/rings/power_series_poly.cpython-314-darwin.so +0 -0
  602. sage/rings/power_series_poly.pxd +10 -0
  603. sage/rings/power_series_poly.pyx +1317 -0
  604. sage/rings/power_series_ring.py +1441 -0
  605. sage/rings/power_series_ring_element.cpython-314-darwin.so +0 -0
  606. sage/rings/power_series_ring_element.pxd +12 -0
  607. sage/rings/power_series_ring_element.pyx +3028 -0
  608. sage/rings/puiseux_series_ring.py +487 -0
  609. sage/rings/puiseux_series_ring_element.cpython-314-darwin.so +0 -0
  610. sage/rings/puiseux_series_ring_element.pxd +7 -0
  611. sage/rings/puiseux_series_ring_element.pyx +1055 -0
  612. sage/rings/qqbar_decorators.py +167 -0
  613. sage/rings/quotient_ring.py +1598 -0
  614. sage/rings/quotient_ring_element.py +979 -0
  615. sage/rings/rational.cpython-314-darwin.so +0 -0
  616. sage/rings/rational.pxd +20 -0
  617. sage/rings/rational.pyx +4284 -0
  618. sage/rings/rational_field.py +1730 -0
  619. sage/rings/real_double.cpython-314-darwin.so +0 -0
  620. sage/rings/real_double.pxd +16 -0
  621. sage/rings/real_double.pyx +2215 -0
  622. sage/rings/real_lazy.cpython-314-darwin.so +0 -0
  623. sage/rings/real_lazy.pxd +30 -0
  624. sage/rings/real_lazy.pyx +1773 -0
  625. sage/rings/ring.cpython-314-darwin.so +0 -0
  626. sage/rings/ring.pxd +30 -0
  627. sage/rings/ring.pyx +850 -0
  628. sage/rings/semirings/all.py +3 -0
  629. sage/rings/semirings/non_negative_integer_semiring.py +107 -0
  630. sage/rings/semirings/tropical_mpolynomial.py +972 -0
  631. sage/rings/semirings/tropical_polynomial.py +997 -0
  632. sage/rings/semirings/tropical_semiring.cpython-314-darwin.so +0 -0
  633. sage/rings/semirings/tropical_semiring.pyx +676 -0
  634. sage/rings/semirings/tropical_variety.py +1701 -0
  635. sage/rings/sum_of_squares.cpython-314-darwin.so +0 -0
  636. sage/rings/sum_of_squares.pxd +3 -0
  637. sage/rings/sum_of_squares.pyx +336 -0
  638. sage/rings/tests.py +504 -0
  639. sage/schemes/affine/affine_homset.py +508 -0
  640. sage/schemes/affine/affine_morphism.py +1574 -0
  641. sage/schemes/affine/affine_point.py +460 -0
  642. sage/schemes/affine/affine_rational_point.py +308 -0
  643. sage/schemes/affine/affine_space.py +1264 -0
  644. sage/schemes/affine/affine_subscheme.py +592 -0
  645. sage/schemes/affine/all.py +25 -0
  646. sage/schemes/all__sagemath_categories.py +5 -0
  647. sage/schemes/generic/algebraic_scheme.py +2092 -0
  648. sage/schemes/generic/all.py +5 -0
  649. sage/schemes/generic/ambient_space.py +400 -0
  650. sage/schemes/generic/divisor.py +465 -0
  651. sage/schemes/generic/divisor_group.py +313 -0
  652. sage/schemes/generic/glue.py +84 -0
  653. sage/schemes/generic/homset.py +820 -0
  654. sage/schemes/generic/hypersurface.py +234 -0
  655. sage/schemes/generic/morphism.py +2107 -0
  656. sage/schemes/generic/point.py +237 -0
  657. sage/schemes/generic/scheme.py +1190 -0
  658. sage/schemes/generic/spec.py +199 -0
  659. sage/schemes/product_projective/all.py +6 -0
  660. sage/schemes/product_projective/homset.py +236 -0
  661. sage/schemes/product_projective/morphism.py +517 -0
  662. sage/schemes/product_projective/point.py +568 -0
  663. sage/schemes/product_projective/rational_point.py +550 -0
  664. sage/schemes/product_projective/space.py +1301 -0
  665. sage/schemes/product_projective/subscheme.py +466 -0
  666. sage/schemes/projective/all.py +24 -0
  667. sage/schemes/projective/proj_bdd_height.py +453 -0
  668. sage/schemes/projective/projective_homset.py +718 -0
  669. sage/schemes/projective/projective_morphism.py +2792 -0
  670. sage/schemes/projective/projective_point.py +1484 -0
  671. sage/schemes/projective/projective_rational_point.py +569 -0
  672. sage/schemes/projective/projective_space.py +2571 -0
  673. sage/schemes/projective/projective_subscheme.py +1574 -0
  674. sage/sets/all.py +17 -0
  675. sage/sets/cartesian_product.py +376 -0
  676. sage/sets/condition_set.py +525 -0
  677. sage/sets/disjoint_set.cpython-314-darwin.so +0 -0
  678. sage/sets/disjoint_set.pxd +36 -0
  679. sage/sets/disjoint_set.pyx +998 -0
  680. sage/sets/disjoint_union_enumerated_sets.py +625 -0
  681. sage/sets/family.cpython-314-darwin.so +0 -0
  682. sage/sets/family.pxd +12 -0
  683. sage/sets/family.pyx +1556 -0
  684. sage/sets/finite_enumerated_set.py +406 -0
  685. sage/sets/finite_set_map_cy.cpython-314-darwin.so +0 -0
  686. sage/sets/finite_set_map_cy.pxd +34 -0
  687. sage/sets/finite_set_map_cy.pyx +708 -0
  688. sage/sets/finite_set_maps.py +591 -0
  689. sage/sets/image_set.py +448 -0
  690. sage/sets/integer_range.py +829 -0
  691. sage/sets/non_negative_integers.py +241 -0
  692. sage/sets/positive_integers.py +93 -0
  693. sage/sets/primes.py +188 -0
  694. sage/sets/real_set.py +2760 -0
  695. sage/sets/recursively_enumerated_set.cpython-314-darwin.so +0 -0
  696. sage/sets/recursively_enumerated_set.pxd +31 -0
  697. sage/sets/recursively_enumerated_set.pyx +2082 -0
  698. sage/sets/set.py +2083 -0
  699. sage/sets/set_from_iterator.py +1021 -0
  700. sage/sets/totally_ordered_finite_set.py +329 -0
  701. sage/symbolic/all__sagemath_categories.py +1 -0
  702. sage/symbolic/function.cpython-314-darwin.so +0 -0
  703. sage/symbolic/function.pxd +29 -0
  704. sage/symbolic/function.pyx +1488 -0
  705. sage/symbolic/symbols.py +56 -0
  706. sage/tests/all__sagemath_categories.py +1 -0
  707. sage/tests/cython.cpython-314-darwin.so +0 -0
  708. sage/tests/cython.pyx +37 -0
  709. sage/tests/stl_vector.cpython-314-darwin.so +0 -0
  710. sage/tests/stl_vector.pyx +171 -0
  711. sage/typeset/all.py +6 -0
  712. sage/typeset/ascii_art.py +295 -0
  713. sage/typeset/character_art.py +789 -0
  714. sage/typeset/character_art_factory.py +572 -0
  715. sage/typeset/symbols.py +334 -0
  716. sage/typeset/unicode_art.py +183 -0
  717. sage/typeset/unicode_characters.py +101 -0
@@ -0,0 +1,604 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ # sage.doctest: needs sage.all
3
+ r"""
4
+ Interface to Sage
5
+
6
+ This is an expect interface to *another* copy of the Sage
7
+ interpreter.
8
+ """
9
+
10
+ # ****************************************************************************
11
+ # Copyright (C) 2005 William Stein <wstein@gmail.com>
12
+ #
13
+ # Distributed under the terms of the GNU General Public License (GPL)
14
+ #
15
+ # The full text of the GPL is available at:
16
+ #
17
+ # https://www.gnu.org/licenses/
18
+ # ****************************************************************************
19
+
20
+ import os
21
+ import pickle
22
+ import re
23
+ import textwrap
24
+
25
+ import sage.repl.preparse
26
+ from sage.interfaces.expect import Expect, ExpectElement, FunctionElement
27
+ from sage.interfaces.tab_completion import ExtraTabCompletion
28
+ from sage.misc.instancedoc import instancedoc
29
+ from sage.misc.persist import dumps, load
30
+
31
+
32
+ class Sage(ExtraTabCompletion, Expect):
33
+ r"""
34
+ Expect interface to the Sage interpreter itself.
35
+
36
+ INPUT:
37
+
38
+ - ``server`` -- (optional) if specified runs Sage on a
39
+ remote machine with address. You must have ssh keys setup so you
40
+ can login to the remote machine by typing "ssh remote_machine" and
41
+ no password, call _install_hints_ssh() for hints on how to do
42
+ that.
43
+
44
+
45
+ The version of Sage should be the same as on the local machine,
46
+ since pickling is used to move data between the two Sage process.
47
+
48
+ EXAMPLES: We create an interface to a copy of Sage. This copy of
49
+ Sage runs as an external process with its own memory space, etc.
50
+
51
+ ::
52
+
53
+ sage: s = Sage()
54
+
55
+ Create the element 2 in our new copy of Sage, and cube it.
56
+
57
+ ::
58
+
59
+ sage: a = s(2)
60
+ sage: a^3
61
+ 8
62
+
63
+ Create a vector space of dimension `4`, and compute its
64
+ generators::
65
+
66
+ sage: V = s('QQ^4')
67
+ sage: V.gens()
68
+ ((1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1))
69
+
70
+ Note that V is a not a vector space, it's a wrapper around an
71
+ object (which happens to be a vector space), in another running
72
+ instance of Sage.
73
+
74
+ ::
75
+
76
+ sage: type(V)
77
+ <class 'sage.interfaces.sage0.SageElement'>
78
+ sage: V.parent()
79
+ Sage
80
+ sage: g = V.0; g
81
+ (1, 0, 0, 0)
82
+ sage: g.parent()
83
+ Sage
84
+
85
+ We can still get the actual parent by using the name attribute of
86
+ g, which is the variable name of the object in the child process.
87
+
88
+ ::
89
+
90
+ sage: s('%s.parent()' % g.name())
91
+ Vector space of dimension 4 over Rational Field
92
+
93
+ Note that the memory space is completely different.
94
+
95
+ ::
96
+
97
+ sage: x = 10
98
+ sage: s('x = 5')
99
+ 5
100
+ sage: x
101
+ 10
102
+ sage: s('x')
103
+ 5
104
+
105
+ We can have the child interpreter itself make another child Sage
106
+ process, so now three copies of Sage are running::
107
+
108
+ sage: s3 = s('Sage()')
109
+ sage: a = s3(10)
110
+ sage: a
111
+ 10
112
+
113
+ This `a=10` is in a subprocess of a subprocess of your
114
+ original Sage.
115
+
116
+ ::
117
+
118
+ sage: _ = s.eval('%s.eval("x=8")' % s3.name())
119
+ sage: s3('"x"')
120
+ 8
121
+ sage: s('x')
122
+ 5
123
+ sage: x
124
+ 10
125
+
126
+ The double quotes are needed because the call to s3 first evaluates
127
+ its arguments using the s interpreter, so the call to s3 is passed
128
+ ``s('"x"')``, which is the string ``'x'`` in the s interpreter.
129
+ """
130
+ def __init__(self,
131
+ logfile=None,
132
+ preparse=True,
133
+ init_code=None,
134
+ server=None,
135
+ server_tmpdir=None,
136
+ remote_cleaner=True,
137
+ **kwds):
138
+ """
139
+ EXAMPLES::
140
+
141
+ sage: sage0 == loads(dumps(sage0))
142
+ True
143
+ """
144
+
145
+ if init_code is None:
146
+ init_code = []
147
+ elif isinstance(init_code, str):
148
+ init_code = init_code.splitlines()
149
+ else:
150
+ try:
151
+ init_code = list(init_code)
152
+ except TypeError:
153
+ raise TypeError(
154
+ 'init_code should be a string or an iterable of lines '
155
+ 'of code')
156
+
157
+ command = 'python3 -u'
158
+ prompt = re.compile(b'>>> |sage: |In : ')
159
+ environment = 'sage.all'
160
+ init_code.append(f'from {environment} import *')
161
+ init_code.append('import pickle')
162
+ init_code.append(textwrap.dedent("""
163
+ def _sage0_load_local(filename):
164
+ with open(filename, 'rb') as f:
165
+ return pickle.load(f)
166
+ """))
167
+ init_code.append(textwrap.dedent("""
168
+ def _sage0_load_remote(filename):
169
+ with open(filename, 'rb') as f:
170
+ return loads(f.read())
171
+ """))
172
+
173
+ Expect.__init__(self,
174
+ name='sage',
175
+ prompt=prompt,
176
+ command=command,
177
+ restart_on_ctrlc=False,
178
+ logfile=logfile,
179
+ init_code=init_code,
180
+ server=server,
181
+ server_tmpdir=server_tmpdir,
182
+ remote_cleaner=remote_cleaner,
183
+ **kwds
184
+ )
185
+ self._preparse = preparse
186
+
187
+ def cputime(self, t=None):
188
+ """
189
+ Return cputime since this Sage subprocess was started.
190
+
191
+ EXAMPLES::
192
+
193
+ sage: sage0.cputime() # random output
194
+ 1.3530439999999999
195
+ sage: sage0('factor(2^157-1)')
196
+ 852133201 * 60726444167 * 1654058017289 * 2134387368610417
197
+ sage: sage0.cputime() # random output
198
+ 1.6462939999999999
199
+ """
200
+ s = self.eval('cputime(%s)' % t)
201
+ i = s.rfind('m')
202
+ if i != -1:
203
+ s = s[i + 1:-1]
204
+ return float(s)
205
+
206
+ def _tab_completion(self):
207
+ """
208
+ EXAMPLES::
209
+
210
+ sage: t = sage0._tab_completion()
211
+ sage: len(t) > 100
212
+ True
213
+ sage: 'gcd' in t
214
+ True
215
+ """
216
+ return eval(self.eval('print(repr(list(globals())))'))
217
+
218
+ def __call__(self, x):
219
+ """
220
+ EXAMPLES::
221
+
222
+ sage: a = sage0(4)
223
+ sage: a.parent()
224
+ Sage
225
+ sage: a is sage0(a)
226
+ True
227
+
228
+ TESTS::
229
+
230
+ sage: sage0(axiom(x^2+1)) #optional - axiom
231
+ x^2 + 1
232
+ """
233
+ if isinstance(x, ExpectElement):
234
+ if x.parent() is self:
235
+ return x
236
+ else:
237
+ return self(x.sage())
238
+
239
+ if isinstance(x, str):
240
+ return SageElement(self, x)
241
+
242
+ if self.is_local():
243
+ with open(self._local_tmpfile(), 'wb') as fobj:
244
+ fobj.write(pickle.dumps(x, 2))
245
+ code = '_sage0_load_local({!r})'.format(self._local_tmpfile())
246
+ return SageElement(self, code)
247
+ else:
248
+ with open(self._local_tmpfile(), 'wb') as fobj:
249
+ fobj.write(dumps(x)) # my dumps is compressed by default
250
+ self._send_tmpfile_to_server()
251
+ code = '_sage0_load_remote({!r})'.format(self._remote_tmpfile())
252
+ return SageElement(self, code)
253
+
254
+ def __reduce__(self):
255
+ """
256
+ EXAMPLES::
257
+
258
+ sage: from sage.interfaces.sage0 import sage0
259
+ sage: sage0.__reduce__()
260
+ (<function reduce_load_Sage at 0x...>, ())
261
+ """
262
+ return reduce_load_Sage, tuple([])
263
+
264
+ def _quit_string(self):
265
+ """
266
+ EXAMPLES::
267
+
268
+ sage: sage0._quit_string()
269
+ ''
270
+ """
271
+ return ""
272
+
273
+ def preparse(self, x):
274
+ """
275
+ Return the preparsed version of the string s.
276
+
277
+ EXAMPLES::
278
+
279
+ sage: sage0.preparse('2+2')
280
+ 'Integer(2)+Integer(2)'
281
+ """
282
+ return sage.repl.preparse.preparse(x)
283
+
284
+ def eval(self, line, strip=True, **kwds):
285
+ """
286
+ Send the code x to a second instance of the Sage interpreter and
287
+ return the output as a string.
288
+
289
+ This allows you to run two completely independent copies of Sage at
290
+ the same time in a unified way.
291
+
292
+ INPUT:
293
+
294
+ - ``line`` -- input line of code
295
+
296
+ - ``strip`` -- ignored
297
+
298
+ EXAMPLES::
299
+
300
+ sage: sage0.eval('2+2')
301
+ '4'
302
+ """
303
+ if self._preparse:
304
+ line = self.preparse(line)
305
+ line = self._wrap_multiline(line)
306
+ return Expect.eval(self, line, **kwds).strip()
307
+
308
+ def set(self, var, value):
309
+ """
310
+ Set the variable var to the given value.
311
+
312
+ EXAMPLES::
313
+
314
+ sage: sage0.set('x', '2')
315
+ sage: sage0.get('x')
316
+ '2'
317
+ """
318
+ cmd = '%s=%s' % (var, value)
319
+ out = self.eval(cmd)
320
+ if 'Traceback' in out:
321
+ raise TypeError("Error executing code in Sage\nCODE:\n\t%s\nSage ERROR:\n\t%s" % (cmd, out))
322
+
323
+ def get(self, var):
324
+ """
325
+ Get the value of the variable var.
326
+
327
+ EXAMPLES::
328
+
329
+ sage: sage0.set('x', '2')
330
+ sage: sage0.get('x')
331
+ '2'
332
+ """
333
+ return self.eval('print(%s)' % var).strip()
334
+
335
+ def clear(self, var):
336
+ """
337
+ Clear the variable named var.
338
+
339
+ Note that the exact format of the :exc:`NameError` for a cleared
340
+ variable is slightly platform dependent, see :issue:`10539`.
341
+
342
+ EXAMPLES::
343
+
344
+ sage: sage0.set('x', '2')
345
+ sage: sage0.get('x')
346
+ '2'
347
+ sage: sage0.clear('x')
348
+ sage: 'NameError' in sage0.get('x')
349
+ True
350
+ """
351
+ self.eval('del %s' % var)
352
+
353
+ def _contains(self, v1, v2):
354
+ """
355
+ EXAMPLES::
356
+
357
+ sage: sage0._contains('2', 'QQ')
358
+ True
359
+ """
360
+ return self.eval('%s in %s' % (v1, v2)) == "True"
361
+
362
+ def console(self):
363
+ """
364
+ Spawn a new Sage command-line session.
365
+
366
+ EXAMPLES::
367
+
368
+ sage: sage0.console() #not tested
369
+ ----------------------------------------------------------------------
370
+ | SageMath version ..., Release Date: ... |
371
+ | Using Python .... Type "help()" for help. |
372
+ ----------------------------------------------------------------------
373
+ ...
374
+ """
375
+ sage0_console()
376
+
377
+ def version(self):
378
+ """
379
+ EXAMPLES::
380
+
381
+ sage: sage0.version()
382
+ '... version ..., Release Date: ...'
383
+ sage: sage0.version() == version()
384
+ True
385
+ """
386
+ return sage0_version()
387
+
388
+ def _object_class(self):
389
+ """
390
+ EXAMPLES::
391
+
392
+ sage: sage0._object_class()
393
+ <class 'sage.interfaces.sage0.SageElement'>
394
+ """
395
+ return SageElement
396
+
397
+ def new(self, x):
398
+ """
399
+ EXAMPLES::
400
+
401
+ sage: sage0.new(2)
402
+ 2
403
+ sage: _.parent()
404
+ Sage
405
+ """
406
+ return SageElement(self, x)
407
+
408
+ @staticmethod
409
+ def _wrap_multiline(s):
410
+ r"""
411
+ The Sage interface does not currently handle multi-line Python
412
+ statements well.
413
+
414
+ So given a multi-line Python statement, it is converted to an
415
+ equivalent ``eval()`` call.
416
+
417
+ EXAMPLES::
418
+
419
+ sage: import textwrap
420
+ sage: code = textwrap.dedent('''
421
+ ....: def foo():
422
+ ....: return 'foo'
423
+ ....: ''')
424
+ sage: print(sage0._wrap_multiline(code))
425
+ eval(compile("def foo():\n return 'foo'", '<stdin>', 'single'))
426
+ sage: sage0.eval(code)
427
+ ''
428
+ sage: sage0.eval('foo()')
429
+ "'foo'"
430
+ """
431
+
432
+ if '\n' in s:
433
+ return "eval(compile({!r}, '<stdin>', 'single'))".format(s.strip())
434
+ else:
435
+ return s
436
+
437
+
438
+ @instancedoc
439
+ class SageElement(ExpectElement):
440
+
441
+ def _rich_repr_(self, display_manager, **kwds):
442
+ """
443
+ Disable rich output.
444
+
445
+ This is necessary because otherwise our :meth:`__getattr__`
446
+ would be called.
447
+
448
+ EXAMPLES::
449
+
450
+ sage: from sage.repl.rich_output import get_display_manager
451
+ sage: m = sage0(4)
452
+ sage: m._rich_repr_(get_display_manager()) is None
453
+ True
454
+ """
455
+ return None
456
+
457
+ def _repr_option(self, option):
458
+ """
459
+ Disable repr option.
460
+
461
+ This is necessary because otherwise our :meth:`__getattr__`
462
+ would be called.
463
+
464
+ EXAMPLES::
465
+
466
+ sage: from sage.repl.rich_output import get_display_manager
467
+ sage: m = sage0(4)
468
+ sage: m._repr_option('ascii_art')
469
+ False
470
+ """
471
+ return False
472
+
473
+ def __getattr__(self, attrname):
474
+ """
475
+ EXAMPLES::
476
+
477
+ sage: m = sage0(4)
478
+ sage: four_gcd = m.gcd
479
+ sage: type(four_gcd)
480
+ <class 'sage.interfaces.sage0.SageFunction'>
481
+ """
482
+ self._check_valid()
483
+ return SageFunction(self, attrname)
484
+
485
+ def _sage_(self):
486
+ """
487
+ Return local copy of ``self``.
488
+
489
+ EXAMPLES::
490
+
491
+ sage: sr = mq.SR(allow_zero_inversions=True) # needs sage.modules sage.rings.finite_rings
492
+ sage: F,s = sr.polynomial_system() # needs sage.modules sage.rings.finite_rings
493
+ sage: F == sage0(F)._sage_() # needs sage.modules sage.rings.finite_rings
494
+ True
495
+ """
496
+ P = self.parent()
497
+ if P.is_remote():
498
+ P.eval('save({}, {!r})'.format(self.name(), P._remote_tmpfile()))
499
+ P._get_tmpfile_from_server(self)
500
+ return load(P._local_tmp_file())
501
+ else:
502
+ P.eval('save({}, {!r})'.format(self.name(), P._local_tmpfile()))
503
+ return load(P._local_tmpfile())
504
+
505
+
506
+ @instancedoc
507
+ class SageFunction(FunctionElement):
508
+ def __call__(self, *args, **kwds):
509
+ """
510
+ EXAMPLES::
511
+
512
+ sage: four_gcd = sage0(4).gcd
513
+ sage: four_gcd(6)
514
+ 2
515
+ """
516
+ P = self._obj.parent()
517
+
518
+ # Important! Keep references to the argument values or else they may
519
+ # get cleared from the interpreter before we complete the function
520
+ # call.
521
+ args = [P(x) for x in args]
522
+ kwds = [(k, P(v)) for k, v in kwds.items()]
523
+
524
+ arg_str = ','.join(x.name() for x in args)
525
+ kwd_str = ','.join('%s=%s' % (k, v.name()) for k, v in kwds)
526
+
527
+ if arg_str and kwd_str:
528
+ args_str = '%s,%s' % (arg_str, kwd_str)
529
+ else:
530
+ args_str = arg_str + kwd_str # At least one of these is empty
531
+
532
+ call_str = '%s.%s(%s)' % (self._obj._name, self._name, args_str)
533
+ return SageElement(P, call_str)
534
+
535
+ def _repr_(self):
536
+ """
537
+ EXAMPLES::
538
+
539
+ sage: sage0(4).gcd
540
+ <built-in method gcd of sage.rings.integer.Integer object at 0x...>
541
+ """
542
+ return str(self._obj.parent().eval('%s.%s' % (self._obj._name,
543
+ self._name)))
544
+
545
+
546
+ sage0 = Sage()
547
+
548
+
549
+ def reduce_load_Sage():
550
+ """
551
+ EXAMPLES::
552
+
553
+ sage: from sage.interfaces.sage0 import reduce_load_Sage
554
+ sage: reduce_load_Sage()
555
+ Sage
556
+ """
557
+ return sage0
558
+
559
+
560
+ def reduce_load_element(s):
561
+ """
562
+ EXAMPLES::
563
+
564
+ sage: from sage.interfaces.sage0 import reduce_load_element
565
+ sage: s = dumps(1/2)
566
+ sage: half = reduce_load_element(s); half
567
+ 1/2
568
+ sage: half.parent()
569
+ Sage
570
+ """
571
+ import base64
572
+ s = base64.b32encode(s)
573
+ sage0.eval('import base64')
574
+ return sage0('loads(base64.b32decode({!r}))'.format(s))
575
+
576
+
577
+ def sage0_console():
578
+ """
579
+ Spawn a new Sage command-line session.
580
+
581
+ EXAMPLES::
582
+
583
+ sage: sage0_console() #not tested
584
+ ----------------------------------------------------------------------
585
+ | SageMath version ..., Release Date: ... |
586
+ | Using Python .... Type "help()" for help. |
587
+ ----------------------------------------------------------------------
588
+ ...
589
+ """
590
+ from sage.repl.rich_output.display_manager import get_display_manager
591
+ if not get_display_manager().is_in_terminal():
592
+ raise RuntimeError('Can use the console only in the terminal. Try %%sage0 magics instead.')
593
+ os.system('sage')
594
+
595
+
596
+ def sage0_version():
597
+ """
598
+ EXAMPLES::
599
+
600
+ sage: from sage.interfaces.sage0 import sage0_version
601
+ sage: sage0_version() == version()
602
+ True
603
+ """
604
+ return str(sage0('version()'))