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
@@ -1,23 +1,23 @@
1
+
2
+
1
3
  <!DOCTYPE html>
2
- <html class="writer-html5" lang="en" >
4
+ <html class="writer-html5" lang="en" data-content_root="./">
3
5
  <head>
4
- <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
6
+ <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
5
7
 
6
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <title>Installing SnapPy &mdash; SnapPy 3.1.1 documentation</title>
8
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
9
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
10
- <link rel="stylesheet" href="_static/snappy_sphinx_rtd_theme.css" type="text/css" />
11
- <link rel="shortcut icon" href="_static/SnapPy.ico"/>
12
- <!--[if lt IE 9]>
13
- <script src="_static/js/html5shiv.min.js"></script>
14
- <![endif]-->
9
+ <title>Installing SnapPy &mdash; SnapPy 3.2 documentation</title>
10
+ <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
11
+ <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
12
+ <link rel="stylesheet" type="text/css" href="_static/snappy_sphinx_rtd_theme.css?v=1b8ec2a8" />
13
+
15
14
 
16
- <script src="_static/jquery.js"></script>
17
- <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
18
- <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
19
- <script src="_static/doctools.js"></script>
20
- <script src="_static/sphinx_highlight.js"></script>
15
+ <link rel="shortcut icon" href="_static/SnapPy.ico"/>
16
+ <script src="_static/jquery.js?v=5d32c60e"></script>
17
+ <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
18
+ <script src="_static/documentation_options.js?v=828ea960"></script>
19
+ <script src="_static/doctools.js?v=9a2dae69"></script>
20
+ <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
21
21
  <script src="_static/js/theme.js"></script>
22
22
  <link rel="index" title="Index" href="genindex.html" />
23
23
  <link rel="search" title="Search" href="search.html" />
@@ -37,9 +37,6 @@
37
37
  SnapPy
38
38
  <img src="_static/SnapPy-horizontal-128.png" class="logo" alt="Logo"/>
39
39
  </a>
40
- <div class="version">
41
- 3.1.1
42
- </div>
43
40
  <div role="search">
44
41
  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
45
42
  <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
@@ -52,11 +49,12 @@
52
49
  <li class="toctree-l1 current"><a class="current reference internal" href="#">Installing SnapPy</a><ul>
53
50
  <li class="toctree-l2"><a class="reference internal" href="#macos">macOS</a></li>
54
51
  <li class="toctree-l2"><a class="reference internal" href="#windows">Windows</a></li>
55
- <li class="toctree-l2"><a class="reference internal" href="#linux">Linux</a></li>
56
- <li class="toctree-l2"><a class="reference internal" href="#python-modules-for-macintosh-or-windows">Python Modules for Macintosh or Windows</a></li>
52
+ <li class="toctree-l2"><a class="reference internal" href="#linux-app">Linux app</a></li>
53
+ <li class="toctree-l2"><a class="reference internal" href="#python-modules-for-macos-or-windows">Python Modules for macOS or Windows</a></li>
54
+ <li class="toctree-l2"><a class="reference internal" href="#python-modules-for-linux">Python Modules for Linux</a></li>
57
55
  <li class="toctree-l2"><a class="reference internal" href="#sagemath">SageMath</a></li>
58
56
  <li class="toctree-l2"><a class="reference internal" href="#kitchen-sink">Kitchen sink</a></li>
59
- <li class="toctree-l2"><a class="reference internal" href="#generic-unix">Generic Unix</a></li>
57
+ <li class="toctree-l2"><a class="reference internal" href="#conda">Conda</a></li>
60
58
  <li class="toctree-l2"><a class="reference internal" href="#source-code">Source code</a></li>
61
59
  </ul>
62
60
  </li>
@@ -99,151 +97,184 @@
99
97
  <div itemprop="articleBody">
100
98
 
101
99
  <section id="installing-snappy">
102
- <h1>Installing SnapPy<a class="headerlink" href="#installing-snappy" title="Permalink to this heading"></a></h1>
100
+ <h1>Installing SnapPy<a class="headerlink" href="#installing-snappy" title="Link to this heading"></a></h1>
103
101
  <p>Here are detailed instructions on how to get SnapPy working on a
104
- variety of platforms. The current version is 3.1.1 which was released
105
- on June 2023. If you encounter problems installing SnapPy,
102
+ variety of platforms. The current version is 3.2 which was released
103
+ on January 2025. If you encounter any problems installing SnapPy,
106
104
  <a class="reference internal" href="bugs.html"><span class="doc">please let us know</span></a>.</p>
