snappy 3.1.1__cp39-cp39-macosx_11_0_arm64.whl → 3.2__cp39-cp39-macosx_11_0_arm64.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (464) hide show
  1. snappy/CyOpenGL.cpython-39-darwin.so +0 -0
  2. snappy/SnapPy.cpython-39-darwin.so +0 -0
  3. snappy/SnapPyHP.cpython-39-darwin.so +0 -0
  4. snappy/__init__.py +299 -402
  5. snappy/app.py +70 -20
  6. snappy/browser.py +18 -17
  7. snappy/canonical.py +249 -0
  8. snappy/{verify/cusp_shapes.py → cusps/__init__.py} +8 -18
  9. snappy/cusps/cusp_area_matrix.py +101 -0
  10. snappy/{verify/cusp_areas.py → cusps/cusp_areas_from_matrix.py} +23 -39
  11. snappy/cusps/maximal_cusp_area_matrix.py +136 -0
  12. snappy/cusps/test.py +21 -0
  13. snappy/cusps/trig_cusp_area_matrix.py +63 -0
  14. snappy/database.py +10 -9
  15. snappy/decorated_isosig.py +337 -114
  16. snappy/dev/extended_ptolemy/complexVolumesClosed.py +40 -7
  17. snappy/dev/extended_ptolemy/extended.py +3 -3
  18. snappy/dev/extended_ptolemy/phc_wrapper.py +10 -10
  19. snappy/dev/vericlosed/oneVertexTruncatedComplex.py +1 -1
  20. snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
  21. snappy/doc/_images/m125_paper_plane.jpg +0 -0
  22. snappy/doc/_images/o9_00000_systole_paper_plane.jpg +0 -0
  23. snappy/doc/_images/o9_00000_systole_paper_plane_closer.jpg +0 -0
  24. snappy/doc/_sources/development.rst.txt +66 -46
  25. snappy/doc/_sources/index.rst.txt +72 -5
  26. snappy/doc/_sources/installing.rst.txt +145 -162
  27. snappy/doc/_sources/news.rst.txt +73 -1
  28. snappy/doc/_sources/ptolemy_examples1.rst.txt +8 -7
  29. snappy/doc/_sources/ptolemy_examples3.rst.txt +2 -2
  30. snappy/doc/_sources/triangulation.rst.txt +2 -2
  31. snappy/doc/_sources/verify.rst.txt +89 -29
  32. snappy/doc/_sources/verify_internals.rst.txt +5 -16
  33. snappy/doc/_static/basic.css +23 -1
  34. snappy/doc/_static/css/badge_only.css +1 -1
  35. snappy/doc/_static/css/theme.css +1 -1
  36. snappy/doc/_static/doctools.js +1 -1
  37. snappy/doc/_static/documentation_options.js +2 -3
  38. snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
  39. snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
  40. snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
  41. snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
  42. snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  43. snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  44. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  45. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  46. snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
  47. snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
  48. snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
  49. snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
  50. snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
  51. snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
  52. snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
  53. snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
  54. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  55. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  56. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  57. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  58. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  59. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  60. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  61. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  62. snappy/doc/_static/js/versions.js +228 -0
  63. snappy/doc/_static/language_data.js +2 -2
  64. snappy/doc/_static/pygments.css +1 -0
  65. snappy/doc/_static/searchtools.js +125 -71
  66. snappy/doc/_static/sphinx_highlight.js +13 -3
  67. snappy/doc/additional_classes.html +291 -122
  68. snappy/doc/bugs.html +17 -20
  69. snappy/doc/censuses.html +34 -53
  70. snappy/doc/credits.html +18 -21
  71. snappy/doc/development.html +88 -68
  72. snappy/doc/genindex.html +66 -145
  73. snappy/doc/index.html +86 -31
  74. snappy/doc/installing.html +164 -182
  75. snappy/doc/manifold.html +1168 -556
  76. snappy/doc/manifoldhp.html +18 -21
  77. snappy/doc/news.html +91 -33
  78. snappy/doc/objects.inv +0 -0
  79. snappy/doc/other.html +20 -22
  80. snappy/doc/platonic_census.html +31 -34
  81. snappy/doc/plink.html +19 -22
  82. snappy/doc/ptolemy.html +20 -22
  83. snappy/doc/ptolemy_classes.html +102 -105
  84. snappy/doc/ptolemy_examples1.html +34 -36
  85. snappy/doc/ptolemy_examples2.html +28 -31
  86. snappy/doc/ptolemy_examples3.html +26 -29
  87. snappy/doc/ptolemy_examples4.html +20 -23
  88. snappy/doc/ptolemy_prelim.html +25 -28
  89. snappy/doc/py-modindex.html +16 -19
  90. snappy/doc/screenshots.html +22 -24
  91. snappy/doc/search.html +15 -18
  92. snappy/doc/searchindex.js +1 -1
  93. snappy/doc/snap.html +18 -21
  94. snappy/doc/snappy.html +18 -20
  95. snappy/doc/spherogram.html +84 -87
  96. snappy/doc/todo.html +17 -20
  97. snappy/doc/triangulation.html +324 -215
  98. snappy/doc/tutorial.html +17 -20
  99. snappy/doc/verify.html +100 -46
  100. snappy/doc/verify_internals.html +106 -563
  101. snappy/drilling/__init__.py +153 -235
  102. snappy/drilling/barycentric.py +103 -0
  103. snappy/drilling/constants.py +0 -2
  104. snappy/drilling/crush.py +56 -130
  105. snappy/drilling/cusps.py +12 -6
  106. snappy/drilling/debug.py +2 -1
  107. snappy/drilling/exceptions.py +7 -40
  108. snappy/drilling/moves.py +302 -243
  109. snappy/drilling/perturb.py +63 -37
  110. snappy/drilling/shorten.py +36 -0
  111. snappy/drilling/subdivide.py +0 -5
  112. snappy/drilling/test.py +23 -0
  113. snappy/drilling/test_cases.py +126 -0
  114. snappy/drilling/tracing.py +9 -37
  115. snappy/exceptions.py +18 -5
  116. snappy/exterior_to_link/barycentric_geometry.py +2 -4
  117. snappy/exterior_to_link/main.py +8 -7
  118. snappy/exterior_to_link/mcomplex_with_link.py +2 -2
  119. snappy/exterior_to_link/rational_linear_algebra.py +1 -1
  120. snappy/exterior_to_link/rational_linear_algebra_wrapped.py +1 -1
  121. snappy/exterior_to_link/test.py +21 -33
  122. snappy/geometric_structure/__init__.py +212 -0
  123. snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
  124. snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +697 -0
  125. snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
  126. snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
  127. snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
  128. snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
  129. snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -0
  130. snappy/geometric_structure/geodesic/__init__.py +0 -0
  131. snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
  132. snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
  133. snappy/geometric_structure/geodesic/canonical_keys.py +52 -0
  134. snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
  135. snappy/geometric_structure/geodesic/constants.py +6 -0
  136. snappy/geometric_structure/geodesic/exceptions.py +22 -0
  137. snappy/{drilling → geometric_structure/geodesic}/fixed_points.py +34 -9
  138. snappy/{drilling/geodesic_info.py → geometric_structure/geodesic/geodesic_start_point_info.py} +139 -180
  139. snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
  140. snappy/geometric_structure/geodesic/line.py +30 -0
  141. snappy/geometric_structure/geodesic/multiplicity.py +127 -0
  142. snappy/geometric_structure/geodesic/tiles_for_geodesic.py +101 -0
  143. snappy/geometric_structure/test.py +22 -0
  144. snappy/gui.py +23 -13
  145. snappy/horoviewer.py +7 -7
  146. snappy/hyperboloid/__init__.py +96 -31
  147. snappy/hyperboloid/distances.py +245 -0
  148. snappy/hyperboloid/horoball.py +19 -0
  149. snappy/hyperboloid/line.py +35 -0
  150. snappy/hyperboloid/point.py +9 -0
  151. snappy/hyperboloid/triangle.py +29 -0
  152. snappy/isometry_signature.py +382 -0
  153. snappy/len_spec/__init__.py +596 -0
  154. snappy/len_spec/geodesic_info.py +110 -0
  155. snappy/len_spec/geodesic_key_info_dict.py +117 -0
  156. snappy/len_spec/geodesic_piece.py +143 -0
  157. snappy/len_spec/geometric_structure.py +182 -0
  158. snappy/len_spec/geometry.py +80 -0
  159. snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
  160. snappy/len_spec/spine.py +206 -0
  161. snappy/len_spec/test.py +24 -0
  162. snappy/len_spec/test_cases.py +69 -0
  163. snappy/len_spec/tile.py +275 -0
  164. snappy/len_spec/word.py +86 -0
  165. snappy/math_basics.py +39 -13
  166. snappy/matrix.py +52 -9
  167. snappy/number.py +12 -6
  168. snappy/numeric_output_checker.py +2 -3
  169. snappy/pari.py +8 -4
  170. snappy/phone_home.py +2 -1
  171. snappy/polyviewer.py +8 -8
  172. snappy/ptolemy/__init__.py +1 -1
  173. snappy/ptolemy/component.py +2 -2
  174. snappy/ptolemy/coordinates.py +25 -25
  175. snappy/ptolemy/findLoops.py +9 -9
  176. snappy/ptolemy/manifoldMethods.py +27 -29
  177. snappy/ptolemy/polynomial.py +50 -57
  178. snappy/ptolemy/processFileBase.py +60 -0
  179. snappy/ptolemy/ptolemyVariety.py +109 -41
  180. snappy/ptolemy/reginaWrapper.py +4 -4
  181. snappy/ptolemy/rur.py +1 -1
  182. snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +9 -9
  183. snappy/ptolemy/test.py +99 -54
  184. snappy/ptolemy/utilities.py +1 -1
  185. snappy/raytracing/__init__.py +64 -0
  186. snappy/raytracing/additional_horospheres.py +64 -0
  187. snappy/raytracing/additional_len_spec_choices.py +63 -0
  188. snappy/raytracing/cohomology_fractal.py +0 -3
  189. snappy/raytracing/eyeball.py +123 -0
  190. snappy/raytracing/finite_raytracing_data.py +17 -17
  191. snappy/raytracing/finite_viewer.py +15 -15
  192. snappy/raytracing/geodesic_tube_info.py +93 -63
  193. snappy/raytracing/geodesics.py +94 -64
  194. snappy/raytracing/geodesics_window.py +56 -34
  195. snappy/raytracing/gui_utilities.py +21 -6
  196. snappy/raytracing/hyperboloid_navigation.py +29 -4
  197. snappy/raytracing/hyperboloid_utilities.py +73 -73
  198. snappy/raytracing/ideal_raytracing_data.py +121 -91
  199. snappy/raytracing/inside_viewer.py +199 -66
  200. snappy/raytracing/pack.py +22 -0
  201. snappy/raytracing/raytracing_data.py +37 -25
  202. snappy/raytracing/raytracing_view.py +70 -65
  203. snappy/raytracing/shaders/Eye.png +0 -0
  204. snappy/raytracing/shaders/NonGeometric.png +0 -0
  205. snappy/raytracing/shaders/__init__.py +39 -3
  206. snappy/raytracing/shaders/fragment.glsl +451 -133
  207. snappy/raytracing/test.py +29 -0
  208. snappy/raytracing/tooltip.py +146 -0
  209. snappy/raytracing/upper_halfspace_utilities.py +42 -9
  210. snappy/sage_helper.py +67 -134
  211. snappy/settings.py +90 -77
  212. snappy/shell.py +2 -0
  213. snappy/snap/character_varieties.py +2 -2
  214. snappy/snap/find_field.py +4 -3
  215. snappy/snap/fundamental_polyhedron.py +2 -2
  216. snappy/snap/kernel_structures.py +5 -1
  217. snappy/snap/nsagetools.py +9 -8
  218. snappy/snap/peripheral/dual_cellulation.py +4 -3
  219. snappy/snap/peripheral/peripheral.py +2 -2
  220. snappy/snap/peripheral/surface.py +5 -5
  221. snappy/snap/peripheral/test.py +1 -1
  222. snappy/snap/polished_reps.py +8 -8
  223. snappy/snap/slice_obs_HKL.py +16 -14
  224. snappy/snap/t3mlite/arrow.py +3 -3
  225. snappy/snap/t3mlite/edge.py +3 -3
  226. snappy/snap/t3mlite/homology.py +2 -2
  227. snappy/snap/t3mlite/mcomplex.py +3 -3
  228. snappy/snap/t3mlite/simplex.py +12 -0
  229. snappy/snap/t3mlite/spun.py +18 -17
  230. snappy/snap/t3mlite/test_vs_regina.py +4 -4
  231. snappy/snap/test.py +37 -53
  232. snappy/snap/utilities.py +4 -5
  233. snappy/test.py +121 -138
  234. snappy/test_cases.py +263 -0
  235. snappy/testing.py +131 -0
  236. snappy/tiling/__init__.py +2 -0
  237. snappy/tiling/canonical_key_dict.py +59 -0
  238. snappy/tiling/dict_based_set.py +79 -0
  239. snappy/tiling/floor.py +49 -0
  240. snappy/tiling/hyperboloid_dict.py +54 -0
  241. snappy/tiling/iter_utils.py +78 -0
  242. snappy/tiling/lifted_tetrahedron.py +22 -0
  243. snappy/tiling/lifted_tetrahedron_set.py +54 -0
  244. snappy/tiling/real_hash_dict.py +164 -0
  245. snappy/tiling/test.py +23 -0
  246. snappy/tiling/tile.py +215 -0
  247. snappy/tiling/triangle.py +33 -0
  248. snappy/tkterminal.py +113 -84
  249. snappy/twister/main.py +1 -7
  250. snappy/twister/twister_core.cpython-39-darwin.so +0 -0
  251. snappy/upper_halfspace/__init__.py +78 -17
  252. snappy/verify/__init__.py +3 -7
  253. snappy/verify/{verifyCanonical.py → canonical.py} +78 -70
  254. snappy/verify/complex_volume/adjust_torsion.py +1 -2
  255. snappy/verify/complex_volume/closed.py +13 -13
  256. snappy/verify/complex_volume/cusped.py +6 -6
  257. snappy/verify/complex_volume/extended_bloch.py +5 -8
  258. snappy/verify/{cuspTranslations.py → cusp_translations.py} +1 -1
  259. snappy/verify/edge_equations.py +80 -0
  260. snappy/verify/exceptions.py +0 -55
  261. snappy/verify/{verifyHyperbolicity.py → hyperbolicity.py} +3 -3
  262. snappy/verify/interval_newton_shapes_engine.py +7 -5
  263. snappy/verify/interval_tree.py +5 -5
  264. snappy/verify/krawczyk_shapes_engine.py +17 -18
  265. snappy/verify/maximal_cusp_area_matrix/__init__.py +7 -74
  266. snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +3 -4
  267. snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +1 -1
  268. snappy/verify/{realAlgebra.py → real_algebra.py} +1 -1
  269. snappy/verify/shapes.py +5 -3
  270. snappy/verify/short_slopes.py +39 -41
  271. snappy/verify/{squareExtensions.py → square_extensions.py} +14 -11
  272. snappy/verify/test.py +57 -60
  273. snappy/verify/upper_halfspace/extended_matrix.py +1 -1
  274. snappy/verify/upper_halfspace/finite_point.py +3 -4
  275. snappy/verify/upper_halfspace/ideal_point.py +9 -9
  276. snappy/verify/volume.py +2 -2
  277. snappy/version.py +2 -2
  278. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/METADATA +26 -11
  279. snappy-3.2.dist-info/RECORD +503 -0
  280. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
  281. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/top_level.txt +6 -1
  282. snappy/__pycache__/__init__.cpython-39.pyc +0 -0
  283. snappy/__pycache__/browser.cpython-39.pyc +0 -0
  284. snappy/__pycache__/cache.cpython-39.pyc +0 -0
  285. snappy/__pycache__/database.cpython-39.pyc +0 -0
  286. snappy/__pycache__/db_utilities.cpython-39.pyc +0 -0
  287. snappy/__pycache__/decorated_isosig.cpython-39.pyc +0 -0
  288. snappy/__pycache__/exceptions.cpython-39.pyc +0 -0
  289. snappy/__pycache__/export_stl.cpython-39.pyc +0 -0
  290. snappy/__pycache__/filedialog.cpython-39.pyc +0 -0
  291. snappy/__pycache__/gui.cpython-39.pyc +0 -0
  292. snappy/__pycache__/horoviewer.cpython-39.pyc +0 -0
  293. snappy/__pycache__/infowindow.cpython-39.pyc +0 -0
  294. snappy/__pycache__/math_basics.cpython-39.pyc +0 -0
  295. snappy/__pycache__/matrix.cpython-39.pyc +0 -0
  296. snappy/__pycache__/number.cpython-39.pyc +0 -0
  297. snappy/__pycache__/numeric_output_checker.cpython-39.pyc +0 -0
  298. snappy/__pycache__/pari.cpython-39.pyc +0 -0
  299. snappy/__pycache__/polyviewer.cpython-39.pyc +0 -0
  300. snappy/__pycache__/sage_helper.cpython-39.pyc +0 -0
  301. snappy/__pycache__/version.cpython-39.pyc +0 -0
  302. snappy/doc/_sources/verify_canon.rst.txt +0 -90
  303. snappy/doc/_static/js/html5shiv-printshiv.min.js +0 -4
  304. snappy/doc/_static/js/html5shiv.min.js +0 -4
  305. snappy/doc/verify_canon.html +0 -304
  306. snappy/drilling/__pycache__/__init__.cpython-39.pyc +0 -0
  307. snappy/drilling/__pycache__/constants.cpython-39.pyc +0 -0
  308. snappy/drilling/__pycache__/crush.cpython-39.pyc +0 -0
  309. snappy/drilling/__pycache__/cusps.cpython-39.pyc +0 -0
  310. snappy/drilling/__pycache__/debug.cpython-39.pyc +0 -0
  311. snappy/drilling/__pycache__/epsilons.cpython-39.pyc +0 -0
  312. snappy/drilling/__pycache__/exceptions.cpython-39.pyc +0 -0
  313. snappy/drilling/__pycache__/fixed_points.cpython-39.pyc +0 -0
  314. snappy/drilling/__pycache__/geodesic_info.cpython-39.pyc +0 -0
  315. snappy/drilling/__pycache__/geodesic_tube.cpython-39.pyc +0 -0
  316. snappy/drilling/__pycache__/geometric_structure.cpython-39.pyc +0 -0
  317. snappy/drilling/__pycache__/line.cpython-39.pyc +0 -0
  318. snappy/drilling/__pycache__/moves.cpython-39.pyc +0 -0
  319. snappy/drilling/__pycache__/peripheral_curves.cpython-39.pyc +0 -0
  320. snappy/drilling/__pycache__/perturb.cpython-39.pyc +0 -0
  321. snappy/drilling/__pycache__/quotient_space.cpython-39.pyc +0 -0
  322. snappy/drilling/__pycache__/spatial_dict.cpython-39.pyc +0 -0
  323. snappy/drilling/__pycache__/subdivide.cpython-39.pyc +0 -0
  324. snappy/drilling/__pycache__/tracing.cpython-39.pyc +0 -0
  325. snappy/drilling/geodesic_tube.py +0 -441
  326. snappy/drilling/geometric_structure.py +0 -366
  327. snappy/drilling/line.py +0 -122
  328. snappy/drilling/quotient_space.py +0 -94
  329. snappy/drilling/spatial_dict.py +0 -128
  330. snappy/exterior_to_link/__pycache__/__init__.cpython-39.pyc +0 -0
  331. snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-39.pyc +0 -0
  332. snappy/exterior_to_link/__pycache__/exceptions.cpython-39.pyc +0 -0
  333. snappy/exterior_to_link/__pycache__/hyp_utils.cpython-39.pyc +0 -0
  334. snappy/exterior_to_link/__pycache__/link_projection.cpython-39.pyc +0 -0
  335. snappy/exterior_to_link/__pycache__/main.cpython-39.pyc +0 -0
  336. snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-39.pyc +0 -0
  337. snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-39.pyc +0 -0
  338. snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-39.pyc +0 -0
  339. snappy/exterior_to_link/__pycache__/pl_utils.cpython-39.pyc +0 -0
  340. snappy/exterior_to_link/__pycache__/put_in_S3.cpython-39.pyc +0 -0
  341. snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-39.pyc +0 -0
  342. snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-39.pyc +0 -0
  343. snappy/exterior_to_link/__pycache__/stored_moves.cpython-39.pyc +0 -0
  344. snappy/hyperboloid/__pycache__/__init__.cpython-39.pyc +0 -0
  345. snappy/manifolds/__pycache__/__init__.cpython-39.pyc +0 -0
  346. snappy/ptolemy/__pycache__/__init__.cpython-39.pyc +0 -0
  347. snappy/ptolemy/__pycache__/component.cpython-39.pyc +0 -0
  348. snappy/ptolemy/__pycache__/coordinates.cpython-39.pyc +0 -0
  349. snappy/ptolemy/__pycache__/fieldExtensions.cpython-39.pyc +0 -0
  350. snappy/ptolemy/__pycache__/findLoops.cpython-39.pyc +0 -0
  351. snappy/ptolemy/__pycache__/homology.cpython-39.pyc +0 -0
  352. snappy/ptolemy/__pycache__/manifoldMethods.cpython-39.pyc +0 -0
  353. snappy/ptolemy/__pycache__/matrix.cpython-39.pyc +0 -0
  354. snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-39.pyc +0 -0
  355. snappy/ptolemy/__pycache__/polynomial.cpython-39.pyc +0 -0
  356. snappy/ptolemy/__pycache__/processComponents.cpython-39.pyc +0 -0
  357. snappy/ptolemy/__pycache__/processFileBase.cpython-39.pyc +0 -0
  358. snappy/ptolemy/__pycache__/processFileDispatch.cpython-39.pyc +0 -0
  359. snappy/ptolemy/__pycache__/processMagmaFile.cpython-39.pyc +0 -0
  360. snappy/ptolemy/__pycache__/processRurFile.cpython-39.pyc +0 -0
  361. snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-39.pyc +0 -0
  362. snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-39.pyc +0 -0
  363. snappy/ptolemy/__pycache__/ptolemyVariety.cpython-39.pyc +0 -0
  364. snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-39.pyc +0 -0
  365. snappy/ptolemy/__pycache__/rur.cpython-39.pyc +0 -0
  366. snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-39.pyc +0 -0
  367. snappy/ptolemy/__pycache__/utilities.cpython-39.pyc +0 -0
  368. snappy/raytracing/__pycache__/__init__.cpython-39.pyc +0 -0
  369. snappy/raytracing/__pycache__/finite_raytracing_data.cpython-39.pyc +0 -0
  370. snappy/raytracing/__pycache__/gui_utilities.cpython-39.pyc +0 -0
  371. snappy/raytracing/__pycache__/hyperboloid_navigation.cpython-39.pyc +0 -0
  372. snappy/raytracing/__pycache__/hyperboloid_utilities.cpython-39.pyc +0 -0
  373. snappy/raytracing/__pycache__/ideal_raytracing_data.cpython-39.pyc +0 -0
  374. snappy/raytracing/__pycache__/inside_viewer.cpython-39.pyc +0 -0
  375. snappy/raytracing/__pycache__/raytracing_data.cpython-39.pyc +0 -0
  376. snappy/raytracing/__pycache__/raytracing_view.cpython-39.pyc +0 -0
  377. snappy/raytracing/__pycache__/upper_halfspace_utilities.cpython-39.pyc +0 -0
  378. snappy/raytracing/__pycache__/view_scale_controller.cpython-39.pyc +0 -0
  379. snappy/raytracing/zoom_slider/__pycache__/__init__.cpython-39.pyc +0 -0
  380. snappy/snap/__pycache__/__init__.cpython-39.pyc +0 -0
  381. snappy/snap/__pycache__/character_varieties.cpython-39.pyc +0 -0
  382. snappy/snap/__pycache__/fundamental_polyhedron.cpython-39.pyc +0 -0
  383. snappy/snap/__pycache__/interval_reps.cpython-39.pyc +0 -0
  384. snappy/snap/__pycache__/kernel_structures.cpython-39.pyc +0 -0
  385. snappy/snap/__pycache__/mcomplex_base.cpython-39.pyc +0 -0
  386. snappy/snap/__pycache__/nsagetools.cpython-39.pyc +0 -0
  387. snappy/snap/__pycache__/polished_reps.cpython-39.pyc +0 -0
  388. snappy/snap/__pycache__/shapes.cpython-39.pyc +0 -0
  389. snappy/snap/__pycache__/slice_obs_HKL.cpython-39.pyc +0 -0
  390. snappy/snap/__pycache__/utilities.cpython-39.pyc +0 -0
  391. snappy/snap/peripheral/__pycache__/__init__.cpython-39.pyc +0 -0
  392. snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-39.pyc +0 -0
  393. snappy/snap/peripheral/__pycache__/link.cpython-39.pyc +0 -0
  394. snappy/snap/peripheral/__pycache__/peripheral.cpython-39.pyc +0 -0
  395. snappy/snap/peripheral/__pycache__/surface.cpython-39.pyc +0 -0
  396. snappy/snap/t3mlite/__pycache__/__init__.cpython-39.pyc +0 -0
  397. snappy/snap/t3mlite/__pycache__/arrow.cpython-39.pyc +0 -0
  398. snappy/snap/t3mlite/__pycache__/corner.cpython-39.pyc +0 -0
  399. snappy/snap/t3mlite/__pycache__/edge.cpython-39.pyc +0 -0
  400. snappy/snap/t3mlite/__pycache__/face.cpython-39.pyc +0 -0
  401. snappy/snap/t3mlite/__pycache__/files.cpython-39.pyc +0 -0
  402. snappy/snap/t3mlite/__pycache__/homology.cpython-39.pyc +0 -0
  403. snappy/snap/t3mlite/__pycache__/linalg.cpython-39.pyc +0 -0
  404. snappy/snap/t3mlite/__pycache__/mcomplex.cpython-39.pyc +0 -0
  405. snappy/snap/t3mlite/__pycache__/perm4.cpython-39.pyc +0 -0
  406. snappy/snap/t3mlite/__pycache__/simplex.cpython-39.pyc +0 -0
  407. snappy/snap/t3mlite/__pycache__/spun.cpython-39.pyc +0 -0
  408. snappy/snap/t3mlite/__pycache__/surface.cpython-39.pyc +0 -0
  409. snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-39.pyc +0 -0
  410. snappy/snap/t3mlite/__pycache__/vertex.cpython-39.pyc +0 -0
  411. snappy/togl/__init__.py +0 -3
  412. snappy/togl/darwin-tk8.6/Togl2.1/LICENSE +0 -28
  413. snappy/togl/darwin-tk8.6/Togl2.1/libTogl2.1.dylib +0 -0
  414. snappy/togl/darwin-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  415. snappy/togl/darwin-tk8.7/Togl2.1/LICENSE +0 -28
  416. snappy/togl/darwin-tk8.7/Togl2.1/libTogl2.1.dylib +0 -0
  417. snappy/togl/darwin-tk8.7/Togl2.1/pkgIndex.tcl +0 -5
  418. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  419. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/libTogl2.1.so +0 -0
  420. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  421. snappy/togl/win32VC-tk8.6/Togl2.1/LICENSE +0 -28
  422. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.dll +0 -0
  423. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.lib +0 -0
  424. snappy/togl/win32VC-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  425. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  426. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.dll +0 -0
  427. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.lib +0 -0
  428. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  429. snappy/twister/__pycache__/__init__.cpython-39.pyc +0 -0
  430. snappy/twister/__pycache__/main.cpython-39.pyc +0 -0
  431. snappy/upper_halfspace/__pycache__/__init__.cpython-39.pyc +0 -0
  432. snappy/upper_halfspace/__pycache__/ideal_point.cpython-39.pyc +0 -0
  433. snappy/verify/__pycache__/__init__.cpython-39.pyc +0 -0
  434. snappy/verify/__pycache__/cuspCrossSection.cpython-39.pyc +0 -0
  435. snappy/verify/__pycache__/cuspTranslations.cpython-39.pyc +0 -0
  436. snappy/verify/__pycache__/cusp_areas.cpython-39.pyc +0 -0
  437. snappy/verify/__pycache__/cusp_shapes.cpython-39.pyc +0 -0
  438. snappy/verify/__pycache__/exceptions.cpython-39.pyc +0 -0
  439. snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-39.pyc +0 -0
  440. snappy/verify/__pycache__/interval_tree.cpython-39.pyc +0 -0
  441. snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-39.pyc +0 -0
  442. snappy/verify/__pycache__/realAlgebra.cpython-39.pyc +0 -0
  443. snappy/verify/__pycache__/shapes.cpython-39.pyc +0 -0
  444. snappy/verify/__pycache__/short_slopes.cpython-39.pyc +0 -0
  445. snappy/verify/__pycache__/squareExtensions.cpython-39.pyc +0 -0
  446. snappy/verify/__pycache__/verifyCanonical.cpython-39.pyc +0 -0
  447. snappy/verify/__pycache__/verifyHyperbolicity.cpython-39.pyc +0 -0
  448. snappy/verify/__pycache__/volume.cpython-39.pyc +0 -0
  449. snappy/verify/complex_volume/__pycache__/__init__.cpython-39.pyc +0 -0
  450. snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-39.pyc +0 -0
  451. snappy/verify/complex_volume/__pycache__/closed.cpython-39.pyc +0 -0
  452. snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-39.pyc +0 -0
  453. snappy/verify/complex_volume/__pycache__/cusped.cpython-39.pyc +0 -0
  454. snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-39.pyc +0 -0
  455. snappy/verify/cuspCrossSection.py +0 -1422
  456. snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-39.pyc +0 -0
  457. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-39.pyc +0 -0
  458. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-39.pyc +0 -0
  459. snappy/verify/upper_halfspace/__pycache__/__init__.cpython-39.pyc +0 -0
  460. snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-39.pyc +0 -0
  461. snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-39.pyc +0 -0
  462. snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-39.pyc +0 -0
  463. snappy-3.1.1.dist-info/RECORD +0 -585
  464. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -0
