snappy 3.1.1__cp311-cp311-macosx_11_0_arm64.whl → 3.2__cp311-cp311-macosx_11_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 (464) hide show
  1. snappy/CyOpenGL.cpython-311-darwin.so +0 -0
  2. snappy/SnapPy.cpython-311-darwin.so +0 -0
  3. snappy/SnapPyHP.cpython-311-darwin.so +0 -0
  4. snappy/__init__.py +299 -402
  5. snappy/app.py +70 -20
  6. snappy/browser.py +18 -17
  7. snappy/canonical.py +249 -0
  8. snappy/{verify/cusp_shapes.py → cusps/__init__.py} +8 -18
  9. snappy/cusps/cusp_area_matrix.py +101 -0
  10. snappy/{verify/cusp_areas.py → cusps/cusp_areas_from_matrix.py} +23 -39
  11. snappy/cusps/maximal_cusp_area_matrix.py +136 -0
  12. snappy/cusps/test.py +21 -0
  13. snappy/cusps/trig_cusp_area_matrix.py +63 -0
  14. snappy/database.py +10 -9
  15. snappy/decorated_isosig.py +337 -114
  16. snappy/dev/extended_ptolemy/complexVolumesClosed.py +40 -7
  17. snappy/dev/extended_ptolemy/extended.py +3 -3
  18. snappy/dev/extended_ptolemy/phc_wrapper.py +10 -10
  19. snappy/dev/vericlosed/oneVertexTruncatedComplex.py +1 -1
  20. snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
  21. snappy/doc/_images/m125_paper_plane.jpg +0 -0
  22. snappy/doc/_images/o9_00000_systole_paper_plane.jpg +0 -0
  23. snappy/doc/_images/o9_00000_systole_paper_plane_closer.jpg +0 -0
  24. snappy/doc/_sources/development.rst.txt +66 -46
  25. snappy/doc/_sources/index.rst.txt +72 -5
  26. snappy/doc/_sources/installing.rst.txt +145 -162
  27. snappy/doc/_sources/news.rst.txt +73 -1
  28. snappy/doc/_sources/ptolemy_examples1.rst.txt +8 -7
  29. snappy/doc/_sources/ptolemy_examples3.rst.txt +2 -2
  30. snappy/doc/_sources/triangulation.rst.txt +2 -2
  31. snappy/doc/_sources/verify.rst.txt +89 -29
  32. snappy/doc/_sources/verify_internals.rst.txt +5 -16
  33. snappy/doc/_static/basic.css +23 -1
  34. snappy/doc/_static/css/badge_only.css +1 -1
  35. snappy/doc/_static/css/theme.css +1 -1
  36. snappy/doc/_static/doctools.js +1 -1
  37. snappy/doc/_static/documentation_options.js +2 -3
  38. snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
  39. snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
  40. snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
  41. snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
  42. snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  43. snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  44. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  45. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  46. snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
  47. snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
  48. snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
  49. snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
  50. snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
  51. snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
  52. snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
  53. snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
  54. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  55. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  56. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  57. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  58. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  59. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  60. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  61. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  62. snappy/doc/_static/js/versions.js +228 -0
  63. snappy/doc/_static/language_data.js +2 -2
  64. snappy/doc/_static/pygments.css +1 -0
  65. snappy/doc/_static/searchtools.js +125 -71
  66. snappy/doc/_static/sphinx_highlight.js +13 -3
  67. snappy/doc/additional_classes.html +291 -122
  68. snappy/doc/bugs.html +17 -20
  69. snappy/doc/censuses.html +34 -53
  70. snappy/doc/credits.html +18 -21
  71. snappy/doc/development.html +88 -68
  72. snappy/doc/genindex.html +66 -145
  73. snappy/doc/index.html +86 -31
  74. snappy/doc/installing.html +164 -182
  75. snappy/doc/manifold.html +1168 -556
  76. snappy/doc/manifoldhp.html +18 -21
  77. snappy/doc/news.html +91 -33
  78. snappy/doc/objects.inv +0 -0
  79. snappy/doc/other.html +20 -22
  80. snappy/doc/platonic_census.html +31 -34
  81. snappy/doc/plink.html +19 -22
  82. snappy/doc/ptolemy.html +20 -22
  83. snappy/doc/ptolemy_classes.html +102 -105
  84. snappy/doc/ptolemy_examples1.html +34 -36
  85. snappy/doc/ptolemy_examples2.html +28 -31
  86. snappy/doc/ptolemy_examples3.html +26 -29
  87. snappy/doc/ptolemy_examples4.html +20 -23
  88. snappy/doc/ptolemy_prelim.html +25 -28
  89. snappy/doc/py-modindex.html +16 -19
  90. snappy/doc/screenshots.html +22 -24
  91. snappy/doc/search.html +15 -18
  92. snappy/doc/searchindex.js +1 -1
  93. snappy/doc/snap.html +18 -21
  94. snappy/doc/snappy.html +18 -20
  95. snappy/doc/spherogram.html +84 -87
  96. snappy/doc/todo.html +17 -20
  97. snappy/doc/triangulation.html +324 -215
  98. snappy/doc/tutorial.html +17 -20
  99. snappy/doc/verify.html +100 -46
  100. snappy/doc/verify_internals.html +106 -563
  101. snappy/drilling/__init__.py +153 -235
  102. snappy/drilling/barycentric.py +103 -0
  103. snappy/drilling/constants.py +0 -2
  104. snappy/drilling/crush.py +56 -130
  105. snappy/drilling/cusps.py +12 -6
  106. snappy/drilling/debug.py +2 -1
  107. snappy/drilling/exceptions.py +7 -40
  108. snappy/drilling/moves.py +302 -243
  109. snappy/drilling/perturb.py +63 -37
  110. snappy/drilling/shorten.py +36 -0
  111. snappy/drilling/subdivide.py +0 -5
  112. snappy/drilling/test.py +23 -0
  113. snappy/drilling/test_cases.py +126 -0
  114. snappy/drilling/tracing.py +9 -37
  115. snappy/exceptions.py +18 -5
  116. snappy/exterior_to_link/barycentric_geometry.py +2 -4
  117. snappy/exterior_to_link/main.py +8 -7
  118. snappy/exterior_to_link/mcomplex_with_link.py +2 -2
  119. snappy/exterior_to_link/rational_linear_algebra.py +1 -1
  120. snappy/exterior_to_link/rational_linear_algebra_wrapped.py +1 -1
  121. snappy/exterior_to_link/test.py +21 -33
  122. snappy/geometric_structure/__init__.py +212 -0
  123. snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
  124. snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +697 -0
  125. snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
  126. snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
  127. snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
  128. snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
  129. snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -0
  130. snappy/geometric_structure/geodesic/__init__.py +0 -0
  131. snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
  132. snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
  133. snappy/geometric_structure/geodesic/canonical_keys.py +52 -0
  134. snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
  135. snappy/geometric_structure/geodesic/constants.py +6 -0
  136. snappy/geometric_structure/geodesic/exceptions.py +22 -0
  137. snappy/{drilling → geometric_structure/geodesic}/fixed_points.py +34 -9
  138. snappy/{drilling/geodesic_info.py → geometric_structure/geodesic/geodesic_start_point_info.py} +139 -180
  139. snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
  140. snappy/geometric_structure/geodesic/line.py +30 -0
  141. snappy/geometric_structure/geodesic/multiplicity.py +127 -0
  142. snappy/geometric_structure/geodesic/tiles_for_geodesic.py +101 -0
  143. snappy/geometric_structure/test.py +22 -0
  144. snappy/gui.py +23 -13
  145. snappy/horoviewer.py +7 -7
  146. snappy/hyperboloid/__init__.py +96 -31
  147. snappy/hyperboloid/distances.py +245 -0
  148. snappy/hyperboloid/horoball.py +19 -0
  149. snappy/hyperboloid/line.py +35 -0
  150. snappy/hyperboloid/point.py +9 -0
  151. snappy/hyperboloid/triangle.py +29 -0
  152. snappy/isometry_signature.py +382 -0
  153. snappy/len_spec/__init__.py +596 -0
  154. snappy/len_spec/geodesic_info.py +110 -0
  155. snappy/len_spec/geodesic_key_info_dict.py +117 -0
  156. snappy/len_spec/geodesic_piece.py +143 -0
  157. snappy/len_spec/geometric_structure.py +182 -0
  158. snappy/len_spec/geometry.py +80 -0
  159. snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
  160. snappy/len_spec/spine.py +206 -0
  161. snappy/len_spec/test.py +24 -0
  162. snappy/len_spec/test_cases.py +69 -0
  163. snappy/len_spec/tile.py +275 -0
  164. snappy/len_spec/word.py +86 -0
  165. snappy/math_basics.py +39 -13
  166. snappy/matrix.py +52 -9
  167. snappy/number.py +12 -6
  168. snappy/numeric_output_checker.py +2 -3
  169. snappy/pari.py +8 -4
  170. snappy/phone_home.py +2 -1
  171. snappy/polyviewer.py +8 -8
  172. snappy/ptolemy/__init__.py +1 -1
  173. snappy/ptolemy/component.py +2 -2
  174. snappy/ptolemy/coordinates.py +25 -25
  175. snappy/ptolemy/findLoops.py +9 -9
  176. snappy/ptolemy/manifoldMethods.py +27 -29
  177. snappy/ptolemy/polynomial.py +50 -57
  178. snappy/ptolemy/processFileBase.py +60 -0
  179. snappy/ptolemy/ptolemyVariety.py +109 -41
  180. snappy/ptolemy/reginaWrapper.py +4 -4
  181. snappy/ptolemy/rur.py +1 -1
  182. snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +9 -9
  183. snappy/ptolemy/test.py +99 -54
  184. snappy/ptolemy/utilities.py +1 -1
  185. snappy/raytracing/__init__.py +64 -0
  186. snappy/raytracing/additional_horospheres.py +64 -0
  187. snappy/raytracing/additional_len_spec_choices.py +63 -0
  188. snappy/raytracing/cohomology_fractal.py +0 -3
  189. snappy/raytracing/eyeball.py +123 -0
  190. snappy/raytracing/finite_raytracing_data.py +17 -17
  191. snappy/raytracing/finite_viewer.py +15 -15
  192. snappy/raytracing/geodesic_tube_info.py +93 -63
  193. snappy/raytracing/geodesics.py +94 -64
  194. snappy/raytracing/geodesics_window.py +56 -34
  195. snappy/raytracing/gui_utilities.py +21 -6
  196. snappy/raytracing/hyperboloid_navigation.py +29 -4
  197. snappy/raytracing/hyperboloid_utilities.py +73 -73
  198. snappy/raytracing/ideal_raytracing_data.py +121 -91
  199. snappy/raytracing/inside_viewer.py +199 -66
  200. snappy/raytracing/pack.py +22 -0
  201. snappy/raytracing/raytracing_data.py +37 -25
  202. snappy/raytracing/raytracing_view.py +70 -65
  203. snappy/raytracing/shaders/Eye.png +0 -0
  204. snappy/raytracing/shaders/NonGeometric.png +0 -0
  205. snappy/raytracing/shaders/__init__.py +39 -3
  206. snappy/raytracing/shaders/fragment.glsl +451 -133
  207. snappy/raytracing/test.py +29 -0
  208. snappy/raytracing/tooltip.py +146 -0
  209. snappy/raytracing/upper_halfspace_utilities.py +42 -9
  210. snappy/sage_helper.py +67 -134
  211. snappy/settings.py +90 -77
  212. snappy/shell.py +2 -0
  213. snappy/snap/character_varieties.py +2 -2
  214. snappy/snap/find_field.py +4 -3
  215. snappy/snap/fundamental_polyhedron.py +2 -2
  216. snappy/snap/kernel_structures.py +5 -1
  217. snappy/snap/nsagetools.py +9 -8
  218. snappy/snap/peripheral/dual_cellulation.py +4 -3
  219. snappy/snap/peripheral/peripheral.py +2 -2
  220. snappy/snap/peripheral/surface.py +5 -5
  221. snappy/snap/peripheral/test.py +1 -1
  222. snappy/snap/polished_reps.py +8 -8
  223. snappy/snap/slice_obs_HKL.py +16 -14
  224. snappy/snap/t3mlite/arrow.py +3 -3
  225. snappy/snap/t3mlite/edge.py +3 -3
  226. snappy/snap/t3mlite/homology.py +2 -2
  227. snappy/snap/t3mlite/mcomplex.py +3 -3
  228. snappy/snap/t3mlite/simplex.py +12 -0
  229. snappy/snap/t3mlite/spun.py +18 -17
  230. snappy/snap/t3mlite/test_vs_regina.py +4 -4
  231. snappy/snap/test.py +37 -53
  232. snappy/snap/utilities.py +4 -5
  233. snappy/test.py +121 -138
  234. snappy/test_cases.py +263 -0
  235. snappy/testing.py +131 -0
  236. snappy/tiling/__init__.py +2 -0
  237. snappy/tiling/canonical_key_dict.py +59 -0
  238. snappy/tiling/dict_based_set.py +79 -0
  239. snappy/tiling/floor.py +49 -0
  240. snappy/tiling/hyperboloid_dict.py +54 -0
  241. snappy/tiling/iter_utils.py +78 -0
  242. snappy/tiling/lifted_tetrahedron.py +22 -0
  243. snappy/tiling/lifted_tetrahedron_set.py +54 -0
  244. snappy/tiling/real_hash_dict.py +164 -0
  245. snappy/tiling/test.py +23 -0
  246. snappy/tiling/tile.py +215 -0
  247. snappy/tiling/triangle.py +33 -0
  248. snappy/tkterminal.py +113 -84
  249. snappy/twister/main.py +1 -7
  250. snappy/twister/twister_core.cpython-311-darwin.so +0 -0
  251. snappy/upper_halfspace/__init__.py +78 -17
  252. snappy/verify/__init__.py +3 -7
  253. snappy/verify/{verifyCanonical.py → canonical.py} +78 -70
  254. snappy/verify/complex_volume/adjust_torsion.py +1 -2
  255. snappy/verify/complex_volume/closed.py +13 -13
  256. snappy/verify/complex_volume/cusped.py +6 -6
  257. snappy/verify/complex_volume/extended_bloch.py +5 -8
  258. snappy/verify/{cuspTranslations.py → cusp_translations.py} +1 -1
  259. snappy/verify/edge_equations.py +80 -0
  260. snappy/verify/exceptions.py +0 -55
  261. snappy/verify/{verifyHyperbolicity.py → hyperbolicity.py} +3 -3
  262. snappy/verify/interval_newton_shapes_engine.py +7 -5
  263. snappy/verify/interval_tree.py +5 -5
  264. snappy/verify/krawczyk_shapes_engine.py +17 -18
  265. snappy/verify/maximal_cusp_area_matrix/__init__.py +7 -74
  266. snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +3 -4
  267. snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +1 -1
  268. snappy/verify/{realAlgebra.py → real_algebra.py} +1 -1
  269. snappy/verify/shapes.py +5 -3
  270. snappy/verify/short_slopes.py +39 -41
  271. snappy/verify/{squareExtensions.py → square_extensions.py} +14 -11
  272. snappy/verify/test.py +57 -60
  273. snappy/verify/upper_halfspace/extended_matrix.py +1 -1
  274. snappy/verify/upper_halfspace/finite_point.py +3 -4
  275. snappy/verify/upper_halfspace/ideal_point.py +9 -9
  276. snappy/verify/volume.py +2 -2
  277. snappy/version.py +2 -2
  278. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/METADATA +26 -11
  279. snappy-3.2.dist-info/RECORD +503 -0
  280. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
  281. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/top_level.txt +6 -1
  282. snappy/__pycache__/__init__.cpython-311.pyc +0 -0
  283. snappy/__pycache__/browser.cpython-311.pyc +0 -0
  284. snappy/__pycache__/cache.cpython-311.pyc +0 -0
  285. snappy/__pycache__/database.cpython-311.pyc +0 -0
  286. snappy/__pycache__/db_utilities.cpython-311.pyc +0 -0
  287. snappy/__pycache__/decorated_isosig.cpython-311.pyc +0 -0
  288. snappy/__pycache__/exceptions.cpython-311.pyc +0 -0
  289. snappy/__pycache__/export_stl.cpython-311.pyc +0 -0
  290. snappy/__pycache__/filedialog.cpython-311.pyc +0 -0
  291. snappy/__pycache__/gui.cpython-311.pyc +0 -0
  292. snappy/__pycache__/horoviewer.cpython-311.pyc +0 -0
  293. snappy/__pycache__/infowindow.cpython-311.pyc +0 -0
  294. snappy/__pycache__/math_basics.cpython-311.pyc +0 -0
  295. snappy/__pycache__/matrix.cpython-311.pyc +0 -0
  296. snappy/__pycache__/number.cpython-311.pyc +0 -0
  297. snappy/__pycache__/numeric_output_checker.cpython-311.pyc +0 -0
  298. snappy/__pycache__/pari.cpython-311.pyc +0 -0
  299. snappy/__pycache__/polyviewer.cpython-311.pyc +0 -0
  300. snappy/__pycache__/sage_helper.cpython-311.pyc +0 -0
  301. snappy/__pycache__/version.cpython-311.pyc +0 -0
  302. snappy/doc/_sources/verify_canon.rst.txt +0 -90
  303. snappy/doc/_static/js/html5shiv-printshiv.min.js +0 -4
  304. snappy/doc/_static/js/html5shiv.min.js +0 -4
  305. snappy/doc/verify_canon.html +0 -304
  306. snappy/drilling/__pycache__/__init__.cpython-311.pyc +0 -0
  307. snappy/drilling/__pycache__/constants.cpython-311.pyc +0 -0
  308. snappy/drilling/__pycache__/crush.cpython-311.pyc +0 -0
  309. snappy/drilling/__pycache__/cusps.cpython-311.pyc +0 -0
  310. snappy/drilling/__pycache__/debug.cpython-311.pyc +0 -0
  311. snappy/drilling/__pycache__/epsilons.cpython-311.pyc +0 -0
  312. snappy/drilling/__pycache__/exceptions.cpython-311.pyc +0 -0
  313. snappy/drilling/__pycache__/fixed_points.cpython-311.pyc +0 -0
  314. snappy/drilling/__pycache__/geodesic_info.cpython-311.pyc +0 -0
  315. snappy/drilling/__pycache__/geodesic_tube.cpython-311.pyc +0 -0
  316. snappy/drilling/__pycache__/geometric_structure.cpython-311.pyc +0 -0
  317. snappy/drilling/__pycache__/line.cpython-311.pyc +0 -0
  318. snappy/drilling/__pycache__/moves.cpython-311.pyc +0 -0
  319. snappy/drilling/__pycache__/peripheral_curves.cpython-311.pyc +0 -0
  320. snappy/drilling/__pycache__/perturb.cpython-311.pyc +0 -0
  321. snappy/drilling/__pycache__/quotient_space.cpython-311.pyc +0 -0
  322. snappy/drilling/__pycache__/spatial_dict.cpython-311.pyc +0 -0
  323. snappy/drilling/__pycache__/subdivide.cpython-311.pyc +0 -0
  324. snappy/drilling/__pycache__/tracing.cpython-311.pyc +0 -0
  325. snappy/drilling/geodesic_tube.py +0 -441
  326. snappy/drilling/geometric_structure.py +0 -366
  327. snappy/drilling/line.py +0 -122
  328. snappy/drilling/quotient_space.py +0 -94
  329. snappy/drilling/spatial_dict.py +0 -128
  330. snappy/exterior_to_link/__pycache__/__init__.cpython-311.pyc +0 -0
  331. snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-311.pyc +0 -0
  332. snappy/exterior_to_link/__pycache__/exceptions.cpython-311.pyc +0 -0
  333. snappy/exterior_to_link/__pycache__/hyp_utils.cpython-311.pyc +0 -0
  334. snappy/exterior_to_link/__pycache__/link_projection.cpython-311.pyc +0 -0
  335. snappy/exterior_to_link/__pycache__/main.cpython-311.pyc +0 -0
  336. snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-311.pyc +0 -0
  337. snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-311.pyc +0 -0
  338. snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-311.pyc +0 -0
  339. snappy/exterior_to_link/__pycache__/pl_utils.cpython-311.pyc +0 -0
  340. snappy/exterior_to_link/__pycache__/put_in_S3.cpython-311.pyc +0 -0
  341. snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-311.pyc +0 -0
  342. snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-311.pyc +0 -0
  343. snappy/exterior_to_link/__pycache__/stored_moves.cpython-311.pyc +0 -0
  344. snappy/hyperboloid/__pycache__/__init__.cpython-311.pyc +0 -0
  345. snappy/manifolds/__pycache__/__init__.cpython-311.pyc +0 -0
  346. snappy/ptolemy/__pycache__/__init__.cpython-311.pyc +0 -0
  347. snappy/ptolemy/__pycache__/component.cpython-311.pyc +0 -0
  348. snappy/ptolemy/__pycache__/coordinates.cpython-311.pyc +0 -0
  349. snappy/ptolemy/__pycache__/fieldExtensions.cpython-311.pyc +0 -0
  350. snappy/ptolemy/__pycache__/findLoops.cpython-311.pyc +0 -0
  351. snappy/ptolemy/__pycache__/homology.cpython-311.pyc +0 -0
  352. snappy/ptolemy/__pycache__/manifoldMethods.cpython-311.pyc +0 -0
  353. snappy/ptolemy/__pycache__/matrix.cpython-311.pyc +0 -0
  354. snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-311.pyc +0 -0
  355. snappy/ptolemy/__pycache__/polynomial.cpython-311.pyc +0 -0
  356. snappy/ptolemy/__pycache__/processComponents.cpython-311.pyc +0 -0
  357. snappy/ptolemy/__pycache__/processFileBase.cpython-311.pyc +0 -0
  358. snappy/ptolemy/__pycache__/processFileDispatch.cpython-311.pyc +0 -0
  359. snappy/ptolemy/__pycache__/processMagmaFile.cpython-311.pyc +0 -0
  360. snappy/ptolemy/__pycache__/processRurFile.cpython-311.pyc +0 -0
  361. snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-311.pyc +0 -0
  362. snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-311.pyc +0 -0
  363. snappy/ptolemy/__pycache__/ptolemyVariety.cpython-311.pyc +0 -0
  364. snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-311.pyc +0 -0
  365. snappy/ptolemy/__pycache__/rur.cpython-311.pyc +0 -0
  366. snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-311.pyc +0 -0
  367. snappy/ptolemy/__pycache__/utilities.cpython-311.pyc +0 -0
  368. snappy/raytracing/__pycache__/__init__.cpython-311.pyc +0 -0
  369. snappy/raytracing/__pycache__/finite_raytracing_data.cpython-311.pyc +0 -0
  370. snappy/raytracing/__pycache__/gui_utilities.cpython-311.pyc +0 -0
  371. snappy/raytracing/__pycache__/hyperboloid_navigation.cpython-311.pyc +0 -0
  372. snappy/raytracing/__pycache__/hyperboloid_utilities.cpython-311.pyc +0 -0
  373. snappy/raytracing/__pycache__/ideal_raytracing_data.cpython-311.pyc +0 -0
  374. snappy/raytracing/__pycache__/inside_viewer.cpython-311.pyc +0 -0
  375. snappy/raytracing/__pycache__/raytracing_data.cpython-311.pyc +0 -0
  376. snappy/raytracing/__pycache__/raytracing_view.cpython-311.pyc +0 -0
  377. snappy/raytracing/__pycache__/upper_halfspace_utilities.cpython-311.pyc +0 -0
  378. snappy/raytracing/__pycache__/view_scale_controller.cpython-311.pyc +0 -0
  379. snappy/raytracing/zoom_slider/__pycache__/__init__.cpython-311.pyc +0 -0
  380. snappy/snap/__pycache__/__init__.cpython-311.pyc +0 -0
  381. snappy/snap/__pycache__/character_varieties.cpython-311.pyc +0 -0
  382. snappy/snap/__pycache__/fundamental_polyhedron.cpython-311.pyc +0 -0
  383. snappy/snap/__pycache__/interval_reps.cpython-311.pyc +0 -0
  384. snappy/snap/__pycache__/kernel_structures.cpython-311.pyc +0 -0
  385. snappy/snap/__pycache__/mcomplex_base.cpython-311.pyc +0 -0
  386. snappy/snap/__pycache__/nsagetools.cpython-311.pyc +0 -0
  387. snappy/snap/__pycache__/polished_reps.cpython-311.pyc +0 -0
  388. snappy/snap/__pycache__/shapes.cpython-311.pyc +0 -0
  389. snappy/snap/__pycache__/slice_obs_HKL.cpython-311.pyc +0 -0
  390. snappy/snap/__pycache__/utilities.cpython-311.pyc +0 -0
  391. snappy/snap/peripheral/__pycache__/__init__.cpython-311.pyc +0 -0
  392. snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-311.pyc +0 -0
  393. snappy/snap/peripheral/__pycache__/link.cpython-311.pyc +0 -0
  394. snappy/snap/peripheral/__pycache__/peripheral.cpython-311.pyc +0 -0
  395. snappy/snap/peripheral/__pycache__/surface.cpython-311.pyc +0 -0
  396. snappy/snap/t3mlite/__pycache__/__init__.cpython-311.pyc +0 -0
  397. snappy/snap/t3mlite/__pycache__/arrow.cpython-311.pyc +0 -0
  398. snappy/snap/t3mlite/__pycache__/corner.cpython-311.pyc +0 -0
  399. snappy/snap/t3mlite/__pycache__/edge.cpython-311.pyc +0 -0
  400. snappy/snap/t3mlite/__pycache__/face.cpython-311.pyc +0 -0
  401. snappy/snap/t3mlite/__pycache__/files.cpython-311.pyc +0 -0
  402. snappy/snap/t3mlite/__pycache__/homology.cpython-311.pyc +0 -0
  403. snappy/snap/t3mlite/__pycache__/linalg.cpython-311.pyc +0 -0
  404. snappy/snap/t3mlite/__pycache__/mcomplex.cpython-311.pyc +0 -0
  405. snappy/snap/t3mlite/__pycache__/perm4.cpython-311.pyc +0 -0
  406. snappy/snap/t3mlite/__pycache__/simplex.cpython-311.pyc +0 -0
  407. snappy/snap/t3mlite/__pycache__/spun.cpython-311.pyc +0 -0
  408. snappy/snap/t3mlite/__pycache__/surface.cpython-311.pyc +0 -0
  409. snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-311.pyc +0 -0
  410. snappy/snap/t3mlite/__pycache__/vertex.cpython-311.pyc +0 -0
  411. snappy/togl/__init__.py +0 -3
  412. snappy/togl/darwin-tk8.6/Togl2.1/LICENSE +0 -28
  413. snappy/togl/darwin-tk8.6/Togl2.1/libTogl2.1.dylib +0 -0
  414. snappy/togl/darwin-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  415. snappy/togl/darwin-tk8.7/Togl2.1/LICENSE +0 -28
  416. snappy/togl/darwin-tk8.7/Togl2.1/libTogl2.1.dylib +0 -0
  417. snappy/togl/darwin-tk8.7/Togl2.1/pkgIndex.tcl +0 -5
  418. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  419. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/libTogl2.1.so +0 -0
  420. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  421. snappy/togl/win32VC-tk8.6/Togl2.1/LICENSE +0 -28
  422. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.dll +0 -0
  423. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.lib +0 -0
  424. snappy/togl/win32VC-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  425. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  426. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.dll +0 -0
  427. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.lib +0 -0
  428. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  429. snappy/twister/__pycache__/__init__.cpython-311.pyc +0 -0
  430. snappy/twister/__pycache__/main.cpython-311.pyc +0 -0
  431. snappy/upper_halfspace/__pycache__/__init__.cpython-311.pyc +0 -0
  432. snappy/upper_halfspace/__pycache__/ideal_point.cpython-311.pyc +0 -0
  433. snappy/verify/__pycache__/__init__.cpython-311.pyc +0 -0
  434. snappy/verify/__pycache__/cuspCrossSection.cpython-311.pyc +0 -0
  435. snappy/verify/__pycache__/cuspTranslations.cpython-311.pyc +0 -0
  436. snappy/verify/__pycache__/cusp_areas.cpython-311.pyc +0 -0
  437. snappy/verify/__pycache__/cusp_shapes.cpython-311.pyc +0 -0
  438. snappy/verify/__pycache__/exceptions.cpython-311.pyc +0 -0
  439. snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-311.pyc +0 -0
  440. snappy/verify/__pycache__/interval_tree.cpython-311.pyc +0 -0
  441. snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-311.pyc +0 -0
  442. snappy/verify/__pycache__/realAlgebra.cpython-311.pyc +0 -0
  443. snappy/verify/__pycache__/shapes.cpython-311.pyc +0 -0
  444. snappy/verify/__pycache__/short_slopes.cpython-311.pyc +0 -0
  445. snappy/verify/__pycache__/squareExtensions.cpython-311.pyc +0 -0
  446. snappy/verify/__pycache__/verifyCanonical.cpython-311.pyc +0 -0
  447. snappy/verify/__pycache__/verifyHyperbolicity.cpython-311.pyc +0 -0
  448. snappy/verify/__pycache__/volume.cpython-311.pyc +0 -0
  449. snappy/verify/complex_volume/__pycache__/__init__.cpython-311.pyc +0 -0
  450. snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-311.pyc +0 -0
  451. snappy/verify/complex_volume/__pycache__/closed.cpython-311.pyc +0 -0
  452. snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-311.pyc +0 -0
  453. snappy/verify/complex_volume/__pycache__/cusped.cpython-311.pyc +0 -0
  454. snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-311.pyc +0 -0
  455. snappy/verify/cuspCrossSection.py +0 -1422
  456. snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-311.pyc +0 -0
  457. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-311.pyc +0 -0
  458. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-311.pyc +0 -0
  459. snappy/verify/upper_halfspace/__pycache__/__init__.cpython-311.pyc +0 -0
  460. snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-311.pyc +0 -0
  461. snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-311.pyc +0 -0
  462. snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-311.pyc +0 -0
  463. snappy-3.1.1.dist-info/RECORD +0 -585
  464. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -0
