regina 7.4.1__cp314-cp314-macosx_10_13_x86_64.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 (186) hide show
  1. regina/.dylibs/libgmp.10.dylib +0 -0
  2. regina/.dylibs/libgmpxx.4.dylib +0 -0
  3. regina/__init__.py +192 -0
  4. regina/engine.cpython-314-darwin.so +0 -0
  5. regina/plainCompleter.py +221 -0
  6. regina/pyCensus/__init__.py +14 -0
  7. regina/pyCensus/christy-knots-links.tdb +0 -0
  8. regina/pyCensus/closed-hyp-census-full.tdb +0 -0
  9. regina/pyCensus/closed-nor-census-11.tdb +0 -0
  10. regina/pyCensus/closed-or-census-11.tdb +0 -0
  11. regina/pyCensus/cusped-hyp-nor-census-9.tdb +0 -0
  12. regina/pyCensus/cusped-hyp-or-census-9.tdb +0 -0
  13. regina/sageRegina/__init__.py +2 -0
  14. regina/sageRegina/config.py +9 -0
  15. regina/sageRegina/test.py +131 -0
  16. regina/sageRegina/testsuite/CMakeLists.txt +64 -0
  17. regina/sageRegina/testsuite/O2_1.rga +15 -0
  18. regina/sageRegina/testsuite/O2_1.tri +28 -0
  19. regina/sageRegina/testsuite/README.txt +21 -0
  20. regina/sageRegina/testsuite/alltypes-exc.out +698 -0
  21. regina/sageRegina/testsuite/alltypes-exc.test +92 -0
  22. regina/sageRegina/testsuite/alltypes-noexc.out +698 -0
  23. regina/sageRegina/testsuite/alltypes-noexc.test +85 -0
  24. regina/sageRegina/testsuite/alltypes.out +698 -0
  25. regina/sageRegina/testsuite/alltypes.test +85 -0
  26. regina/sageRegina/testsuite/angles.out +102 -0
  27. regina/sageRegina/testsuite/angles.test +70 -0
  28. regina/sageRegina/testsuite/arrow.out +86 -0
  29. regina/sageRegina/testsuite/arrow.test +224 -0
  30. regina/sageRegina/testsuite/base64.out +2 -0
  31. regina/sageRegina/testsuite/base64.test +37 -0
  32. regina/sageRegina/testsuite/basic_callback.out +124 -0
  33. regina/sageRegina/testsuite/basic_sub.out +7 -0
  34. regina/sageRegina/testsuite/binom.out +14 -0
  35. regina/sageRegina/testsuite/binom.test +69 -0
  36. regina/sageRegina/testsuite/bool.out +6 -0
  37. regina/sageRegina/testsuite/bool.test +62 -0
  38. regina/sageRegina/testsuite/bytes.out +17 -0
  39. regina/sageRegina/testsuite/bytes.test +76 -0
  40. regina/sageRegina/testsuite/callbacks.out +515 -0
  41. regina/sageRegina/testsuite/callbacks.test +279 -0
  42. regina/sageRegina/testsuite/census.out +120 -0
  43. regina/sageRegina/testsuite/census.test +156 -0
  44. regina/sageRegina/testsuite/clone.out +18 -0
  45. regina/sageRegina/testsuite/clone.test +99 -0
  46. regina/sageRegina/testsuite/comparison.out +41 -0
  47. regina/sageRegina/testsuite/comparison.test +47 -0
  48. regina/sageRegina/testsuite/construction.out +120 -0
  49. regina/sageRegina/testsuite/construction.test +63 -0
  50. regina/sageRegina/testsuite/constructors.out +14 -0
  51. regina/sageRegina/testsuite/constructors.test +95 -0
  52. regina/sageRegina/testsuite/cube.orb +87 -0
  53. regina/sageRegina/testsuite/discs.out +3 -0
  54. regina/sageRegina/testsuite/discs.test +38 -0
  55. regina/sageRegina/testsuite/docstrings.filter +22 -0
  56. regina/sageRegina/testsuite/docstrings.out +802 -0
  57. regina/sageRegina/testsuite/docstrings.out.v2 +799 -0
  58. regina/sageRegina/testsuite/docstrings.test +55 -0
  59. regina/sageRegina/testsuite/dodec.orb +309 -0
  60. regina/sageRegina/testsuite/embeddings.out +23 -0
  61. regina/sageRegina/testsuite/embeddings.test +87 -0
  62. regina/sageRegina/testsuite/enumerate.out +62 -0
  63. regina/sageRegina/testsuite/enumerate.test +80 -0
  64. regina/sageRegina/testsuite/equality.out +112 -0
  65. regina/sageRegina/testsuite/equality.test +308 -0
  66. regina/sageRegina/testsuite/euler.out +15 -0
  67. regina/sageRegina/testsuite/euler.test +93 -0
  68. regina/sageRegina/testsuite/exception.out +7 -0
  69. regina/sageRegina/testsuite/exception.test +98 -0
  70. regina/sageRegina/testsuite/facenumbering.out +546 -0
  71. regina/sageRegina/testsuite/facenumbering.test +72 -0
  72. regina/sageRegina/testsuite/faces.out +40 -0
  73. regina/sageRegina/testsuite/faces.test +70 -0
  74. regina/sageRegina/testsuite/file.out +1229 -0
  75. regina/sageRegina/testsuite/file.test +68 -0
  76. regina/sageRegina/testsuite/file1.rga +0 -0
  77. regina/sageRegina/testsuite/file2.rga +0 -0
  78. regina/sageRegina/testsuite/file3.rga +119 -0
  79. regina/sageRegina/testsuite/flags.out +38 -0
  80. regina/sageRegina/testsuite/flags.out.v2 +38 -0
  81. regina/sageRegina/testsuite/flags.test +81 -0
  82. regina/sageRegina/testsuite/flype.out +37 -0
  83. regina/sageRegina/testsuite/flype.test +48 -0
  84. regina/sageRegina/testsuite/generic.out +116 -0
  85. regina/sageRegina/testsuite/generic.test +74 -0
  86. regina/sageRegina/testsuite/groups.out +70 -0
  87. regina/sageRegina/testsuite/groups.test +115 -0
  88. regina/sageRegina/testsuite/hash.out +66 -0
  89. regina/sageRegina/testsuite/hash.test +84 -0
  90. regina/sageRegina/testsuite/hypersurfaces.out +681 -0
  91. regina/sageRegina/testsuite/hypersurfaces.test +89 -0
  92. regina/sageRegina/testsuite/i18n-latin1.rga +8 -0
  93. regina/sageRegina/testsuite/i18n-utf8.rga +8 -0
  94. regina/sageRegina/testsuite/i18n.out +6 -0
  95. regina/sageRegina/testsuite/i18n.test +89 -0
  96. regina/sageRegina/testsuite/id.out +2 -0
  97. regina/sageRegina/testsuite/id.test +45 -0
  98. regina/sageRegina/testsuite/index.out +2 -0
  99. regina/sageRegina/testsuite/index.test +41 -0
  100. regina/sageRegina/testsuite/integer.out +74 -0
  101. regina/sageRegina/testsuite/integer.test +54 -0
  102. regina/sageRegina/testsuite/italian.orb +90 -0
  103. regina/sageRegina/testsuite/iterators.out +118 -0
  104. regina/sageRegina/testsuite/iterators.test +126 -0
  105. regina/sageRegina/testsuite/knotted-Y.orb +47 -0
  106. regina/sageRegina/testsuite/listener.out +43 -0
  107. regina/sageRegina/testsuite/listener.test +99 -0
  108. regina/sageRegina/testsuite/listview.out +416 -0
  109. regina/sageRegina/testsuite/listview.test +251 -0
  110. regina/sageRegina/testsuite/lookup.out +13 -0
  111. regina/sageRegina/testsuite/lookup.test +42 -0
  112. regina/sageRegina/testsuite/lst.out +844 -0
  113. regina/sageRegina/testsuite/lst.test +195 -0
  114. regina/sageRegina/testsuite/memory1.out +62 -0
  115. regina/sageRegina/testsuite/memory1.test +152 -0
  116. regina/sageRegina/testsuite/memory2.out +62 -0
  117. regina/sageRegina/testsuite/memory2.test +122 -0
  118. regina/sageRegina/testsuite/memory3.out +92 -0
  119. regina/sageRegina/testsuite/memory3.test +214 -0
  120. regina/sageRegina/testsuite/misc.out +7 -0
  121. regina/sageRegina/testsuite/misc.test +54 -0
  122. regina/sageRegina/testsuite/operators.out +129 -0
  123. regina/sageRegina/testsuite/operators.test +59 -0
  124. regina/sageRegina/testsuite/orb.out +441 -0
  125. regina/sageRegina/testsuite/orb.test +47 -0
  126. regina/sageRegina/testsuite/pdf.out +4 -0
  127. regina/sageRegina/testsuite/pdf.test +47 -0
  128. regina/sageRegina/testsuite/perm.out +36 -0
  129. regina/sageRegina/testsuite/perm.test +74 -0
  130. regina/sageRegina/testsuite/plantri.out +12 -0
  131. regina/sageRegina/testsuite/plantri.test +58 -0
  132. regina/sageRegina/testsuite/poincare.tri +55 -0
  133. regina/sageRegina/testsuite/presentations.out +11 -0
  134. regina/sageRegina/testsuite/presentations.test +59 -0
  135. regina/sageRegina/testsuite/refs.out +51 -0
  136. regina/sageRegina/testsuite/refs.test +126 -0
  137. regina/sageRegina/testsuite/repr.out +951 -0
  138. regina/sageRegina/testsuite/repr.out.v2 +951 -0
  139. regina/sageRegina/testsuite/repr.test +546 -0
  140. regina/sageRegina/testsuite/runbasic.in +75 -0
  141. regina/sageRegina/testsuite/safeheldtype_basic.out +17 -0
  142. regina/sageRegina/testsuite/safeheldtype_basic.test +111 -0
  143. regina/sageRegina/testsuite/safeheldtype_packet.out +58 -0
  144. regina/sageRegina/testsuite/safeheldtype_packet.test +179 -0
  145. regina/sageRegina/testsuite/sample.pdf +0 -0
  146. regina/sageRegina/testsuite/sets.out +7 -0
  147. regina/sageRegina/testsuite/sets.test +42 -0
  148. regina/sageRegina/testsuite/skeleton.out +308 -0
  149. regina/sageRegina/testsuite/skeleton.test +52 -0
  150. regina/sageRegina/testsuite/snappea.out +90 -0
  151. regina/sageRegina/testsuite/snappea.test +133 -0
  152. regina/sageRegina/testsuite/snapshot.out +15 -0
  153. regina/sageRegina/testsuite/snapshot.test +76 -0
  154. regina/sageRegina/testsuite/sort.out +78 -0
  155. regina/sageRegina/testsuite/sort.test +58 -0
  156. regina/sageRegina/testsuite/special.out +4 -0
  157. regina/sageRegina/testsuite/special.test +45 -0
  158. regina/sageRegina/testsuite/standardtri.out +12101 -0
  159. regina/sageRegina/testsuite/standardtri.test +453 -0
  160. regina/sageRegina/testsuite/surfaces.out +2133 -0
  161. regina/sageRegina/testsuite/surfaces.test +112 -0
  162. regina/sageRegina/testsuite/swapping.out +25 -0
  163. regina/sageRegina/testsuite/swapping.test +86 -0
  164. regina/sageRegina/testsuite/testall.in +174 -0
  165. regina/sageRegina/testsuite/testbasic.in +277 -0
  166. regina/sageRegina/testsuite/testcallback.in +148 -0
  167. regina/sageRegina/testsuite/testsub.in +148 -0
  168. regina/sageRegina/testsuite/theta_in_solid_torus.orb +65 -0
  169. regina/sageRegina/testsuite/tightencode.out +40 -0
  170. regina/sageRegina/testsuite/tightencode.test +106 -0
  171. regina/sageRegina/testsuite/treedecomp.out +135 -0
  172. regina/sageRegina/testsuite/treedecomp.test +64 -0
  173. regina/sageRegina/testsuite/treetraversal.out +52 -0
  174. regina/sageRegina/testsuite/treetraversal.test +188 -0
  175. regina/sageRegina/testsuite/trigeneral.out +1251 -0
  176. regina/sageRegina/testsuite/trigeneral.test +153 -0
  177. regina/sageRegina/testsuite/utf8.out +42 -0
  178. regina/sageRegina/testsuite/utf8.test +92 -0
  179. regina/sageRegina/testsuite/whitehead.tri +47 -0
  180. regina/sageRegina/version.py +5 -0
  181. regina/sageSetup.py +41 -0
  182. regina/test.py +6 -0
  183. regina-7.4.1.dist-info/METADATA +109 -0
  184. regina-7.4.1.dist-info/RECORD +186 -0
  185. regina-7.4.1.dist-info/WHEEL +6 -0
  186. regina-7.4.1.dist-info/top_level.txt +4 -0
