snappy 3.1.1__cp38-cp38-win_amd64.whl → 3.2__cp38-cp38-win_amd64.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 (476) hide show
  1. snappy/CyOpenGL.cp38-win_amd64.pyd +0 -0
  2. snappy/SnapPy.cp38-win_amd64.pyd +0 -0
  3. snappy/SnapPyHP.cp38-win_amd64.pyd +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/additional_classes.rst.txt +40 -40
  25. snappy/doc/_sources/bugs.rst.txt +14 -14
  26. snappy/doc/_sources/censuses.rst.txt +51 -51
  27. snappy/doc/_sources/credits.rst.txt +75 -75
  28. snappy/doc/_sources/development.rst.txt +259 -239
  29. snappy/doc/_sources/index.rst.txt +182 -115
  30. snappy/doc/_sources/installing.rst.txt +247 -264
  31. snappy/doc/_sources/manifold.rst.txt +6 -6
  32. snappy/doc/_sources/manifoldhp.rst.txt +46 -46
  33. snappy/doc/_sources/news.rst.txt +355 -283
  34. snappy/doc/_sources/other.rst.txt +25 -25
  35. snappy/doc/_sources/platonic_census.rst.txt +20 -20
  36. snappy/doc/_sources/plink.rst.txt +102 -102
  37. snappy/doc/_sources/ptolemy.rst.txt +66 -66
  38. snappy/doc/_sources/ptolemy_classes.rst.txt +42 -42
  39. snappy/doc/_sources/ptolemy_examples1.rst.txt +298 -297
  40. snappy/doc/_sources/ptolemy_examples2.rst.txt +363 -363
  41. snappy/doc/_sources/ptolemy_examples3.rst.txt +301 -301
  42. snappy/doc/_sources/ptolemy_examples4.rst.txt +61 -61
  43. snappy/doc/_sources/ptolemy_prelim.rst.txt +105 -105
  44. snappy/doc/_sources/screenshots.rst.txt +21 -21
  45. snappy/doc/_sources/snap.rst.txt +87 -87
  46. snappy/doc/_sources/snappy.rst.txt +28 -28
  47. snappy/doc/_sources/spherogram.rst.txt +103 -103
  48. snappy/doc/_sources/todo.rst.txt +47 -47
  49. snappy/doc/_sources/triangulation.rst.txt +11 -11
  50. snappy/doc/_sources/tutorial.rst.txt +49 -49
  51. snappy/doc/_sources/verify.rst.txt +210 -150
  52. snappy/doc/_sources/verify_internals.rst.txt +79 -90
  53. snappy/doc/_static/basic.css +924 -902
  54. snappy/doc/_static/css/badge_only.css +1 -1
  55. snappy/doc/_static/css/theme.css +1 -1
  56. snappy/doc/_static/doctools.js +1 -1
  57. snappy/doc/_static/documentation_options.js +12 -13
  58. snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
  59. snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
  60. snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
  61. snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
  62. snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  63. snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  64. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  65. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  66. snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
  67. snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
  68. snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
  69. snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
  70. snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
  71. snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
  72. snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
  73. snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
  74. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  75. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  76. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  77. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  78. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  79. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  80. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  81. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  82. snappy/doc/_static/js/versions.js +228 -0
  83. snappy/doc/_static/language_data.js +199 -199
  84. snappy/doc/_static/pygments.css +74 -73
  85. snappy/doc/_static/searchtools.js +125 -71
  86. snappy/doc/_static/snappy_furo.css +33 -33
  87. snappy/doc/_static/snappy_sphinx_rtd_theme.css +42 -42
  88. snappy/doc/_static/sphinx_highlight.js +13 -3
  89. snappy/doc/additional_classes.html +1499 -1330
  90. snappy/doc/bugs.html +131 -134
  91. snappy/doc/censuses.html +426 -445
  92. snappy/doc/credits.html +180 -183
  93. snappy/doc/development.html +383 -363
  94. snappy/doc/genindex.html +1330 -1409
  95. snappy/doc/index.html +261 -206
  96. snappy/doc/installing.html +345 -363
  97. snappy/doc/manifold.html +3451 -2839
  98. snappy/doc/manifoldhp.html +179 -182
  99. snappy/doc/news.html +387 -329
  100. snappy/doc/objects.inv +0 -0
  101. snappy/doc/other.html +160 -162
  102. snappy/doc/platonic_census.html +374 -377
  103. snappy/doc/plink.html +209 -212
  104. snappy/doc/ptolemy.html +253 -255
  105. snappy/doc/ptolemy_classes.html +1143 -1146
  106. snappy/doc/ptolemy_examples1.html +408 -410
  107. snappy/doc/ptolemy_examples2.html +470 -473
  108. snappy/doc/ptolemy_examples3.html +413 -416
  109. snappy/doc/ptolemy_examples4.html +194 -197
  110. snappy/doc/ptolemy_prelim.html +247 -250
  111. snappy/doc/py-modindex.html +164 -167
  112. snappy/doc/screenshots.html +140 -142
  113. snappy/doc/search.html +134 -137
  114. snappy/doc/searchindex.js +1 -1
  115. snappy/doc/snap.html +201 -204
  116. snappy/doc/snappy.html +180 -182
  117. snappy/doc/spherogram.html +1210 -1213
  118. snappy/doc/todo.html +165 -168
  119. snappy/doc/triangulation.html +1583 -1474
  120. snappy/doc/tutorial.html +158 -161
  121. snappy/doc/verify.html +329 -275
  122. snappy/doc/verify_internals.html +1234 -1691
  123. snappy/drilling/__init__.py +153 -235
  124. snappy/drilling/barycentric.py +103 -0
  125. snappy/drilling/constants.py +0 -2
  126. snappy/drilling/crush.py +56 -130
  127. snappy/drilling/cusps.py +12 -6
  128. snappy/drilling/debug.py +2 -1
  129. snappy/drilling/exceptions.py +7 -40
  130. snappy/drilling/moves.py +302 -243
  131. snappy/drilling/perturb.py +63 -37
  132. snappy/drilling/shorten.py +36 -0
  133. snappy/drilling/subdivide.py +0 -5
  134. snappy/drilling/test.py +23 -0
  135. snappy/drilling/test_cases.py +126 -0
  136. snappy/drilling/tracing.py +9 -37
  137. snappy/exceptions.py +18 -5
  138. snappy/exterior_to_link/barycentric_geometry.py +2 -4
  139. snappy/exterior_to_link/main.py +8 -7
  140. snappy/exterior_to_link/mcomplex_with_link.py +2 -2
  141. snappy/exterior_to_link/rational_linear_algebra.py +1 -1
  142. snappy/exterior_to_link/rational_linear_algebra_wrapped.py +1 -1
  143. snappy/exterior_to_link/test.py +21 -33
  144. snappy/geometric_structure/__init__.py +212 -0
  145. snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
  146. snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +697 -0
  147. snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
  148. snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
  149. snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
  150. snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
  151. snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -0
  152. snappy/geometric_structure/geodesic/__init__.py +0 -0
  153. snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
  154. snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
  155. snappy/geometric_structure/geodesic/canonical_keys.py +52 -0
  156. snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
  157. snappy/geometric_structure/geodesic/constants.py +6 -0
  158. snappy/geometric_structure/geodesic/exceptions.py +22 -0
  159. snappy/{drilling → geometric_structure/geodesic}/fixed_points.py +34 -9
  160. snappy/{drilling/geodesic_info.py → geometric_structure/geodesic/geodesic_start_point_info.py} +139 -180
  161. snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
  162. snappy/geometric_structure/geodesic/line.py +30 -0
  163. snappy/geometric_structure/geodesic/multiplicity.py +127 -0
  164. snappy/geometric_structure/geodesic/tiles_for_geodesic.py +101 -0
  165. snappy/geometric_structure/test.py +22 -0
  166. snappy/gui.py +23 -13
  167. snappy/horoviewer.py +7 -7
  168. snappy/hyperboloid/__init__.py +96 -31
  169. snappy/hyperboloid/distances.py +245 -0
  170. snappy/hyperboloid/horoball.py +19 -0
  171. snappy/hyperboloid/line.py +35 -0
  172. snappy/hyperboloid/point.py +9 -0
  173. snappy/hyperboloid/triangle.py +29 -0
  174. snappy/isometry_signature.py +382 -0
  175. snappy/len_spec/__init__.py +596 -0
  176. snappy/len_spec/geodesic_info.py +110 -0
  177. snappy/len_spec/geodesic_key_info_dict.py +117 -0
  178. snappy/len_spec/geodesic_piece.py +143 -0
  179. snappy/len_spec/geometric_structure.py +182 -0
  180. snappy/len_spec/geometry.py +80 -0
  181. snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
  182. snappy/len_spec/spine.py +206 -0
  183. snappy/len_spec/test.py +24 -0
  184. snappy/len_spec/test_cases.py +69 -0
  185. snappy/len_spec/tile.py +275 -0
  186. snappy/len_spec/word.py +86 -0
  187. snappy/math_basics.py +39 -13
  188. snappy/matrix.py +52 -9
  189. snappy/number.py +12 -6
  190. snappy/numeric_output_checker.py +2 -3
  191. snappy/pari.py +8 -4
  192. snappy/phone_home.py +2 -1
  193. snappy/polyviewer.py +8 -8
  194. snappy/ptolemy/__init__.py +1 -1
  195. snappy/ptolemy/component.py +2 -2
  196. snappy/ptolemy/coordinates.py +25 -25
  197. snappy/ptolemy/findLoops.py +9 -9
  198. snappy/ptolemy/manifoldMethods.py +27 -29
  199. snappy/ptolemy/polynomial.py +50 -57
  200. snappy/ptolemy/processFileBase.py +60 -0
  201. snappy/ptolemy/ptolemyVariety.py +109 -41
  202. snappy/ptolemy/reginaWrapper.py +4 -4
  203. snappy/ptolemy/rur.py +1 -1
  204. snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +9 -9
  205. snappy/ptolemy/test.py +99 -54
  206. snappy/ptolemy/utilities.py +1 -1
  207. snappy/raytracing/__init__.py +64 -0
  208. snappy/raytracing/additional_horospheres.py +64 -0
  209. snappy/raytracing/additional_len_spec_choices.py +63 -0
  210. snappy/raytracing/cohomology_fractal.py +0 -3
  211. snappy/raytracing/eyeball.py +123 -0
  212. snappy/raytracing/finite_raytracing_data.py +17 -17
  213. snappy/raytracing/finite_viewer.py +15 -15
  214. snappy/raytracing/geodesic_tube_info.py +93 -63
  215. snappy/raytracing/geodesics.py +94 -64
  216. snappy/raytracing/geodesics_window.py +56 -34
  217. snappy/raytracing/gui_utilities.py +21 -6
  218. snappy/raytracing/hyperboloid_navigation.py +29 -4
  219. snappy/raytracing/hyperboloid_utilities.py +73 -73
  220. snappy/raytracing/ideal_raytracing_data.py +121 -91
  221. snappy/raytracing/inside_viewer.py +199 -66
  222. snappy/raytracing/pack.py +22 -0
  223. snappy/raytracing/raytracing_data.py +37 -25
  224. snappy/raytracing/raytracing_view.py +70 -65
  225. snappy/raytracing/shaders/Eye.png +0 -0
  226. snappy/raytracing/shaders/NonGeometric.png +0 -0
  227. snappy/raytracing/shaders/__init__.py +39 -3
  228. snappy/raytracing/shaders/fragment.glsl +451 -133
  229. snappy/raytracing/test.py +29 -0
  230. snappy/raytracing/tooltip.py +146 -0
  231. snappy/raytracing/upper_halfspace_utilities.py +42 -9
  232. snappy/sage_helper.py +67 -134
  233. snappy/settings.py +90 -77
  234. snappy/shell.py +2 -0
  235. snappy/snap/character_varieties.py +2 -2
  236. snappy/snap/find_field.py +4 -3
  237. snappy/snap/fundamental_polyhedron.py +2 -2
  238. snappy/snap/kernel_structures.py +5 -1
  239. snappy/snap/nsagetools.py +9 -8
  240. snappy/snap/peripheral/dual_cellulation.py +4 -3
  241. snappy/snap/peripheral/peripheral.py +2 -2
  242. snappy/snap/peripheral/surface.py +5 -5
  243. snappy/snap/peripheral/test.py +1 -1
  244. snappy/snap/polished_reps.py +8 -8
  245. snappy/snap/slice_obs_HKL.py +16 -14
  246. snappy/snap/t3mlite/arrow.py +3 -3
  247. snappy/snap/t3mlite/edge.py +3 -3
  248. snappy/snap/t3mlite/homology.py +2 -2
  249. snappy/snap/t3mlite/mcomplex.py +3 -3
  250. snappy/snap/t3mlite/simplex.py +12 -0
  251. snappy/snap/t3mlite/spun.py +18 -17
  252. snappy/snap/t3mlite/test_vs_regina.py +4 -4
  253. snappy/snap/test.py +37 -53
  254. snappy/snap/utilities.py +4 -5
  255. snappy/test.py +121 -138
  256. snappy/test_cases.py +263 -0
  257. snappy/testing.py +131 -0
  258. snappy/tiling/__init__.py +2 -0
  259. snappy/tiling/canonical_key_dict.py +59 -0
  260. snappy/tiling/dict_based_set.py +79 -0
  261. snappy/tiling/floor.py +49 -0
  262. snappy/tiling/hyperboloid_dict.py +54 -0
  263. snappy/tiling/iter_utils.py +78 -0
  264. snappy/tiling/lifted_tetrahedron.py +22 -0
  265. snappy/tiling/lifted_tetrahedron_set.py +54 -0
  266. snappy/tiling/real_hash_dict.py +164 -0
  267. snappy/tiling/test.py +23 -0
  268. snappy/tiling/tile.py +215 -0
  269. snappy/tiling/triangle.py +33 -0
  270. snappy/tkterminal.py +113 -84
  271. snappy/twister/main.py +1 -7
  272. snappy/twister/twister_core.cp38-win_amd64.pyd +0 -0
  273. snappy/upper_halfspace/__init__.py +78 -17
  274. snappy/verify/__init__.py +3 -7
  275. snappy/verify/{verifyCanonical.py → canonical.py} +78 -70
  276. snappy/verify/complex_volume/adjust_torsion.py +1 -2
  277. snappy/verify/complex_volume/closed.py +13 -13
  278. snappy/verify/complex_volume/cusped.py +6 -6
  279. snappy/verify/complex_volume/extended_bloch.py +5 -8
  280. snappy/verify/{cuspTranslations.py → cusp_translations.py} +1 -1
  281. snappy/verify/edge_equations.py +80 -0
  282. snappy/verify/exceptions.py +0 -55
  283. snappy/verify/{verifyHyperbolicity.py → hyperbolicity.py} +3 -3
  284. snappy/verify/interval_newton_shapes_engine.py +7 -5
  285. snappy/verify/interval_tree.py +5 -5
  286. snappy/verify/krawczyk_shapes_engine.py +17 -18
  287. snappy/verify/maximal_cusp_area_matrix/__init__.py +7 -74
  288. snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +3 -4
  289. snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +1 -1
  290. snappy/verify/{realAlgebra.py → real_algebra.py} +1 -1
  291. snappy/verify/shapes.py +5 -3
  292. snappy/verify/short_slopes.py +39 -41
  293. snappy/verify/{squareExtensions.py → square_extensions.py} +14 -11
  294. snappy/verify/test.py +57 -60
  295. snappy/verify/upper_halfspace/extended_matrix.py +1 -1
  296. snappy/verify/upper_halfspace/finite_point.py +3 -4
  297. snappy/verify/upper_halfspace/ideal_point.py +9 -9
  298. snappy/verify/volume.py +2 -2
  299. snappy/version.py +2 -2
  300. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/METADATA +14 -10
  301. snappy-3.2.dist-info/RECORD +503 -0
  302. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
  303. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/top_level.txt +6 -1
  304. snappy/__pycache__/__init__.cpython-38.pyc +0 -0
  305. snappy/__pycache__/browser.cpython-38.pyc +0 -0
  306. snappy/__pycache__/cache.cpython-38.pyc +0 -0
  307. snappy/__pycache__/database.cpython-38.pyc +0 -0
  308. snappy/__pycache__/db_utilities.cpython-38.pyc +0 -0
  309. snappy/__pycache__/decorated_isosig.cpython-38.pyc +0 -0
  310. snappy/__pycache__/exceptions.cpython-38.pyc +0 -0
  311. snappy/__pycache__/export_stl.cpython-38.pyc +0 -0
  312. snappy/__pycache__/filedialog.cpython-38.pyc +0 -0
  313. snappy/__pycache__/gui.cpython-38.pyc +0 -0
  314. snappy/__pycache__/horoviewer.cpython-38.pyc +0 -0
  315. snappy/__pycache__/math_basics.cpython-38.pyc +0 -0
  316. snappy/__pycache__/matrix.cpython-38.pyc +0 -0
  317. snappy/__pycache__/number.cpython-38.pyc +0 -0
  318. snappy/__pycache__/numeric_output_checker.cpython-38.pyc +0 -0
  319. snappy/__pycache__/pari.cpython-38.pyc +0 -0
  320. snappy/__pycache__/polyviewer.cpython-38.pyc +0 -0
  321. snappy/__pycache__/sage_helper.cpython-38.pyc +0 -0
  322. snappy/__pycache__/version.cpython-38.pyc +0 -0
  323. snappy/doc/_sources/verify_canon.rst.txt +0 -90
  324. snappy/doc/_static/jquery-3.6.0.js +0 -10881
  325. snappy/doc/_static/js/html5shiv-printshiv.min.js +0 -4
  326. snappy/doc/_static/js/html5shiv.min.js +0 -4
  327. snappy/doc/_static/underscore-1.13.1.js +0 -2042
  328. snappy/doc/_static/underscore.js +0 -6
  329. snappy/doc/verify_canon.html +0 -304
  330. snappy/drilling/__pycache__/__init__.cpython-38.pyc +0 -0
  331. snappy/drilling/__pycache__/constants.cpython-38.pyc +0 -0
  332. snappy/drilling/__pycache__/crush.cpython-38.pyc +0 -0
  333. snappy/drilling/__pycache__/cusps.cpython-38.pyc +0 -0
  334. snappy/drilling/__pycache__/debug.cpython-38.pyc +0 -0
  335. snappy/drilling/__pycache__/epsilons.cpython-38.pyc +0 -0
  336. snappy/drilling/__pycache__/exceptions.cpython-38.pyc +0 -0
  337. snappy/drilling/__pycache__/fixed_points.cpython-38.pyc +0 -0
  338. snappy/drilling/__pycache__/geodesic_info.cpython-38.pyc +0 -0
  339. snappy/drilling/__pycache__/geodesic_tube.cpython-38.pyc +0 -0
  340. snappy/drilling/__pycache__/geometric_structure.cpython-38.pyc +0 -0
  341. snappy/drilling/__pycache__/line.cpython-38.pyc +0 -0
  342. snappy/drilling/__pycache__/moves.cpython-38.pyc +0 -0
  343. snappy/drilling/__pycache__/peripheral_curves.cpython-38.pyc +0 -0
  344. snappy/drilling/__pycache__/perturb.cpython-38.pyc +0 -0
  345. snappy/drilling/__pycache__/quotient_space.cpython-38.pyc +0 -0
  346. snappy/drilling/__pycache__/spatial_dict.cpython-38.pyc +0 -0
  347. snappy/drilling/__pycache__/subdivide.cpython-38.pyc +0 -0
  348. snappy/drilling/__pycache__/tracing.cpython-38.pyc +0 -0
  349. snappy/drilling/geodesic_tube.py +0 -441
  350. snappy/drilling/geometric_structure.py +0 -366
  351. snappy/drilling/line.py +0 -122
  352. snappy/drilling/quotient_space.py +0 -94
  353. snappy/drilling/spatial_dict.py +0 -128
  354. snappy/exterior_to_link/__pycache__/__init__.cpython-38.pyc +0 -0
  355. snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-38.pyc +0 -0
  356. snappy/exterior_to_link/__pycache__/exceptions.cpython-38.pyc +0 -0
  357. snappy/exterior_to_link/__pycache__/hyp_utils.cpython-38.pyc +0 -0
  358. snappy/exterior_to_link/__pycache__/link_projection.cpython-38.pyc +0 -0
  359. snappy/exterior_to_link/__pycache__/main.cpython-38.pyc +0 -0
  360. snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-38.pyc +0 -0
  361. snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-38.pyc +0 -0
  362. snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-38.pyc +0 -0
  363. snappy/exterior_to_link/__pycache__/pl_utils.cpython-38.pyc +0 -0
  364. snappy/exterior_to_link/__pycache__/put_in_S3.cpython-38.pyc +0 -0
  365. snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-38.pyc +0 -0
  366. snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-38.pyc +0 -0
  367. snappy/exterior_to_link/__pycache__/stored_moves.cpython-38.pyc +0 -0
  368. snappy/hyperboloid/__pycache__/__init__.cpython-38.pyc +0 -0
  369. snappy/manifolds/__pycache__/__init__.cpython-38.pyc +0 -0
  370. snappy/ptolemy/__pycache__/__init__.cpython-38.pyc +0 -0
  371. snappy/ptolemy/__pycache__/component.cpython-38.pyc +0 -0
  372. snappy/ptolemy/__pycache__/coordinates.cpython-38.pyc +0 -0
  373. snappy/ptolemy/__pycache__/fieldExtensions.cpython-38.pyc +0 -0
  374. snappy/ptolemy/__pycache__/findLoops.cpython-38.pyc +0 -0
  375. snappy/ptolemy/__pycache__/homology.cpython-38.pyc +0 -0
  376. snappy/ptolemy/__pycache__/manifoldMethods.cpython-38.pyc +0 -0
  377. snappy/ptolemy/__pycache__/matrix.cpython-38.pyc +0 -0
  378. snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-38.pyc +0 -0
  379. snappy/ptolemy/__pycache__/polynomial.cpython-38.pyc +0 -0
  380. snappy/ptolemy/__pycache__/processComponents.cpython-38.pyc +0 -0
  381. snappy/ptolemy/__pycache__/processFileBase.cpython-38.pyc +0 -0
  382. snappy/ptolemy/__pycache__/processFileDispatch.cpython-38.pyc +0 -0
  383. snappy/ptolemy/__pycache__/processMagmaFile.cpython-38.pyc +0 -0
  384. snappy/ptolemy/__pycache__/processRurFile.cpython-38.pyc +0 -0
  385. snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-38.pyc +0 -0
  386. snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-38.pyc +0 -0
  387. snappy/ptolemy/__pycache__/ptolemyVariety.cpython-38.pyc +0 -0
  388. snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-38.pyc +0 -0
  389. snappy/ptolemy/__pycache__/rur.cpython-38.pyc +0 -0
  390. snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-38.pyc +0 -0
  391. snappy/ptolemy/__pycache__/utilities.cpython-38.pyc +0 -0
  392. snappy/snap/__pycache__/__init__.cpython-38.pyc +0 -0
  393. snappy/snap/__pycache__/character_varieties.cpython-38.pyc +0 -0
  394. snappy/snap/__pycache__/fundamental_polyhedron.cpython-38.pyc +0 -0
  395. snappy/snap/__pycache__/interval_reps.cpython-38.pyc +0 -0
  396. snappy/snap/__pycache__/kernel_structures.cpython-38.pyc +0 -0
  397. snappy/snap/__pycache__/mcomplex_base.cpython-38.pyc +0 -0
  398. snappy/snap/__pycache__/nsagetools.cpython-38.pyc +0 -0
  399. snappy/snap/__pycache__/polished_reps.cpython-38.pyc +0 -0
  400. snappy/snap/__pycache__/shapes.cpython-38.pyc +0 -0
  401. snappy/snap/__pycache__/slice_obs_HKL.cpython-38.pyc +0 -0
  402. snappy/snap/__pycache__/utilities.cpython-38.pyc +0 -0
  403. snappy/snap/peripheral/__pycache__/__init__.cpython-38.pyc +0 -0
  404. snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-38.pyc +0 -0
  405. snappy/snap/peripheral/__pycache__/link.cpython-38.pyc +0 -0
  406. snappy/snap/peripheral/__pycache__/peripheral.cpython-38.pyc +0 -0
  407. snappy/snap/peripheral/__pycache__/surface.cpython-38.pyc +0 -0
  408. snappy/snap/t3mlite/__pycache__/__init__.cpython-38.pyc +0 -0
  409. snappy/snap/t3mlite/__pycache__/arrow.cpython-38.pyc +0 -0
  410. snappy/snap/t3mlite/__pycache__/corner.cpython-38.pyc +0 -0
  411. snappy/snap/t3mlite/__pycache__/edge.cpython-38.pyc +0 -0
  412. snappy/snap/t3mlite/__pycache__/face.cpython-38.pyc +0 -0
  413. snappy/snap/t3mlite/__pycache__/files.cpython-38.pyc +0 -0
  414. snappy/snap/t3mlite/__pycache__/homology.cpython-38.pyc +0 -0
  415. snappy/snap/t3mlite/__pycache__/linalg.cpython-38.pyc +0 -0
  416. snappy/snap/t3mlite/__pycache__/mcomplex.cpython-38.pyc +0 -0
  417. snappy/snap/t3mlite/__pycache__/perm4.cpython-38.pyc +0 -0
  418. snappy/snap/t3mlite/__pycache__/simplex.cpython-38.pyc +0 -0
  419. snappy/snap/t3mlite/__pycache__/spun.cpython-38.pyc +0 -0
  420. snappy/snap/t3mlite/__pycache__/surface.cpython-38.pyc +0 -0
  421. snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-38.pyc +0 -0
  422. snappy/snap/t3mlite/__pycache__/vertex.cpython-38.pyc +0 -0
  423. snappy/togl/__init__.py +0 -3
  424. snappy/togl/darwin-tk8.6/Togl2.1/LICENSE +0 -28
  425. snappy/togl/darwin-tk8.6/Togl2.1/libTogl2.1.dylib +0 -0
  426. snappy/togl/darwin-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  427. snappy/togl/darwin-tk8.7/Togl2.1/LICENSE +0 -28
  428. snappy/togl/darwin-tk8.7/Togl2.1/libTogl2.1.dylib +0 -0
  429. snappy/togl/darwin-tk8.7/Togl2.1/pkgIndex.tcl +0 -5
  430. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  431. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/libTogl2.1.so +0 -0
  432. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  433. snappy/togl/win32VC-tk8.6/Togl2.1/LICENSE +0 -28
  434. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.dll +0 -0
  435. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.lib +0 -0
  436. snappy/togl/win32VC-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  437. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  438. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.dll +0 -0
  439. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.lib +0 -0
  440. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  441. snappy/twister/__pycache__/__init__.cpython-38.pyc +0 -0
  442. snappy/twister/__pycache__/main.cpython-38.pyc +0 -0
  443. snappy/upper_halfspace/__pycache__/__init__.cpython-38.pyc +0 -0
  444. snappy/upper_halfspace/__pycache__/ideal_point.cpython-38.pyc +0 -0
  445. snappy/verify/__pycache__/__init__.cpython-38.pyc +0 -0
  446. snappy/verify/__pycache__/cuspCrossSection.cpython-38.pyc +0 -0
  447. snappy/verify/__pycache__/cuspTranslations.cpython-38.pyc +0 -0
  448. snappy/verify/__pycache__/cusp_areas.cpython-38.pyc +0 -0
  449. snappy/verify/__pycache__/cusp_shapes.cpython-38.pyc +0 -0
  450. snappy/verify/__pycache__/exceptions.cpython-38.pyc +0 -0
  451. snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-38.pyc +0 -0
  452. snappy/verify/__pycache__/interval_tree.cpython-38.pyc +0 -0
  453. snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-38.pyc +0 -0
  454. snappy/verify/__pycache__/realAlgebra.cpython-38.pyc +0 -0
  455. snappy/verify/__pycache__/shapes.cpython-38.pyc +0 -0
  456. snappy/verify/__pycache__/short_slopes.cpython-38.pyc +0 -0
  457. snappy/verify/__pycache__/squareExtensions.cpython-38.pyc +0 -0
  458. snappy/verify/__pycache__/verifyCanonical.cpython-38.pyc +0 -0
  459. snappy/verify/__pycache__/verifyHyperbolicity.cpython-38.pyc +0 -0
  460. snappy/verify/__pycache__/volume.cpython-38.pyc +0 -0
  461. snappy/verify/complex_volume/__pycache__/__init__.cpython-38.pyc +0 -0
  462. snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-38.pyc +0 -0
  463. snappy/verify/complex_volume/__pycache__/closed.cpython-38.pyc +0 -0
  464. snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-38.pyc +0 -0
  465. snappy/verify/complex_volume/__pycache__/cusped.cpython-38.pyc +0 -0
  466. snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-38.pyc +0 -0
  467. snappy/verify/cuspCrossSection.py +0 -1422
  468. snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-38.pyc +0 -0
  469. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-38.pyc +0 -0
  470. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-38.pyc +0 -0
  471. snappy/verify/upper_halfspace/__pycache__/__init__.cpython-38.pyc +0 -0
  472. snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-38.pyc +0 -0
  473. snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-38.pyc +0 -0
  474. snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-38.pyc +0 -0
  475. snappy-3.1.1.dist-info/RECORD +0 -575
  476. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -0