@@ -5,7 +5,7 @@ Installing SnapPy
5
5
 
6
6
  Here are detailed instructions on how to get SnapPy working on a
7
7
  variety of platforms. The current version is |release| which was released
8
- on |release_date|. If you encounter problems installing SnapPy,
8
+ on |release_date|. If you encounter any problems installing SnapPy,
9
9
  :doc:`please let us know <bugs>`.
10
10
 
11
11
  macOS
@@ -14,8 +14,8 @@ macOS
14
14
  Simply download `SnapPy.dmg
15
15
  <https://github.com/3-manifolds/SnapPy/releases/latest/download/SnapPy.dmg>`_
16
16
  and copy SnapPy.app to the Applications folder. Double-click to start
17
- it, just like any other application. Works with macOS/OS X 10.9 and
18
- newer. Earlier releases `can be found here
17
+ it, just like any other application. The current version works with macOS 10.14 and
18
+ newer and earlier releases `can be found here
19
19
  <https://github.com/3-manifolds/SnapPy/releases/>`_.
20
20
 
21
21
  Windows
@@ -27,102 +27,154 @@ Earlier releases `can be found here
27
27
  <https://github.com/3-manifolds/SnapPy/releases/>`_.
28
28
 
29
29
 
30
- Linux
31
- -----
30
+ Linux app
31
+ ---------
32
+
33
+ Starting with SnapPy 3.2, a completely self-contained SnapPy `AppImage
34
+ <https://docs.appimage.org/introduction/quickstart.html#ref-quickstart>`_
35
+ is available that should work on any Linux system from the last 5
36
+ years. This AppImage contains its own private copy of Python, so if
37
+ you plan to use SnapPy in your own Python programs, skip ahead to
38
+ `Python Modules for Linux`_. Here is the recipe for installing the
39
+ AppImage in ``~/bin`` after you have downloaded the file
40
+ `SnapPy-x86_64.AppImage
41
+ <https://github.com/3-manifolds/SnapPy/releases/latest/download/SnapPy-x86_64.AppImage.>`_::
42
+
43
+ mkdir -p ~/bin
44
+ mv ~/Downloads/SnapPy-x86_64.AppImage ~/bin
45
+ chmod +x ~/bin/SnapPy-x86_64.AppImage
46
+ ln -s -f ~/bin/SnapPy-x86_64.AppImage ~/bin/SnapPy
47
+ ~/bin/SnapPy-x86_64.AppImage --install
48
+
49
+ The last command registers the SnapPy app with your desktop system and
50
+ starts it. Next time, you can start SnapPy by using the desktop
51
+ search tool with GNOME or the main menu with KDE. You can pin also the icon
52
+ to your dash or task bar for easy access. From a terminal window, you
53
+ can also start the app by typing ``SnapPy`` provided ``~/bin`` is in
54
+ your `$PATH <https://opensource.com/article/17/6/set-path-linux>`_.
55
+
32
56
 