107
105
  <section id="macos">
108
- <h2>macOS<a class="headerlink" href="#macos" title="Permalink to this heading"></a></h2>
106
+ <h2>macOS<a class="headerlink" href="#macos" title="Link to this heading"></a></h2>
109
107
  <p>Simply download <a class="reference external" href="https://github.com/3-manifolds/SnapPy/releases/latest/download/SnapPy.dmg">SnapPy.dmg</a>
110
108
  and copy SnapPy.app to the Applications folder. Double-click to start
111
- it, just like any other application. Works with macOS/OS X 10.9 and
112
- newer. Earlier releases <a class="reference external" href="https://github.com/3-manifolds/SnapPy/releases/">can be found here</a>.</p>
109
+ it, just like any other application. The current version works with macOS 10.14 and
110
+ newer and earlier releases <a class="reference external" href="https://github.com/3-manifolds/SnapPy/releases/">can be found here</a>.</p>
113
111
  </section>
114
112
  <section id="windows">
115
- <h2>Windows<a class="headerlink" href="#windows" title="Permalink to this heading"></a></h2>
113
+ <h2>Windows<a class="headerlink" href="#windows" title="Link to this heading"></a></h2>
116
114
  <p>Simply download and run <a class="reference external" href="https://github.com/3-manifolds/SnapPy/releases/latest/download/InstallSnapPy.exe">InstallSnapPy.exe</a>.
117
115
  Earlier releases <a class="reference external" href="https://github.com/3-manifolds/SnapPy/releases/">can be found here</a>.</p>
118
116
  </section>
119
- <section id="linux">
120
- <h2>Linux<a class="headerlink" href="#linux" title="Permalink to this heading"></a></h2>
121
- <p>Here are short recipes which work on most Linux systems, specifically
122
- those that run a 64-bit kernel and have Python 3.6 or newer. These
123
- instructions assume you have system administrator (superuser)
124
- privileges to install software packages from your Linux distribution
125
- but want to install SnapPy (and its various Python dependencies) just
126
- in your own user directory, specifically <code class="docutils literal notranslate"><span class="pre">~/.local</span></code>. For other
127
- Linux systems, try the one closest to yours below, and if that fails,
128
- follow the instructions for <a class="reference internal" href="#generic-unix">generic Unix</a>.</p>
129
- <ul>
130
- <li><p><strong>Ubuntu/Debian/Mint</strong>: Tested on Ubuntu 20.04:</p>
131
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">python3</span><span class="o">-</span><span class="n">tk</span> <span class="n">python3</span><span class="o">-</span><span class="n">pip</span>
132
- <span class="c1"># Note no &quot;sudo&quot; on the next one!</span>
133
- <span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">--</span><span class="n">user</span> <span class="n">snappy</span>
117
+ <section id="linux-app">
118
+ <h2>Linux app<a class="headerlink" href="#linux-app" title="Link to this heading"></a></h2>
119
+ <p>Starting with SnapPy 3.2, a completely self-contained SnapPy <a class="reference external" href="https://docs.appimage.org/introduction/quickstart.html#ref-quickstart">AppImage</a>
120
+ is available that should work on any Linux system from the last 5
121
+ years. This AppImage contains its own private copy of Python, so if
122
+ you plan to use SnapPy in your own Python programs, skip ahead to
123
+ <a class="reference internal" href="#python-modules-for-linux">Python Modules for Linux</a>. Here is the recipe for installing the
124
+ AppImage in <code class="docutils literal notranslate"><span class="pre">~/bin</span></code> after you have downloaded the file
125
+ <a class="reference external" href="https://github.com/3-manifolds/SnapPy/releases/latest/download/SnapPy-x86_64.AppImage.">SnapPy-x86_64.AppImage</a>:</p>
126
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">mkdir</span> <span class="o">-</span><span class="n">p</span> <span class="o">~/</span><span class="nb">bin</span>
127
+ <span class="n">mv</span> <span class="o">~/</span><span class="n">Downloads</span><span class="o">/</span><span class="n">SnapPy</span><span class="o">-</span><span class="n">x86_64</span><span class="o">.</span><span class="n">AppImage</span> <span class="o">~/</span><span class="nb">bin</span>
128
+ <span class="n">chmod</span> <span class="o">+</span><span class="n">x</span> <span class="o">~/</span><span class="nb">bin</span><span class="o">/</span><span class="n">SnapPy</span><span class="o">-</span><span class="n">x86_64</span><span class="o">.</span><span class="n">AppImage</span>
129
+ <span class="n">ln</span> <span class="o">-</span><span class="n">s</span> <span class="o">-</span><span class="n">f</span> <span class="o">~/</span><span class="nb">bin</span><span class="o">/</span><span class="n">SnapPy</span><span class="o">-</span><span class="n">x86_64</span><span class="o">.</span><span class="n">AppImage</span> <span class="o">~/</span><span class="nb">bin</span><span class="o">/</span><span class="n">SnapPy</span>
130
+ <span class="o">~/</span><span class="nb">bin</span><span class="o">/</span><span class="n">SnapPy</span><span class="o">-</span><span class="n">x86_64</span><span class="o">.</span><span class="n">AppImage</span> <span class="o">--</span><span class="n">install</span>
134
131
  </pre></div>