@@ -1,239 +1,259 @@
1
- Development Basics
2
- ==================
3
-
4
- Submitting patches
5
- ------------------
6
-
7
- The source code for SnapPy and its various parts are `hosted on GitHub
8
- <https://github.com/3-manifolds>`_ as `Git repositories
9
- <https://git-scm.com/>`_. To contribute a patch, create a free
10
- GitHub account, fork the appropriate repository, and then send us a
11
- pull request, as described in `here
12
- <https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request>`_.
13
-
14
-
15
- macOS
16
- -----
17
-
18
- Here is how to get a clean development setup under macOS.
19
-
20
- - Install the latest Python 3.8 from Python.org using the `Mac
21
- Installer Disk Image <http://www.python.org/download/>`_. Set your
22
- path so that "python3" is::
23
-
24
- /Library/Frameworks/Python.framework/Versions/3.8/bin/python3
25
-
26
- - Use `pip <https://pip.pypa.io/en/latest/index.html>`_ to install the
27
- following packages::
28
-
29
- python3 -m pip install --upgrade setuptools virtualenv wheel pip
30
- python3 -m pip install cython # Used for Python-C interfacing
31
- python3 -m pip install sphinx # For building the documentation
32
- python3 -m pip install ipython # Improved Python shell
33
- python3 -m pip install py2app # For making app bundles
34
- python3 -m pip install pyx FXrays low_index
35
-
36
- - Get the source code from the repository, using Git. For
37
- example you can install Git via its `package installer
38
- <https://www.git-scm.org/>`_. Now do::
39
-
40
- git clone https://github.com/3-manifolds/plink.git
41
- git clone https://github.com/3-manifolds/spherogram.git
42
- git clone https://github.com/3-manifolds/snappy.git
43
-
44
- - Test the stand-alone link editor::
45
-
46
- cd plink
47
- python3 setup.py pip_install
48
- python3 -m plink.app # Link editor appears!
49
-
50
- This last command runs the script "plink/app.py"; the real code for
51
- the link editor is in "plink/__init__.py".
52
-
53
- - Build and install Spherogram::
54
-
55
- cd ../spherogram
56
- python3 setup.py pip_install
57
- python3 setup.py test
58
-
59
- - Now build SnapPy itself. One builds it twice to generate the
60
- documentation, much of which is extracted from the installed module::
61
-
62
- cd ../snappy
63
- python3 setup.py pip_install
64
- python3 setup.py test # Run the tests; pretty picture should appear.
65
- python3 -m snappy.app #SnapPy starts!
66
-
67
- To build the clickable app, just do the following::
68
-
69
- cd mac_osx_app
70
- python3 release.py --manual
71
-
72
- though for general development purposes ``python3 -m snappy.app`` is
73
- usually the way to go.
74
-
75
- Some major parts of the SnapPy codebase are:
76
-
77
- - "SnapPy.pyx", "SnapPycore.pxi", "SnapPy.pxi": The Cython interface
78
- to the SnapPea kernel
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
84
-
85
- In addition, Jeff's old prototype for a Tk-based UI can be found in
86
- "misc/JeffsOldUI/SnapPeaGUI.py"; just run Python on this file to try it
87
- out, after installing `PythonMegaWidgets <http://pmw.sf.net>`_.
88
-
89
-
90
- Windows
91
- -------
92
-
93
- These instructions have been tested on Windows 10, and describe
94
- setting up a development environment using the (free) MSVC
95
- compiler. To build the CyPari subcomponent, which few will want or
96
- need to do, one must install additional tools.
97
-
98
- - Install `Python 3.7 <https://www.python.org/downloads/windows/>`_,
99
- specifically the 32 bit version (Windows x86 not Windows x86-64).
100
- These instructions assume it has been installed in the directory
101
- ``C:\Python37`` which is not the default.
102
-
103
- - With Python 3.7.4, you need the MSVC command line tools. You can
104
- get them by using Microsoft's free `Build Tools for Visual Studio 2019
105
- <https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16>`_
106
- installer and selecting the "C++ command line tools" and installing
107
- the following subpackages: "MSVC v142 - VS 2019 C++ build tools",
108
- "Testing tools core features", "C++/CLI support for v142", and
109
- "Windows 10 SDK (most recent version)".
110
-
111
- If you would like to make your own installer you will also need
112
- `Inno Setup <http://www.jrsoftware.org/isdl.php>`_, specifically the
113
- unicode version; tested with version 5.5.9.
114
-
115
- - Install whichever version of `MSYS2 <http://msys2.github.io>`_ is
116
- appropriate for your version Windows. Most commonly, you will have
117
- a 64-bit Windows and hence want the "x86_64" installer; for
118
- concreteness the rest of these instructions assume this. (Technical
119
- note: even if you want to build 32-bit binaries, if your Windows is
120
- 64-bit you want the x86_64 installer.) Follow the instructions on
121
- the webpage to update everything to the very latest MSYS2
122
- (``pacman -Sy pacman; pacman -Syu; pacman -Su`` etc.).
123
-
124
- - Make a shortcut to ``c:\msys64\msys2.exe`` as you will be using it all
125
- the time; alternatively, pin ``mys2.exe`` to your taskbar.
126
-
127
- - Install some additional packages::
128
-
129
- pacman -S git make nano openssh perl tar unzip wget winpty patch
130
-
131
- - Install your favorite text editor, for example you can install Emacs
132
- via::
133
-
134
- pacman -S mingw-w64-x86_64-emacs
135
-
136
- - Make it so that MinGW, Python, and Inno Setup are all in your PATH,
137
- as well as work around some stupid bug, by making the end of your
138
- "~/.bash_profile" file to read::
139
-
140
- PATH=/c/Python37:/c/Python37/Scripts:$PATH
141
- PATH=$PATH:'/c/Program Files (x86)/Inno Setup 5'
142
- export PATH
143
- alias emacs="/mingw64/bin/emacs"
144
- winpty bash; exit
145
-
146
- For example, do::
147
-
148
- nano ~/.bash_profile
149
-
150
- - Make sure you have the right version of Python in your path by
151
- typing::
152
-
153
- python --version
154
-
155
- You should see something like ``Python 3.7.4``.
156
-
157
- - Use pip to install some basic tools::
158
-
159
- python -m pip install --upgrade pip setuptools wheel # Upgrades pip to the current version.
160
- python -m pip install pyreadline sphinx cython cypari pyx FXrays low_index
161
-
162
- - Fetch the latest development versions of the source straight from
163
- the t3m repository::
164
-
165
- git clone https://github.com/3-manifolds/plink.git
166
- git clone https://github.com/3-manifolds/spherogram.git
167
- git clone https://github.com/3-manifolds/snappy.git
168
-
169
- - Build the components, from easiest to hardest, and then test::
170
-
171
- cd plink
172
- python setup.py pip_install
173
- cd ../Spherogram
174
- python setup.py pip_install
175
- cd ../SnapPy
176
- python setup.py pip_install
177
- cd ..
178
- python -m SnapPy.test
179
-
180
- - To run the app, you can just do::
181
-
182
- python -m snappy.app
183
-
184
- - To build the binary installer, you need PyInstaller::
185
-
186
- python -m pip install pyinstaller
187
-
188
- To build the binary installer do::
189
-
190
- cd windows_exe
191
- python make.py
192
-
193
- You will need to close the SnapPy window that pops up here to
194
- complete the build process.
195
-
196
- - Useful tips for those coming from Unix. In MSYS2, your home
197
- directory is really something like::
198
-
199
- c:\msys2\home\Nathan Dunfield
200
-
201
- whereas your Windows 10 home directory is::
202
-
203
- c:\Users\Nathan Dunfield
204
-
205
- It is handy to have symbolic links from your MSYS2 home directory to
206
- the Downloads and Desktop folders on the Windows side. `See this
207
- discussion <http://www.howtogeek.com/howto/16226/>`_, but basically
208
- you start a "Command Prompt" as Administrator and do::
209
-
210
- cd "C:\msys64\home\Nathan Dunfield"
211
- mklink /D Desktop "C:\Users\Nathan Dunfield\Desktop"
212
- mklink /D Downloads "C:\Users\Nathan Dunfield\Downloads"
213
-
214
-
215
- - To build CyPari, first install the 32-bit gcc compiler::
216
-
217
- pacman -S mingw-w64-i686-gcc
218
-
219
- Then open a *MinGW32 terminal window*, which is **different** than a
220
- MSYS2 terminal, and can be started via `c:\msys64\mingw32.exe`.
221
- This will put the 32-bit gcc in your path and set the correct
222
- "uname". Now do::
223
-
224
- git clone https://github.com/3-manifolds/CyPari.git
225
- cd CyPari
226
- sh build_pari.sh
227
- python setup.py build --compiler=mingw32
228
- python setup.py install
229
- python -m cypari.test # About 30 tests will fail.
230
-
231
- Warning: CyPari will not build if there are spaces in the path to
232
- the CyPari directory.
233
-
234
-
235
- Linux
236
- -----
237
-
238
- See the :ref:`installation instructions on generic Unix
239
- <installing:Generic Unix>` for how to build SnapPy from source.
1
+ Development Basics
2
+ ==================
3
+
4
+ Submitting patches
5
+ ------------------
6
+
7
+ The source code for SnapPy and its various parts are `hosted on GitHub
8
+ <https://github.com/3-manifolds>`_ as `Git repositories
9
+ <https://git-scm.com/>`_. To contribute a patch, create a free
10
+ GitHub account, fork the appropriate repository, and then send us a
11
+ pull request, as described in `here
12
+ <https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request>`_.
13
+
14
+
15
+ macOS
16
+ -----
17
+
18
+ Here is how to get a clean development setup under macOS.
19
+
20
+ - Install the latest Python 3.13 from Python.org using the `Mac
21
+ Installer Disk Image <http://www.python.org/download/>`_. Set your
22
+ path so that "python3" is::
23
+
24
+ /Library/Frameworks/Python.framework/Versions/3.13/bin/python3
25
+
26
+ - Use `pip <https://pip.pypa.io/en/latest/index.html>`_ to install the
27
+ following packages::
28
+
29
+ python3 -m pip install --upgrade setuptools virtualenv wheel pip
30
+ python3 -m pip install cython # Used for Python-C interfacing
31
+ python3 -m pip install sphinx # For building the documentation
32
+ python3 -m pip install ipython # Improved Python shell
33
+ python3 -m pip install py2app # For making app bundles
34
+ python3 -m pip install pyx FXrays low_index
35
+
36
+ - Get the source code from the repository, using Git. For
37
+ example you can install Git via its `package installer
38
+ <https://www.git-scm.org/>`_. Now do::
39
+
40
+ git clone https://github.com/3-manifolds/plink.git
41
+ git clone https://github.com/3-manifolds/spherogram.git
42
+ git clone https://github.com/3-manifolds/snappy.git
43
+
44
+ - Test the stand-alone link editor::
45
+
46
+ cd plink
47
+ python3 setup.py pip_install
48
+ python3 -m plink.app # Link editor appears!
49
+
50
+ This last command runs the script ``plink/app.py``; the real code for
51
+ the link editor is in ``plink/__init__.py``.
52
+
53
+ - Build and install Spherogram::
54
+
55
+ cd ../spherogram
56
+ python3 setup.py pip_install
57
+ python3 setup.py test
58
+
59
+ - Now build SnapPy itself. One builds it twice to generate the
60
+ documentation, much of which is extracted from the installed module::
61
+
62
+ cd ../snappy
63
+ python3 setup.py pip_install
64
+ python3 setup.py test # Run the tests; pretty picture should appear.
65
+ python3 -m snappy.app #SnapPy starts!
66
+
67
+ To build the clickable app, just do the following::
68
+
69
+ cd mac_osx_app
70
+ python3 release.py --manual
71
+
72
+ though for general development purposes ``python3 -m snappy.app`` is
73
+ usually the way to go.
74
+
75
+ Some major parts of the SnapPy codebase are:
76
+
77
+ - ``SnapPy.pyx``, ``SnapPycore.pxi``, ``SnapPy.pxi``: The Cython interface
78
+ to the SnapPea kernel
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
84
+
85
+
86
+ Windows
87
+ -------
88
+
89
+ These instructions have been tested on Windows 10, and describe
90
+ setting up a development environment using the (free) MSVC
91
+ compiler. To build the CyPari subcomponent, which few will want or
92
+ need to do, one must install additional tools.
93
+
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``).
97
+ These instructions assume it has been installed in the directory
98
+ ``C:\Python313`` which is not the default.
99
+
100
+ - With Python 3.13.1, you need the MSVC command line tools. You can
101
+ get them by using Microsoft's free `Build Tools for Visual Studio 2019
102
+ <https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16>`_
103
+ installer and selecting the "C++ command line tools" and installing
104
+ the following subpackages: "MSVC v142 - VS 2019 C++ build tools",
105
+ "Testing tools core features", "C++/CLI support for v142", and
106
+ "Windows 10 SDK (most recent version)".
107
+
108
+ If you would like to make your own installer you will also need
109
+ `Inno Setup <http://www.jrsoftware.org/isdl.php>`_, specifically the
110
+ unicode version; tested with version 5.5.9.
111
+
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
118
+
119
+ - Make a shortcut to ``c:\msys64\msys2.exe`` as you will be using it all
120
+ the time; alternatively, pin ``mys2.exe`` to your taskbar.
121
+
122
+ - Install some additional packages::
123
+
124
+ pacman -S git make nano openssh perl tar unzip wget winpty patch
125
+
126
+ - Install your favorite text editor, for example you can install Emacs
127
+ via::
128
+
129
+ pacman -S mingw-w64-x86_64-emacs
130
+
131
+ - Make it so that MinGW, Python, and Inno Setup are all in your PATH,
132
+ as well as work around some stupid bug, by making the end of your
133
+ "~/.bash_profile" file to read::
134
+
135
+ PATH=/c/Python313:/c/Python313/Scripts:$PATH
136
+ PATH=$PATH:'/c/Program Files (x86)/Inno Setup 5'
137
+ export PATH
138
+ alias emacs="/mingw64/bin/emacs"
139
+ winpty bash; exit
140
+
141
+ For example, do::
142
+
143
+ nano ~/.bash_profile
144
+
145
+ - Make sure you have the right version of Python in your path by
146
+ typing::
147
+
148
+ python --version
149
+
150
+ You should see something like ``Python 3.13.1``.
151
+
152
+ - Use pip to install some basic tools::
153
+
154
+ python -m pip install --upgrade pip setuptools wheel # Upgrades pip to the current version.
155
+ python -m pip install pyreadline sphinx cython cypari pyx FXrays low_index
156
+
157
+ - Fetch the latest development versions of the source straight from
158
+ the t3m repository::
159
+
160
+ git clone https://github.com/3-manifolds/plink.git
161
+ git clone https://github.com/3-manifolds/spherogram.git
162
+ git clone https://github.com/3-manifolds/snappy.git
163
+
164
+ - Build the components, from easiest to hardest, and then test::
165
+
166
+ cd plink
167
+ python setup.py pip_install
168
+ cd ../Spherogram
169
+ python setup.py pip_install
170
+ cd ../SnapPy
171
+ python setup.py pip_install
172
+ cd ..
173
+ python -m SnapPy.test
174
+
175
+ - To run the app, you can just do::
176
+
177
+ python -m snappy.app
178
+
179
+ - To build the binary installer, you need PyInstaller::
180
+
181
+ python -m pip install pyinstaller
182
+
183
+ To build the binary installer do::
184
+
185
+ cd windows_exe
186
+ python make.py
187
+
188
+ You will need to close the SnapPy window that pops up here to
189
+ complete the build process.
190
+
191
+ - Useful tips for those coming from Unix. In MSYS2, your home
192
+ directory is really something like::
193
+
194
+ c:\msys2\home\Nathan Dunfield
195
+
196
+ whereas your Windows 10 home directory is::
197
+
198
+ c:\Users\Nathan Dunfield
199
+
200
+ It is handy to have symbolic links from your MSYS2 home directory to
201
+ the Downloads and Desktop folders on the Windows side. `See this
202
+ discussion <http://www.howtogeek.com/howto/16226/>`_, but basically
203
+ you start a "Command Prompt" as Administrator and do::
204
+
205
+ cd "C:\msys64\home\Nathan Dunfield"
206
+ mklink /D Desktop "C:\Users\Nathan Dunfield\Desktop"
207
+ mklink /D Downloads "C:\Users\Nathan Dunfield\Downloads"
208
+
209
+
210
+ Linux
211
+ -----
212
+
213
+ Things you'll need:
214
+
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".
223
+
224
+ - Test that Python is in order by installing PLink from source::
225
+
226
+ python3 -m pip install --user plink
227
+ python3 -m plink.app # Should start the link editor!
228
+
229
+ .. _openglmesa:
230
+
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::
245
+
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