33
- Here are short recipes which work on most Linux systems, specifically
34
- those that run a 64-bit kernel and have Python 3.6 or newer. These
35
- instructions assume you have system administrator (superuser)
36
- privileges to install software packages from your Linux distribution
37
- but want to install SnapPy (and its various Python dependencies) just
38
- in your own user directory, specifically ``~/.local``. For other
39
- Linux systems, try the one closest to yours below, and if that fails,
40
- follow the instructions for `generic Unix`_.
57
+ Python Modules for macOS or Windows
58
+ -----------------------------------
41
59
 
42
- + **Ubuntu/Debian/Mint**: Tested on Ubuntu 20.04::
60
+ If you write Python programs on macOS or Windows, you may wish to
61
+ install SnapPy as a Python module into your own copy of Python. We
62
+ support Python 3.9 and up. (On macOS, use a Python downloaded from
63
+ `Python.org <http://python.org>`_ and not the one provided by Apple.)
64
+ After installing Python, you may install a SnapPy module from your
65
+ Terminal application or Command Prompt with the command::
43
66
 
44
- sudo apt-get install python3-tk python3-pip
45
- # Note no "sudo" on the next one!
46
- python3 -m pip install --upgrade --user snappy
67
+ python3 -m pip install --upgrade --user snappy snappy_15_knots
47
68
 
