snappy 3.1.1__cp311-cp311-macosx_11_0_arm64.whl → 3.2__cp311-cp311-macosx_11_0_arm64.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.
- snappy/CyOpenGL.cpython-311-darwin.so +0 -0
- snappy/SnapPy.cpython-311-darwin.so +0 -0
- snappy/SnapPyHP.cpython-311-darwin.so +0 -0
- snappy/__init__.py +299 -402
- snappy/app.py +70 -20
- snappy/browser.py +18 -17
- snappy/canonical.py +249 -0
- snappy/{verify/cusp_shapes.py → cusps/__init__.py} +8 -18
- snappy/cusps/cusp_area_matrix.py +101 -0
- snappy/{verify/cusp_areas.py → cusps/cusp_areas_from_matrix.py} +23 -39
- snappy/cusps/maximal_cusp_area_matrix.py +136 -0
- snappy/cusps/test.py +21 -0
- snappy/cusps/trig_cusp_area_matrix.py +63 -0
- snappy/database.py +10 -9
- snappy/decorated_isosig.py +337 -114
- snappy/dev/extended_ptolemy/complexVolumesClosed.py +40 -7
- snappy/dev/extended_ptolemy/extended.py +3 -3
- snappy/dev/extended_ptolemy/phc_wrapper.py +10 -10
- snappy/dev/vericlosed/oneVertexTruncatedComplex.py +1 -1
- snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
- snappy/doc/_images/m125_paper_plane.jpg +0 -0
- snappy/doc/_images/o9_00000_systole_paper_plane.jpg +0 -0
- snappy/doc/_images/o9_00000_systole_paper_plane_closer.jpg +0 -0
- snappy/doc/_sources/development.rst.txt +66 -46
- snappy/doc/_sources/index.rst.txt +72 -5
- snappy/doc/_sources/installing.rst.txt +145 -162
- snappy/doc/_sources/news.rst.txt +73 -1
- snappy/doc/_sources/ptolemy_examples1.rst.txt +8 -7
- snappy/doc/_sources/ptolemy_examples3.rst.txt +2 -2
- snappy/doc/_sources/triangulation.rst.txt +2 -2
- snappy/doc/_sources/verify.rst.txt +89 -29
- snappy/doc/_sources/verify_internals.rst.txt +5 -16
- snappy/doc/_static/basic.css +23 -1
- snappy/doc/_static/css/badge_only.css +1 -1
- snappy/doc/_static/css/theme.css +1 -1
- snappy/doc/_static/doctools.js +1 -1
- snappy/doc/_static/documentation_options.js +2 -3
- snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- snappy/doc/_static/js/versions.js +228 -0
- snappy/doc/_static/language_data.js +2 -2
- snappy/doc/_static/pygments.css +1 -0
- snappy/doc/_static/searchtools.js +125 -71
- snappy/doc/_static/sphinx_highlight.js +13 -3
- snappy/doc/additional_classes.html +291 -122
- snappy/doc/bugs.html +17 -20
- snappy/doc/censuses.html +34 -53
- snappy/doc/credits.html +18 -21
- snappy/doc/development.html +88 -68
- snappy/doc/genindex.html +66 -145
- snappy/doc/index.html +86 -31
- snappy/doc/installing.html +164 -182
- snappy/doc/manifold.html +1168 -556
- snappy/doc/manifoldhp.html +18 -21
- snappy/doc/news.html +91 -33
- snappy/doc/objects.inv +0 -0
- snappy/doc/other.html +20 -22
- snappy/doc/platonic_census.html +31 -34
- snappy/doc/plink.html +19 -22
- snappy/doc/ptolemy.html +20 -22
- snappy/doc/ptolemy_classes.html +102 -105
- snappy/doc/ptolemy_examples1.html +34 -36
- snappy/doc/ptolemy_examples2.html +28 -31
- snappy/doc/ptolemy_examples3.html +26 -29
- snappy/doc/ptolemy_examples4.html +20 -23
- snappy/doc/ptolemy_prelim.html +25 -28
- snappy/doc/py-modindex.html +16 -19
- snappy/doc/screenshots.html +22 -24
- snappy/doc/search.html +15 -18
- snappy/doc/searchindex.js +1 -1
- snappy/doc/snap.html +18 -21
- snappy/doc/snappy.html +18 -20
- snappy/doc/spherogram.html +84 -87
- snappy/doc/todo.html +17 -20
- snappy/doc/triangulation.html +324 -215
- snappy/doc/tutorial.html +17 -20
- snappy/doc/verify.html +100 -46
- snappy/doc/verify_internals.html +106 -563
- snappy/drilling/__init__.py +153 -235
- snappy/drilling/barycentric.py +103 -0
- snappy/drilling/constants.py +0 -2
- snappy/drilling/crush.py +56 -130
- snappy/drilling/cusps.py +12 -6
- snappy/drilling/debug.py +2 -1
- snappy/drilling/exceptions.py +7 -40
- snappy/drilling/moves.py +302 -243
- snappy/drilling/perturb.py +63 -37
- snappy/drilling/shorten.py +36 -0
- snappy/drilling/subdivide.py +0 -5
- snappy/drilling/test.py +23 -0
- snappy/drilling/test_cases.py +126 -0
- snappy/drilling/tracing.py +9 -37
- snappy/exceptions.py +18 -5
- snappy/exterior_to_link/barycentric_geometry.py +2 -4
- snappy/exterior_to_link/main.py +8 -7
- snappy/exterior_to_link/mcomplex_with_link.py +2 -2
- snappy/exterior_to_link/rational_linear_algebra.py +1 -1
- snappy/exterior_to_link/rational_linear_algebra_wrapped.py +1 -1
- snappy/exterior_to_link/test.py +21 -33
- snappy/geometric_structure/__init__.py +212 -0
- snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
- snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +697 -0
- snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
- snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
- snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
- snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
- snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -0
- snappy/geometric_structure/geodesic/__init__.py +0 -0
- snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
- snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
- snappy/geometric_structure/geodesic/canonical_keys.py +52 -0
- snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
- snappy/geometric_structure/geodesic/constants.py +6 -0
- snappy/geometric_structure/geodesic/exceptions.py +22 -0
- snappy/{drilling → geometric_structure/geodesic}/fixed_points.py +34 -9
- snappy/{drilling/geodesic_info.py → geometric_structure/geodesic/geodesic_start_point_info.py} +139 -180
- snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
- snappy/geometric_structure/geodesic/line.py +30 -0
- snappy/geometric_structure/geodesic/multiplicity.py +127 -0
- snappy/geometric_structure/geodesic/tiles_for_geodesic.py +101 -0
- snappy/geometric_structure/test.py +22 -0
- snappy/gui.py +23 -13
- snappy/horoviewer.py +7 -7
- snappy/hyperboloid/__init__.py +96 -31
- snappy/hyperboloid/distances.py +245 -0
- snappy/hyperboloid/horoball.py +19 -0
- snappy/hyperboloid/line.py +35 -0
- snappy/hyperboloid/point.py +9 -0
- snappy/hyperboloid/triangle.py +29 -0
- snappy/isometry_signature.py +382 -0
- snappy/len_spec/__init__.py +596 -0
- snappy/len_spec/geodesic_info.py +110 -0
- snappy/len_spec/geodesic_key_info_dict.py +117 -0
- snappy/len_spec/geodesic_piece.py +143 -0
- snappy/len_spec/geometric_structure.py +182 -0
- snappy/len_spec/geometry.py +80 -0
- snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
- snappy/len_spec/spine.py +206 -0
- snappy/len_spec/test.py +24 -0
- snappy/len_spec/test_cases.py +69 -0
- snappy/len_spec/tile.py +275 -0
- snappy/len_spec/word.py +86 -0
- snappy/math_basics.py +39 -13
- snappy/matrix.py +52 -9
- snappy/number.py +12 -6
- snappy/numeric_output_checker.py +2 -3
- snappy/pari.py +8 -4
- snappy/phone_home.py +2 -1
- snappy/polyviewer.py +8 -8
- snappy/ptolemy/__init__.py +1 -1
- snappy/ptolemy/component.py +2 -2
- snappy/ptolemy/coordinates.py +25 -25
- snappy/ptolemy/findLoops.py +9 -9
- snappy/ptolemy/manifoldMethods.py +27 -29
- snappy/ptolemy/polynomial.py +50 -57
- snappy/ptolemy/processFileBase.py +60 -0
- snappy/ptolemy/ptolemyVariety.py +109 -41
- snappy/ptolemy/reginaWrapper.py +4 -4
- snappy/ptolemy/rur.py +1 -1
- snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +9 -9
- snappy/ptolemy/test.py +99 -54
- snappy/ptolemy/utilities.py +1 -1
- snappy/raytracing/__init__.py +64 -0
- snappy/raytracing/additional_horospheres.py +64 -0
- snappy/raytracing/additional_len_spec_choices.py +63 -0
- snappy/raytracing/cohomology_fractal.py +0 -3
- snappy/raytracing/eyeball.py +123 -0
- snappy/raytracing/finite_raytracing_data.py +17 -17
- snappy/raytracing/finite_viewer.py +15 -15
- snappy/raytracing/geodesic_tube_info.py +93 -63
- snappy/raytracing/geodesics.py +94 -64
- snappy/raytracing/geodesics_window.py +56 -34
- snappy/raytracing/gui_utilities.py +21 -6
- snappy/raytracing/hyperboloid_navigation.py +29 -4
- snappy/raytracing/hyperboloid_utilities.py +73 -73
- snappy/raytracing/ideal_raytracing_data.py +121 -91
- snappy/raytracing/inside_viewer.py +199 -66
- snappy/raytracing/pack.py +22 -0
- snappy/raytracing/raytracing_data.py +37 -25
- snappy/raytracing/raytracing_view.py +70 -65
- snappy/raytracing/shaders/Eye.png +0 -0
- snappy/raytracing/shaders/NonGeometric.png +0 -0
- snappy/raytracing/shaders/__init__.py +39 -3
- snappy/raytracing/shaders/fragment.glsl +451 -133
- snappy/raytracing/test.py +29 -0
- snappy/raytracing/tooltip.py +146 -0
- snappy/raytracing/upper_halfspace_utilities.py +42 -9
- snappy/sage_helper.py +67 -134
- snappy/settings.py +90 -77
- snappy/shell.py +2 -0
- snappy/snap/character_varieties.py +2 -2
- snappy/snap/find_field.py +4 -3
- snappy/snap/fundamental_polyhedron.py +2 -2
- snappy/snap/kernel_structures.py +5 -1
- snappy/snap/nsagetools.py +9 -8
- snappy/snap/peripheral/dual_cellulation.py +4 -3
- snappy/snap/peripheral/peripheral.py +2 -2
- snappy/snap/peripheral/surface.py +5 -5
- snappy/snap/peripheral/test.py +1 -1
- snappy/snap/polished_reps.py +8 -8
- snappy/snap/slice_obs_HKL.py +16 -14
- snappy/snap/t3mlite/arrow.py +3 -3
- snappy/snap/t3mlite/edge.py +3 -3
- snappy/snap/t3mlite/homology.py +2 -2
- snappy/snap/t3mlite/mcomplex.py +3 -3
- snappy/snap/t3mlite/simplex.py +12 -0
- snappy/snap/t3mlite/spun.py +18 -17
- snappy/snap/t3mlite/test_vs_regina.py +4 -4
- snappy/snap/test.py +37 -53
- snappy/snap/utilities.py +4 -5
- snappy/test.py +121 -138
- snappy/test_cases.py +263 -0
- snappy/testing.py +131 -0
- snappy/tiling/__init__.py +2 -0
- snappy/tiling/canonical_key_dict.py +59 -0
- snappy/tiling/dict_based_set.py +79 -0
- snappy/tiling/floor.py +49 -0
- snappy/tiling/hyperboloid_dict.py +54 -0
- snappy/tiling/iter_utils.py +78 -0
- snappy/tiling/lifted_tetrahedron.py +22 -0
- snappy/tiling/lifted_tetrahedron_set.py +54 -0
- snappy/tiling/real_hash_dict.py +164 -0
- snappy/tiling/test.py +23 -0
- snappy/tiling/tile.py +215 -0
- snappy/tiling/triangle.py +33 -0
- snappy/tkterminal.py +113 -84
- snappy/twister/main.py +1 -7
- snappy/twister/twister_core.cpython-311-darwin.so +0 -0
- snappy/upper_halfspace/__init__.py +78 -17
- snappy/verify/__init__.py +3 -7
- snappy/verify/{verifyCanonical.py → canonical.py} +78 -70
- snappy/verify/complex_volume/adjust_torsion.py +1 -2
- snappy/verify/complex_volume/closed.py +13 -13
- snappy/verify/complex_volume/cusped.py +6 -6
- snappy/verify/complex_volume/extended_bloch.py +5 -8
- snappy/verify/{cuspTranslations.py → cusp_translations.py} +1 -1
- snappy/verify/edge_equations.py +80 -0
- snappy/verify/exceptions.py +0 -55
- snappy/verify/{verifyHyperbolicity.py → hyperbolicity.py} +3 -3
- snappy/verify/interval_newton_shapes_engine.py +7 -5
- snappy/verify/interval_tree.py +5 -5
- snappy/verify/krawczyk_shapes_engine.py +17 -18
- snappy/verify/maximal_cusp_area_matrix/__init__.py +7 -74
- snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +3 -4
- snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +1 -1
- snappy/verify/{realAlgebra.py → real_algebra.py} +1 -1
- snappy/verify/shapes.py +5 -3
- snappy/verify/short_slopes.py +39 -41
- snappy/verify/{squareExtensions.py → square_extensions.py} +14 -11
- snappy/verify/test.py +57 -60
- snappy/verify/upper_halfspace/extended_matrix.py +1 -1
- snappy/verify/upper_halfspace/finite_point.py +3 -4
- snappy/verify/upper_halfspace/ideal_point.py +9 -9
- snappy/verify/volume.py +2 -2
- snappy/version.py +2 -2
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/METADATA +26 -11
- snappy-3.2.dist-info/RECORD +503 -0
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/top_level.txt +6 -1
- snappy/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/__pycache__/browser.cpython-311.pyc +0 -0
- snappy/__pycache__/cache.cpython-311.pyc +0 -0
- snappy/__pycache__/database.cpython-311.pyc +0 -0
- snappy/__pycache__/db_utilities.cpython-311.pyc +0 -0
- snappy/__pycache__/decorated_isosig.cpython-311.pyc +0 -0
- snappy/__pycache__/exceptions.cpython-311.pyc +0 -0
- snappy/__pycache__/export_stl.cpython-311.pyc +0 -0
- snappy/__pycache__/filedialog.cpython-311.pyc +0 -0
- snappy/__pycache__/gui.cpython-311.pyc +0 -0
- snappy/__pycache__/horoviewer.cpython-311.pyc +0 -0
- snappy/__pycache__/infowindow.cpython-311.pyc +0 -0
- snappy/__pycache__/math_basics.cpython-311.pyc +0 -0
- snappy/__pycache__/matrix.cpython-311.pyc +0 -0
- snappy/__pycache__/number.cpython-311.pyc +0 -0
- snappy/__pycache__/numeric_output_checker.cpython-311.pyc +0 -0
- snappy/__pycache__/pari.cpython-311.pyc +0 -0
- snappy/__pycache__/polyviewer.cpython-311.pyc +0 -0
- snappy/__pycache__/sage_helper.cpython-311.pyc +0 -0
- snappy/__pycache__/version.cpython-311.pyc +0 -0
- snappy/doc/_sources/verify_canon.rst.txt +0 -90
- snappy/doc/_static/js/html5shiv-printshiv.min.js +0 -4
- snappy/doc/_static/js/html5shiv.min.js +0 -4
- snappy/doc/verify_canon.html +0 -304
- snappy/drilling/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/constants.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/crush.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/cusps.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/debug.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/epsilons.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/exceptions.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/fixed_points.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/geodesic_info.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/geodesic_tube.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/geometric_structure.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/line.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/moves.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/peripheral_curves.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/perturb.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/quotient_space.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/spatial_dict.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/subdivide.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/tracing.cpython-311.pyc +0 -0
- snappy/drilling/geodesic_tube.py +0 -441
- snappy/drilling/geometric_structure.py +0 -366
- snappy/drilling/line.py +0 -122
- snappy/drilling/quotient_space.py +0 -94
- snappy/drilling/spatial_dict.py +0 -128
- snappy/exterior_to_link/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/exceptions.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/hyp_utils.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/link_projection.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/main.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/pl_utils.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/put_in_S3.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/stored_moves.cpython-311.pyc +0 -0
- snappy/hyperboloid/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/manifolds/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/component.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/coordinates.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/fieldExtensions.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/findLoops.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/homology.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/manifoldMethods.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/matrix.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/polynomial.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/processComponents.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/processFileBase.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/processFileDispatch.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/processMagmaFile.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/processRurFile.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyVariety.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/rur.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/utilities.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/finite_raytracing_data.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/gui_utilities.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/hyperboloid_navigation.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/hyperboloid_utilities.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/ideal_raytracing_data.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/inside_viewer.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/raytracing_data.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/raytracing_view.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/upper_halfspace_utilities.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/view_scale_controller.cpython-311.pyc +0 -0
- snappy/raytracing/zoom_slider/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/character_varieties.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/fundamental_polyhedron.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/interval_reps.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/kernel_structures.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/mcomplex_base.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/nsagetools.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/polished_reps.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/shapes.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/slice_obs_HKL.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/utilities.cpython-311.pyc +0 -0
- snappy/snap/peripheral/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-311.pyc +0 -0
- snappy/snap/peripheral/__pycache__/link.cpython-311.pyc +0 -0
- snappy/snap/peripheral/__pycache__/peripheral.cpython-311.pyc +0 -0
- snappy/snap/peripheral/__pycache__/surface.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/arrow.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/corner.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/edge.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/face.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/files.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/homology.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/linalg.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/mcomplex.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/perm4.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/simplex.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/spun.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/surface.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/vertex.cpython-311.pyc +0 -0
- snappy/togl/__init__.py +0 -3
- snappy/togl/darwin-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/darwin-tk8.6/Togl2.1/libTogl2.1.dylib +0 -0
- snappy/togl/darwin-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/darwin-tk8.7/Togl2.1/LICENSE +0 -28
- snappy/togl/darwin-tk8.7/Togl2.1/libTogl2.1.dylib +0 -0
- snappy/togl/darwin-tk8.7/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/libTogl2.1.so +0 -0
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/win32VC-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.dll +0 -0
- snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.lib +0 -0
- snappy/togl/win32VC-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.dll +0 -0
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.lib +0 -0
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
- snappy/twister/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/twister/__pycache__/main.cpython-311.pyc +0 -0
- snappy/upper_halfspace/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/upper_halfspace/__pycache__/ideal_point.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/cuspCrossSection.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/cuspTranslations.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/cusp_areas.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/cusp_shapes.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/exceptions.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/interval_tree.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/realAlgebra.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/shapes.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/short_slopes.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/squareExtensions.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/verifyCanonical.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/verifyHyperbolicity.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/volume.cpython-311.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-311.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/closed.cpython-311.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-311.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/cusped.cpython-311.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-311.pyc +0 -0
- snappy/verify/cuspCrossSection.py +0 -1422
- snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-311.pyc +0 -0
- snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-311.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-311.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-311.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-311.pyc +0 -0
- snappy-3.1.1.dist-info/RECORD +0 -585
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -0
@@ -41,9 +41,9 @@ def restore_forbidden(var_str):
|
|
41
41
|
def ideal_to_file(ideal, filename):
|
42
42
|
outfile = open(filename, 'w')
|
43
43
|
polys = ideal.gens()
|
44
|
-
outfile.write('%d\n' % len(polys))
|
44
|
+
outfile.write(r'%d\n' % len(polys))
|
45
45
|
for p in polys:
|
46
|
-
outfile.write(' ' + remove_forbidden(repr(p)) + ';\n')
|
46
|
+
outfile.write(' ' + remove_forbidden(repr(p)) + r';\n')
|
47
47
|
outfile.close()
|
48
48
|
|
49
49
|
def parse_file(filename, prec=53):
|
@@ -55,14 +55,14 @@ def parse_file(filename, prec=53):
|
|
55
55
|
data = data.split('THE SOLUTIONS')[-1]
|
56
56
|
data = re.subn('[*]{3,}', '', data)[0]
|
57
57
|
ans = []
|
58
|
-
solutions = re.findall('(solution \d+ : \s* start residual .*?) ==', data, re.DOTALL)
|
58
|
+
solutions = re.findall(r'(solution \d+ : \s* start residual .*?) ==', data, re.DOTALL)
|
59
59
|
for sol in solutions:
|
60
60
|
kind = sol.split('=')[-1].strip()
|
61
61
|
if kind == 'no solution':
|
62
62
|
continue
|
63
|
-
mult = int(re.search('^m : (\d+)', sol, re.MULTILINE).group(1))
|
64
|
-
err = float(re.search('== err :\s+(.*?)\s+= ', sol).group(1))
|
65
|
-
coors = re.findall('^ (.*) :\s+(\S*)\s+(\S*)', sol, re.MULTILINE)
|
63
|
+
mult = int(re.search(r'^m : (\d+)', sol, re.MULTILINE).group(1))
|
64
|
+
err = float(re.search(r'== err :\s+(.*?)\s+= ', sol).group(1))
|
65
|
+
coors = re.findall(r'^ (.*) :\s+(\S*)\s+(\S*)', sol, re.MULTILINE)
|
66
66
|
if kind.startswith('real'):
|
67
67
|
coors = {restore_forbidden(var):RR(real) for var, real, imag in coors}
|
68
68
|
ans.append({'kind':'real', 'mult':mult, 'err':err, 'coors':coors})
|
@@ -70,8 +70,8 @@ def parse_file(filename, prec=53):
|
|
70
70
|
coors = {restore_forbidden(var):CC(RR(real), RR(imag)) for var, real, imag in coors}
|
71
71
|
ans.append({'kind':'complex', 'mult':mult, 'err':err, 'coors':coors})
|
72
72
|
|
73
|
-
num_real = int(re.search('Number of real solutions\s+:\s(.*).', data).group(1))
|
74
|
-
num_complex = int(re.search('Number of complex solutions\s+:\s(.*).', data).group(1))
|
73
|
+
num_real = int(re.search(r'Number of real solutions\s+:\s(.*).', data).group(1))
|
74
|
+
num_complex = int(re.search(r'Number of complex solutions\s+:\s(.*).', data).group(1))
|
75
75
|
kinds = [sol['kind'] for sol in ans]
|
76
76
|
assert kinds.count('real') == num_real
|
77
77
|
assert kinds.count('complex') == num_complex
|
@@ -185,9 +185,9 @@ def direct_hack(backend, ideal, **kwargs):
|
|
185
185
|
polys = [repr(eqn) for eqn in ideal.gens()]
|
186
186
|
|
187
187
|
data = {'backend':backend, 'vars':vars, 'polys':polys, 'kwargs':kwargs}
|
188
|
-
problem_data = json.dumps(data).encode('base64').replace('\n', '')
|
188
|
+
problem_data = json.dumps(data).encode('base64').replace(r'\n', '')
|
189
189
|
ans_data = os.popen('sage -python ' + __file__ + ' ' + problem_data).read()
|
190
|
-
ans_data = re.sub('PHCv.*? released .*? works!\n', '', ans_data)
|
190
|
+
ans_data = re.sub(r'PHCv.*? released .*? works!\n', '', ans_data)
|
191
191
|
if len(ans_data):
|
192
192
|
ans = json.loads(ans_data)
|
193
193
|
for sol in ans:
|
@@ -5,7 +5,7 @@ from truncatedComplex import *
|
|
5
5
|
class OneVertexTruncatedComplex(TruncatedComplex):
|
6
6
|
|
7
7
|
def __init__(self, hyperbolic_structure):
|
8
|
-
super(
|
8
|
+
super().__init__(
|
9
9
|
hyperbolic_structure.mcomplex)
|
10
10
|
|
11
11
|
self.hyperbolic_structure = hyperbolic_structure
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -17,11 +17,11 @@ macOS
|
|
17
17
|
|
18
18
|
Here is how to get a clean development setup under macOS.
|
19
19
|
|
20
|
-
- Install the latest Python 3.
|
20
|
+
- Install the latest Python 3.13 from Python.org using the `Mac
|
21
21
|
Installer Disk Image <http://www.python.org/download/>`_. Set your
|
22
22
|
path so that "python3" is::
|
23
23
|
|
24
|
-
/Library/Frameworks/Python.framework/Versions/3.
|
24
|
+
/Library/Frameworks/Python.framework/Versions/3.13/bin/python3
|
25
25
|
|
26
26
|
- Use `pip <https://pip.pypa.io/en/latest/index.html>`_ to install the
|
27
27
|
following packages::
|
@@ -47,8 +47,8 @@ Here is how to get a clean development setup under macOS.
|
|
47
47
|
python3 setup.py pip_install
|
48
48
|
python3 -m plink.app # Link editor appears!
|
49
49
|
|
50
|
-
This last command runs the script
|
51
|
-
the link editor is in
|
50
|
+
This last command runs the script ``plink/app.py``; the real code for
|
51
|
+
the link editor is in ``plink/__init__.py``.
|
52
52
|
|
53
53
|
- Build and install Spherogram::
|
54
54
|
|
@@ -74,17 +74,13 @@ Here is how to get a clean development setup under macOS.
|
|
74
74
|
|
75
75
|
Some major parts of the SnapPy codebase are:
|
76
76
|
|
77
|
-
-
|
77
|
+
- ``SnapPy.pyx``, ``SnapPycore.pxi``, ``SnapPy.pxi``: The Cython interface
|
78
78
|
to the SnapPea kernel
|
79
|
-
-
|
80
|
-
-
|
81
|
-
-
|
82
|
-
-
|
83
|
-
-
|
84
|
-
|
85
|
-
In addition, Jeff's old prototype for a Tk-based UI can be found in
|
86
|
-
"misc/JeffsOldUI/SnapPeaGUI.py"; just run Python on this file to try it
|
87
|
-
out, after installing `PythonMegaWidgets <http://pmw.sf.net>`_.
|
79
|
+
- ``opengl/CyOpenGL*.pyx``: The Cython interface to OpenGL*
|
80
|
+
- ``snappy/app.py``: The core GUI code
|
81
|
+
- ``snappy/polyviewer.py``: The GUI code for Dirichlet domains
|
82
|
+
- ``snappy/horoviewer.py``: The GUI code for horoball pictures
|
83
|
+
- ``snappy/database.py``: Interacts with the sqlite3 manifold database
|
88
84
|
|
89
85
|
|
90
86
|
Windows
|
@@ -95,12 +91,13 @@ setting up a development environment using the (free) MSVC
|
|
95
91
|
compiler. To build the CyPari subcomponent, which few will want or
|
96
92
|
need to do, one must install additional tools.
|
97
93
|
|
98
|
-
- Install `Python 3.
|
99
|
-
specifically the
|
94
|
+
- Install `Python 3.13.1
|
95
|
+
<https://www.python.org/downloads/windows/>`_, specifically the
|
96
|
+
default 64-bit version (the file name will end in ``amd64.exe``).
|
100
97
|
These instructions assume it has been installed in the directory
|
101
|
-
``C:\
|
98
|
+
``C:\Python313`` which is not the default.
|
102
99
|
|
103
|
-
- With Python 3.
|
100
|
+
- With Python 3.13.1, you need the MSVC command line tools. You can
|
104
101
|
get them by using Microsoft's free `Build Tools for Visual Studio 2019
|
105
102
|
<https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16>`_
|
106
103
|
installer and selecting the "C++ command line tools" and installing
|
@@ -112,14 +109,12 @@ need to do, one must install additional tools.
|
|
112
109
|
`Inno Setup <http://www.jrsoftware.org/isdl.php>`_, specifically the
|
113
110
|
unicode version; tested with version 5.5.9.
|
114
111
|
|
115
|
-
- Install
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
the webpage to update everything to the very latest MSYS2
|
122
|
-
(``pacman -Sy pacman; pacman -Syu; pacman -Su`` etc.).
|
112
|
+
- Install `MSYS2 <http://msys2.github.io>`_ as appropriate for your
|
113
|
+
version Windows. Follow the instructions on the webpage to update
|
114
|
+
everything to the very latest MSYS2 (``pacman -Sy pacman; pacman
|
115
|
+
-Syu; pacman -Su`` etc.). You should also install the ucrt toolchain::
|
116
|
+
|
117
|
+
pacman -S mingw-w64-ucrt-x86_64-toolchain
|
123
118
|
|
124
119
|
- Make a shortcut to ``c:\msys64\msys2.exe`` as you will be using it all
|
125
120
|
the time; alternatively, pin ``mys2.exe`` to your taskbar.
|
@@ -137,7 +132,7 @@ need to do, one must install additional tools.
|
|
137
132
|
as well as work around some stupid bug, by making the end of your
|
138
133
|
"~/.bash_profile" file to read::
|
139
134
|
|
140
|
-
PATH=/c/
|
135
|
+
PATH=/c/Python313:/c/Python313/Scripts:$PATH
|
141
136
|
PATH=$PATH:'/c/Program Files (x86)/Inno Setup 5'
|
142
137
|
export PATH
|
143
138
|
alias emacs="/mingw64/bin/emacs"
|
@@ -152,7 +147,7 @@ need to do, one must install additional tools.
|
|
152
147
|
|
153
148
|
python --version
|
154
149
|
|
155
|
-
You should see something like ``Python 3.
|
150
|
+
You should see something like ``Python 3.13.1``.
|
156
151
|
|
157
152
|
- Use pip to install some basic tools::
|
158
153
|
|
@@ -212,28 +207,53 @@ need to do, one must install additional tools.
|
|
212
207
|
mklink /D Downloads "C:\Users\Nathan Dunfield\Downloads"
|
213
208
|
|
214
209
|
|
215
|
-
|
210
|
+
Linux
|
211
|
+
-----
|
216
212
|
|
217
|
-
|
213
|
+
Things you'll need:
|
218
214
|
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
215
|
+
- Python 3 with Tkinter: You'll need to have `Python
|
216
|
+
<http://python.org>`_ (version 3.9 or newer) and `Tk
|
217
|
+
<http://tcl.tk>`_ (at least version 8.5) with `Tkinter
|
218
|
+
<http://wiki.python.org/moin/TkInter>`_ to connect them, including
|
219
|
+
the header files. For instance, on Debian or Ubuntu, install the
|
220
|
+
packages "python3-tk", "python3-pip", and "python3-dev". On Fedora,
|
221
|
+
you'll want e.g. "python3-tkinter", "python3-pip", and
|
222
|
+
"python3-devel", and "python3-wheel".
|
223
223
|
|
224
|
-
|
225
|
-
cd CyPari
|
226
|
-
sh build_pari.sh
|
227
|
-
python setup.py build --compiler=mingw32
|
228
|
-
python setup.py install
|
229
|
-
python -m cypari.test # About 30 tests will fail.
|
224
|
+
- Test that Python is in order by installing PLink from source::
|
230
225
|
|
231
|
-
|
232
|
-
the
|
226
|
+
python3 -m pip install --user plink
|
227
|
+
python3 -m plink.app # Should start the link editor!
|
233
228
|
|
229
|
+
.. _openglmesa:
|
234
230
|
|
235
|
-
|
236
|
-
|
231
|
+
- Support for OpenGL (3D graphics): This is built in on OS X and the
|
232
|
+
most installations of Fedora and Ubuntu. But you'll need the `MESA
|
233
|
+
<http://www.mesa3d.org/>`_ header files "gl.h" and "glu.h" to compile
|
234
|
+
SnapPy. On Debian and Ubuntu, install "libglu1-mesa-dev"; On Fedora install
|
235
|
+
"mesa-libGLU-devel".
|
236
|
+
|
237
|
+
- `Cython <http://cython.org>`_, which you can install via::
|
238
|
+
|
239
|
+
python3 -m pip install --user cython
|
240
|
+
|
241
|
+
- The gcc C++ compiler, g++.
|
242
|
+
|
243
|
+
- Fetch the latest development versions of the source straight from
|
244
|
+
the repository::
|
237
245
|
|
238
|
-
|
239
|
-
|
246
|
+
git clone https://github.com/3-manifolds/PLink.git
|
247
|
+
git clone https://github.com/3-manifolds/Spherogram.git
|
248
|
+
git clone https://github.com/3-manifolds/Snappy.git
|
249
|
+
|
250
|
+
- Build the components, from easiest to hardest, and then test::
|
251
|
+
|
252
|
+
cd PLink
|
253
|
+
python setup.py pip_install
|
254
|
+
cd ../Spherogram
|
255
|
+
python setup.py pip_install
|
256
|
+
cd ../SnapPy
|
257
|
+
python setup.py pip_install
|
258
|
+
cd ..
|
259
|
+
python -m SnapPy.test
|
@@ -27,7 +27,78 @@ it, and watch the :doc:`tutorial<tutorial>`.
|
|
27
27
|
News
|
28
28
|
====
|
29
29
|
|
30
|
-
* Version 3.
|
30
|
+
* Version 3.2 (January 2025):
|
31
|
+
|
32
|
+
- An alternative implementation of the length spectrum. It supports verified
|
33
|
+
computations and is significantly faster in some cases. See
|
34
|
+
:meth:`length_spectrum_alt <snappy.Manifold.length_spectrum_alt>`
|
35
|
+
and
|
36
|
+
:meth:`length_spectrum_alt_gen <snappy.Manifold.length_spectrum_alt_gen>`.
|
37
|
+
|
38
|
+
- :meth:`isometry_signature <snappy.Manifold.isometry_signature>` now also
|
39
|
+
works for closed manifolds.
|
40
|
+
|
41
|
+
- A paper plane or eye ball in the
|
42
|
+
:meth:`inside_view <snappy.Manifold.inside_view>` showing the position
|
43
|
+
and bearing of the user in the hyperbolic manifold. By default, we now show
|
44
|
+
the paper plane instead of the edges of the triangulation so that the view
|
45
|
+
is intrinsic to the manifold. The geodesics window now also features a
|
46
|
+
button to put the camera onto a geodesic. Here are some examples:
|
47
|
+
|
48
|
+
.. list-table::
|
49
|
+
:width: 100%
|
50
|
+
:class: borderless
|
51
|
+
|
52
|
+
* - .. image:: images/o9_00000_systole_paper_plane.jpg
|
53
|
+
:width: 90%
|
54
|
+
:align: center
|
55
|
+
:alt: Paper plane near shortest geodesic of o9_00000
|
56
|
+
- .. image:: images/o9_00000_systole_paper_plane_closer.jpg
|
57
|
+
:width: 90%
|
58
|
+
:align: center
|
59
|
+
:alt: Paper plane very near shortest geodesic of o9_00000
|
60
|
+
- .. image:: images/m004_paper_plane_on_systole.jpg
|
61
|
+
:width: 90%
|
62
|
+
:align: center
|
63
|
+
:alt: Paper plane on shortest geodesic of m004
|
64
|
+
- .. image:: images/m125_paper_plane.jpg
|
65
|
+
:width: 90%
|
66
|
+
:align: center
|
67
|
+
:alt: Paper plane coming out of a cusp of m125
|
68
|
+
|
69
|
+
- A faster and more robust algorithm to the compute maximal cusp area matrix.
|
70
|
+
The new algorithm is now the default for
|
71
|
+
:meth:`~snappy.Manifold.cusp_area_matrix`,
|
72
|
+
:meth:`~snappy.Manifold.cusp_areas`,
|
73
|
+
:meth:`~snappy.Manifold.short_slopes` and
|
74
|
+
:meth:`~snappy.Manifold.cusp_translations`.
|
75
|
+
|
76
|
+
- New options ``ignore_curves`` and ``ignore_filling_orientations``
|
77
|
+
for :meth:`~snappy.Triangulation.triangulation_isosig`. Also
|
78
|
+
fixing a subtle bug where the filling coefficients returned by
|
79
|
+
:meth:`triangulation_isosig <snappy.Triangulation.triangulation_isosig>` were
|
80
|
+
not canonical when ``ignore_curve_orientations = True``.
|
81
|
+
|
82
|
+
- :meth:`~snappy.Manifold.canonical_retriangulation`
|
83
|
+
and
|
84
|
+
:meth:`~snappy.Manifold.isometry_signature` fail with
|
85
|
+
exceptions rather than silently returning ``None``. In particular, it now
|
86
|
+
safe to compare isometry signatures (without further checks) to determine
|
87
|
+
whether M and N are isometric hyperbolic manifolds::
|
88
|
+
|
89
|
+
>>> M.isometry_signature(verified=True) == N.isometry_signature(verified=True)
|
90
|
+
|
91
|
+
- Bug fix to :meth:`slice_obstruction_HKL
|
92
|
+
<snappy.Manifold.slice_obstruction_HKL>`: earlier versions
|
93
|
+
incorrectly allowed looking at mod 2 homology of the branched
|
94
|
+
cover, where the theory does not directly apply.
|
95
|
+
|
96
|
+
- New self-contained SnapPy application for Linux.
|
97
|
+
|
98
|
+
- Support for Python 3.13 and SageMath 10.5.
|
99
|
+
|
100
|
+
|
101
|
+
* Versions 3.1 (May 2023) and 3.1.1 (June 2023):
|
31
102
|
|
32
103
|
- A method :meth:`exterior_to_link <snappy.Manifold.exterior_to_link>`
|
33
104
|
for going from a link exterior to a link diagram taken from
|
@@ -65,10 +136,6 @@ News
|
|
65
136
|
|
66
137
|
- Modernized styling of the documentation.
|
67
138
|
|
68
|
-
* Version 3.0.3 (December 2021):
|
69
|
-
|
70
|
-
- Runs natively on Macs with Apple Silicon processors (M1, M2, and variants).
|
71
|
-
|
72
139
|
* :doc:`Complete version history <news>`.
|
73
140
|
|
74
141
|
Documentation
|