135
132
  </div>
136
- <p>Users of Ubuntu 18.04 or older should do:</p>
137
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">python3</span><span class="o">-</span><span class="n">tk</span> <span class="n">python3</span><span class="o">-</span><span class="n">pip</span>
138
- <span class="c1"># Note no &quot;sudo&quot; on the next two</span>
139
- <span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">--</span><span class="n">user</span> <span class="n">pip</span> <span class="n">wheel</span>
140
- <span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">--</span><span class="n">user</span> <span class="n">snappy</span>
133
+ <p>The last command registers the SnapPy app with your desktop system and
134
+ starts it. Next time, you can start SnapPy by using the desktop
135
+ search tool with GNOME or the main menu with KDE. You can pin also the icon
136
+ to your dash or task bar for easy access. From a terminal window, you
137
+ can also start the app by typing <code class="docutils literal notranslate"><span class="pre">SnapPy</span></code> provided <code class="docutils literal notranslate"><span class="pre">~/bin</span></code> is in
138
+ your <a class="reference external" href="https://opensource.com/article/17/6/set-path-linux">$PATH</a>.</p>
139
+ </section>
140
+ <section id="python-modules-for-macos-or-windows">
141
+ <h2>Python Modules for macOS or Windows<a class="headerlink" href="#python-modules-for-macos-or-windows" title="Link to this heading"></a></h2>
142
+ <p>If you write Python programs on macOS or Windows, you may wish to
143
+ install SnapPy as a Python module into your own copy of Python. We
144
+ support Python 3.9 and up. (On macOS, use a Python downloaded from
145
+ <a class="reference external" href="http://python.org">Python.org</a> and not the one provided by Apple.)
146
+ After installing Python, you may install a SnapPy module from your
147
+ Terminal application or Command Prompt with the command:</p>
148
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">--</span><span class="n">user</span> <span class="n">snappy</span> <span class="n">snappy_15_knots</span>
141
149
  </pre></div>
142
150
  </div>
143
- </li>
144
- <li><p><strong>Fedora</strong>: Tested on Fedora 30:</p>
145
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">yum</span> <span class="n">install</span> <span class="n">python3</span><span class="o">-</span><span class="n">tkinter</span> <span class="n">python3</span><span class="o">-</span><span class="n">pip</span>
146
- <span class="c1"># Note no &quot;sudo&quot; on the next one!</span>
147
- <span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">--</span><span class="n">user</span> <span class="n">snappy</span>
151
+ <p>If you do not want the larger version of HTLinkExteriors that includes
152
+ the 15 crossing knots (it uses 110M of disk space), omit
153
+ <code class="docutils literal notranslate"><span class="pre">snappy_15_knots</span></code> from the command.</p>
154
+ </section>
155
+ <section id="python-modules-for-linux">
156
+ <h2>Python Modules for Linux<a class="headerlink" href="#python-modules-for-linux" title="Link to this heading"></a></h2>
157
+ <p>You can also use SnapPy with your Linux system’s version of Python,
158
+ for example if you want to incorporate SnapPy in your own Python
159
+ scripts. These instructions assume you have system administrator
160
+ (superuser) privileges to install software packages from your Linux
161
+ distribution. (If you’re not a superuser, use either the
162
+ <a class="reference internal" href="#linux-app">Linux app</a> or <a class="reference internal" href="#conda">conda</a>.)</p>
163
+ <p>The first step is to install Python and other requirements; here’s how
164
+ to do that on the most popular Linux distributions:</p>
165
+ <ul>
166
+ <li><p><strong>Ubuntu/Debian/Mint/MX Linux/Elementary:</strong> Tested on Ubuntu 24.04:</p>
167
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span> <span class="n">install</span> <span class="n">python3</span><span class="o">-</span><span class="n">pip</span> <span class="n">python3</span><span class="o">-</span><span class="n">tk</span>
148
168
  </pre></div>