48
- Users of Ubuntu 18.04 or older should do::
69
+ If you do not want the larger version of HTLinkExteriors that includes
70
+ the 15 crossing knots (it uses 110M of disk space), omit
71
+ ``snappy_15_knots`` from the command.
49
72
 
50
- sudo apt-get install python3-tk python3-pip
51
- # Note no "sudo" on the next two
52
- python3 -m pip install --upgrade --user pip wheel
53
- python3 -m pip install --upgrade --user snappy
54
73
 
55
- + **Fedora**: Tested on Fedora 30::
74
+ Python Modules for Linux
75
+ ------------------------
56
76
 
57
- sudo yum install python3-tkinter python3-pip
58
- # Note no "sudo" on the next one!
59
- python3 -m pip install --upgrade --user snappy
77
+ You can also use SnapPy with your Linux system's version of Python,
78
+ for example if you want to incorporate SnapPy in your own Python
79
+ scripts. These instructions assume you have system administrator
80
+ (superuser) privileges to install software packages from your Linux
81
+ distribution. (If you're not a superuser, use either the
82
+ `Linux app`_ or `conda`_.)
60
83
 
61
- + **Red Hat Enterprise Linux/CentOS/SciLinux**: These instructions
62
- are for version 7 or later, and you need to have the `EPEL packages
63
- available
64
- <https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F>`_.
65
- For CentOS and SciLinux, you can access EPEL packages by doing::
84
+ The first step is to install Python and other requirements; here's how
85
+ to do that on the most popular Linux distributions:
66
86
 