@@ -0,0 +1,153 @@
1
+ # Regina - A Normal Surface Theory Calculator
2
+ # Python Test Suite Component
3
+ #
4
+ # Copyright (c) 2007-2025, Ben Burton
5
+ # For further details contact Ben Burton (bab@debian.org).
6
+ #
7
+ # Provides more thorough tests for different types of triangulation.
8
+ #
9
+ # This file is a single component of Regina's python test suite. To run
10
+ # the python test suite, move to the main python directory in the source
11
+ # tree and run "make check".
12
+ #
13
+ # This program is free software; you can redistribute it and/or
14
+ # modify it under the terms of the GNU General Public License as
15
+ # published by the Free Software Foundation; either version 2 of the
16
+ # License, or (at your option) any later version.
17
+ #
18
+ # As an exception, when this program is distributed through (i) the
19
+ # App Store by Apple Inc.; (ii) the Mac App Store by Apple Inc.; or
20
+ # (iii) Google Play by Google Inc., then that store may impose any
21
+ # digital rights management, device limits and/or redistribution
22
+ # restrictions that are required by its terms of service.
23
+ #
24
+ # This program is distributed in the hope that it will be useful, but
25
+ # WITHOUT ANY WARRANTY; without even the implied warranty of
26
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
27
+ # General Public License for more details.
28
+ #
29
+ # You should have received a copy of the GNU General Public License
30
+ # along with this program. If not, see <https://www.gnu.org/licenses/>.
31
+
32
+ import hashlib
33
+
34
+ def checksum(str):
35
+ h = hashlib.md5()
36
+ h.update(str.encode('utf-8'))
37
+ return h.hexdigest()
38
+
39
+ def vitalStats(tri, name):
40
+ # To guard against accidental changes.
41
+ old = tri.detail()
42
+
43
+ print("-------------------------------")
44
+ print(name)
45
+ print("-------------------------------")
46
+ print()
47
+ print(tri.detail())
48
+ print(tri.countComponents(), "components")
49
+ print(tri.countBoundaryComponents(), "boundary components")
50
+ print(tri.countTetrahedra(), "tetrahedra")
51
+ print(tri.countTriangles(), "triangles")
52
+ print(tri.countEdges(), "edges")
53
+ print(tri.countVertices(), "vertices")
54
+ print("2-sphere boundaries:", tri.hasTwoSphereBoundaryComponents())
55
+ print("Negative ideal boundaries:", tri.hasNegativeIdealBoundaryComponents())
56
+ print("EC:", tri.eulerCharTri())
57
+ print("Valid:", tri.isValid())
58
+ print("Ideal:", tri.isIdeal())
59
+ print("Standard:", tri.isStandard())
60
+ print("Boundary Triangles:", tri.hasBoundaryTriangles())
61
+ print("Closed:", tri.isClosed())
62
+ print("Orientable:", tri.isOrientable())
63
+ print("Connected:", tri.isConnected())
64
+ print()
65
+ print("Fundamental group:", tri.fundamentalGroup().recogniseGroup())
66
+ # Don't print the full generators and relations for now, since this
67
+ # is not unique and can therefore lead to spurious test failures.
68
+ # print tri.fundamentalGroup().detail()
69
+ print("H1:", tri.homology())
70
+ if tri.isValid():
71
+ print("H1Bdry:", tri.homologyBdry())
72
+ print("H1Rel:", tri.homologyRel())
73
+ print("H2:", tri.homology(2))
74
+ print("H2Z2:", tri.homologyH2Z2(), "Z_2")
75
+ if tri.isValid() and tri.isClosed() and tri.countTetrahedra() > 0:
76
+ print("TV(5, 3) =", tri.turaevViro(5, 3))
77
+
78
+ tv = tri.turaevViroApprox(5, 3)
79
+
80
+ # We round the figures to 5 decimal places so that machines with
81
+ # different precisions do not give different output.
82
+
83
+ # The case of 0 must also be handled specially, since rounding
84
+ # may give either 0 or -0.
85
+
86
+ if tv < 0.00001 and tv > -0.00001:
87
+ tv = 0
88
+ print("TV(5, 3) ~ %.5f" % tv)
89
+
90
+ # Normal surface computations should only be run on sufficiently
91
+ # small triangulations, so as to keep the tests relatively fast.
92
+ if tri.countTetrahedra() < 7:
93
+ print("0-efficient:", tri.isZeroEfficient())
94
+ if tri.isConnected():
95
+ print("Splitting surface:", tri.hasSplittingSurface())
96
+
97
+ # Though this can use normal surfaces, its prechecks and
98
+ # optimisations should make it fast enough for our examples.
99
+ print("3-sphere:", tri.isSphere())
100
+
101
+ # Some of the following operations can create large triangulations,
102
+ # which give *lots* of output when we try to dump their face gluings
103
+ # and skeletal details. We'd like to keep the output files small,
104
+ # so dump checksums of the details instead of the details themselves.
105
+ print("Double cover:")
106
+ t = regina.Triangulation3(tri)
107
+ t.makeDoubleCover()
108
+ print("Checksum =", checksum(t.detail()))
109
+
110
+ print("Ideal to finite:")
111
+ t = regina.Triangulation3(tri)
112
+ print("Result =", t.truncateIdeal())
113
+ print("Checksum =", checksum(t.detail()))
114
+
115
+ print("Finite to ideal:")
116
+ t = regina.Triangulation3(tri)
117
+ print("Result =", t.makeIdeal())
118
+ print("Checksum =", checksum(t.detail()))
119
+
120
+ print("Barycentric subdivision:")
121
+ t = regina.Triangulation3(tri)
122
+ t.subdivide()
123
+ print("Checksum =", checksum(t.detail()))
124
+
125
+ try:
126
+ print("Dehydration:", tri.dehydrate())
127
+ except NotImplemented:
128
+ print("Dehydration: (none)")
129
+ print("Isomorphism signature:", tri.isoSig())
130
+ print("Result of splitIntoComponents:", len(tri.triangulateComponents()))
131
+
132
+ if tri.detail() != old:
133
+ print("ERROR: Original triangulation has changed!")
134
+
135
+ print()
136
+
137
+ t = regina.Triangulation3()
138
+ vitalStats(t, 'Empty triangulation')
139
+
140
+ vitalStats(regina.Example3.threeSphere(), '3-sphere')
141
+ vitalStats(regina.Example3.s2xs1(), 'S2 x S1')
142
+ vitalStats(regina.Example3.rp2xs1(), 'RP2 x S1')
143
+ vitalStats(regina.Example3.rp3rp3(), 'RP3 # RP3')
144
+ vitalStats(regina.Example3.lens(8,3), 'L(8,3)')
145
+ vitalStats(regina.Example3.poincare(), 'Poincare homology sphere')
146
+ vitalStats(regina.Example3.smallClosedOrblHyperbolic(), 'Closed orientable hyperbolic 3-manifold')
147
+ vitalStats(regina.Example3.smallClosedNonOrblHyperbolic(), 'Closed non-orientable hyperbolic 3-manifold')
148
+ vitalStats(regina.Example3.lst(3,4), 'LST(3,4,7)')
149
+ vitalStats(regina.Example3.solidKleinBottle(), 'Solid Klein bottle')
150
+ vitalStats(regina.Example3.figureEight(), 'Figure eight knot complement')
151
+ vitalStats(regina.Example3.whiteheadLink(), 'Whitehead link complement')
152
+ vitalStats(regina.Example3.gieseking(), 'Gieseking manifold')
153
+ vitalStats(regina.Example3.cuspedGenusTwoTorus(), 'Cusped genus two solid torus')
@@ -0,0 +1,42 @@
1
+ 3 Z
2
+ 3 Z
3
+ 3 ℤ
4
+ 3 Z
5
+
6
+ 3 Z + Z_17
7
+ 3 Z + Z_17
8
+ 3 ℤ + ℤ₁₇
9
+ 3 Z + Z_17
10
+
11
+ 2 Z (Z^2 -> Z^2 -> Z^2)
12
+ 2 Z (Z^2 -> Z^2 -> Z^2)
13
+ 2 ℤ (ℤ² → ℤ² → ℤ²)
14
+ 2 Z (Z^2 -> Z^2 -> Z^2)
15
+
16
+ Z + Z_23 (Z^2 -> Z^2 -> Z^2)
17
+ Z + Z_23 (Z^2 -> Z^2 -> Z^2)
18
+ ℤ + ℤ₂₃ (ℤ² → ℤ² → ℤ²)
19
+ Z + Z_23 (Z^2 -> Z^2 -> Z^2)
20
+
21
+ - x^3 + 4 x - 2
22
+ - x^3 + 4 x - 2
23
+ - z^3 + 4 z - 2
24
+ - x³ + 4 x - 2
25
+ - z³ + 4 z - 2
26
+ 3 x^4 - x
27
+ 3 x^4 - x
28
+ 3 z^4 - z
29
+ 3 x⁴ - x
30
+ 3 z⁴ - z
31
+ x^4 + 2 x^-3
32
+ x^4 + 2 x^-3
33
+ z^4 + 2 z^-3
34
+ x⁴ + 2 x⁻³
35
+ z⁴ + 2 z⁻³
36
+ 4 y^-3 + x^-1 y^2
37
+ 4 y^-3 + x^-1 y^2
38
+ 4 y^-3 + z^-1 y^2
39
+ 4 w^-3 + z^-1 w^2
40
+ 4 y⁻³ + x⁻¹ y²
41
+ 4 y⁻³ + z⁻¹ y²
42
+ 4 w⁻³ + z⁻¹ w²
@@ -0,0 +1,92 @@
1
+ # Regina - A Normal Surface Theory Calculator
2
+ # Python Test Suite Component
3
+ #
4
+ # Copyright (c) 2007-2025, Ben Burton
5
+ # For further details contact Ben Burton (bab@debian.org).
6
+ #
7
+ # Provides detailed tests for UTF-8 representations of various objects.
8
+ #
9
+ # This file is a single component of Regina's python test suite. To run
10
+ # the python test suite, move to the main python directory in the source
11
+ # tree and run "make check".
12
+ #
13
+ # This program is free software; you can redistribute it and/or
14
+ # modify it under the terms of the GNU General Public License as
15
+ # published by the Free Software Foundation; either version 2 of the
16
+ # License, or (at your option) any later version.
17
+ #
18
+ # As an exception, when this program is distributed through (i) the
19
+ # App Store by Apple Inc.; (ii) the Mac App Store by Apple Inc.; or
20
+ # (iii) Google Play by Google Inc., then that store may impose any
21
+ # digital rights management, device limits and/or redistribution
22
+ # restrictions that are required by its terms of service.
23
+ #
24
+ # This program is distributed in the hope that it will be useful, but
25
+ # WITHOUT ANY WARRANTY; without even the implied warranty of
26
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
27
+ # General Public License for more details.
28
+ #
29
+ # You should have received a copy of the GNU General Public License
30
+ # along with this program. If not, see <https://www.gnu.org/licenses/>.
31
+
32
+ g = AbelianGroup(3)
33
+ print(g)
34
+ print(g.str())
35
+ print(g.utf8())
36
+ print(g.detail())
37
+ g.addTorsion(17)
38
+ print(g)
39
+ print(g.str())
40
+ print(g.utf8())
41
+ print(g.detail())
42
+
43
+ m = MatrixInt(2, 2)
44
+ n = MatrixInt(2, 2)
45
+ g = MarkedAbelianGroup(m, n)
46
+ print(g)
47
+ print(g.str())
48
+ print(g.utf8())
49
+ print(g.detail())
50
+ n.set(0, 0, 23)
51
+ g = MarkedAbelianGroup(m, n)
52
+ print(g)
53
+ print(g.str())
54
+ print(g.utf8())
55
+ print(g.detail())
56
+
57
+ p = Polynomial()
58
+ p[3] = -1
59
+ p[1] = 4
60
+ p[0] = -2
61
+ print(p)
62
+ print(p.str())
63
+ print(p.str('z'))
64
+ print(p.utf8())
65
+ print(p.utf8('z'))
66
+
67
+ p = Cyclotomic(7)
68
+ p[4] = 3
69
+ p[1] = -1
70
+ print(p)
71
+ print(p.str())
72
+ print(p.str('z'))
73
+ print(p.utf8())
74
+ print(p.utf8('z'))
75
+
76
+ p = Laurent(4)
77
+ p[-3] = 2
78
+ print(p)
79
+ print(p.str())
80
+ print(p.str('z'))
81
+ print(p.utf8())
82
+ print(p.utf8('z'))
83
+
84
+ p = Laurent2(-1, 2)
85
+ p[0, -3] = 4
86
+ print(p)
87
+ print(p.str())
88
+ print(p.str('z'))
89
+ print(p.str('z', 'w'))
90
+ print(p.utf8())
91
+ print(p.utf8('z'))
92
+ print(p.utf8('z', 'w'))
@@ -0,0 +1,47 @@
1
+ % Triangulation
2
+ m129
3
+ geometric_solution 3.66386238
4
+ oriented_manifold
5
+ CS_unknown
6
+
7
+ 2 0
8
+ torus 0.000000000000 0.000000000000
9
+ torus 0.000000000000 0.000000000000
10
+
11
+ 4
12
+ 1 2 3 1
13
+ 0132 0132 0132 3201
14
+ 0 1 0 1
15
+ 0 1 -1 0 -1 0 1 0 0 0 0 0 0 0 0 0
16
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
17
+ 0 -1 0 1 0 0 -1 1 -1 0 0 1 0 0 0 0
18
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
19
+ 1.000000000000 1.000000000000
20
+
21
+ 0 0 3 2
22
+ 0132 2310 3120 3120
23
+ 0 1 1 0
24
+ 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 0
25
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
26
+ 0 -1 1 0 0 0 0 0 0 -1 0 1 1 -1 0 0
27
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
28
+ 0.500000000000 0.500000000000
29
+
30
+ 1 0 3 3
31
+ 3120 0132 0213 3120
32
+ 0 1 1 0
33
+ 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
34
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
35
+ 0 1 0 -1 0 0 -1 1 -1 0 0 1 0 0 0 0
36
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
37
+ 0.500000000000 0.500000000000
38
+
39
+ 2 2 1 0
40
+ 3120 0213 3120 0132
41
+ 0 1 1 0
42
+ 0 -1 0 1 0 0 1 -1 0 0 0 0 0 0 0 0
43
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
44
+ 0 0 0 0 -1 0 0 1 -1 1 0 0 1 0 -1 0
45
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
46
+ 0.500000000000 0.500000000000
47
+
@@ -0,0 +1,5 @@
1
+ version = '7.4.1'
2
+ release_date = 'December 24, 2025'
3
+
4
+
5
+
regina/sageSetup.py ADDED
@@ -0,0 +1,41 @@
1
+ # Additional initialisation that takes place only when running Regina
2
+ # from within Sage:
3
+
4
+ from . import engine
5
+ import sage.all
6
+
7
+ # -------------------------------------------------------------------------
8
+ # Sage-related hacks implemented at the C++ level in Regina
9
+ # -------------------------------------------------------------------------
10
+
11
+ # These hacks include making pybind11 work with Sage's Integer type.
12
+ engine._addSageHacks()
13
+
14
+ # -------------------------------------------------------------------------
15
+ # Conversion from Regina objects to Sage objects
16
+ # -------------------------------------------------------------------------
17
+
18
+ from .engine import GroupPresentation
19
+
20
+ # Additional methods for GroupPresentation
21
+
22
+ # Follow convention that .sage() yields a representation of
23
+ # a mathematical object native to sage
24
+
25
+ def _convertRel(generators, rel):
26
+ return sage.all.prod([
27
+ generators[term.generator] ** term.exponent
28
+ for term in rel.terms()])
29
+
30
+ def _convertGroupPresentation(self):
31
+ """
32
+ Returns a Sage version of this finitely presented group.
33
+ """
34
+ F = sage.all.FreeGroup(self.countGenerators())
35
+ gens = F.generators()
36
+ rels = [
37
+ _convertRel(gens, self.relation(i))
38
+ for i in range(self.countRelations())]
39
+ return F/rels
40
+
41
+ GroupPresentation.sage = _convertGroupPresentation
regina/test.py ADDED
@@ -0,0 +1,6 @@
1
+ import sys
2
+ from .sageRegina.test import runTests
3
+
4
+ if __name__ == '__main__':
5
+ success = runTests()
6
+ sys.exit(not success)
@@ -0,0 +1,109 @@
1
+ Metadata-Version: 2.4
2
+ Name: regina
3
+ Version: 7.4.1
4
+ Summary: Regina-Normal
5
+ Home-page: http://github.com/3-manifolds/regina_wheels
6
+ Author: The Regina developers, Marc Culler, Nathan Dunfield, and Matthias Goerner
7
+ Author-email: snappy-help@computop.org
8
+ License: GPLv2+
9
+ Keywords: triangulations,topology
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Intended Audience :: Science/Research
12
+ Classifier: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)
13
+ Classifier: Operating System :: POSIX :: Linux
14
+ Classifier: Operating System :: MacOS :: MacOS X
15
+ Classifier: Programming Language :: C
16
+ Classifier: Programming Language :: C++
17
+ Classifier: Programming Language :: Python
18
+ Classifier: Programming Language :: Cython
19
+ Classifier: Topic :: Scientific/Engineering :: Mathematics
20
+ Requires-Python: >=3.6
21
+ Description-Content-Type: text/x-rst
22
+ Dynamic: author
23
+ Dynamic: author-email
24
+ Dynamic: classifier
25
+ Dynamic: description
26
+ Dynamic: description-content-type
27
+ Dynamic: home-page
28
+ Dynamic: keywords
29
+ Dynamic: license
30
+ Dynamic: requires-python
31
+ Dynamic: summary
32
+
33
+ Self-contained Python packages of Regina
34
+ ========================================
35
+
36
+ The program `Regina`_ is a powerful tool for studying low-dimensional
37
+ topology. It comes with a full `Python`_ interface that lets one
38
+ interact with it programmatically without writing any C++ code. Our
39
+ goal here is to provide self-contained binaries ("wheels") of Regina's
40
+ Python package that can be installed in seconds from Python's `PyPI`_
41
+ package repository using ``pip``.
42
+
43
+ It is offered for macOS (10.15 and newer) and Linux, but not
44
+ Windows. To try it out, do::
45
+
46
+ python3 -m pip install --user --upgrade "regina>=7.0"
47
+ python3 -m regina.test
48
+
49
+ On older versions of Linux, e.g. Ubuntu 18.04, you may need to update
50
+ ``pip`` first via::
51
+
52
+ python3 -m pip install --user --upgrade pip wheel
53
+
54
+ For more on using Regina in Python see the `main docs`_.
55
+
56
+ These binaries are produced and maintained by Marc Culler, Nathan
57
+ Dunfield, and Matthias Goerner, though of course 99.9% of the code and
58
+ credit is due to Ben Burton and the other authors of Regina
59
+ itself. This project evolved out of Goerner's `sageRegina`_
60
+ but works both with and without `SageMath`_. To install and test in
61
+ SageMath do the following in a terminal window::
62
+
63
+ sage -pip install --user --upgrade "regina>=7.0"
64
+ sage -python -m regina.test
65
+
66
+ One can also do this from **inside** SageMath (including from a
67
+ notebook) by::
68
+
69
+ sage: %pip install --user "regina>=7.0"
70
+ sage: import regina.test; regina.test.runTests()
71
+
72
+ Please report any technical problems via the `issue tracker`_ on the
73
+ `GitHub site`_ devoted to this repackaging of Regina.
74
+
75
+
76
+ Building from source
77
+ --------------------
78
+
79
+ If the available binaries do not work for you, you can try building
80
+ from source. You will need have the development versions of the
81
+ libraries gmp, zlib, and bzip2 installed::
82
+
83
+ git clone https://github.com/3-manifolds/regina_wheel
84
+ cd regina_wheel
85
+ python3 setup.py package_assemble
86
+ python3 setup.py bdist_wheel
87
+ python3 -m pip install dist/regina*.whl
88
+
89
+ This can easily take an hour or more.
90
+
91
+
92
+ License
93
+ -------
94
+
95
+ Copyright Ben Burton, Ryan Budney, William Pettersson, Marc Culler,
96
+ Nathan M. Dunfield, Matthias Goerner, and others 1999-present. This
97
+ code is released under the `GNU General Public License, version 2`_ or
98
+ (at your option) any later version as published by the Free Software
99
+ Foundation.
100
+
101
+ .. _Regina: https://regina-normal.github.io/
102
+ .. _Python: https://python.org
103
+ .. _PyPI: https://pypi.org
104
+ .. _main docs: https://regina-normal.github.io/#docs
105
+ .. _sageRegina: https://sageregina.unhyperbolic.org
106
+ .. _SageMath: https://sagemath.org
107
+ .. _issue tracker: https://github.com/3-manifolds/regina_wheels/issues
108
+ .. _GitHub site: https://github.com/3-manifolds/regina_wheels/
109
+ .. _GNU General Public License, version 2: https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt