snappy 3.0.3__cp38-cp38-macosx_11_0_arm64.whl → 3.2__cp38-cp38-macosx_11_0_arm64.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (401) hide show
  1. snappy/CyOpenGL.cpython-38-darwin.so +0 -0
  2. snappy/SnapPy.cpython-38-darwin.so +0 -0
  3. snappy/SnapPyHP.cpython-38-darwin.so +0 -0
  4. snappy/__init__.py +373 -426
  5. snappy/app.py +240 -75
  6. snappy/app_menus.py +93 -78
  7. snappy/browser.py +87 -63
  8. snappy/cache.py +5 -8
  9. snappy/canonical.py +249 -0
  10. snappy/{verify/cusp_shapes.py → cusps/__init__.py} +11 -19
  11. snappy/cusps/cusp_area_matrix.py +101 -0
  12. snappy/{verify/cusp_areas.py → cusps/cusp_areas_from_matrix.py} +39 -54
  13. snappy/cusps/maximal_cusp_area_matrix.py +136 -0
  14. snappy/cusps/test.py +21 -0
  15. snappy/cusps/trig_cusp_area_matrix.py +63 -0
  16. snappy/database.py +40 -31
  17. snappy/db_utilities.py +13 -14
  18. snappy/decorated_isosig.py +377 -133
  19. snappy/dev/extended_ptolemy/complexVolumesClosed.py +42 -9
  20. snappy/dev/extended_ptolemy/extended.py +32 -25
  21. snappy/dev/extended_ptolemy/giac_rur.py +23 -8
  22. snappy/dev/extended_ptolemy/phc_wrapper.py +10 -10
  23. snappy/dev/vericlosed/computeApproxHyperbolicStructureOrb.py +2 -1
  24. snappy/dev/vericlosed/gimbalLoopFinder.py +5 -5
  25. snappy/dev/vericlosed/hyperbolicStructure.py +3 -3
  26. snappy/dev/vericlosed/oneVertexTruncatedComplex.py +2 -2
  27. snappy/dev/vericlosed/truncatedComplex.py +3 -2
  28. snappy/dev/vericlosed/verifyHyperbolicStructureEngine.py +4 -3
  29. snappy/doc/_images/geodesics.jpg +0 -0
  30. snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
  31. snappy/doc/_images/m125_paper_plane.jpg +0 -0
  32. snappy/doc/_images/o9_00000_systole_paper_plane.jpg +0 -0
  33. snappy/doc/_images/o9_00000_systole_paper_plane_closer.jpg +0 -0
  34. snappy/doc/_sources/additional_classes.rst.txt +1 -0
  35. snappy/doc/_sources/credits.rst.txt +6 -1
  36. snappy/doc/_sources/development.rst.txt +69 -50
  37. snappy/doc/_sources/index.rst.txt +101 -66
  38. snappy/doc/_sources/installing.rst.txt +148 -165
  39. snappy/doc/_sources/news.rst.txt +136 -32
  40. snappy/doc/_sources/ptolemy.rst.txt +1 -1
  41. snappy/doc/_sources/ptolemy_examples1.rst.txt +9 -8
  42. snappy/doc/_sources/ptolemy_examples2.rst.txt +3 -3
  43. snappy/doc/_sources/ptolemy_examples3.rst.txt +14 -14
  44. snappy/doc/_sources/ptolemy_prelim.rst.txt +1 -1
  45. snappy/doc/_sources/snap.rst.txt +2 -2
  46. snappy/doc/_sources/snappy.rst.txt +1 -1
  47. snappy/doc/_sources/triangulation.rst.txt +3 -2
  48. snappy/doc/_sources/verify.rst.txt +89 -29
  49. snappy/doc/_sources/verify_internals.rst.txt +5 -16
  50. snappy/doc/_static/SnapPy-horizontal-128.png +0 -0
  51. snappy/doc/_static/SnapPy.ico +0 -0
  52. snappy/doc/_static/_sphinx_javascript_frameworks_compat.js +123 -0
  53. snappy/doc/_static/basic.css +47 -27
  54. snappy/doc/_static/css/badge_only.css +1 -0
  55. snappy/doc/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  56. snappy/doc/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  57. snappy/doc/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  58. snappy/doc/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  59. snappy/doc/_static/css/fonts/fontawesome-webfont.eot +0 -0
  60. snappy/doc/_static/css/fonts/fontawesome-webfont.svg +2671 -0
  61. snappy/doc/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  62. snappy/doc/_static/css/fonts/fontawesome-webfont.woff +0 -0
  63. snappy/doc/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  64. snappy/doc/_static/css/fonts/lato-bold-italic.woff +0 -0
  65. snappy/doc/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  66. snappy/doc/_static/css/fonts/lato-bold.woff +0 -0
  67. snappy/doc/_static/css/fonts/lato-bold.woff2 +0 -0
  68. snappy/doc/_static/css/fonts/lato-normal-italic.woff +0 -0
  69. snappy/doc/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  70. snappy/doc/_static/css/fonts/lato-normal.woff +0 -0
  71. snappy/doc/_static/css/fonts/lato-normal.woff2 +0 -0
  72. snappy/doc/_static/css/theme.css +4 -0
  73. snappy/doc/_static/doctools.js +107 -274
  74. snappy/doc/_static/documentation_options.js +6 -5
  75. snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
  76. snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
  77. snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
  78. snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
  79. snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  80. snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  81. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  82. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  83. snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
  84. snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
  85. snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
  86. snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
  87. snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
  88. snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
  89. snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
  90. snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
  91. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  92. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  93. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  94. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  95. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  96. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  97. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  98. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  99. snappy/doc/_static/jquery.js +2 -2
  100. snappy/doc/_static/js/badge_only.js +1 -0
  101. snappy/doc/_static/js/theme.js +1 -0
  102. snappy/doc/_static/js/versions.js +228 -0
  103. snappy/doc/_static/language_data.js +3 -101
  104. snappy/doc/_static/pygments.css +1 -0
  105. snappy/doc/_static/searchtools.js +489 -398
  106. snappy/doc/_static/snappy_furo.css +33 -0
  107. snappy/doc/_static/snappy_sphinx_rtd_theme.css +42 -0
  108. snappy/doc/_static/sphinx_highlight.js +154 -0
  109. snappy/doc/additional_classes.html +688 -263
  110. snappy/doc/bugs.html +107 -94
  111. snappy/doc/censuses.html +155 -127
  112. snappy/doc/credits.html +115 -104
  113. snappy/doc/development.html +184 -146
  114. snappy/doc/genindex.html +287 -204
  115. snappy/doc/index.html +189 -150
  116. snappy/doc/installing.html +259 -266
  117. snappy/doc/manifold.html +1626 -592
  118. snappy/doc/manifoldhp.html +119 -105
  119. snappy/doc/news.html +198 -104
  120. snappy/doc/objects.inv +0 -0
  121. snappy/doc/other.html +117 -105
  122. snappy/doc/platonic_census.html +161 -114
  123. snappy/doc/plink.html +113 -105
  124. snappy/doc/ptolemy.html +131 -108
  125. snappy/doc/ptolemy_classes.html +242 -223
  126. snappy/doc/ptolemy_examples1.html +144 -130
  127. snappy/doc/ptolemy_examples2.html +141 -129
  128. snappy/doc/ptolemy_examples3.html +148 -132
  129. snappy/doc/ptolemy_examples4.html +131 -111
  130. snappy/doc/ptolemy_prelim.html +162 -138
  131. snappy/doc/py-modindex.html +104 -69
  132. snappy/doc/screenshots.html +117 -108
  133. snappy/doc/search.html +115 -84
  134. snappy/doc/searchindex.js +1 -1
  135. snappy/doc/snap.html +109 -96
  136. snappy/doc/snappy.html +134 -97
  137. snappy/doc/spherogram.html +259 -187
  138. snappy/doc/todo.html +107 -94
  139. snappy/doc/triangulation.html +1380 -111
  140. snappy/doc/tutorial.html +107 -94
  141. snappy/doc/verify.html +194 -125
  142. snappy/doc/verify_internals.html +248 -686
  143. snappy/drilling/__init__.py +456 -0
  144. snappy/drilling/barycentric.py +103 -0
  145. snappy/drilling/constants.py +5 -0
  146. snappy/drilling/crush.py +270 -0
  147. snappy/drilling/cusps.py +125 -0
  148. snappy/drilling/debug.py +242 -0
  149. snappy/drilling/epsilons.py +6 -0
  150. snappy/drilling/exceptions.py +55 -0
  151. snappy/drilling/moves.py +620 -0
  152. snappy/drilling/peripheral_curves.py +210 -0
  153. snappy/drilling/perturb.py +188 -0
  154. snappy/drilling/shorten.py +36 -0
  155. snappy/drilling/subdivide.py +274 -0
  156. snappy/drilling/test.py +23 -0
  157. snappy/drilling/test_cases.py +126 -0
  158. snappy/drilling/tracing.py +351 -0
  159. snappy/exceptions.py +23 -3
  160. snappy/export_stl.py +20 -14
  161. snappy/exterior_to_link/__init__.py +2 -0
  162. snappy/exterior_to_link/barycentric_geometry.py +463 -0
  163. snappy/exterior_to_link/exceptions.py +6 -0
  164. snappy/exterior_to_link/geodesic_map.json +14408 -0
  165. snappy/exterior_to_link/hyp_utils.py +112 -0
  166. snappy/exterior_to_link/link_projection.py +323 -0
  167. snappy/exterior_to_link/main.py +197 -0
  168. snappy/exterior_to_link/mcomplex_with_expansion.py +261 -0
  169. snappy/exterior_to_link/mcomplex_with_link.py +687 -0
  170. snappy/exterior_to_link/mcomplex_with_memory.py +162 -0
  171. snappy/exterior_to_link/pl_utils.py +491 -0
  172. snappy/exterior_to_link/put_in_S3.py +156 -0
  173. snappy/exterior_to_link/rational_linear_algebra.py +123 -0
  174. snappy/exterior_to_link/rational_linear_algebra_wrapped.py +135 -0
  175. snappy/exterior_to_link/simplify_to_base_tri.py +114 -0
  176. snappy/exterior_to_link/stored_moves.py +475 -0
  177. snappy/exterior_to_link/test.py +31 -0
  178. snappy/geometric_structure/__init__.py +212 -0
  179. snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
  180. snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +697 -0
  181. snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
  182. snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
  183. snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
  184. snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
  185. snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -0
  186. snappy/geometric_structure/geodesic/__init__.py +0 -0
  187. snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
  188. snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
  189. snappy/geometric_structure/geodesic/canonical_keys.py +52 -0
  190. snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
  191. snappy/geometric_structure/geodesic/constants.py +6 -0
  192. snappy/geometric_structure/geodesic/exceptions.py +22 -0
  193. snappy/geometric_structure/geodesic/fixed_points.py +93 -0
  194. snappy/geometric_structure/geodesic/geodesic_start_point_info.py +435 -0
  195. snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
  196. snappy/geometric_structure/geodesic/line.py +30 -0
  197. snappy/geometric_structure/geodesic/multiplicity.py +127 -0
  198. snappy/geometric_structure/geodesic/tiles_for_geodesic.py +101 -0
  199. snappy/geometric_structure/test.py +22 -0
  200. snappy/gui.py +36 -36
  201. snappy/horoviewer.py +50 -48
  202. snappy/hyperboloid/__init__.py +212 -0
  203. snappy/hyperboloid/distances.py +245 -0
  204. snappy/hyperboloid/horoball.py +19 -0
  205. snappy/hyperboloid/line.py +35 -0
  206. snappy/hyperboloid/point.py +9 -0
  207. snappy/hyperboloid/triangle.py +29 -0
  208. snappy/{infodialog.py → infowindow.py} +32 -33
  209. snappy/isometry_signature.py +382 -0
  210. snappy/len_spec/__init__.py +596 -0
  211. snappy/len_spec/geodesic_info.py +110 -0
  212. snappy/len_spec/geodesic_key_info_dict.py +117 -0
  213. snappy/len_spec/geodesic_piece.py +143 -0
  214. snappy/len_spec/geometric_structure.py +182 -0
  215. snappy/len_spec/geometry.py +80 -0
  216. snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
  217. snappy/len_spec/spine.py +206 -0
  218. snappy/len_spec/test.py +24 -0
  219. snappy/len_spec/test_cases.py +69 -0
  220. snappy/len_spec/tile.py +275 -0
  221. snappy/len_spec/word.py +86 -0
  222. snappy/manifolds/__init__.py +1 -1
  223. snappy/math_basics.py +176 -0
  224. snappy/matrix.py +525 -0
  225. snappy/number.py +97 -21
  226. snappy/numeric_output_checker.py +37 -27
  227. snappy/pari.py +30 -69
  228. snappy/phone_home.py +25 -20
  229. snappy/polyviewer.py +39 -37
  230. snappy/ptolemy/__init__.py +4 -6
  231. snappy/ptolemy/component.py +14 -12
  232. snappy/ptolemy/coordinates.py +312 -295
  233. snappy/ptolemy/fieldExtensions.py +14 -12
  234. snappy/ptolemy/findLoops.py +43 -31
  235. snappy/ptolemy/geometricRep.py +24 -26
  236. snappy/ptolemy/homology.py +12 -7
  237. snappy/ptolemy/manifoldMethods.py +69 -70
  238. snappy/ptolemy/matrix.py +65 -26
  239. snappy/ptolemy/numericalSolutionsToGroebnerBasis.py +18 -14
  240. snappy/ptolemy/polynomial.py +125 -119
  241. snappy/ptolemy/processComponents.py +36 -30
  242. snappy/ptolemy/processFileBase.py +79 -18
  243. snappy/ptolemy/processFileDispatch.py +13 -14
  244. snappy/ptolemy/processMagmaFile.py +44 -39
  245. snappy/ptolemy/processRurFile.py +18 -11
  246. snappy/ptolemy/ptolemyGeneralizedObstructionClass.py +20 -17
  247. snappy/ptolemy/ptolemyObstructionClass.py +13 -17
  248. snappy/ptolemy/ptolemyVariety.py +190 -121
  249. snappy/ptolemy/ptolemyVarietyPrimeIdealGroebnerBasis.py +20 -19
  250. snappy/ptolemy/reginaWrapper.py +25 -29
  251. snappy/ptolemy/rur.py +6 -14
  252. snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +27 -22
  253. snappy/ptolemy/test.py +247 -188
  254. snappy/ptolemy/utilities.py +41 -43
  255. snappy/raytracing/__init__.py +64 -0
  256. snappy/raytracing/additional_horospheres.py +64 -0
  257. snappy/raytracing/additional_len_spec_choices.py +63 -0
  258. snappy/raytracing/cohomology_fractal.py +10 -6
  259. snappy/raytracing/eyeball.py +123 -0
  260. snappy/raytracing/finite_raytracing_data.py +48 -38
  261. snappy/raytracing/finite_viewer.py +218 -210
  262. snappy/raytracing/geodesic_tube_info.py +174 -0
  263. snappy/raytracing/geodesics.py +246 -0
  264. snappy/raytracing/geodesics_window.py +258 -0
  265. snappy/raytracing/gui_utilities.py +152 -40
  266. snappy/raytracing/hyperboloid_navigation.py +102 -52
  267. snappy/raytracing/hyperboloid_utilities.py +114 -261
  268. snappy/raytracing/ideal_raytracing_data.py +256 -179
  269. snappy/raytracing/inside_viewer.py +522 -253
  270. snappy/raytracing/pack.py +22 -0
  271. snappy/raytracing/raytracing_data.py +46 -34
  272. snappy/raytracing/raytracing_view.py +190 -109
  273. snappy/raytracing/shaders/Eye.png +0 -0
  274. snappy/raytracing/shaders/NonGeometric.png +0 -0
  275. snappy/raytracing/shaders/__init__.py +60 -4
  276. snappy/raytracing/shaders/fragment.glsl +575 -148
  277. snappy/raytracing/test.py +29 -0
  278. snappy/raytracing/tooltip.py +146 -0
  279. snappy/raytracing/upper_halfspace_utilities.py +98 -0
  280. snappy/raytracing/view_scale_controller.py +98 -0
  281. snappy/raytracing/zoom_slider/__init__.py +32 -29
  282. snappy/raytracing/zoom_slider/test.py +2 -0
  283. snappy/sage_helper.py +69 -123
  284. snappy/{preferences.py → settings.py} +167 -145
  285. snappy/shell.py +4 -0
  286. snappy/snap/__init__.py +12 -8
  287. snappy/snap/character_varieties.py +24 -18
  288. snappy/snap/find_field.py +35 -34
  289. snappy/snap/fundamental_polyhedron.py +99 -85
  290. snappy/snap/generators.py +6 -8
  291. snappy/snap/interval_reps.py +18 -6
  292. snappy/snap/kernel_structures.py +8 -3
  293. snappy/snap/mcomplex_base.py +1 -2
  294. snappy/snap/nsagetools.py +107 -53
  295. snappy/snap/peripheral/__init__.py +1 -1
  296. snappy/snap/peripheral/dual_cellulation.py +15 -7
  297. snappy/snap/peripheral/link.py +20 -16
  298. snappy/snap/peripheral/peripheral.py +22 -14
  299. snappy/snap/peripheral/surface.py +47 -50
  300. snappy/snap/peripheral/test.py +8 -8
  301. snappy/snap/polished_reps.py +65 -40
  302. snappy/snap/shapes.py +41 -22
  303. snappy/snap/slice_obs_HKL.py +64 -25
  304. snappy/snap/t3mlite/arrow.py +88 -51
  305. snappy/snap/t3mlite/corner.py +5 -6
  306. snappy/snap/t3mlite/edge.py +32 -21
  307. snappy/snap/t3mlite/face.py +7 -9
  308. snappy/snap/t3mlite/files.py +31 -23
  309. snappy/snap/t3mlite/homology.py +14 -10
  310. snappy/snap/t3mlite/linalg.py +158 -56
  311. snappy/snap/t3mlite/mcomplex.py +739 -291
  312. snappy/snap/t3mlite/perm4.py +236 -84
  313. snappy/snap/t3mlite/setup.py +9 -10
  314. snappy/snap/t3mlite/simplex.py +65 -48
  315. snappy/snap/t3mlite/spun.py +42 -30
  316. snappy/snap/t3mlite/surface.py +45 -45
  317. snappy/snap/t3mlite/test.py +3 -0
  318. snappy/snap/t3mlite/test_vs_regina.py +17 -13
  319. snappy/snap/t3mlite/tetrahedron.py +25 -24
  320. snappy/snap/t3mlite/vertex.py +8 -13
  321. snappy/snap/test.py +45 -52
  322. snappy/snap/utilities.py +66 -65
  323. snappy/test.py +155 -158
  324. snappy/test_cases.py +263 -0
  325. snappy/testing.py +131 -0
  326. snappy/tiling/__init__.py +2 -0
  327. snappy/tiling/canonical_key_dict.py +59 -0
  328. snappy/tiling/dict_based_set.py +79 -0
  329. snappy/tiling/floor.py +49 -0
  330. snappy/tiling/hyperboloid_dict.py +54 -0
  331. snappy/tiling/iter_utils.py +78 -0
  332. snappy/tiling/lifted_tetrahedron.py +22 -0
  333. snappy/tiling/lifted_tetrahedron_set.py +54 -0
  334. snappy/tiling/real_hash_dict.py +164 -0
  335. snappy/tiling/test.py +23 -0
  336. snappy/tiling/tile.py +215 -0
  337. snappy/tiling/triangle.py +33 -0
  338. snappy/tkterminal.py +313 -203
  339. snappy/twister/main.py +1 -8
  340. snappy/twister/twister_core.cpython-38-darwin.so +0 -0
  341. snappy/upper_halfspace/__init__.py +146 -0
  342. snappy/upper_halfspace/ideal_point.py +26 -0
  343. snappy/verify/__init__.py +4 -8
  344. snappy/verify/{verifyCanonical.py → canonical.py} +114 -97
  345. snappy/verify/complex_volume/__init__.py +3 -2
  346. snappy/verify/complex_volume/adjust_torsion.py +13 -11
  347. snappy/verify/complex_volume/closed.py +29 -24
  348. snappy/verify/complex_volume/compute_ptolemys.py +8 -6
  349. snappy/verify/complex_volume/cusped.py +10 -9
  350. snappy/verify/complex_volume/extended_bloch.py +14 -12
  351. snappy/verify/{cuspTranslations.py → cusp_translations.py} +15 -14
  352. snappy/verify/edge_equations.py +80 -0
  353. snappy/verify/exceptions.py +23 -56
  354. snappy/verify/{verifyHyperbolicity.py → hyperbolicity.py} +19 -15
  355. snappy/verify/interval_newton_shapes_engine.py +51 -211
  356. snappy/verify/interval_tree.py +27 -25
  357. snappy/verify/krawczyk_shapes_engine.py +47 -50
  358. snappy/verify/maximal_cusp_area_matrix/__init__.py +17 -86
  359. snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +58 -48
  360. snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +53 -57
  361. snappy/verify/{realAlgebra.py → real_algebra.py} +26 -20
  362. snappy/verify/shapes.py +10 -7
  363. snappy/verify/short_slopes.py +41 -42
  364. snappy/verify/{squareExtensions.py → square_extensions.py} +96 -92
  365. snappy/verify/test.py +59 -57
  366. snappy/verify/upper_halfspace/extended_matrix.py +5 -5
  367. snappy/verify/upper_halfspace/finite_point.py +44 -31
  368. snappy/verify/upper_halfspace/ideal_point.py +69 -57
  369. snappy/verify/volume.py +15 -12
  370. snappy/version.py +2 -3
  371. {snappy-3.0.3.dist-info → snappy-3.2.dist-info}/METADATA +14 -12
  372. snappy-3.2.dist-info/RECORD +503 -0
  373. {snappy-3.0.3.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
  374. {snappy-3.0.3.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -1
  375. {snappy-3.0.3.dist-info → snappy-3.2.dist-info}/top_level.txt +10 -1
  376. snappy/doc/_sources/verify_canon.rst.txt +0 -90
  377. snappy/doc/_static/classic.css +0 -266
  378. snappy/doc/_static/jquery-3.5.1.js +0 -10872
  379. snappy/doc/_static/sidebar.js +0 -159
  380. snappy/doc/_static/underscore-1.13.1.js +0 -2042
  381. snappy/doc/_static/underscore.js +0 -6
  382. snappy/doc/verify_canon.html +0 -283
  383. snappy/ppm_to_png.py +0 -243
  384. snappy/togl/__init__.py +0 -3
  385. snappy/togl/darwin-tk8.6/Togl2.1/LICENSE +0 -28
  386. snappy/togl/darwin-tk8.6/Togl2.1/libTogl2.1.dylib +0 -0
  387. snappy/togl/darwin-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  388. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  389. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/libTogl2.1.so +0 -0
  390. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  391. snappy/togl/win32VC-tk8.6/Togl2.1/LICENSE +0 -28
  392. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.dll +0 -0
  393. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.lib +0 -0
  394. snappy/togl/win32VC-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  395. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  396. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.dll +0 -0
  397. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.lib +0 -0
  398. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  399. snappy/verify/cuspCrossSection.py +0 -1413
  400. snappy/verify/mathHelpers.py +0 -64
  401. snappy-3.0.3.dist-info/RECORD +0 -360
@@ -17,11 +17,11 @@ macOS
17
17
 
18
18
  Here is how to get a clean development setup under macOS.
19
19
 
20
- - Install the latest Python 3.8 from Python.org using the `Mac
20
+ - Install the latest Python 3.13 from Python.org using the `Mac
21
21
  Installer Disk Image <http://www.python.org/download/>`_. Set your
22
22
  path so that "python3" is::
23
23
 
24
- /Library/Frameworks/Python.framework/Versions/3.8/bin/python3
24
+ /Library/Frameworks/Python.framework/Versions/3.13/bin/python3
25
25
 
26
26
  - Use `pip <https://pip.pypa.io/en/latest/index.html>`_ to install the
27
27
  following packages::
@@ -31,7 +31,7 @@ Here is how to get a clean development setup under macOS.
31
31
  python3 -m pip install sphinx # For building the documentation
32
32
  python3 -m pip install ipython # Improved Python shell
33
33
  python3 -m pip install py2app # For making app bundles
34
- python3 -m pip install pyx
34
+ python3 -m pip install pyx FXrays low_index
35
35
 
36
36
  - Get the source code from the repository, using Git. For
37
37
  example you can install Git via its `package installer
@@ -47,8 +47,8 @@ Here is how to get a clean development setup under macOS.
47
47
  python3 setup.py pip_install
48
48
  python3 -m plink.app # Link editor appears!
49
49
 
50
- This last command runs the script "plink/app.py"; the real code for
51
- the link editor is in "plink/__init__.py".
50
+ This last command runs the script ``plink/app.py``; the real code for
51
+ the link editor is in ``plink/__init__.py``.
52
52
 
53
53
  - Build and install Spherogram::
54
54
 
@@ -62,7 +62,6 @@ Here is how to get a clean development setup under macOS.
62
62
  cd ../snappy
63
63
  python3 setup.py pip_install
64
64
  python3 setup.py test # Run the tests; pretty picture should appear.
65
- python3 setup.py build_docs pip_install
66
65
  python3 -m snappy.app #SnapPy starts!
67
66
 
68
67
  To build the clickable app, just do the following::
@@ -75,17 +74,13 @@ Here is how to get a clean development setup under macOS.
75
74
 
76
75
  Some major parts of the SnapPy codebase are:
77
76
 
78
- - "SnapPy.pyx", "SnapPycore.pxi", "SnapPy.pxi": The Cython interface
77
+ - ``SnapPy.pyx``, ``SnapPycore.pxi``, ``SnapPy.pxi``: The Cython interface
79
78
  to the SnapPea kernel
80
- - "opengl/CyOpenGL*.pyx": The Cython interface to OpenGL*
81
- - "snappy/app.py": The core GUI code
82
- - "snappy/polyviewer.py": The GUI code for Dirichlet domains
83
- - "snappy/horoviewer.py": The GUI code for horoball pictures
84
- - "snappy/database.py": Interacts with the sqlite3 manifold database
85
-
86
- In addition, Jeff's old prototype for a Tk-based UI can be found in
87
- "misc/JeffsOldUI/SnapPeaGUI.py"; just run Python on this file to try it
88
- out, after installing `PythonMegaWidgets <http://pmw.sf.net>`_.
79
+ - ``opengl/CyOpenGL*.pyx``: The Cython interface to OpenGL*
80
+ - ``snappy/app.py``: The core GUI code
81
+ - ``snappy/polyviewer.py``: The GUI code for Dirichlet domains
82
+ - ``snappy/horoviewer.py``: The GUI code for horoball pictures
83
+ - ``snappy/database.py``: Interacts with the sqlite3 manifold database
89
84
 
90
85
 
91
86
  Windows
@@ -96,31 +91,30 @@ setting up a development environment using the (free) MSVC
96
91
  compiler. To build the CyPari subcomponent, which few will want or
97
92
  need to do, one must install additional tools.
98
93
 
99
- - Install `Python 3.7 <https://www.python.org/downloads/windows/>`_,
100
- specifically the 32 bit version (Windows x86 not Windows x86-64).
94
+ - Install `Python 3.13.1
95
+ <https://www.python.org/downloads/windows/>`_, specifically the
96
+ default 64-bit version (the file name will end in ``amd64.exe``).
101
97
  These instructions assume it has been installed in the directory
102
- ``C:\Python37`` which is not the default.
98
+ ``C:\Python313`` which is not the default.
103
99
 
104
- - With Python 3.7.4, you need the MSVC command line tools. You can
100
+ - With Python 3.13.1, you need the MSVC command line tools. You can
105
101
  get them by using Microsoft's free `Build Tools for Visual Studio 2019
106
102
  <https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16>`_
107
103
  installer and selecting the "C++ command line tools" and installing
108
104
  the following subpackages: "MSVC v142 - VS 2019 C++ build tools",
109
- "Testsing tools core features", "C++/CLI support for v142", and
105
+ "Testing tools core features", "C++/CLI support for v142", and
110
106
  "Windows 10 SDK (most recent version)".
111
107
 
112
108
  If you would like to make your own installer you will also need
113
109
  `Inno Setup <http://www.jrsoftware.org/isdl.php>`_, specifically the
114
110
  unicode version; tested with version 5.5.9.
115
111
 
116
- - Install whichever version of `MSYS2 <http://msys2.github.io>`_ is
117
- appropriate for your version Windows. Most commonly, you will have
118
- a 64-bit Windows and hence want the "x86_64" installer; for
119
- concreteness the rest of these instructions assume this. (Technical
120
- note: even if you want to build 32-bit binaries, if your Windows is
121
- 64-bit you want the x86_64 installer.) Follow the instructions on
122
- the webpage to update everything to the very latest MSYS2
123
- (``pacman -Sy pacman; pacman -Syu; pacman -Su`` etc.).
112
+ - Install `MSYS2 <http://msys2.github.io>`_ as appropriate for your
113
+ version Windows. Follow the instructions on the webpage to update
114
+ everything to the very latest MSYS2 (``pacman -Sy pacman; pacman
115
+ -Syu; pacman -Su`` etc.). You should also install the ucrt toolchain::
116
+
117
+ pacman -S mingw-w64-ucrt-x86_64-toolchain
124
118
 
125
119
  - Make a shortcut to ``c:\msys64\msys2.exe`` as you will be using it all
126
120
  the time; alternatively, pin ``mys2.exe`` to your taskbar.
@@ -138,7 +132,7 @@ need to do, one must install additional tools.
138
132
  as well as work around some stupid bug, by making the end of your
139
133
  "~/.bash_profile" file to read::
140
134
 
141
- PATH=/c/Python37:/c/Python37/Scripts:$PATH
135
+ PATH=/c/Python313:/c/Python313/Scripts:$PATH
142
136
  PATH=$PATH:'/c/Program Files (x86)/Inno Setup 5'
143
137
  export PATH
144
138
  alias emacs="/mingw64/bin/emacs"
@@ -153,12 +147,12 @@ need to do, one must install additional tools.
153
147
 
154
148
  python --version
155
149
 
156
- You should see something like ``Python 3.7.4``.
150
+ You should see something like ``Python 3.13.1``.
157
151
 
158
152
  - Use pip to install some basic tools::
159
153
 
160
154
  python -m pip install --upgrade pip setuptools wheel # Upgrades pip to the current version.
161
- python -m pip install pyreadline sphinx cython cypari pyx
155
+ python -m pip install pyreadline sphinx cython cypari pyx FXrays low_index
162
156
 
163
157
  - Fetch the latest development versions of the source straight from
164
158
  the t3m repository::
@@ -213,28 +207,53 @@ need to do, one must install additional tools.
213
207
  mklink /D Downloads "C:\Users\Nathan Dunfield\Downloads"
214
208
 
215
209
 
216
- - To build CyPari, first install the 32-bit gcc compiler::
210
+ Linux
211
+ -----
217
212
 
218
- pacman -S mingw-w64-i686-gcc
213
+ Things you'll need:
219
214
 
220
- Then open a *MinGW32 terminal window*, which is **different** than a
221
- MSYS2 terminal, and can be started via `c:\msys64\mingw32.exe`.
222
- This will put the 32-bit gcc in your path and set the correct
223
- "uname". Now do::
215
+ - Python 3 with Tkinter: You'll need to have `Python
216
+ <http://python.org>`_ (version 3.9 or newer) and `Tk
217
+ <http://tcl.tk>`_ (at least version 8.5) with `Tkinter
218
+ <http://wiki.python.org/moin/TkInter>`_ to connect them, including
219
+ the header files. For instance, on Debian or Ubuntu, install the
220
+ packages "python3-tk", "python3-pip", and "python3-dev". On Fedora,
221
+ you'll want e.g. "python3-tkinter", "python3-pip", and
222
+ "python3-devel", and "python3-wheel".
224
223
 
225
- git clone https://github.com/3-manifolds/CyPari.git
226
- cd CyPari
227
- sh build_pari.sh
228
- python setup.py build --compiler=mingw32
229
- python setup.py install
230
- python -m cypari.test # About 30 tests will fail.
224
+ - Test that Python is in order by installing PLink from source::
231
225
 
232
- Warning: CyPari will not build if there are spaces in the path to
233
- the CyPari directory.
226
+ python3 -m pip install --user plink
227
+ python3 -m plink.app # Should start the link editor!
234
228
 
229
+ .. _openglmesa:
235
230
 
236
- Linux
237
- -----
231
+ - Support for OpenGL (3D graphics): This is built in on OS X and the
232
+ most installations of Fedora and Ubuntu. But you'll need the `MESA
233
+ <http://www.mesa3d.org/>`_ header files "gl.h" and "glu.h" to compile
234
+ SnapPy. On Debian and Ubuntu, install "libglu1-mesa-dev"; On Fedora install
235
+ "mesa-libGLU-devel".
236
+
237
+ - `Cython <http://cython.org>`_, which you can install via::
238
+
239
+ python3 -m pip install --user cython
240
+
241
+ - The gcc C++ compiler, g++.
242
+
243
+ - Fetch the latest development versions of the source straight from
244
+ the repository::
238
245
 
239
- See the :ref:`installation instructions on generic Unix
240
- <installing:Generic Unix>` for how to build SnapPy from source.
246
+ git clone https://github.com/3-manifolds/PLink.git
247
+ git clone https://github.com/3-manifolds/Spherogram.git
248
+ git clone https://github.com/3-manifolds/Snappy.git
249
+
250
+ - Build the components, from easiest to hardest, and then test::
251
+
252
+ cd PLink
253
+ python setup.py pip_install
254
+ cd ../Spherogram
255
+ python setup.py pip_install
256
+ cd ../SnapPy
257
+ python setup.py pip_install
258
+ cd ..
259
+ python -m SnapPy.test
@@ -9,8 +9,9 @@ SnapPy
9
9
  What is SnapPy?
10
10
  ===============
11
11
 
12
- .. image:: images/SnapPy-196.png
12
+ .. image:: images/SnapPy-196.png
13
13
  :align: right
14
+ :alt: SnapPy logo
14
15
 
15
16
 
16
17
  SnapPy is a program for studying the topology and geometry of
@@ -26,80 +27,114 @@ it, and watch the :doc:`tutorial<tutorial>`.
26
27
  News
27
28
  ====
28
29
 
29
- * Version 3.0.3 (December 2021):
30
-
31
- - Runs natively on Macs with Apple Silicon processors (M1, M1 Pro, M1 Max).
32
-
33
- * Version 3.0.2 (November 2021):
30
+ * Version 3.2 (January 2025):
31
+
32
+ - An alternative implementation of the length spectrum. It supports verified
33
+ computations and is significantly faster in some cases. See
34
+ :meth:`length_spectrum_alt <snappy.Manifold.length_spectrum_alt>`
35
+ and
36
+ :meth:`length_spectrum_alt_gen <snappy.Manifold.length_spectrum_alt_gen>`.
37
+
38
+ - :meth:`isometry_signature <snappy.Manifold.isometry_signature>` now also
39
+ works for closed manifolds.
40
+
41
+ - A paper plane or eye ball in the
42
+ :meth:`inside_view <snappy.Manifold.inside_view>` showing the position
43
+ and bearing of the user in the hyperbolic manifold. By default, we now show
44
+ the paper plane instead of the edges of the triangulation so that the view
45
+ is intrinsic to the manifold. The geodesics window now also features a
46
+ button to put the camera onto a geodesic. Here are some examples:
47
+
48
+ .. list-table::
49
+ :width: 100%
50
+ :class: borderless
51
+
52
+ * - .. image:: images/o9_00000_systole_paper_plane.jpg
53
+ :width: 90%
54
+ :align: center
55
+ :alt: Paper plane near shortest geodesic of o9_00000
56
+ - .. image:: images/o9_00000_systole_paper_plane_closer.jpg
57
+ :width: 90%
58
+ :align: center
59
+ :alt: Paper plane very near shortest geodesic of o9_00000
60
+ - .. image:: images/m004_paper_plane_on_systole.jpg
61
+ :width: 90%
62
+ :align: center
63
+ :alt: Paper plane on shortest geodesic of m004
64
+ - .. image:: images/m125_paper_plane.jpg
65
+ :width: 90%
66
+ :align: center
67
+ :alt: Paper plane coming out of a cusp of m125
68
+
69
+ - A faster and more robust algorithm to the compute maximal cusp area matrix.
70
+ The new algorithm is now the default for
71
+ :meth:`~snappy.Manifold.cusp_area_matrix`,
72
+ :meth:`~snappy.Manifold.cusp_areas`,
73
+ :meth:`~snappy.Manifold.short_slopes` and
74
+ :meth:`~snappy.Manifold.cusp_translations`.
75
+
76
+ - New options ``ignore_curves`` and ``ignore_filling_orientations``
77
+ for :meth:`~snappy.Triangulation.triangulation_isosig`. Also
78
+ fixing a subtle bug where the filling coefficients returned by
79
+ :meth:`triangulation_isosig <snappy.Triangulation.triangulation_isosig>` were
80
+ not canonical when ``ignore_curve_orientations = True``.
81
+
82
+ - :meth:`~snappy.Manifold.canonical_retriangulation`
83
+ and
84
+ :meth:`~snappy.Manifold.isometry_signature` fail with
85
+ exceptions rather than silently returning ``None``. In particular, it now
86
+ safe to compare isometry signatures (without further checks) to determine
87
+ whether M and N are isometric hyperbolic manifolds::
88
+
89
+ >>> M.isometry_signature(verified=True) == N.isometry_signature(verified=True)
90
+
91
+ - Bug fix to :meth:`slice_obstruction_HKL
92
+ <snappy.Manifold.slice_obstruction_HKL>`: earlier versions
93
+ incorrectly allowed looking at mod 2 homology of the branched
94
+ cover, where the theory does not directly apply.
95
+
96
+ - New self-contained SnapPy application for Linux.
34
97
 
35
- - Support for SageMath 9.4 and 9.5, Python 3.10, and macOS Monterey.
36
-
37
- * Version 3.0 (April 2021): New features include:
38
-
39
- - Incorporates Zoltán Szabó's `program
40
- <https://web.math.princeton.edu/~szabo/HFKcalc.html>`_ for
41
- computing Knot Floer homology, see :meth:`knot_floer_homology
42
- <spherogram.Link.knot_floer_homology>`. This can compute the
43
- Seifert genus of a 25 crossing knot in mere seconds!
44
-
45
- - Topological slice obstructions of Herald-Kirk-Livingston, see
46
- :meth:`slice_obstruction_HKL <snappy.Manifold.slice_obstruction_HKL>`.
47
-
48
- - Faster "local" algorithm for :meth:`jones_polynomial
49
- <spherogram.Link.jones_polynomial>`.
50
-
51
- - `Cohomology fractals <https://arxiv.org/abs/2010.05840>`_ added to
52
- :meth:`inside_view <snappy.Manifold.inside_view>`.
53
-
54
- - Convention changes: Sign of knot signature (now positive knots have
55
- negative signatures), choice of braid generators (now positive
56
- generators give positive crossings).
57
-
58
- - Updates to methods :meth:`cusp_translations
59
- <snappy.Manifold.cusp_translations>`, :meth:`cusp_areas
60
- <snappy.Manifold.cusp_areas>`, :meth:`short_slopes
61
- <snappy.Manifold.short_slopes>`. Also :meth:`Link <spherogram.Link>`
62
- now accepts DT codes.
63
-
64
- - Support for SageMath 9.3, Python 3.9, and macOS Big Sur.
65
-
66
- - macOS app now code-signed and notarized.
67
-
68
- - SnapPy now requires Python 3.6 or newer.
98
+ - Support for Python 3.13 and SageMath 10.5.
69
99
 
100
+
101
+ * Versions 3.1 (May 2023) and 3.1.1 (June 2023):
70
102
 
71
- * Version 2.8 (June 2020): New features include:
103
+ - A method :meth:`exterior_to_link <snappy.Manifold.exterior_to_link>`
104
+ for going from a link exterior to a link diagram taken from
105
+ `Dunfield-Obeidin-Rudd <https://arxiv.org/abs/2112.03251>`_.
72
106
 
73
- - Raytraced interior views of a hyperbolic 3-manifold via the
74
- :meth:`inside_view <snappy.Manifold.inside_view>` method, see also
75
- `images <https://im.icerm.brown.edu/portfolio/snappy-views/>`_ and
76
- `demo video <https://youtu.be/CAERhmUCkRs>`_.
107
+ - Covers now computed by the stand-alone `low_index
108
+ <https://pypi.org/project/low-index/>`_ module, which uses
109
+ multiple processor cores and is typically much faster than the old
110
+ code. In some cases, it is dramatically faster than even GAP or
111
+ Magma.
77
112
 
78
- - :doc:`verify`: Several new features:
113
+ - Added geodesics to the :meth:`inside_view
114
+ <snappy.Manifold.inside_view>`. Here are some intersecting tubes
115
+ about closed geodesics in the manifold ``v3539(5,1)``:
79
116
 
80
- * Complex volume (and thus the Chern-Simons invariant) for both
81
- cusped and closed manifolds, see
82
- :meth:`complex_volume <snappy.Manifold.complex_volume>`.
83
-
84
- * Disjoint cusp neighborhoods by the method :meth:`cusp_areas
85
- <snappy.Manifold.cusp_areas>` which uses
86
- :meth:`cusp_area_matrix <snappy.Manifold.cusp_area_matrix>`.
117
+ .. image:: images/geodesics.jpg
118
+ :width: 50%
119
+ :align: center
120
+ :alt: Geodesic tubes for v3539(5,1)
87
121
 
88
- * Cusp shapes (see :meth:`cusp_info <snappy.Manifold.cusp_info>`).
89
-
90
- * Finding all :meth:`short_slopes <snappy.Manifold.short_slopes>`
91
- in disjoint embedded cusp neighborhoods.
122
+ - Added drilling any simple geodesic with :meth:`drill_word
123
+ <snappy.Manifold.drill_word>` and :meth:`drill_words
124
+ <snappy.Manifold.drill_words>`, not just those that are
125
+ :meth:`combinatorially simple <snappy.Manifold.dual_curves>`.
92
126
 
93
- - The census :class:`HTLinkExteriors <snappy.HTLinkExteriors>` has
94
- been extended to 15 crossing knots (contributed by Malik
95
- Obeidin).
127
+ - Added `ignore_orientation` flag to :meth:`triangulation_isosig
128
+ <snappy.Triangulation.triangulation_isosig>`.
96
129
 
97
- - The census :class:`CensusKnots <snappy.CensusKnots>` has been
98
- extended to triangulations with 9 ideal tetrahedra.
130
+ - Added `include_words` flag to :meth:`length_spectrum
131
+ <snappy.Manifold.length_spectrum>` for getting the word
132
+ corresponding to a geodesic which can be given to
133
+ :meth:`drill_word <snappy.Manifold.drill_word>`.
99
134
 
100
- - Support for SageMath 9.0 and macOS Catalina.
135
+ - Support for Python 3.11 and SageMath 10.0.
101
136
 
102
- - Development moved to `GitHub <https://github.com/3-manifolds>`_.
137
+ - Modernized styling of the documentation.
103
138
 
104
139
  * :doc:`Complete version history <news>`.
105
140
 
@@ -109,8 +144,8 @@ Documentation
109
144
  .. toctree::
110
145
  :maxdepth: 1
111
146
 
112
- installing
113
- screenshots
147
+ installing
148
+ screenshots
114
149
  tutorial
115
150
  snappy
116
151
  plink