67
- sudo yum install epel-release
87
+ + **Ubuntu/Debian/Mint/MX Linux/Elementary:** Tested on Ubuntu 24.04::
68
88
 
69
- Now install via::
89
+ sudo apt install python3-pip python3-tk
70
90
 
71
- sudo yum install python36-tkinter python36-pip
72
- # Note no "sudo" on the next one!
73
- python36 -m pip install --upgrade --user snappy
91
+ + **Fedora**: Tested on Fedora 41::
74
92
 
75
- + **Arch/Manjaro**: Install via::
93
+ sudo dnf install python3-pip python3-tkinter
94
+
95
+ + **Arch/Manjaro/EndeavourOS**: Install via::
76
96
 
77
97
  sudo pacman -Sy python-pip tk
78
- # Note no "sudo" on the next one!
79
- python -m pip install --upgrade --user snappy
80
98
 
81
- + **openSUSE**: Install via::
99
+ + **openSUSE**: For Tumbleweed::
82
100
 
83
- sudo zypper install -y python3-tk python3-pip
84
- # Note no "sudo" on the next one!
85
- python3 -m pip install --upgrade --user snappy
101
+ sudo zypper install python3-pip python3-tk
86
102
 
87
- If you want the larger version of HTLinkExteriors that includes the 15
88
- crossing knots (uses 110M of disk space), also install the Python
89
- package ``snappy_15_knots``, e.g. on Ubuntu do::
103
+ For Leap, as of version 15.6 you need to ask for a recent version of
104
+ Python or it will give you Python 3.6 which is too old for SnapPy::
90
105
 