149
169
  </div>
150
170
  </li>
151
- <li><p><strong>Red Hat Enterprise Linux/CentOS/SciLinux</strong>: These instructions
152
- are for version 7 or later, and you need to have the <a class="reference external" href="https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F">EPEL packages
153
- available</a>.
154
- For CentOS and SciLinux, you can access EPEL packages by doing:</p>
155
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">yum</span> <span class="n">install</span> <span class="n">epel</span><span class="o">-</span><span class="n">release</span>
171
+ <li><p><strong>Fedora</strong>: Tested on Fedora 41:</p>
172
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">dnf</span> <span class="n">install</span> <span class="n">python3</span><span class="o">-</span><span class="n">pip</span> <span class="n">python3</span><span class="o">-</span><span class="n">tkinter</span>
156
173
  </pre></div>
157
174
  </div>
158
- <p>Now install via:</p>
159
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">yum</span> <span class="n">install</span> <span class="n">python36</span><span class="o">-</span><span class="n">tkinter</span> <span class="n">python36</span><span class="o">-</span><span class="n">pip</span>
160
- <span class="c1"># Note no &quot;sudo&quot; on the next one!</span>
161
- <span class="n">python36</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">--</span><span class="n">user</span> <span class="n">snappy</span>
175
+ </li>
176
+ <li><p><strong>Arch/Manjaro/EndeavourOS</strong>: Install via:</p>
177
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">pacman</span> <span class="o">-</span><span class="n">Sy</span> <span class="n">python</span><span class="o">-</span><span class="n">pip</span> <span class="n">tk</span>
162
178
  </pre></div>
163
179
  </div>
164
180
  </li>
165
- <li><p><strong>Arch/Manjaro</strong>: Install via:</p>
166
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">pacman</span> <span class="o">-</span><span class="n">Sy</span> <span class="n">python</span><span class="o">-</span><span class="n">pip</span> <span class="n">tk</span>
167
- <span class="c1"># Note no &quot;sudo&quot; on the next one!</span>
168
- <span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">--</span><span class="n">user</span> <span class="n">snappy</span>
181
+ <li><p><strong>openSUSE</strong>: For Tumbleweed:</p>
182
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">zypper</span> <span class="n">install</span> <span class="n">python3</span><span class="o">-</span><span class="n">pip</span> <span class="n">python3</span><span class="o">-</span><span class="n">tk</span>
169
183
  </pre></div>
170
184
  </div>
185
+ <p>For Leap, as of version 15.6 you need to ask for a recent version of
186
+ Python or it will give you Python 3.6 which is too old for SnapPy:</p>
187
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">zypper</span> <span class="n">install</span> <span class="n">python312</span><span class="o">-</span><span class="n">pip</span> <span class="n">python312</span><span class="o">-</span><span class="n">tk</span>
188
+ </pre></div>
189
+ </div>
190
+ <p>You will need to replace <code class="docutils literal notranslate"><span class="pre">python3</span></code> by <code class="docutils literal notranslate"><span class="pre">python3.12</span></code> in subsequent
191
+ steps.</p>
171
192
  </li>
172
- <li><p><strong>openSUSE</strong>: Install via:</p>
173
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">zypper</span> <span class="n">install</span> <span class="o">-</span><span class="n">y</span> <span class="n">python3</span><span class="o">-</span><span class="n">tk</span> <span class="n">python3</span><span class="o">-</span><span class="n">pip</span>
174
- <span class="c1"># Note no &quot;sudo&quot; on the next one!</span>
175
- <span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">--</span><span class="n">user</span> <span class="n">snappy</span>
193
+ <li><p><strong>Red Hat Enterprise Linux/CentOS/Rocky Linux/AlmaLinux:</strong>: These instructions
194
+ are for version 8 or later; tested on AlmaLinux 8 and 9:</p>
195
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">dnf</span> <span class="n">install</span> <span class="n">python3</span><span class="mf">.11</span><span class="o">-</span><span class="n">pip</span> <span class="n">python3</span><span class="mf">.11</span><span class="o">-</span><span class="n">tkinter</span>
176
196
  </pre></div>
177
197
  </div>
198
+ <p>You will also need to replace <code class="docutils literal notranslate"><span class="pre">python3</span></code> by <code class="docutils literal notranslate"><span class="pre">python3.11</span></code> in subsequent
199
+ steps.</p>
178
200
  </li>