@@ -45,10 +45,8 @@ correct.
45
45
 
46
46
  from ..sage_helper import _within_sage, sage_method
47
47
  if _within_sage:
48
- from sage.all import (ZZ, PolynomialRing, LaurentPolynomialRing,
49
- GF, QQ, CyclotomicField, vector, matrix,
50
- identity_matrix, block_matrix, diagonal_matrix,
51
- MatrixSpace, ChainComplex, prime_range)
48
+ from ..sage_helper import ZZ, PolynomialRing, vector, matrix, identity_matrix, MatrixSpace, block_matrix, prime_range, is_prime
49
+ from ..sage_helper import LaurentPolynomialRing, GF, CyclotomicField, ChainComplex
52
50
 
53
51
  from .nsagetools import (MapToFreeAbelianization, compute_torsion,
54
52
  fox_derivative_with_involution,
@@ -81,10 +79,10 @@ class MatrixRepresentation():
81
79
  if isinstance(matrices, dict):
82
80
  images = matrices
83
81
  all_gens = list(generators) + [g.swapcase() for g in generators]
84
- assert set(matrices.keys()) == set(all_gens)
82
+ assert set(matrices) == set(all_gens)
85
83
  else:
86
84
  assert len(generators) == len(matrices)
87
- images = dict()
85
+ images = {}
88
86
  for g, m in zip(generators, matrices):
89
87
  images[g] = m
90
88
  images[g.swapcase()] = image_ring(m.inverse())
@@ -185,7 +183,6 @@ def poly_to_rep(f):
185
183
  left action of x on F[x]/(f).
186
184
  """
187
185
  assert f.is_monic()
188
- x = f.parent().gen()
189
186
  d = f.degree()
190
187
  last_column = [-f[e] for e in range(d)]
191
188
  I = identity_matrix(d)
@@ -348,7 +345,7 @@ def induced_rep_from_twisted_cocycle(p, rho, chi, cocycle):
348
345
  t = R.gen()
349
346
  MatSp = MatrixSpace(R, p)
350
347
  gens = rho.generators
351
- images = dict()
348
+ images = {}
352
349
  for s, g in enumerate(gens):
353
350
  v = vector(cocycle[s*n:(s+1)*n])
354
351
  e = rho.epsilon(g)[0]
@@ -548,6 +545,8 @@ def slicing_is_obstructed(knot_exterior, p, q):
548
545
  sage: slicing_is_obstructed(M, 3, 7)
549
546
  True
550
547
  """
548
+ p, q = ZZ(p), ZZ(q)
549
+ assert is_prime(p) and is_prime(q) and q > 2
551
550
  reps = list(reps_appearing(knot_exterior, p, q))
552
551
  if len(reps) == 0:
553
552
  return False
@@ -564,13 +563,14 @@ def slicing_is_obstructed(knot_exterior, p, q):
564
563
  return True
565
564
 
566
565
 
567
- def expand_prime_spec(spec):
566
+ def expand_prime_spec(spec, min_prime=2):
568
567
  if spec in ZZ:
569
568
  a, b = 0, spec
570
569
  else:
571
570
  if len(spec) != 2:
572
571
  raise ValueError(f'Spec {spec} does not specify a range')
573
572
  a, b = spec
573
+ a = max(a, min_prime)
574
574
  return prime_range(a, b + 1)
575
575
 
576
576
 
@@ -596,7 +596,6 @@ def slice_obstruction_HKL(self, primes_spec,
596
596
  sage: spec = [(10, [0, 20]), (20, [0, 10])]
597
597
  sage: M.slice_obstruction_HKL(spec, verbose=True)
598
598
  Looking at (2, 3) ...
599
- Looking at (3, 2) ...
600
599
  Looking at (3, 7) ...
601
600
  (3, 7)
602
601
 
@@ -605,7 +604,6 @@ def slice_obstruction_HKL(self, primes_spec,
605
604
 
606
605
  sage: spec = [([3, 10], 10)]
607
606
  sage: M.slice_obstruction_HKL(spec, verbose=True)
608
- Looking at (3, 2) ...
609
607
  Looking at (3, 7) ...
610
608
  (3, 7)
611
609
 
@@ -639,13 +637,17 @@ def slice_obstruction_HKL(self, primes_spec,
639
637
  if len(primes_spec) == 2:
640
638
  p, q = primes_spec
641
639
  if p in ZZ and q in ZZ:
640
+ if q == 2:
641
+ raise ValueError('Must have q > 2 when looking at H_1(cover; F_q)')
642
+ if not (is_prime(p) and is_prime(q)):
643
+ raise ValueError('Both p and q must be prime')
642
644
  if slicing_is_obstructed(M, p, q):
643
645
  return (p, q)
644
646
  else:
645
647
  return None
646
648
 
647
649
  # Main case
648
- primes_spec = [(expand_prime_spec(a), expand_prime_spec(b))
650
+ primes_spec = [(expand_prime_spec(a), expand_prime_spec(b, min_prime=3))
649
651
  for a, b in primes_spec]
650
652
  for ps, qs in primes_spec:
651
653
  for p in ps:
@@ -654,8 +656,8 @@ def slice_obstruction_HKL(self, primes_spec,
654
656
  if d % q == 0:
655
657
  if verbose:
656
658
  print(' Looking at', (p, q), '...')
657
- if slicing_is_obstructed(M, p, q):
658
- return (p, q)
659
+ if slicing_is_obstructed(M, p, q):
660
+ return (p, q)
659
661
 
660
662
 
661
663
  if __name__ == '__main__':
@@ -37,7 +37,7 @@ from .perm4 import Perm4, inv
37
37
 
38
38
  # For speed, we create a lookup table for all possible gluing permutations
39
39
 
40
- _arrow_gluing_dict = dict()
40
+ _arrow_gluing_dict = {}
41
41
  for edge0, face0 in EdgeFacePairs:
42
42
  for edge1, face1 in EdgeFacePairs:
43
43
  perm = Perm4({FaceIndex[face0]:FaceIndex[flip_face[edge1, face1]],
@@ -48,7 +48,7 @@ for edge0, face0 in EdgeFacePairs:
48
48
 
49
49
  # Another table to speed Arrow.opposite
50
50
 
51
- _arrow_opposite_dict = dict()
51
+ _arrow_opposite_dict = {}
52
52
  for edge, face in EdgeFacePairs:
53
53
  tail = comp(face)
54
54
  head = face & comp(edge)
@@ -59,7 +59,7 @@ for edge, face in EdgeFacePairs:
59
59
 
60
60
  # Another table to speed Arrow.next
61
61
 
62
- _arrow_next_dict = dict()
62
+ _arrow_next_dict = {}
63
63
  for edge, face in EdgeFacePairs:
64
64
  for perm in Perm4.S4():
65
65
  new_edge = perm.image(edge)
@@ -16,7 +16,7 @@ import sys
16
16
  # other_arrow = arrow.copy().opposite()
17
17
  # tail, head = other_arrow.tail(), other_arrow.head()
18
18
 
19
- _edge_add_corner_dict = dict()
19
+ _edge_add_corner_dict = {}
20
20
  for edge, face in EdgeFacePairs:
21
21
  other_arrow = Arrow(edge, face, None).opposite()
22
22
  _edge_add_corner_dict[edge, face] = other_arrow.tail(), other_arrow.head()
@@ -35,7 +35,7 @@ class Edge:
35
35
  self.Vertices = [] # pairs: (initial Vertex, terminal Vertex)
36
36
  self.LeftBdryArrow = None # Arrows representing the two boundary faces,
37
37
  self.RightBdryArrow = None # if this is a boundary edge.
38
- self._edge_orient_cache = dict()
38
+ self._edge_orient_cache = {}
39
39
 
40
40
  def __repr__(self):
41
41
  if self.Index > -1:
@@ -155,7 +155,7 @@ class Edge:
155
155
  tet, perm = self._first_embedding()
156
156
  for i in range(order):
157
157
  yield tet, perm
158
- face = perm.image(1 | 2 | 8)
158
+ face = perm.image(F2)
159
159
  tet, perm = (
160
160
  tet.Neighbor[face], tet.Gluing[face] * perm * Perm4( (0,1,3,2) ))
161
161
 
@@ -6,7 +6,7 @@ def boundary_three(manifold):
6
6
  F, T = len(manifold.Faces), len(manifold.Tetrahedra)
7
7
  ans = Matrix(F, T)
8
8
  for F in manifold.Faces:
9
- t0, t1 = [C.Tetrahedron.Index for C in F.Corners]
9
+ t0, t1 = (C.Tetrahedron.Index for C in F.Corners)
10
10
  ans[F.Index, t0] += 1
11
11
  ans[F.Index, t1] += -1
12
12
  return ans
@@ -33,7 +33,7 @@ def boundary_one(manifold):
33
33
  V, E = len(manifold.Vertices), len(manifold.Edges)
34
34
  ans = Matrix(V, E)
35
35
  for e in manifold.Edges:
36
- v_init, v_term = [v.Index for v in e.Vertices]
36
+ v_init, v_term = (v.Index for v in e.Vertices)
37
37
  ans[v_term, e.Index] += 1
38
38
  ans[v_init, e.Index] += -1
39
39
  return ans
@@ -263,7 +263,7 @@ class Mcomplex:
263
263
  out.write("\nEdges:\n")
264
264
  for edge in self.Edges:
265
265
  edge.info(out)
266
- except IOError:
266
+ except OSError:
267
267
  pass
268
268
 
269
269
  def build_edge_classes(self):
@@ -483,7 +483,7 @@ class Mcomplex:
483
483
  out.write("-------------------------------------\n\n")
484
484
  surface.info(self, out)
485
485
  out.write('\n')
486
- except IOError:
486
+ except OSError:
487
487
  pass
488
488
 
489
489
  def almost_normal_surface_info(self, out=sys.stdout):
@@ -492,7 +492,7 @@ class Mcomplex:
492
492
  out.write("-------------------------------------\n\n")
493
493
  surface.info(self, out)
494
494
  out.write('\n')
495
- except IOError:
495
+ except OSError:
496
496
  pass
497
497
 
498
498
  # Simplification Moves
@@ -162,6 +162,18 @@ VerticesOfFaceCounterclockwise = {
162
162
  F3: (V1, V2, V0)
163
163
  }
164
164
 
165
+ # Dimension of a subsimplex
166
+ def dimension(x):
167
+ if x in ZeroSubsimplices:
168
+ return 0
169
+ if x in OneSubsimplices:
170
+ return 1
171
+ if x in TwoSubsimplices:
172
+ return 2
173
+ if x == T:
174
+ return 3
175
+ raise Exception("%r is not a subsimplex" % x)
176
+
165
177
  # Decide if the bitmap x represents a subset of the bitmap y
166
178
 
167
179
 
@@ -6,19 +6,18 @@ of it (though depending very much on snappy), except for borrowing
6
6
  some linear algebra code.
7
7
  """
8
8
 
9
- import snappy
10
9
  import FXrays
11
- if snappy._within_sage:
12
- from sage.all import gcd
13
- from sage.all import vector as Vector
14
- from sage.all import matrix as Matrix
10
+
11
+ from ...sage_helper import _within_sage
12
+ if _within_sage:
13
+ from ...sage_helper import vector as Vector, matrix as Matrix, gcd
15
14
  else:
16
15
  from snappy.snap.t3mlite.linalg import Vector, Matrix, gcd
17
16
 
18
17
 
19
18
  def weak_normalize_slope(slope):
20
19
  """For a tuple (a, b), scale it so that gcd(a,b)=1"""
21
- a, b = [int(s) for s in slope]
20
+ a, b = (int(s) for s in slope)
22
21
  if a == b == 0:
23
22
  return (0, 0)
24
23
  g = gcd(a,b)
@@ -54,7 +53,8 @@ def normalize_slope(slope):
54
53
  def shift_matrix(n):
55
54
  """
56
55
  The edge shifts corresponding to each of three quad types, see Figure
57
- 2.1 and 2.2 of `[DG] <http://arxiv.org/abs/1102.4588>`_
56
+ 2.1 and 2.2 of
57
+ `Dunfield and Garoufalidis '12 <http://arxiv.org/abs/1102.4588>`_.
58
58
  """
59
59
  shifts = Matrix(3*n, 3*n)
60
60
  for i in range(0, 3*n, 3):
@@ -92,14 +92,14 @@ class SpunSurface:
92
92
  A spun normal surface in an ideal triangulation, as introduced by
93
93
  Thurston.
94
94
 
95
- For an quick sketch of this theory see `[DG]
95
+ For an quick sketch of this theory see `Dunfield and Garoufalidis '12
96
96
  <http://arxiv.org/abs/1102.4588>`_ and for more details see
97
- `[Tillmann] <http://arxiv.org/abs/math/0406271>`_.
97
+ `Tillmann '08 <http://arxiv.org/abs/math/0406271>`_.
98
98
 
99
99
  The quad conventions are (Q02, Q03, Q01) corresponding to
100
100
  z -> 0, z' -> 0, and z'' -> 0 respectively, as per Figure 3.1 of
101
- `[DG] <http://arxiv.org/abs/1102.4588>`_. The quad types
102
- are numbered 0, 1, 2; the "None" quad type means a
101
+ `Dunfield and Garoufalidis '12 <http://arxiv.org/abs/1102.4588>`_.
102
+ The quad types are numbered 0, 1, 2; the "None" quad type means a
103
103
  tetrahedron contains no quads at all.
104
104
  """
105
105
  def __init__(self, manifold, quad_vector=None, quad_types=None, index=None):
@@ -245,9 +245,9 @@ def normal_boundary_slopes(self, subset='all', algorithm='FXrays'):
245
245
 
246
246
  If the ``subset`` flag is set to ``'kabaya'``, then it only
247
247
  returns boundary slopes associated to vertex surfaces with a quad
248
- in every tetrahedron; by Theorem 1.1. of `[DG]
249
- <http://arxiv.org/abs/1102.4588>`_ these are all strict boundary
250
- slopes.
248
+ in every tetrahedron; by Theorem 1.1. of
249
+ `Dunfield and Garoufalidis '12 <http://arxiv.org/abs/1102.4588>`_
250
+ these are all strict boundary slopes.
251
251
 
252
252
  >>> N = Manifold('m113')
253
253
  >>> N.normal_boundary_slopes()
@@ -285,12 +285,13 @@ def normal_boundary_slopes(self, subset='all', algorithm='FXrays'):
285
285
  if subset != 'all':
286
286
  raise ValueError("Subset must be one of 'all', 'kabaya', or 'brasile'")
287
287
 
288
- slopes = set([normalize_slope(S.boundary_slopes()) for S in surfaces])
289
- slopes.discard( (0, 0) )
288
+ slopes = {normalize_slope(S.boundary_slopes()) for S in surfaces}
289
+ slopes.discard((0, 0))
290
290
  return sorted(slopes)
291
291
 
292
292
 
293
293
  if __name__ == "__main__":
294
294
  import doctest
295
- names = {'Manifold':snappy.Manifold}
295
+ import snappy
296
+ names = {'Manifold': snappy.Manifold}
296
297
  doctest.testmod(extraglobs=names)
@@ -6,8 +6,8 @@ import snappy.snap.t3mlite.spun as spun
6
6
 
7
7
  def hash_t3m_surface(surface):
8
8
  ans = [surface.EulerCharacteristic]
9
- ans += sorted(list(surface.EdgeWeights))
10
- ans += sorted(list(surface.Quadvector))
9
+ ans += sorted(surface.EdgeWeights)
10
+ ans += sorted(surface.Quadvector)
11
11
  return ans
12
12
 
13
13
 
@@ -66,8 +66,8 @@ def compare_cusped(snappy_manifold):
66
66
  t = R.getNumberOfTetrahedra()
67
67
  regina_surfaces = list(vertex_surfaces(R))
68
68
  r_hashes = sorted(
69
- sorted(sorted(int(S.getQuadCoord(i, j).stringValue())
70
- for i in range(t) for j in range(3)))
69
+ sorted(int(S.getQuadCoord(i, j).stringValue())
70
+ for i in range(t) for j in range(3))
71
71
  for S in regina_surfaces)
72
72
  r_slopes = sorted(map(regina_boundary_slope, regina_surfaces))
73
73
 
snappy/snap/test.py CHANGED
@@ -1,10 +1,40 @@
1
- from ..sage_helper import _within_sage, doctest_modules
2
- from ..pari import pari
1
+ from snappy import testing
3
2
  import snappy
4
- import snappy.snap as snap
5
- import getopt
6
- import sys
7
3
 
4
+ from snappy.sage_helper import _within_sage
5
+ from snappy.pari import pari
6
+
7
+ from snappy import snap
8
+
9
+ modules = [
10
+ snap,
11
+ snap.t3mlite.linalg,
12
+ snap.t3mlite.mcomplex,
13
+ snap.t3mlite.perm4,
14
+ snap.t3mlite.spun,
15
+ snap.character_varieties,
16
+ snap.slice_obs_HKL,
17
+ snap.nsagetools,
18
+ snap.polished_reps,
19
+ snap.interval_reps,
20
+ snap.fundamental_polyhedron,
21
+ snap.peripheral.dual_cellulation,
22
+ snap.peripheral.link,
23
+ snap.peripheral.peripheral
24
+ ]
25
+
26
+ def run_doctests(verbose=False, print_info=True):
27
+ globs = {'Manifold':snappy.Manifold,
28
+ 'ManifoldHP':snappy.ManifoldHP,
29
+ 'Triangulation':snappy.Triangulation,
30
+ 'Mcomplex':snappy.snap.t3mlite.Mcomplex,
31
+ 'LinkSurface':snappy.snap.peripheral.link.LinkSurface}
32
+ return testing.doctest_modules(modules,
33
+ verbose=verbose,
34
+ print_info=print_info,
35
+ extraglobs=globs)
36
+
37
+ run_doctests.__name__ = snap.__name__
8
38
 
9
39
  def _test_gluing_equations(manifold, shapes):
10
40
  """
@@ -30,7 +60,7 @@ def test_polished(dec_prec=200):
30
60
  return snap.shapes.gluing_equation_error(eqns, shapes)
31
61
 
32
62
  def test_census(name, census):
33
- manifolds = [M for M in census]
63
+ manifolds = list(census)
34
64
  print('Checking gluing equations for %d %s manifolds' % (len(manifolds), name))
35
65
  max_error = pari(0)
36
66
  for i, M in enumerate(manifolds):
@@ -100,51 +130,5 @@ def big_test():
100
130
  test_holonomy()
101
131
  test_fields()
102
132
 
103
-
104
- def run_doctests(verbose=False, print_info=True):
105
- from snappy.snap.t3mlite import perm4
106
- from snappy.snap.t3mlite import linalg
107
- from snappy.snap.t3mlite import spun
108
- from snappy.snap.t3mlite import mcomplex
109
- from snappy.snap import slice_obs_HKL
110
- from snappy.snap import character_varieties
111
- from snappy.snap import nsagetools
112
- from snappy.snap import polished_reps
113
- from snappy.snap import interval_reps
114
- from snappy.snap import fundamental_polyhedron
115
- from snappy.snap.peripheral import dual_cellulation
116
- from snappy.snap.peripheral import link
117
- from snappy.snap.peripheral import peripheral
118
-
119
- modules = [
120
- perm4,
121
- mcomplex,
122
- linalg,
123
- spun,
124
- character_varieties,
125
- nsagetools,
126
- slice_obs_HKL,
127
- polished_reps,
128
- snap,
129
- interval_reps,
130
- fundamental_polyhedron,
131
- dual_cellulation,
132
- link,
133
- peripheral,
134
- ]
135
-
136
- globs = {'Manifold':snappy.Manifold,
137
- 'ManifoldHP':snappy.ManifoldHP,
138
- 'Triangulation':snappy.Triangulation,
139
- 'Mcomplex':snappy.snap.t3mlite.Mcomplex,
140
- 'LinkSurface':snappy.snap.peripheral.link.LinkSurface
141
- }
142
-
143
- return doctest_modules(modules, extraglobs=globs,
144
- verbose=verbose, print_info=print_info)
145
-
146
-
147
133
  if __name__ == '__main__':
148
- optlist, args = getopt.getopt(sys.argv[1:], 'v', ['verbose'])
149
- verbose = len(optlist) > 0
150
- run_doctests(verbose)
134
+ testing.run_doctests_as_main(run_doctests)
snappy/snap/utilities.py CHANGED
@@ -12,9 +12,8 @@ from itertools import chain
12
12
  from ..pari import pari, PariError
13
13
  from .fundamental_polyhedron import Infinity
14
14
  if _within_sage:
15
- from sage.all import matrix as sage_matrix, vector as sage_vector
16
- from sage.rings.real_mpfr import RealField_class
17
- from ..sage_helper import ComplexField_class
15
+ from ..sage_helper import matrix as sage_matrix, vector as sage_vector
16
+ from ..sage_helper import RealField_class, ComplexField_class
18
17
 
19
18
  def is_field(R):
20
19
  return isinstance(R, (SnapPyNumbers, RealField_class,
@@ -67,7 +66,7 @@ class Vector2(MatrixBase):
67
66
  if len(args) == 1:
68
67
  args = args[0]
69
68
  if len(args) == 2:
70
- self.x, self.y = [number(t) for t in args]
69
+ self.x, self.y = (number(t) for t in args)
71
70
  else:
72
71
  raise ValueError('Invalid initialization for a Vector2.')
73
72
 
@@ -141,7 +140,7 @@ class Matrix2x2(MatrixBase):
141
140
  if len(args) == 1:
142
141
  args = tuple(chain(*args[0]))
143
142
  if len(args) == 4:
144
- self.a, self.b, self.c, self.d = [number(x) for x in args]
143
+ self.a, self.b, self.c, self.d = (number(x) for x in args)
145
144
  else:
146
145
  raise ValueError('Invalid initialization for a Matrix2x2.')
147
146