91
- python3 -m pip install --upgrade --user snappy_15_knots
106
+ sudo zypper install python312-pip python312-tk
92
107
 
93
- Once you have installed SnapPy, do the following to start it::
108
+ You will need to replace ``python3`` by ``python3.12`` in subsequent
109
+ steps.
110
+
111
+ + **Red Hat Enterprise Linux/CentOS/Rocky Linux/AlmaLinux:**: These instructions
112
+ are for version 8 or later; tested on AlmaLinux 8 and 9::
113
+
114
+ sudo dnf install python3.11-pip python3.11-tkinter
115
+
116
+ You will also need to replace ``python3`` by ``python3.11`` in subsequent
117
+ steps.
94
118
 
95
- ~/.local/bin/SnapPy
96
119
 
97
- You may get a message about creating a ".ipython" directory; this is
98
- normal, just hit return to continue. There should also now be a
99
- command "SnapPy" which does the same thing. To make it so that you
100
- can start SnapPy with just the command ``SnapPy``, make sure
101
- ``~/.local/bin`` is in `in your path
102
- <https://opensource.com/article/17/6/set-path-linux>`_.
120
+ Next, you need to install the SnapPy Python modules. For this, you can
121
+ either use a *virtual environment* (``python -m venv``) or do a *user
122
+ install* (``pip install --user``). The former will work on any
123
+ version of Linux, whereas the latter is now strongly discouraged on
124
+ many systems (e.g. Ubuntu 24.04). If you have not previously
125
+ installed SnapPy on this computer, we recommend using a virtual
126
+ environment, but suggest a user install if you are upgrading an
127
+ existing version of SnapPy that was installed in that manner.
103
128
 
129
+ Virtual environment
130
+ Here is the `official tutorial
131
+ <https://docs.python.org/3/tutorial/venv.html>`_ on using virtual
132
+ environments in Python and an `in-depth article
133
+ <https://realpython.com/python-virtual-environments-a-primer/>`_. A
134
+ recipe is::
104
135
 
105
- Python Modules for Macintosh or Windows
106
- ---------------------------------------
136
+ python3 -m venv snappy_venv
137
+ # Switch to snappy_venv's Python
138
+ source snappy_venv/bin/activate
139
+ pip install snappy snappy_15_knots
140
+ # Start the SnapPy app!
141
+ SnapPy
142
+ # Return to system Python
143
+ deactivate
107
144
 
108
- If you write Python programs on a Macintosh or Windows system, you may
109
- wish to install SnapPy as a Python module into your own copy of
110
- Python. We support Python 3.6 and up. (On macOS, use a Python
111
- downloaded from `Python.org <http://python.org>`_ and not the one
112
- provided by Apple.) After installing Python, you may install a SnapPy
113
- module from your Terminal application or Command Prompt with the
114
- commands::
145
+ If you always want to use the ``snappy_venv`` Python, adjust your
146
+ `$PATH <https://opensource.com/article/17/6/set-path-linux>`_ to
147
+ **start** with ``snappy_venv/bin``.
115
148
 
116
- python3 -m pip install --upgrade --user snappy
149
+ User install
150
+ To do a user install with pip, try::
117
151
 
118
- If you want the larger version of HTLinkExteriors that includes the 15
119
- crossing knots (uses 110M of disk space), do::
152
+ # Note no "sudo" below!
153
+ python3 -m pip install --upgrade --user snappy snappy_15_knots
120
154
 
121
- python3 -m pip install --upgrade --user snappy_15_knots
155
+ If you get a long error message that starts::
122
156
 
123
- If you use Python 2 rather than Python 3, replace ``python3`` with
124
- ``python`` in the above. If your Python lacks the pip module, `get it
125
- here <https://pip.pypa.io/en/stable/installing/>`_.
157
+ error: externally-managed-environment
158
+
159
+ you should probably use a virtual environment; however,
160
+ you can force pip to do a user install via::
161
+
162
+ # Note no "sudo" below!
163
+ python3 -m pip install --upgrade --user --break-system-packages snappy snappy_15_knots
164
+
165
+ Despite the scary name, provided you don't use ``sudo``, this will
166
+ not actually modify the system packages, but rather install
167
+ ``snappy`` into the subdirectory
168
+ ``~/.local/share/python3.*/site-packages`` of your home directory.
169
+
170
+ After a user install, you run the following command to start
171
+ the app::
172
+
173
+ ~/.local/bin/SnapPy
174
+
175
+ So that you can start SnapPy with just the command ``SnapPy``, make
176
+ sure ``~/.local/bin`` is in `in your path
177
+ <https://opensource.com/article/17/6/set-path-linux>`_.
126
178
 
127
179
 
128
180
  SageMath
@@ -131,15 +183,9 @@ SageMath
131
183
  SnapPy has some special features when used within `SageMath
132
184
  <http://sagemath.org>`_, the universal mathematics software based on
133
185
  Python. This section describes how to install SnapPy into your
134
- existing copy of SageMath, but you may find it easier to use the
135
- `kitchen sink`_ approach instead. You can install it as a Sage
136
- optional package via the following if using Sage 6.4 or newer::
137
-
138
- sage -pip install snappy
139
- sage -pip install snappy_15_knots # Larger version of HTLinkExteriors
186
+ existing copy of SageMath::
140
187
 