179
201
  </ul>
180
- <p>If you want the larger version of HTLinkExteriors that includes the 15
181
- crossing knots (uses 110M of disk space), also install the Python
182
- package <code class="docutils literal notranslate"><span class="pre">snappy_15_knots</span></code>, e.g. on Ubuntu do:</p>
183
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">--</span><span class="n">user</span> <span class="n">snappy_15_knots</span>
202
+ <p>Next, you need to install the SnapPy Python modules. For this, you can
203
+ either use a <em>virtual environment</em> (<code class="docutils literal notranslate"><span class="pre">python</span> <span class="pre">-m</span> <span class="pre">venv</span></code>) or do a <em>user
204
+ install</em> (<code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">--user</span></code>). The former will work on any
205
+ version of Linux, whereas the latter is now strongly discouraged on
206
+ many systems (e.g. Ubuntu 24.04). If you have not previously
207
+ installed SnapPy on this computer, we recommend using a virtual
208
+ environment, but suggest a user install if you are upgrading an
209
+ existing version of SnapPy that was installed in that manner.</p>
210
+ <dl>
211
+ <dt>Virtual environment</dt><dd><p>Here is the <a class="reference external" href="https://docs.python.org/3/tutorial/venv.html">official tutorial</a> on using virtual
212
+ environments in Python and an <a class="reference external" href="https://realpython.com/python-virtual-environments-a-primer/">in-depth article</a>. A
213
+ recipe is:</p>
214
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">venv</span> <span class="n">snappy_venv</span>
215
+ <span class="c1"># Switch to snappy_venv&#39;s Python</span>
216
+ <span class="n">source</span> <span class="n">snappy_venv</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">activate</span>
217
+ <span class="n">pip</span> <span class="n">install</span> <span class="n">snappy</span> <span class="n">snappy_15_knots</span>
218
+ <span class="c1"># Start the SnapPy app!</span>
219
+ <span class="n">SnapPy</span>
220
+ <span class="c1"># Return to system Python</span>
221
+ <span class="n">deactivate</span>
184
222
  </pre></div>
185
223
  </div>
186
- <p>Once you have installed SnapPy, do the following to start it:</p>
187
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">~/.</span><span class="n">local</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">SnapPy</span>
224
+ <p>If you always want to use the <code class="docutils literal notranslate"><span class="pre">snappy_venv</span></code> Python, adjust your
225
+ <a class="reference external" href="https://opensource.com/article/17/6/set-path-linux">$PATH</a> to
226
+ <strong>start</strong> with <code class="docutils literal notranslate"><span class="pre">snappy_venv/bin</span></code>.</p>
227
+ </dd>
228
+ <dt>User install</dt><dd><p>To do a user install with pip, try:</p>
229
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Note no &quot;sudo&quot; below!</span>
230
+ <span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">--</span><span class="n">user</span> <span class="n">snappy</span> <span class="n">snappy_15_knots</span>
188
231
  </pre></div>
189
232
  </div>
190
- <p>You may get a message about creating a “.ipython” directory; this is
191
- normal, just hit return to continue. There should also now be a
192
- command “SnapPy” which does the same thing. To make it so that you
193
- can start SnapPy with just the command <code class="docutils literal notranslate"><span class="pre">SnapPy</span></code>, make sure
194
- <code class="docutils literal notranslate"><span class="pre">~/.local/bin</span></code> is in <a class="reference external" href="https://opensource.com/article/17/6/set-path-linux">in your path</a>.</p>
195
- </section>
196
- <section id="python-modules-for-macintosh-or-windows">
197
- <h2>Python Modules for Macintosh or Windows<a class="headerlink" href="#python-modules-for-macintosh-or-windows" title="Permalink to this heading"></a></h2>
198
- <p>If you write Python programs on a Macintosh or Windows system, you may
199
- wish to install SnapPy as a Python module into your own copy of
200
- Python. We support Python 3.6 and up. (On macOS, use a Python
201
- downloaded from <a class="reference external" href="http://python.org">Python.org</a> and not the one
202
- provided by Apple.) After installing Python, you may install a SnapPy
203
- module from your Terminal application or Command Prompt with the
204
- commands:</p>
205
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">--</span><span class="n">user</span> <span class="n">snappy</span>
233
+ <p>If you get a long error message that starts:</p>
234
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">error</span><span class="p">:</span> <span class="n">externally</span><span class="o">-</span><span class="n">managed</span><span class="o">-</span><span class="n">environment</span>
206
235
  </pre></div>
207
236
  </div>
208
- <p>If you want the larger version of HTLinkExteriors that includes the 15
209
- crossing knots (uses 110M of disk space), do:</p>
210
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">--</span><span class="n">user</span> <span class="n">snappy_15_knots</span>
237
+ <p>you should probably use a virtual environment; however,
238
+ you can force pip to do a user install via:</p>
239
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Note no &quot;sudo&quot; below!</span>
240
+ <span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">--</span><span class="n">user</span> <span class="o">--</span><span class="k">break</span><span class="o">-</span><span class="n">system</span><span class="o">-</span><span class="n">packages</span> <span class="n">snappy</span> <span class="n">snappy_15_knots</span>
211
241
  </pre></div>
212
242
  </div>
213
- <p>If you use Python 2 rather than Python 3, replace <code class="docutils literal notranslate"><span class="pre">python3</span></code> with
214
- <code class="docutils literal notranslate"><span class="pre">python</span></code> in the above. If your Python lacks the pip module, <a class="reference external" href="https://pip.pypa.io/en/stable/installing/">get it
215
- here</a>.</p>
243
+ <p>Despite the scary name, provided you don’t use <code class="docutils literal notranslate"><span class="pre">sudo</span></code>, this will
244
+ not actually modify the system packages, but rather install
245
+ <code class="docutils literal notranslate"><span class="pre">snappy</span></code> into the subdirectory
246
+ <code class="docutils literal notranslate"><span class="pre">~/.local/share/python3.*/site-packages</span></code> of your home directory.</p>
247
+ <p>After a user install, you run the following command to start
248
+ the app:</p>
249
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">~/.</span><span class="n">local</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">SnapPy</span>
250
+ </pre></div>
251
+ </div>
252
+ <p>So that you can start SnapPy with just the command <code class="docutils literal notranslate"><span class="pre">SnapPy</span></code>, make
253
+ sure <code class="docutils literal notranslate"><span class="pre">~/.local/bin</span></code> is in <a class="reference external" href="https://opensource.com/article/17/6/set-path-linux">in your path</a>.</p>
254
+ </dd>
255
+ </dl>
216
256
  </section>
217
257
  <section id="sagemath">
218
- <h2>SageMath<a class="headerlink" href="#sagemath" title="Permalink to this heading"></a></h2>
258
+ <h2>SageMath<a class="headerlink" href="#sagemath" title="Link to this heading"></a></h2>
219
259
  <p>SnapPy has some special features when used within <a class="reference external" href="http://sagemath.org">SageMath</a>, the universal mathematics software based on
220
260
  Python. This section describes how to install SnapPy into your
221
- existing copy of SageMath, but you may find it easier to use the
222
- <a class="reference internal" href="#kitchen-sink">kitchen sink</a> approach instead. You can install it as a Sage
223
- optional package via the following if using Sage 6.4 or newer:</p>
224
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span> <span class="o">-</span><span class="n">pip</span> <span class="n">install</span> <span class="n">snappy</span>
225
- <span class="n">sage</span> <span class="o">-</span><span class="n">pip</span> <span class="n">install</span> <span class="n">snappy_15_knots</span> <span class="c1"># Larger version of HTLinkExteriors</span>
261
+ existing copy of SageMath:</p>
262
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span> <span class="o">-</span><span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="n">snappy</span> <span class="n">snappy_15_knots</span>
226
263
  </pre></div>
227
264
  </div>
228
- <p>If you are on macOS, we recommend use <a class="reference external" href="https://github.com/3-manifolds/Sage_macOS/releases">this binary</a>.</p>
229
265
  <p>Alternatively, SageMath on <a class="reference external" href="https://cocalc.com/">CoCalc</a> (formerly
230
266
  the SageMathCloud) also has SnapPy preinstalled, and the graphics
231
267
  features even work via the <a class="reference external" href="http://blog.sagemath.com/cocalc/2018/11/05/x11.html">X11 interface</a>, see the
232
268
  bottom of that page for more.</p>
233
- <p>If you previously installed SnapPy into SageMath and want to upgrade
234
- SnapPy to the latest version, do:</p>
235
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span> <span class="o">-</span><span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="n">snappy</span>
236
- </pre></div>
237
- </div>
238
- <p>If it has trouble when compiling CyOpenGL, you are probably missing
239
- the <cite>“gl.h” headers &lt;openglmesa&gt;</cite>. The graphical features may or may
240
- not work, depending on how Tkinter was configured within Sage, and may
241
- seem to “hang” when you try to start them. To deal with the latter
242
- issue type “%gui tk” at the Sage prompt; please note that doing so may
243
- break Sage’s “attach” feature.</p>
269
+ <p>The graphical features may or may not work, depending on how Tkinter
270
+ was configured within Sage. (There is no problem on macOS if you use
271
+ this <a class="reference external" href="https://github.com/3-manifolds/Sage_macOS/releases">SageMath binary</a>.) If the
272
+ graphical features seem to “hang” when you try to start them, type
273
+ <code class="docutils literal notranslate"><span class="pre">%gui</span> <span class="pre">tk</span></code> at the Sage prompt; please note that doing so may break
274
+ Sage’s “attach” feature.</p>
244
275
  </section>
245
276
  <section id="kitchen-sink">
246
- <h2>Kitchen sink<a class="headerlink" href="#kitchen-sink" title="Permalink to this heading"></a></h2>
277
+ <h2>Kitchen sink<a class="headerlink" href="#kitchen-sink" title="Link to this heading"></a></h2>
247
278
  <p>SnapPy gains extra features when used in <a class="reference external" href="http://sagemath.org">SageMath</a> and one can use
248
279
  Sage’s Python to interact not just with SnapPy but a range of other
249
280
  computational tools in low-dimensional topology including
@@ -253,76 +284,27 @@ computational tools in low-dimensional topology including
253
284
  <a class="reference external" href="https://github.com/3-manifolds/gridlink">gridlink</a>,
254
285
  and <a class="reference external" href="http://flipper.readthedocs.io">flipper</a>.
255
286
  We offer a <a class="reference external" href="https://hub.docker.com/r/computop/sage/">prepackaged Docker image</a> with all of the above tools
256
- and many more; using this is frequently the easiest way to get a
257
- working setup for such multifaceted computations. For more, watch
287
+ and many more; using this is sometimes the easiest way to get a
288
+ working setup for such multifaceted computations, especially on Windows. For more, watch
258
289
  <a class="reference external" href="https://icerm.brown.edu/video_archive/?play=1992">this demonstration</a>.</p>
259
- <p>We also offer <a class="reference external" href="https://github.com/unhyperbolic/condaForSnapPy">conda environments</a> with SnapPy and
260
- optionally Sage (only on Mac OS and Linux). While it has none of the
261
- other aforementioned tools, it has the advantage that the GUI elements
262
- such as the link editor and the browser can be used directly.</p>
263
290
  </section>
264
- <section id="generic-unix">
265
- <h2>Generic Unix<a class="headerlink" href="#generic-unix" title="Permalink to this heading"></a></h2>
266
- <p>If you use a Unix other than OS X or Linux, or if the prebuilt
267
- packages don’t work for you, you’ll need to build SnapPy from source.
268
- Here are some detailed instructions.</p>
269
- <p>Things you’ll need:</p>
270
- <ul>
271
- <li><p>Python 3 with Tkinter: You’ll need to have <a class="reference external" href="http://python.org">Python</a> (version 3.6 or newer) and <a class="reference external" href="http://tcl.tk">Tk</a> (at least version 8.5) with <a class="reference external" href="http://wiki.python.org/moin/TkInter">Tkinter</a> to connect them, including
272
- the header files. For instance, on Debian or Ubuntu, install the
273
- packages “python3-tk”, “python3-pip”, and “python3-dev”. On Fedora,
274
- you’ll want e.g. “python3-tkinter”, “python3-pip”, and
275
- “python3-devel”, and “python3-wheel”.</p></li>
276
- <li><p>Test that Python is in order by installing PLink from source:</p>
277
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">user</span> <span class="n">plink</span>
278
- <span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">plink</span><span class="o">.</span><span class="n">app</span> <span class="c1"># Should start the link editor!</span>
279
- </pre></div>
280
- </div>
281
- </li>
282
- </ul>
283
- <ul id="openglmesa">
284
- <li><p>Support for OpenGL (3D graphics): This is built in on OS X and the
285
- most installations of Fedora and Ubuntu. But you’ll need the <a class="reference external" href="http://www.mesa3d.org/">MESA</a> header files “gl.h” and “glu.h” to compile
286
- SnapPy. On Debian and Ubuntu, install “libglu1-mesa-dev”; On Fedora install
287
- “mesa-libGLU-devel”.</p></li>
288
- <li><p><a class="reference external" href="http://cython.org">Cython</a>, which you can install via:</p>
289
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">user</span> <span class="n">cython</span>
290
- </pre></div>
291
- </div>
292
- </li>
293
- <li><p>The gcc C++ compiler, g++.</p></li>
294
- <li><p><a class="reference external" href="https://pypi.python.org/pypi/cypari/">CyPari</a>: a stand-alone version of
295
- <a class="reference external" href="http://sagemath.org">Sage’s</a> Python interface to the
296
- <a class="reference external" href="http://pari.math.u-bordeaux.fr/PARI">PARI</a> number theory
297
- library. Usually, you can install this with:</p>
298
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">user</span> <span class="n">cypari</span>
299
- </pre></div>
300
- </div>
301
- </li>
302
- </ul>
303
- <p>Now download the <a class="reference internal" href="#source-code">source code</a> listed below, for instance</p>
304
- <pre class="literal-block">wget <a class="reference external" href="https://pypi.python.org/packages/source/s/snappy/">https://pypi.python.org/packages/source/s/snappy/</a>snappy-3.1.1.tar.gz
305
- tar xfz snappy-3.1.1.tar.gz; cd snappy-*</pre>
306
- <p>There is one more dependency that may need to be dealt with:</p>
307
- <ul class="simple">
308
- <li><p><a class="reference external" href="http://togl.sf.net">Togl</a>: a 3d widget for Tk. For OS X and
309
- Linux, there are pre-built binaries of this in the snappy
310
- subdirectory, e.g. snappy/linux2-tk8.4. For Linux these are built
311
- for 64-bit kernels, and should work on most systems. If they don’t,
312
- you’ll need to edit or follow “build_togl.sh” to build Togl directly.</p></li>
313
- </ul>
314
- <p>Finally, compile and install the SnapPy module (which will install
315
- certain other dependencies) and test:</p>
316
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">build</span>
317
- <span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">user</span> <span class="o">.</span>
318
- <span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">snappy</span><span class="o">.</span><span class="n">test</span>
319
- <span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">snappy</span><span class="o">.</span><span class="n">app</span>
291
+ <section id="conda">
292
+ <h2>Conda<a class="headerlink" href="#conda" title="Link to this heading"></a></h2>
293
+ <p>Conda can be used to install Python on all platforms and is a
294
+ particularly good choice to use SnapPy on the older Linux systems
295
+ often found on high-performance clusters. Here is a recipe for
296
+ installing SnapPy into a new conda environment on macOS or Linux:</p>
297
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">source</span> <span class="o">~/</span><span class="n">miniforge3</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">activate</span>
298
+ <span class="n">mamba</span> <span class="n">create</span> <span class="o">--</span><span class="n">name</span> <span class="n">snappy_env</span> <span class="n">python</span><span class="o">=</span><span class="mf">3.12</span>
299
+ <span class="n">conda</span> <span class="n">activate</span> <span class="n">snappy_env</span>
300
+ <span class="n">pip</span> <span class="n">install</span> <span class="n">snappy</span>
301
+ <span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">snappy</span><span class="o">.</span><span class="n">app</span>
320
302
  </pre></div>
321
303
  </div>
322
304
  </section>
323
305
  <section id="source-code">
324
- <h2>Source code<a class="headerlink" href="#source-code" title="Permalink to this heading"></a></h2>
325
- <p>The complete source code for all platforms: <a class="reference external" href="https://pypi.python.org/packages/source/s/snappy/snappy-3.1.1.tar.gz">snappy-3.1.1.tar.gz</a></p>
306
+ <h2>Source code<a class="headerlink" href="#source-code" title="Link to this heading"></a></h2>
307
+ <p>The complete source code for all platforms: <a class="reference external" href="https://pypi.python.org/packages/source/s/snappy/snappy-3.2.tar.gz">snappy-3.2.tar.gz</a></p>
326
308
  <p>You can also browse our <a class="reference external" href="https://github.com/3-manifolds/SnapPy">source code repository</a> or clone it using <a class="reference external" href="https://git-scm.com/">git</a> via:</p>
327
309
  <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">git</span> <span class="n">clone</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="mi">3</span><span class="o">-</span><span class="n">manifolds</span><span class="o">/</span><span class="n">SnapPy</span><span class="o">.</span><span class="n">git</span>
328
310
  </pre></div>
@@ -341,7 +323,7 @@ certain other dependencies) and test:</p>
341
323
  <hr/>
342
324
 
343
325
  <div role="contentinfo">
344
- <p>&#169; Copyright 2009-2023, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.</p>
326
+ <p>&#169; Copyright 2009-2025, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.</p>
345
327
  </div>
346
328
 
347
329
  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a