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,364 +1,384 @@
1
- <!DOCTYPE html>
2
- <html class="writer-html5" lang="en" >
3
- <head>
4
- <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
5
-
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <title>Development Basics &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]-->
15
-
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>
21
- <script src="_static/js/theme.js"></script>
22
- <link rel="index" title="Index" href="genindex.html" />
23
- <link rel="search" title="Search" href="search.html" />
24
- <link rel="prev" title="To Do List" href="todo.html" />
25
- </head>
26
-
27
- <body class="wy-body-for-nav">
28
- <div class="wy-grid-for-nav">
29
- <nav data-toggle="wy-nav-shift" class="wy-nav-side">
30
- <div class="wy-side-scroll">
31
- <div class="wy-side-nav-search" >
32
-
33
-
34
-
35
- <a href="index.html" class="icon icon-home">
36
- SnapPy
37
- <img src="_static/SnapPy-horizontal-128.png" class="logo" alt="Logo"/>
38
- </a>
39
- <div class="version">
40
- 3.1.1
41
- </div>
42
- <div role="search">
43
- <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
44
- <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
45
- <input type="hidden" name="check_keywords" value="yes" />
46
- <input type="hidden" name="area" value="default" />
47
- </form>
48
- </div>
49
- </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
50
- <ul class="current">
51
- <li class="toctree-l1"><a class="reference internal" href="installing.html">Installing SnapPy</a></li>
52
- <li class="toctree-l1"><a class="reference internal" href="screenshots.html">Screenshots: SnapPy in action</a></li>
53
- <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial</a></li>
54
- <li class="toctree-l1"><a class="reference internal" href="snappy.html">The snappy module and its classes</a></li>
55
- <li class="toctree-l1"><a class="reference internal" href="plink.html">Using SnapPy’s link editor</a></li>
56
- <li class="toctree-l1"><a class="reference internal" href="spherogram.html">Links: planar diagrams and invariants</a></li>
57
- <li class="toctree-l1"><a class="reference internal" href="snap.html">Number theory of hyperbolic 3-manifolds</a></li>
58
- <li class="toctree-l1"><a class="reference internal" href="verify.html">Verified computations</a></li>
59
- <li class="toctree-l1"><a class="reference internal" href="other.html">Other components</a></li>
60
- <li class="toctree-l1"><a class="reference internal" href="news.html">News</a></li>
61
- <li class="toctree-l1"><a class="reference internal" href="credits.html">Credits</a></li>
62
- <li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting bugs and other problems</a></li>
63
- <li class="toctree-l1"><a class="reference internal" href="todo.html">To Do List</a></li>
64
- <li class="toctree-l1 current"><a class="current reference internal" href="#">Development Basics</a><ul>
65
- <li class="toctree-l2"><a class="reference internal" href="#submitting-patches">Submitting patches</a></li>
66
- <li class="toctree-l2"><a class="reference internal" href="#macos">macOS</a></li>
67
- <li class="toctree-l2"><a class="reference internal" href="#windows">Windows</a></li>
68
- <li class="toctree-l2"><a class="reference internal" href="#linux">Linux</a></li>
69
- </ul>
70
- </li>
71
- </ul>
72
-
73
- </div>
74
- </div>
75
- </nav>
76
-
77
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
78
- <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
79
- <a href="index.html">SnapPy</a>
80
- </nav>
81
-
82
- <div class="wy-nav-content">
83
- <div class="rst-content">
84
- <div role="navigation" aria-label="Page navigation">
85
- <ul class="wy-breadcrumbs">
86
- <li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
87
- <li class="breadcrumb-item active">Development Basics</li>
88
- <li class="wy-breadcrumbs-aside">
89
- </li>
90
- </ul>
91
- <hr/>
92
- </div>
93
- <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
94
- <div itemprop="articleBody">
95
-
96
- <section id="development-basics">
97
- <h1>Development Basics<a class="headerlink" href="#development-basics" title="Permalink to this heading"></a></h1>
98
- <section id="submitting-patches">
99
- <h2>Submitting patches<a class="headerlink" href="#submitting-patches" title="Permalink to this heading"></a></h2>
100
- <p>The source code for SnapPy and its various parts are <a class="reference external" href="https://github.com/3-manifolds">hosted on GitHub</a> as <a class="reference external" href="https://git-scm.com/">Git repositories</a>. To contribute a patch, create a free
101
- GitHub account, fork the appropriate repository, and then send us a
102
- pull request, as described in <a class="reference external" href="https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request">here</a>.</p>
103
- </section>
104
- <section id="macos">
105
- <h2>macOS<a class="headerlink" href="#macos" title="Permalink to this heading"></a></h2>
106
- <p>Here is how to get a clean development setup under macOS.</p>
107
- <ul>
108
- <li><p>Install the latest Python 3.8 from Python.org using the <a class="reference external" href="http://www.python.org/download/">Mac
109
- Installer Disk Image</a>. Set your
110
- path so that “python3” is:</p>
111
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">Library</span><span class="o">/</span><span class="n">Frameworks</span><span class="o">/</span><span class="n">Python</span><span class="o">.</span><span class="n">framework</span><span class="o">/</span><span class="n">Versions</span><span class="o">/</span><span class="mf">3.8</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">python3</span>
112
- </pre></div>
113
- </div>
114
- </li>
115
- <li><p>Use <a class="reference external" href="https://pip.pypa.io/en/latest/index.html">pip</a> to install the
116
- following packages:</p>
117
- <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="n">setuptools</span> <span class="n">virtualenv</span> <span class="n">wheel</span> <span class="n">pip</span>
118
- <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="n">cython</span> <span class="c1"># Used for Python-C interfacing</span>
119
- <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="n">sphinx</span> <span class="c1"># For building the documentation</span>
120
- <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="n">ipython</span> <span class="c1"># Improved Python shell</span>
121
- <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="n">py2app</span> <span class="c1"># For making app bundles</span>
122
- <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="n">pyx</span> <span class="n">FXrays</span> <span class="n">low_index</span>
123
- </pre></div>
124
- </div>
125
- </li>
126
- <li><p>Get the source code from the repository, using Git. For
127
- example you can install Git via its <a class="reference external" href="https://www.git-scm.org/">package installer</a>. Now do:</p>
128
- <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">plink</span><span class="o">.</span><span class="n">git</span>
129
- <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">spherogram</span><span class="o">.</span><span class="n">git</span>
130
- <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>
131
- </pre></div>
132
- </div>
133
- </li>
134
- <li><p>Test the stand-alone link editor:</p>
135
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="n">plink</span>
136
- <span class="n">python3</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">pip_install</span>
137
- <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"># Link editor appears!</span>
138
- </pre></div>
139
- </div>
140
- <p>This last command runs the script “plink/app.py”; the real code for
141
- the link editor is in “plink/__init__.py”.</p>
142
- </li>
143
- <li><p>Build and install Spherogram:</p>
144
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">../</span><span class="n">spherogram</span>
145
- <span class="n">python3</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">pip_install</span>
146
- <span class="n">python3</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">test</span>
147
- </pre></div>
148
- </div>
149
- </li>
150
- <li><p>Now build SnapPy itself. One builds it twice to generate the
151
- documentation, much of which is extracted from the installed module:</p>
152
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">../</span><span class="n">snappy</span>
153
- <span class="n">python3</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">pip_install</span>
154
- <span class="n">python3</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">test</span> <span class="c1"># Run the tests; pretty picture should appear.</span>
155
- <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> <span class="c1">#SnapPy starts!</span>
156
- </pre></div>
157
- </div>
158
- <p>To build the clickable app, just do the following:</p>
159
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="n">mac_osx_app</span>
160
- <span class="n">python3</span> <span class="n">release</span><span class="o">.</span><span class="n">py</span> <span class="o">--</span><span class="n">manual</span>
161
- </pre></div>
162
- </div>
163
- <p>though for general development purposes <code class="docutils literal notranslate"><span class="pre">python3</span> <span class="pre">-m</span> <span class="pre">snappy.app</span></code> is
164
- usually the way to go.</p>
165
- </li>
166
- </ul>
167
- <p>Some major parts of the SnapPy codebase are:</p>
168
- <ul class="simple">
169
- <li><p>“SnapPy.pyx”, “SnapPycore.pxi”, “SnapPy.pxi”: The Cython interface
170
- to the SnapPea kernel</p></li>
171
- <li><p>“opengl/CyOpenGL*.pyx”: The Cython interface to OpenGL*</p></li>
172
- <li><p>“snappy/app.py”: The core GUI code</p></li>
173
- <li><p>“snappy/polyviewer.py”: The GUI code for Dirichlet domains</p></li>
174
- <li><p>“snappy/horoviewer.py”: The GUI code for horoball pictures</p></li>
175
- <li><p>“snappy/database.py”: Interacts with the sqlite3 manifold database</p></li>
176
- </ul>
177
- <p>In addition, Jeff’s old prototype for a Tk-based UI can be found in
178
- “misc/JeffsOldUI/SnapPeaGUI.py”; just run Python on this file to try it
179
- out, after installing <a class="reference external" href="http://pmw.sf.net">PythonMegaWidgets</a>.</p>
180
- </section>
181
- <section id="windows">
182
- <h2>Windows<a class="headerlink" href="#windows" title="Permalink to this heading"></a></h2>
183
- <p>These instructions have been tested on Windows 10, and describe
184
- setting up a development environment using the (free) MSVC
185
- compiler. To build the CyPari subcomponent, which few will want or
186
- need to do, one must install additional tools.</p>
187
- <ul>
188
- <li><p>Install <a class="reference external" href="https://www.python.org/downloads/windows/">Python 3.7</a>,
189
- specifically the 32 bit version (Windows x86 not Windows x86-64).
190
- These instructions assume it has been installed in the directory
191
- <code class="docutils literal notranslate"><span class="pre">C:\Python37</span></code> which is not the default.</p></li>
192
- <li><p>With Python 3.7.4, you need the MSVC command line tools. You can
193
- get them by using Microsoft’s free <a class="reference external" href="https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&amp;rel=16">Build Tools for Visual Studio 2019</a>
194
- installer and selecting the “C++ command line tools” and installing
195
- the following subpackages: “MSVC v142 - VS 2019 C++ build tools”,
196
- “Testing tools core features”, “C++/CLI support for v142”, and
197
- Windows 10 SDK (most recent version)”.</p>
198
- <p>If you would like to make your own installer you will also need
199
- <a class="reference external" href="http://www.jrsoftware.org/isdl.php">Inno Setup</a>, specifically the
200
- unicode version; tested with version 5.5.9.</p>
201
- </li>
202
- <li><p>Install whichever version of <a class="reference external" href="http://msys2.github.io">MSYS2</a> is
203
- appropriate for your version Windows. Most commonly, you will have
204
- a 64-bit Windows and hence want the “x86_64” installer; for
205
- concreteness the rest of these instructions assume this. (Technical
206
- note: even if you want to build 32-bit binaries, if your Windows is
207
- 64-bit you want the x86_64 installer.) Follow the instructions on
208
- the webpage to update everything to the very latest MSYS2
209
- (<code class="docutils literal notranslate"><span class="pre">pacman</span> <span class="pre">-Sy</span> <span class="pre">pacman;</span> <span class="pre">pacman</span> <span class="pre">-Syu;</span> <span class="pre">pacman</span> <span class="pre">-Su</span></code> etc.).</p></li>
210
- <li><p>Make a shortcut to <code class="docutils literal notranslate"><span class="pre">c:\msys64\msys2.exe</span></code> as you will be using it all
211
- the time; alternatively, pin <code class="docutils literal notranslate"><span class="pre">mys2.exe</span></code> to your taskbar.</p></li>
212
- <li><p>Install some additional packages:</p>
213
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pacman</span> <span class="o">-</span><span class="n">S</span> <span class="n">git</span> <span class="n">make</span> <span class="n">nano</span> <span class="n">openssh</span> <span class="n">perl</span> <span class="n">tar</span> <span class="n">unzip</span> <span class="n">wget</span> <span class="n">winpty</span> <span class="n">patch</span>
214
- </pre></div>
215
- </div>
216
- </li>
217
- <li><p>Install your favorite text editor, for example you can install Emacs
218
- via:</p>
219
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pacman</span> <span class="o">-</span><span class="n">S</span> <span class="n">mingw</span><span class="o">-</span><span class="n">w64</span><span class="o">-</span><span class="n">x86_64</span><span class="o">-</span><span class="n">emacs</span>
220
- </pre></div>
221
- </div>
222
- </li>
223
- <li><p>Make it so that MinGW, Python, and Inno Setup are all in your PATH,
224
- as well as work around some stupid bug, by making the end of your
225
- “~/.bash_profile” file to read:</p>
226
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>PATH=/c/Python37:/c/Python37/Scripts:$PATH
227
- PATH=$PATH:&#39;/c/Program Files (x86)/Inno Setup 5&#39;
228
- export PATH
229
- alias emacs=&quot;/mingw64/bin/emacs&quot;
230
- winpty bash; exit
231
- </pre></div>
232
- </div>
233
- <p>For example, do:</p>
234
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">nano</span> <span class="o">~/.</span><span class="n">bash_profile</span>
235
- </pre></div>
236
- </div>
237
- </li>
238
- <li><p>Make sure you have the right version of Python in your path by
239
- typing:</p>
240
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="o">--</span><span class="n">version</span>
241
- </pre></div>
242
- </div>
243
- <p>You should see something like <code class="docutils literal notranslate"><span class="pre">Python</span> <span class="pre">3.7.4</span></code>.</p>
244
- </li>
245
- <li><p>Use pip to install some basic tools:</p>
246
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><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="n">pip</span> <span class="n">setuptools</span> <span class="n">wheel</span> <span class="c1"># Upgrades pip to the current version.</span>
247
- <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="n">pyreadline</span> <span class="n">sphinx</span> <span class="n">cython</span> <span class="n">cypari</span> <span class="n">pyx</span> <span class="n">FXrays</span> <span class="n">low_index</span>
248
- </pre></div>
249
- </div>
250
- </li>
251
- <li><p>Fetch the latest development versions of the source straight from
252
- the t3m repository:</p>
253
- <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">plink</span><span class="o">.</span><span class="n">git</span>
254
- <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">spherogram</span><span class="o">.</span><span class="n">git</span>
255
- <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>
256
- </pre></div>
257
- </div>
258
- </li>
259
- <li><p>Build the components, from easiest to hardest, and then test:</p>
260
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="n">plink</span>
261
- <span class="n">python</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">pip_install</span>
262
- <span class="n">cd</span> <span class="o">../</span><span class="n">Spherogram</span>
263
- <span class="n">python</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">pip_install</span>
264
- <span class="n">cd</span> <span class="o">../</span><span class="n">SnapPy</span>
265
- <span class="n">python</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">pip_install</span>
266
- <span class="n">cd</span> <span class="o">..</span>
267
- <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">test</span>
268
- </pre></div>
269
- </div>
270
- </li>
271
- <li><p>To run the app, you can just do:</p>
272
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><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>
273
- </pre></div>
274
- </div>
275
- </li>
276
- <li><p>To build the binary installer, you need PyInstaller:</p>
277
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><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="n">pyinstaller</span>
278
- </pre></div>
279
- </div>
280
- <p>To build the binary installer do:</p>
281
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="n">windows_exe</span>
282
- <span class="n">python</span> <span class="n">make</span><span class="o">.</span><span class="n">py</span>
283
- </pre></div>
284
- </div>
285
- <p>You will need to close the SnapPy window that pops up here to
286
- complete the build process.</p>
287
- </li>
288
- <li><p>Useful tips for those coming from Unix. In MSYS2, your home
289
- directory is really something like:</p>
290
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">c</span><span class="p">:</span>\<span class="n">msys2</span>\<span class="n">home</span>\<span class="n">Nathan</span> <span class="n">Dunfield</span>
291
- </pre></div>
292
- </div>
293
- <p>whereas your Windows 10 home directory is:</p>
294
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">c</span><span class="p">:</span>\<span class="n">Users</span>\<span class="n">Nathan</span> <span class="n">Dunfield</span>
295
- </pre></div>
296
- </div>
297
- <p>It is handy to have symbolic links from your MSYS2 home directory to
298
- the Downloads and Desktop folders on the Windows side. <a class="reference external" href="http://www.howtogeek.com/howto/16226/">See this
299
- discussion</a>, but basically
300
- you start a “Command Prompt” as Administrator and do:</p>
301
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="s2">&quot;C:\msys64\home\Nathan Dunfield&quot;</span>
302
- <span class="n">mklink</span> <span class="o">/</span><span class="n">D</span> <span class="n">Desktop</span> <span class="s2">&quot;C:\Users\Nathan Dunfield\Desktop&quot;</span>
303
- <span class="n">mklink</span> <span class="o">/</span><span class="n">D</span> <span class="n">Downloads</span> <span class="s2">&quot;C:\Users\Nathan Dunfield\Downloads&quot;</span>
304
- </pre></div>
305
- </div>
306
- </li>
307
- <li><p>To build CyPari, first install the 32-bit gcc compiler:</p>
308
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pacman</span> <span class="o">-</span><span class="n">S</span> <span class="n">mingw</span><span class="o">-</span><span class="n">w64</span><span class="o">-</span><span class="n">i686</span><span class="o">-</span><span class="n">gcc</span>
309
- </pre></div>
310
- </div>
311
- <p>Then open a <em>MinGW32 terminal window</em>, which is <strong>different</strong> than a
312
- MSYS2 terminal, and can be started via <cite>c:msys64mingw32.exe</cite>.
313
- This will put the 32-bit gcc in your path and set the correct
314
- “uname”. Now do:</p>
315
- <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">CyPari</span><span class="o">.</span><span class="n">git</span>
316
- <span class="n">cd</span> <span class="n">CyPari</span>
317
- <span class="n">sh</span> <span class="n">build_pari</span><span class="o">.</span><span class="n">sh</span>
318
- <span class="n">python</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">build</span> <span class="o">--</span><span class="n">compiler</span><span class="o">=</span><span class="n">mingw32</span>
319
- <span class="n">python</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">install</span>
320
- <span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">cypari</span><span class="o">.</span><span class="n">test</span> <span class="c1"># About 30 tests will fail.</span>
321
- </pre></div>
322
- </div>
323
- <p>Warning: CyPari will not build if there are spaces in the path to
324
- the CyPari directory.</p>
325
- </li>
326
- </ul>
327
- </section>
328
- <section id="linux">
329
- <h2>Linux<a class="headerlink" href="#linux" title="Permalink to this heading"></a></h2>
330
- <p>See the <a class="reference internal" href="installing.html#generic-unix"><span class="std std-ref">installation instructions on generic Unix</span></a> for how to build SnapPy from source.</p>
331
- </section>
332
- </section>
333
-
334
-
335
- </div>
336
- </div>
337
- <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
338
- <a href="todo.html" class="btn btn-neutral float-left" title="To Do List" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
339
- </div>
340
-
341
- <hr/>
342
-
343
- <div role="contentinfo">
344
- <p>&#169; Copyright 2009-2023, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.</p>
345
- </div>
346
-
347
- Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
348
- <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
349
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
350
-
351
-
352
- </footer>
353
- </div>
354
- </div>
355
- </section>
356
- </div>
357
- <script>
358
- jQuery(function () {
359
- SphinxRtdTheme.Navigation.enable(true);
360
- });
361
- </script>
362
-
363
- </body>
1
+
2
+
3
+ <!DOCTYPE html>
4
+ <html class="writer-html5" lang="en" data-content_root="./">
5
+ <head>
6
+ <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
7
+
8
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
+ <title>Development Basics &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
+
14
+
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
+ <script src="_static/js/theme.js"></script>
22
+ <link rel="index" title="Index" href="genindex.html" />
23
+ <link rel="search" title="Search" href="search.html" />
24
+ <link rel="prev" title="To Do List" href="todo.html" />
25
+ </head>
26
+
27
+ <body class="wy-body-for-nav">
28
+ <div class="wy-grid-for-nav">
29
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
30
+ <div class="wy-side-scroll">
31
+ <div class="wy-side-nav-search" >
32
+
33
+
34
+
35
+ <a href="index.html" class="icon icon-home">
36
+ SnapPy
37
+ <img src="_static/SnapPy-horizontal-128.png" class="logo" alt="Logo"/>
38
+ </a>
39
+ <div role="search">
40
+ <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
41
+ <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
42
+ <input type="hidden" name="check_keywords" value="yes" />
43
+ <input type="hidden" name="area" value="default" />
44
+ </form>
45
+ </div>
46
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
47
+ <ul class="current">
48
+ <li class="toctree-l1"><a class="reference internal" href="installing.html">Installing SnapPy</a></li>
49
+ <li class="toctree-l1"><a class="reference internal" href="screenshots.html">Screenshots: SnapPy in action</a></li>
50
+ <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial</a></li>
51
+ <li class="toctree-l1"><a class="reference internal" href="snappy.html">The snappy module and its classes</a></li>
52
+ <li class="toctree-l1"><a class="reference internal" href="plink.html">Using SnapPy’s link editor</a></li>
53
+ <li class="toctree-l1"><a class="reference internal" href="spherogram.html">Links: planar diagrams and invariants</a></li>
54
+ <li class="toctree-l1"><a class="reference internal" href="snap.html">Number theory of hyperbolic 3-manifolds</a></li>
55
+ <li class="toctree-l1"><a class="reference internal" href="verify.html">Verified computations</a></li>
56
+ <li class="toctree-l1"><a class="reference internal" href="other.html">Other components</a></li>
57
+ <li class="toctree-l1"><a class="reference internal" href="news.html">News</a></li>
58
+ <li class="toctree-l1"><a class="reference internal" href="credits.html">Credits</a></li>
59
+ <li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting bugs and other problems</a></li>
60
+ <li class="toctree-l1"><a class="reference internal" href="todo.html">To Do List</a></li>
61
+ <li class="toctree-l1 current"><a class="current reference internal" href="#">Development Basics</a><ul>
62
+ <li class="toctree-l2"><a class="reference internal" href="#submitting-patches">Submitting patches</a></li>
63
+ <li class="toctree-l2"><a class="reference internal" href="#macos">macOS</a></li>
64
+ <li class="toctree-l2"><a class="reference internal" href="#windows">Windows</a></li>
65
+ <li class="toctree-l2"><a class="reference internal" href="#linux">Linux</a></li>
66
+ </ul>
67
+ </li>
68
+ </ul>
69
+
70
+ </div>
71
+ </div>
72
+ </nav>
73
+
74
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
75
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
76
+ <a href="index.html">SnapPy</a>
77
+ </nav>
78
+
79
+ <div class="wy-nav-content">
80
+ <div class="rst-content">
81
+ <div role="navigation" aria-label="Page navigation">
82
+ <ul class="wy-breadcrumbs">
83
+ <li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
84
+ <li class="breadcrumb-item active">Development Basics</li>
85
+ <li class="wy-breadcrumbs-aside">
86
+ </li>
87
+ </ul>
88
+ <hr/>
89
+ </div>
90
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
91
+ <div itemprop="articleBody">
92
+
93
+ <section id="development-basics">
94
+ <h1>Development Basics<a class="headerlink" href="#development-basics" title="Link to this heading"></a></h1>
95
+ <section id="submitting-patches">
96
+ <h2>Submitting patches<a class="headerlink" href="#submitting-patches" title="Link to this heading"></a></h2>
97
+ <p>The source code for SnapPy and its various parts are <a class="reference external" href="https://github.com/3-manifolds">hosted on GitHub</a> as <a class="reference external" href="https://git-scm.com/">Git repositories</a>. To contribute a patch, create a free
98
+ GitHub account, fork the appropriate repository, and then send us a
99
+ pull request, as described in <a class="reference external" href="https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request">here</a>.</p>
100
+ </section>
101
+ <section id="macos">
102
+ <h2>macOS<a class="headerlink" href="#macos" title="Link to this heading"></a></h2>
103
+ <p>Here is how to get a clean development setup under macOS.</p>
104
+ <ul>
105
+ <li><p>Install the latest Python 3.13 from Python.org using the <a class="reference external" href="http://www.python.org/download/">Mac
106
+ Installer Disk Image</a>. Set your
107
+ path so that “python3” is:</p>
108
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">Library</span><span class="o">/</span><span class="n">Frameworks</span><span class="o">/</span><span class="n">Python</span><span class="o">.</span><span class="n">framework</span><span class="o">/</span><span class="n">Versions</span><span class="o">/</span><span class="mf">3.13</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">python3</span>
109
+ </pre></div>
110
+ </div>
111
+ </li>
112
+ <li><p>Use <a class="reference external" href="https://pip.pypa.io/en/latest/index.html">pip</a> to install the
113
+ following packages:</p>
114
+ <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="n">setuptools</span> <span class="n">virtualenv</span> <span class="n">wheel</span> <span class="n">pip</span>
115
+ <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="n">cython</span> <span class="c1"># Used for Python-C interfacing</span>
116
+ <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="n">sphinx</span> <span class="c1"># For building the documentation</span>
117
+ <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="n">ipython</span> <span class="c1"># Improved Python shell</span>
118
+ <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="n">py2app</span> <span class="c1"># For making app bundles</span>
119
+ <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="n">pyx</span> <span class="n">FXrays</span> <span class="n">low_index</span>
120
+ </pre></div>
121
+ </div>
122
+ </li>
123
+ <li><p>Get the source code from the repository, using Git. For
124
+ example you can install Git via its <a class="reference external" href="https://www.git-scm.org/">package installer</a>. Now do:</p>
125
+ <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">plink</span><span class="o">.</span><span class="n">git</span>
126
+ <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">spherogram</span><span class="o">.</span><span class="n">git</span>
127
+ <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>
128
+ </pre></div>
129
+ </div>
130
+ </li>
131
+ <li><p>Test the stand-alone link editor:</p>
132
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="n">plink</span>
133
+ <span class="n">python3</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">pip_install</span>
134
+ <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"># Link editor appears!</span>
135
+ </pre></div>
136
+ </div>
137
+ <p>This last command runs the script <code class="docutils literal notranslate"><span class="pre">plink/app.py</span></code>; the real code for
138
+ the link editor is in <code class="docutils literal notranslate"><span class="pre">plink/__init__.py</span></code>.</p>
139
+ </li>
140
+ <li><p>Build and install Spherogram:</p>
141
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">../</span><span class="n">spherogram</span>
142
+ <span class="n">python3</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">pip_install</span>
143
+ <span class="n">python3</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">test</span>
144
+ </pre></div>
145
+ </div>
146
+ </li>
147
+ <li><p>Now build SnapPy itself. One builds it twice to generate the
148
+ documentation, much of which is extracted from the installed module:</p>
149
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">../</span><span class="n">snappy</span>
150
+ <span class="n">python3</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">pip_install</span>
151
+ <span class="n">python3</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">test</span> <span class="c1"># Run the tests; pretty picture should appear.</span>
152
+ <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> <span class="c1">#SnapPy starts!</span>
153
+ </pre></div>
154
+ </div>
155
+ <p>To build the clickable app, just do the following:</p>
156
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="n">mac_osx_app</span>
157
+ <span class="n">python3</span> <span class="n">release</span><span class="o">.</span><span class="n">py</span> <span class="o">--</span><span class="n">manual</span>
158
+ </pre></div>
159
+ </div>
160
+ <p>though for general development purposes <code class="docutils literal notranslate"><span class="pre">python3</span> <span class="pre">-m</span> <span class="pre">snappy.app</span></code> is
161
+ usually the way to go.</p>
162
+ </li>
163
+ </ul>
164
+ <p>Some major parts of the SnapPy codebase are:</p>
165
+ <ul class="simple">
166
+ <li><p><code class="docutils literal notranslate"><span class="pre">SnapPy.pyx</span></code>, <code class="docutils literal notranslate"><span class="pre">SnapPycore.pxi</span></code>, <code class="docutils literal notranslate"><span class="pre">SnapPy.pxi</span></code>: The Cython interface
167
+ to the SnapPea kernel</p></li>
168
+ <li><p><code class="docutils literal notranslate"><span class="pre">opengl/CyOpenGL*.pyx</span></code>: The Cython interface to OpenGL*</p></li>
169
+ <li><p><code class="docutils literal notranslate"><span class="pre">snappy/app.py</span></code>: The core GUI code</p></li>
170
+ <li><p><code class="docutils literal notranslate"><span class="pre">snappy/polyviewer.py</span></code>: The GUI code for Dirichlet domains</p></li>
171
+ <li><p><code class="docutils literal notranslate"><span class="pre">snappy/horoviewer.py</span></code>: The GUI code for horoball pictures</p></li>
172
+ <li><p><code class="docutils literal notranslate"><span class="pre">snappy/database.py</span></code>: Interacts with the sqlite3 manifold database</p></li>
173
+ </ul>
174
+ </section>
175
+ <section id="windows">
176
+ <h2>Windows<a class="headerlink" href="#windows" title="Link to this heading"></a></h2>
177
+ <p>These instructions have been tested on Windows 10, and describe
178
+ setting up a development environment using the (free) MSVC
179
+ compiler. To build the CyPari subcomponent, which few will want or
180
+ need to do, one must install additional tools.</p>
181
+ <ul>
182
+ <li><p>Install <a class="reference external" href="https://www.python.org/downloads/windows/">Python 3.13.1</a>, specifically the
183
+ default 64-bit version (the file name will end in <code class="docutils literal notranslate"><span class="pre">amd64.exe</span></code>).
184
+ These instructions assume it has been installed in the directory
185
+ <code class="docutils literal notranslate"><span class="pre">C:\Python313</span></code> which is not the default.</p></li>
186
+ <li><p>With Python 3.13.1, you need the MSVC command line tools. You can
187
+ get them by using Microsoft’s free <a class="reference external" href="https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&amp;rel=16">Build Tools for Visual Studio 2019</a>
188
+ installer and selecting the “C++ command line tools” and installing
189
+ the following subpackages: “MSVC v142 - VS 2019 C++ build tools”,
190
+ “Testing tools core features”, “C++/CLI support for v142”, and
191
+ “Windows 10 SDK (most recent version)”.</p>
192
+ <p>If you would like to make your own installer you will also need
193
+ <a class="reference external" href="http://www.jrsoftware.org/isdl.php">Inno Setup</a>, specifically the
194
+ unicode version; tested with version 5.5.9.</p>
195
+ </li>
196
+ <li><p>Install <a class="reference external" href="http://msys2.github.io">MSYS2</a> as appropriate for your
197
+ version Windows. Follow the instructions on the webpage to update
198
+ everything to the very latest MSYS2 (<code class="docutils literal notranslate"><span class="pre">pacman</span> <span class="pre">-Sy</span> <span class="pre">pacman;</span> <span class="pre">pacman</span>
199
+ <span class="pre">-Syu;</span> <span class="pre">pacman</span> <span class="pre">-Su</span></code> etc.). You should also install the ucrt toolchain:</p>
200
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pacman</span> <span class="o">-</span><span class="n">S</span> <span class="n">mingw</span><span class="o">-</span><span class="n">w64</span><span class="o">-</span><span class="n">ucrt</span><span class="o">-</span><span class="n">x86_64</span><span class="o">-</span><span class="n">toolchain</span>
201
+ </pre></div>
202
+ </div>
203
+ </li>
204
+ <li><p>Make a shortcut to <code class="docutils literal notranslate"><span class="pre">c:\msys64\msys2.exe</span></code> as you will be using it all
205
+ the time; alternatively, pin <code class="docutils literal notranslate"><span class="pre">mys2.exe</span></code> to your taskbar.</p></li>
206
+ <li><p>Install some additional packages:</p>
207
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pacman</span> <span class="o">-</span><span class="n">S</span> <span class="n">git</span> <span class="n">make</span> <span class="n">nano</span> <span class="n">openssh</span> <span class="n">perl</span> <span class="n">tar</span> <span class="n">unzip</span> <span class="n">wget</span> <span class="n">winpty</span> <span class="n">patch</span>
208
+ </pre></div>
209
+ </div>
210
+ </li>
211
+ <li><p>Install your favorite text editor, for example you can install Emacs
212
+ via:</p>
213
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pacman</span> <span class="o">-</span><span class="n">S</span> <span class="n">mingw</span><span class="o">-</span><span class="n">w64</span><span class="o">-</span><span class="n">x86_64</span><span class="o">-</span><span class="n">emacs</span>
214
+ </pre></div>
215
+ </div>
216
+ </li>
217
+ <li><p>Make it so that MinGW, Python, and Inno Setup are all in your PATH,
218
+ as well as work around some stupid bug, by making the end of your
219
+ “~/.bash_profile” file to read:</p>
220
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>PATH=/c/Python313:/c/Python313/Scripts:$PATH
221
+ PATH=$PATH:&#39;/c/Program Files (x86)/Inno Setup 5&#39;
222
+ export PATH
223
+ alias emacs=&quot;/mingw64/bin/emacs&quot;
224
+ winpty bash; exit
225
+ </pre></div>
226
+ </div>
227
+ <p>For example, do:</p>
228
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">nano</span> <span class="o">~/.</span><span class="n">bash_profile</span>
229
+ </pre></div>
230
+ </div>
231
+ </li>
232
+ <li><p>Make sure you have the right version of Python in your path by
233
+ typing:</p>
234
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="o">--</span><span class="n">version</span>
235
+ </pre></div>
236
+ </div>
237
+ <p>You should see something like <code class="docutils literal notranslate"><span class="pre">Python</span> <span class="pre">3.13.1</span></code>.</p>
238
+ </li>
239
+ <li><p>Use pip to install some basic tools:</p>
240
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><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="n">pip</span> <span class="n">setuptools</span> <span class="n">wheel</span> <span class="c1"># Upgrades pip to the current version.</span>
241
+ <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="n">pyreadline</span> <span class="n">sphinx</span> <span class="n">cython</span> <span class="n">cypari</span> <span class="n">pyx</span> <span class="n">FXrays</span> <span class="n">low_index</span>
242
+ </pre></div>
243
+ </div>
244
+ </li>
245
+ <li><p>Fetch the latest development versions of the source straight from
246
+ the t3m repository:</p>
247
+ <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">plink</span><span class="o">.</span><span class="n">git</span>
248
+ <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">spherogram</span><span class="o">.</span><span class="n">git</span>
249
+ <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>
250
+ </pre></div>
251
+ </div>
252
+ </li>
253
+ <li><p>Build the components, from easiest to hardest, and then test:</p>
254
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="n">plink</span>
255
+ <span class="n">python</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">pip_install</span>
256
+ <span class="n">cd</span> <span class="o">../</span><span class="n">Spherogram</span>
257
+ <span class="n">python</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">pip_install</span>
258
+ <span class="n">cd</span> <span class="o">../</span><span class="n">SnapPy</span>
259
+ <span class="n">python</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">pip_install</span>
260
+ <span class="n">cd</span> <span class="o">..</span>
261
+ <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">test</span>
262
+ </pre></div>
263
+ </div>
264
+ </li>
265
+ <li><p>To run the app, you can just do:</p>
266
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><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>
267
+ </pre></div>
268
+ </div>
269
+ </li>
270
+ <li><p>To build the binary installer, you need PyInstaller:</p>
271
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><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="n">pyinstaller</span>
272
+ </pre></div>
273
+ </div>
274
+ <p>To build the binary installer do:</p>
275
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="n">windows_exe</span>
276
+ <span class="n">python</span> <span class="n">make</span><span class="o">.</span><span class="n">py</span>
277
+ </pre></div>
278
+ </div>
279
+ <p>You will need to close the SnapPy window that pops up here to
280
+ complete the build process.</p>
281
+ </li>
282
+ <li><p>Useful tips for those coming from Unix. In MSYS2, your home
283
+ directory is really something like:</p>
284
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">c</span><span class="p">:</span>\<span class="n">msys2</span>\<span class="n">home</span>\<span class="n">Nathan</span> <span class="n">Dunfield</span>
285
+ </pre></div>
286
+ </div>
287
+ <p>whereas your Windows 10 home directory is:</p>
288
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">c</span><span class="p">:</span>\<span class="n">Users</span>\<span class="n">Nathan</span> <span class="n">Dunfield</span>
289
+ </pre></div>
290
+ </div>
291
+ <p>It is handy to have symbolic links from your MSYS2 home directory to
292
+ the Downloads and Desktop folders on the Windows side. <a class="reference external" href="http://www.howtogeek.com/howto/16226/">See this
293
+ discussion</a>, but basically
294
+ you start a “Command Prompt” as Administrator and do:</p>
295
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="s2">&quot;C:\msys64\home\Nathan Dunfield&quot;</span>
296
+ <span class="n">mklink</span> <span class="o">/</span><span class="n">D</span> <span class="n">Desktop</span> <span class="s2">&quot;C:\Users\Nathan Dunfield\Desktop&quot;</span>
297
+ <span class="n">mklink</span> <span class="o">/</span><span class="n">D</span> <span class="n">Downloads</span> <span class="s2">&quot;C:\Users\Nathan Dunfield\Downloads&quot;</span>
298
+ </pre></div>
299
+ </div>
300
+ </li>
301
+ </ul>
302
+ </section>
303
+ <section id="linux">
304
+ <h2>Linux<a class="headerlink" href="#linux" title="Link to this heading"></a></h2>
305
+ <p>Things you’ll need:</p>
306
+ <ul>
307
+ <li><p>Python 3 with Tkinter: You’ll need to have <a class="reference external" href="http://python.org">Python</a> (version 3.9 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
308
+ the header files. For instance, on Debian or Ubuntu, install the
309
+ packages “python3-tk”, “python3-pip”, and “python3-dev”. On Fedora,
310
+ you’ll want e.g. “python3-tkinter”, “python3-pip”, and
311
+ “python3-devel”, and “python3-wheel”.</p></li>
312
+ <li><p>Test that Python is in order by installing PLink from source:</p>
313
+ <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>
314
+ <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>
315
+ </pre></div>
316
+ </div>
317
+ </li>
318
+ </ul>
319
+ <ul id="openglmesa">
320
+ <li><p>Support for OpenGL (3D graphics): This is built in on OS X and the
321
+ 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
322
+ SnapPy. On Debian and Ubuntu, install “libglu1-mesa-dev”; On Fedora install
323
+ “mesa-libGLU-devel”.</p></li>
324
+ <li><p><a class="reference external" href="http://cython.org">Cython</a>, which you can install via:</p>
325
+ <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>
326
+ </pre></div>
327
+ </div>
328
+ </li>
329
+ <li><p>The gcc C++ compiler, g++.</p></li>
330
+ <li><p>Fetch the latest development versions of the source straight from
331
+ the repository:</p>
332
+ <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">PLink</span><span class="o">.</span><span class="n">git</span>
333
+ <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">Spherogram</span><span class="o">.</span><span class="n">git</span>
334
+ <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>
335
+ </pre></div>
336
+ </div>
337
+ </li>
338
+ <li><p>Build the components, from easiest to hardest, and then test:</p>
339
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="n">PLink</span>
340
+ <span class="n">python</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">pip_install</span>
341
+ <span class="n">cd</span> <span class="o">../</span><span class="n">Spherogram</span>
342
+ <span class="n">python</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">pip_install</span>
343
+ <span class="n">cd</span> <span class="o">../</span><span class="n">SnapPy</span>
344
+ <span class="n">python</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">pip_install</span>
345
+ <span class="n">cd</span> <span class="o">..</span>
346
+ <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">test</span>
347
+ </pre></div>
348
+ </div>
349
+ </li>
350
+ </ul>
351
+ </section>
352
+ </section>
353
+
354
+
355
+ </div>
356
+ </div>
357
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
358
+ <a href="todo.html" class="btn btn-neutral float-left" title="To Do List" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
359
+ </div>
360
+
361
+ <hr/>
362
+
363
+ <div role="contentinfo">
364
+ <p>&#169; Copyright 2009-2025, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.</p>
365
+ </div>
366
+
367
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
368
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
369
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
370
+
371
+
372
+ </footer>
373
+ </div>
374
+ </div>
375
+ </section>
376
+ </div>
377
+ <script>
378
+ jQuery(function () {
379
+ SphinxRtdTheme.Navigation.enable(true);
380
+ });
381
+ </script>
382
+
383
+ </body>
364
384
  </html>