141
- If you are on macOS, we recommend use `this binary
142
- <https://github.com/3-manifolds/Sage_macOS/releases>`_.
188
+ sage -pip install --upgrade snappy snappy_15_knots
143
189
 
144
190
  Alternatively, SageMath on `CoCalc <https://cocalc.com/>`_ (formerly
145
191
  the SageMathCloud) also has SnapPy preinstalled, and the graphics
@@ -147,17 +193,13 @@ features even work via the `X11 interface
147
193
  <http://blog.sagemath.com/cocalc/2018/11/05/x11.html>`_, see the
148
194
  bottom of that page for more.
149
195
 
150
- If you previously installed SnapPy into SageMath and want to upgrade
151
- SnapPy to the latest version, do::
152
-
153
- sage -pip install --upgrade snappy
154
-
155
- If it has trouble when compiling CyOpenGL, you are probably missing
156
- the `"gl.h" headers <openglmesa>`. The graphical features may or may
157
- not work, depending on how Tkinter was configured within Sage, and may
158
- seem to "hang" when you try to start them. To deal with the latter
159
- issue type "%gui tk" at the Sage prompt; please note that doing so may
160
- break Sage's "attach" feature.
196
+ The graphical features may or may not work, depending on how Tkinter
197
+ was configured within Sage. (There is no problem on macOS if you use
198
+ this `SageMath binary
199
+ <https://github.com/3-manifolds/Sage_macOS/releases>`_.) If the
200
+ graphical features seem to "hang" when you try to start them, type
201
+ ``%gui tk`` at the Sage prompt; please note that doing so may break
202
+ Sage's "attach" feature.
161
203
 
162
204
 
163
205
  Kitchen sink
@@ -173,83 +215,24 @@ computational tools in low-dimensional topology including
173
215
  and `flipper <http://flipper.readthedocs.io>`_.
174
216
  We offer a `prepackaged Docker image
175
217
  <https://hub.docker.com/r/computop/sage/>`_ with all of the above tools
176
- and many more; using this is frequently the easiest way to get a
177
- working setup for such multifaceted computations. For more, watch
218
+ and many more; using this is sometimes the easiest way to get a
219
+ working setup for such multifaceted computations, especially on Windows. For more, watch
178
220
  `this demonstration <https://icerm.brown.edu/video_archive/?play=1992>`_.
179
221
 
180
- We also offer `conda environments
181
- <https://github.com/unhyperbolic/condaForSnapPy>`_ with SnapPy and
182
- optionally Sage (only on Mac OS and Linux). While it has none of the
183
- other aforementioned tools, it has the advantage that the GUI elements
184
- such as the link editor and the browser can be used directly.
185
222
 
223
+ Conda
224
+ -----
186
225
 
187
- Generic Unix
188
- ------------
189
-
190
- If you use a Unix other than OS X or Linux, or if the prebuilt
191
- packages don't work for you, you'll need to build SnapPy from source.
192
- Here are some detailed instructions.
193
-
194
- Things you'll need:
195
-
196
- - Python 3 with Tkinter: You'll need to have `Python
197
- <http://python.org>`_ (version 3.6 or newer) and `Tk
198
- <http://tcl.tk>`_ (at least version 8.5) with `Tkinter
199
- <http://wiki.python.org/moin/TkInter>`_ to connect them, including
200
- the header files. For instance, on Debian or Ubuntu, install the
201
- packages "python3-tk", "python3-pip", and "python3-dev". On Fedora,
202
- you'll want e.g. "python3-tkinter", "python3-pip", and
203
- "python3-devel", and "python3-wheel".
204
-
205
- - Test that Python is in order by installing PLink from source::
206
-
207
- python3 -m pip install --user plink
208
- python3 -m plink.app # Should start the link editor!
209
-
210
- .. _openglmesa:
211
-
212
- - Support for OpenGL (3D graphics): This is built in on OS X and the
213
- most installations of Fedora and Ubuntu. But you'll need the `MESA
214
- <http://www.mesa3d.org/>`_ header files "gl.h" and "glu.h" to compile
215
- SnapPy. On Debian and Ubuntu, install "libglu1-mesa-dev"; On Fedora install
216
- "mesa-libGLU-devel".
217
-
218
- - `Cython <http://cython.org>`_, which you can install via::
219
-
220
- python3 -m pip install --user cython
221
-
222
- - The gcc C++ compiler, g++.
223
-
224
- - `CyPari <https://pypi.python.org/pypi/cypari/>`_: a stand-alone version of
225
- `Sage's <http://sagemath.org>`_ Python interface to the
226
- `PARI <http://pari.math.u-bordeaux.fr/PARI>`_ number theory
227
- library. Usually, you can install this with::
228
-
229
- python3 -m pip install --user cypari
230
-
231
- Now download the `source code`_ listed below, for instance
232
-
233
- .. parsed-literal::
234
-
235
- wget https://pypi.python.org/packages/source/s/snappy/|tarball|
236
- tar xfz |tarball|; cd snappy-*
237
-
238
- There is one more dependency that may need to be dealt with:
239
-
240
- - `Togl <http://togl.sf.net>`_: a 3d widget for Tk. For OS X and
241
- Linux, there are pre-built binaries of this in the snappy
242
- subdirectory, e.g. snappy/linux2-tk8.4. For Linux these are built
243
- for 64-bit kernels, and should work on most systems. If they don't,
244
- you'll need to edit or follow "build_togl.sh" to build Togl directly.
245
-
246
- Finally, compile and install the SnapPy module (which will install
247
- certain other dependencies) and test::
226
+ Conda can be used to install Python on all platforms and is a
227
+ particularly good choice to use SnapPy on the older Linux systems
228
+ often found on high-performance clusters. Here is a recipe for
229
+ installing SnapPy into a new conda environment on macOS or Linux::
248
230
 
249
- python3 setup.py build
250
- python3 -m pip install --user .
251
- python3 -m snappy.test
252
- python3 -m snappy.app
231
+ source ~/miniforge3/bin/activate
232
+ mamba create --name snappy_env python=3.12
233
+ conda activate snappy_env
234
+ pip install snappy
235
+ python -m snappy.app
253
236
 
254
237
 
255
238
  Source code
@@ -4,7 +4,79 @@
4
4
  News
5
5
  ====
6
6
 
7
- * Version 3.1 (May 2023):
7
+
8
+ * Version 3.2 (January 2025):
9
+
10
+ - An alternative implementation of the length spectrum. It supports verified
11
+ computations and is significantly faster in some cases. See
12
+ :meth:`length_spectrum_alt <snappy.Manifold.length_spectrum_alt>`
13
+ and
14
+ :meth:`length_spectrum_alt_gen <snappy.Manifold.length_spectrum_alt_gen>`.
15
+
16
+ - :meth:`isometry_signature <snappy.Manifold.isometry_signature>` now also
17
+ works for closed manifolds.
18
+
19
+ - A paper plane or eye ball in the
20
+ :meth:`inside_view <snappy.Manifold.inside_view>` showing the position
21
+ and bearing of the user in the hyperbolic manifold. By default, we now show
22
+ the paper plane instead of the edges of the triangulation so that the view
23
+ is intrinsic to the manifold. The geodesics window now also features a
24
+ button to put the camera onto a geodesic. Here are some examples:
25
+
26
+ .. list-table::
27
+ :width: 100%
28
+ :class: borderless
29
+
30
+ * - .. image:: images/o9_00000_systole_paper_plane.jpg
31
+ :width: 90%
32
+ :align: center
33
+ :alt: Paper plane near shortest geodesic of o9_00000
34
+ - .. image:: images/o9_00000_systole_paper_plane_closer.jpg
35
+ :width: 90%
36
+ :align: center
37
+ :alt: Paper plane very near shortest geodesic of o9_00000
38
+ - .. image:: images/m004_paper_plane_on_systole.jpg
39
+ :width: 90%
40
+ :align: center
41
+ :alt: Paper plane on shortest geodesic of m004
42
+ - .. image:: images/m125_paper_plane.jpg
43
+ :width: 90%
44
+ :align: center
45
+ :alt: Paper plane coming out of a cusp of m125
46
+
47
+ - A faster and more robust algorithm to the compute maximal cusp area matrix.
48
+ The new algorithm is now the default for
49
+ :meth:`~snappy.Manifold.cusp_area_matrix`,
50
+ :meth:`~snappy.Manifold.cusp_areas`,
51
+ :meth:`~snappy.Manifold.short_slopes` and
52
+ :meth:`~snappy.Manifold.cusp_translations`.
53
+
54
+ - New options ``ignore_curves`` and ``ignore_filling_orientations``
55
+ for :meth:`~snappy.Triangulation.triangulation_isosig`. Also
56
+ fixing a subtle bug where the filling coefficients returned by
57
+ :meth:`triangulation_isosig <snappy.Triangulation.triangulation_isosig>` were
58
+ not canonical when ``ignore_curve_orientations = True``.
59
+
60
+ - :meth:`~snappy.Manifold.canonical_retriangulation`
61
+ and
62
+ :meth:`~snappy.Manifold.isometry_signature` fail with
63
+ exceptions rather than silently returning ``None``. In particular, it now
64
+ safe to compare isometry signatures (without further checks) to determine
65
+ whether M and N are isometric hyperbolic manifolds::
66
+
67
+ >>> M.isometry_signature(verified=True) == N.isometry_signature(verified=True)
68
+
69
+ - Bug fix to :meth:`slice_obstruction_HKL
70
+ <snappy.Manifold.slice_obstruction_HKL>`: earlier versions
71
+ incorrectly allowed looking at mod 2 homology of the branched
72
+ cover, where the theory does not directly apply.
73
+
74
+ - New self-contained SnapPy application for Linux.
75
+
76
+ - Support for Python 3.13 and SageMath 10.5.
77
+
78
+
79
+ * Versions 3.1 (May 2023) and 3.1.1 (June 2023):
8
80
 
9
81
  - A method :meth:`exterior_to_link <snappy.Manifold.exterior_to_link>`
10
82
  for going from a link exterior to a link diagram taken from
@@ -146,7 +146,7 @@ Compute the matrices for a representation
146
146
 
147
147
  **Remark:** Requires SnapPy 2.3 or later.
148
148
 
149
- Given a solution as above, we can take a word in the fundamental group and get its image under the representation using ``evaluate_word``. Here, we do it for the two generators::
149
+ Given a solution as above, we can take a word in the fundamental group and get its image under the representation using :py:meth:`~snappy.ptolemy.coordinates.PtolemyCoordinates.evaluate_word`. Here, we do it for the two generators::
150
150
 
151
151
  >>> M = Manifold("m003")
152
152
  >>> sol = M.ptolemy_variety(2).retrieve_solutions()[0]
@@ -156,16 +156,17 @@ Given a solution as above, we can take a word in the fundamental group and get i
156
156
  [[Mod(x, x^2 - x - 1), Mod(x, x^2 - x - 1)],
157
157
  [Mod(-x, x^2 - x - 1), Mod(-1, x^2 - x - 1)]]
158
158
 
159
- By default, this word is with respect to the presentation of the fundamental group that SnapPy computes when given no further arguments. Thus, we expect the identity matrix when we evaluate a relator (for PSL(*N*, **C**) the diagonal element will be an *N*-th root of unity)::
159
+ By default, this word is with respect to the unsimplified presentation of the fundamental group. Thus, we expect the identity matrix when we evaluate a relator (for PSL(*N*, **C**) the diagonal element will be an *N*-th root of unity)::
160
160
 
161
- >>> M.fundamental_group()
161
+ >>> M.fundamental_group(simplify_presentation=False)
162
162
  Generators:
163
- a,b
163
+ a,b,c
164
164
  Relators:
165
- abAAbabbb
166
- >>> sol.evaluate_word('abAAbabbb')
165
+ BCaC
166
+ AbCbA
167
+ >>> sol.evaluate_word('BCaC')
167
168
  [[Mod(1, x^2 - x - 1), 0], [0, Mod(1, x^2 - x - 1)]]
168
-
169
+
169
170
  We revisit computing the matrices :ref:`here <ptolemy-detailed-example-matrices>` to explain how to use a different presentation of the fundamental group.
170
171
 
171
172
  **Remark:** The matrices are currently returned as a list of list of pari ``POLMOD`` objects. In the future, the ptolemy module should return the matrices as sage matrices over a `sage NumberField <http://doc.sagemath.org/html/en/reference/number_fields/sage/rings/number_field/number_field.html>`_.
@@ -101,7 +101,7 @@ And here the same example retrieving solutions from the database::
101
101
  Computing the matrices for a different presentation
102
102
  ---------------------------------------------------
103
103
 
104
- The ``fundamental_group`` method of a SnapPy triangulation can yield different presentations by supplying optional arguments such as ``simplify_presentation`` and ``minimize_number_of_generators``. If we have a word in one of these presentations and want to evaluate its image under the representation, we need to supply the presentation as follows::
104
+ The :py:meth:`~snappy.Triangulation.fundamental_group` method of a SnapPy triangulation can yield different presentations by supplying optional arguments such as ``simplify_presentation`` and ``minimize_number_of_generators``. If we have a word in one of these presentations and want to evaluate its image under the representation, we need to supply the presentation as follows::
105
105
 
106
106
  >>> M=Manifold("m003")
107
107
  >>> sol = M.ptolemy_variety(2).retrieve_solutions()[0]
@@ -129,7 +129,7 @@ Again, we can check that the representation actually assigns the identity to all
129
129
  Computing the images of the peripheral curves for a representation
130
130
  ------------------------------------------------------------------
131
131
 
132
- The object returned by ``fundamental_group`` also contains words for the peripheral curves of a manifold. We can compute the corresponding matrices::
132
+ The object returned by :py:meth:`~snappy.Triangulation.fundamental_group` also contains words for the peripheral curves of a manifold. We can compute the corresponding matrices::
133
133
 
134
134
  >>> M = Manifold("m003")
135
135
  >>> G = M.fundamental_group()
@@ -3,8 +3,8 @@
3
3
  Triangulation
4
4
  =================
5
5
 
6
- The main snappy class, namely Manifold, is derived from more
7
- basic class below.
6
+ The main snappy class, namely Manifold, is derived from the more
7
+ basic class below.
8
8
 
9
9
  .. autoclass:: snappy.Triangulation
10
10
  :members: