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
@@ -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