mapFolding 0.9.3__py3-none-any.whl → 0.9.4__py3-none-any.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.
- mapFolding/Z0Z_flowControl.py +26 -8
- mapFolding/someAssemblyRequired/Z0Z_makeSomeModules.py +226 -0
- mapFolding/someAssemblyRequired/__init__.py +11 -1
- mapFolding/someAssemblyRequired/_theTypes.py +10 -4
- mapFolding/someAssemblyRequired/_tool_Make.py +8 -0
- mapFolding/someAssemblyRequired/_tool_Then.py +44 -1
- mapFolding/someAssemblyRequired/_toolboxAST.py +57 -0
- mapFolding/someAssemblyRequired/_toolboxAntecedents.py +95 -29
- mapFolding/someAssemblyRequired/_toolboxContainers.py +4 -8
- mapFolding/someAssemblyRequired/_toolboxPython.py +52 -50
- mapFolding/someAssemblyRequired/synthesizeNumbaJob.py +3 -2
- mapFolding/someAssemblyRequired/transformationTools.py +39 -57
- mapFolding/syntheticModules/dataPacking.py +25 -0
- mapFolding/syntheticModules/initializeCount.py +49 -0
- mapFolding/syntheticModules/theorem2.py +49 -0
- mapFolding/syntheticModules/theorem2Numba.py +51 -0
- {mapfolding-0.9.3.dist-info → mapfolding-0.9.4.dist-info}/METADATA +2 -1
- {mapfolding-0.9.3.dist-info → mapfolding-0.9.4.dist-info}/RECORD +24 -18
- {mapfolding-0.9.3.dist-info → mapfolding-0.9.4.dist-info}/WHEEL +1 -1
- tests/test_computations.py +4 -2
- /mapFolding/{theDaoOfMapFolding.py → daoOfMapFolding.py} +0 -0
- {mapfolding-0.9.3.dist-info → mapfolding-0.9.4.dist-info}/entry_points.txt +0 -0
- {mapfolding-0.9.3.dist-info → mapfolding-0.9.4.dist-info}/licenses/LICENSE +0 -0
- {mapfolding-0.9.3.dist-info → mapfolding-0.9.4.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
from mapFolding.dataBaskets import MapFoldingState
|
|
2
|
+
|
|
3
|
+
def initializeGroupsOfFolds(state: MapFoldingState) -> MapFoldingState:
|
|
4
|
+
while state.groupsOfFolds == 0:
|
|
5
|
+
if state.leaf1ndex <= 1 or state.leafBelow[0] == 1:
|
|
6
|
+
if state.leaf1ndex > state.leavesTotal:
|
|
7
|
+
state.groupsOfFolds += 1
|
|
8
|
+
else:
|
|
9
|
+
state.dimensionsUnconstrained = state.dimensionsTotal
|
|
10
|
+
state.gap1ndexCeiling = state.gapRangeStart[state.leaf1ndex - 1]
|
|
11
|
+
state.indexDimension = 0
|
|
12
|
+
while state.indexDimension < state.dimensionsTotal:
|
|
13
|
+
state.leafConnectee = state.connectionGraph[state.indexDimension, state.leaf1ndex, state.leaf1ndex]
|
|
14
|
+
if state.leafConnectee == state.leaf1ndex:
|
|
15
|
+
state.dimensionsUnconstrained -= 1
|
|
16
|
+
else:
|
|
17
|
+
while state.leafConnectee != state.leaf1ndex:
|
|
18
|
+
state.gapsWhere[state.gap1ndexCeiling] = state.leafConnectee
|
|
19
|
+
if state.countDimensionsGapped[state.leafConnectee] == 0:
|
|
20
|
+
state.gap1ndexCeiling += 1
|
|
21
|
+
state.countDimensionsGapped[state.leafConnectee] += 1
|
|
22
|
+
state.leafConnectee = state.connectionGraph[state.indexDimension, state.leaf1ndex, state.leafBelow[state.leafConnectee]]
|
|
23
|
+
state.indexDimension += 1
|
|
24
|
+
if not state.dimensionsUnconstrained:
|
|
25
|
+
state.indexLeaf = 0
|
|
26
|
+
while state.indexLeaf < state.leaf1ndex:
|
|
27
|
+
state.gapsWhere[state.gap1ndexCeiling] = state.indexLeaf
|
|
28
|
+
state.gap1ndexCeiling += 1
|
|
29
|
+
state.indexLeaf += 1
|
|
30
|
+
state.indexMiniGap = state.gap1ndex
|
|
31
|
+
while state.indexMiniGap < state.gap1ndexCeiling:
|
|
32
|
+
state.gapsWhere[state.gap1ndex] = state.gapsWhere[state.indexMiniGap]
|
|
33
|
+
if state.countDimensionsGapped[state.gapsWhere[state.indexMiniGap]] == state.dimensionsUnconstrained:
|
|
34
|
+
state.gap1ndex += 1
|
|
35
|
+
state.countDimensionsGapped[state.gapsWhere[state.indexMiniGap]] = 0
|
|
36
|
+
state.indexMiniGap += 1
|
|
37
|
+
while state.leaf1ndex > 0 and state.gap1ndex == state.gapRangeStart[state.leaf1ndex - 1]:
|
|
38
|
+
state.leaf1ndex -= 1
|
|
39
|
+
state.leafBelow[state.leafAbove[state.leaf1ndex]] = state.leafBelow[state.leaf1ndex]
|
|
40
|
+
state.leafAbove[state.leafBelow[state.leaf1ndex]] = state.leafAbove[state.leaf1ndex]
|
|
41
|
+
if state.leaf1ndex > 0:
|
|
42
|
+
state.gap1ndex -= 1
|
|
43
|
+
state.leafAbove[state.leaf1ndex] = state.gapsWhere[state.gap1ndex]
|
|
44
|
+
state.leafBelow[state.leaf1ndex] = state.leafBelow[state.leafAbove[state.leaf1ndex]]
|
|
45
|
+
state.leafBelow[state.leafAbove[state.leaf1ndex]] = state.leaf1ndex
|
|
46
|
+
state.leafAbove[state.leafBelow[state.leaf1ndex]] = state.leaf1ndex
|
|
47
|
+
state.gapRangeStart[state.leaf1ndex] = state.gap1ndex
|
|
48
|
+
state.leaf1ndex += 1
|
|
49
|
+
return state
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
from mapFolding.dataBaskets import MapFoldingState
|
|
2
|
+
|
|
3
|
+
def count(state: MapFoldingState) -> MapFoldingState:
|
|
4
|
+
while state.leaf1ndex > 4:
|
|
5
|
+
if state.leafBelow[0] == 1:
|
|
6
|
+
if state.leaf1ndex > state.leavesTotal:
|
|
7
|
+
state.groupsOfFolds += 1
|
|
8
|
+
else:
|
|
9
|
+
state.dimensionsUnconstrained = state.dimensionsTotal
|
|
10
|
+
state.gap1ndexCeiling = state.gapRangeStart[state.leaf1ndex - 1]
|
|
11
|
+
state.indexDimension = 0
|
|
12
|
+
while state.indexDimension < state.dimensionsTotal:
|
|
13
|
+
state.leafConnectee = state.connectionGraph[state.indexDimension, state.leaf1ndex, state.leaf1ndex]
|
|
14
|
+
if state.leafConnectee == state.leaf1ndex:
|
|
15
|
+
state.dimensionsUnconstrained -= 1
|
|
16
|
+
else:
|
|
17
|
+
while state.leafConnectee != state.leaf1ndex:
|
|
18
|
+
state.gapsWhere[state.gap1ndexCeiling] = state.leafConnectee
|
|
19
|
+
if state.countDimensionsGapped[state.leafConnectee] == 0:
|
|
20
|
+
state.gap1ndexCeiling += 1
|
|
21
|
+
state.countDimensionsGapped[state.leafConnectee] += 1
|
|
22
|
+
state.leafConnectee = state.connectionGraph[state.indexDimension, state.leaf1ndex, state.leafBelow[state.leafConnectee]]
|
|
23
|
+
state.indexDimension += 1
|
|
24
|
+
if not state.dimensionsUnconstrained:
|
|
25
|
+
state.indexLeaf = 0
|
|
26
|
+
while state.indexLeaf < state.leaf1ndex:
|
|
27
|
+
state.gapsWhere[state.gap1ndexCeiling] = state.indexLeaf
|
|
28
|
+
state.gap1ndexCeiling += 1
|
|
29
|
+
state.indexLeaf += 1
|
|
30
|
+
state.indexMiniGap = state.gap1ndex
|
|
31
|
+
while state.indexMiniGap < state.gap1ndexCeiling:
|
|
32
|
+
state.gapsWhere[state.gap1ndex] = state.gapsWhere[state.indexMiniGap]
|
|
33
|
+
if state.countDimensionsGapped[state.gapsWhere[state.indexMiniGap]] == state.dimensionsUnconstrained:
|
|
34
|
+
state.gap1ndex += 1
|
|
35
|
+
state.countDimensionsGapped[state.gapsWhere[state.indexMiniGap]] = 0
|
|
36
|
+
state.indexMiniGap += 1
|
|
37
|
+
while state.gap1ndex == state.gapRangeStart[state.leaf1ndex - 1]:
|
|
38
|
+
state.leaf1ndex -= 1
|
|
39
|
+
state.leafBelow[state.leafAbove[state.leaf1ndex]] = state.leafBelow[state.leaf1ndex]
|
|
40
|
+
state.leafAbove[state.leafBelow[state.leaf1ndex]] = state.leafAbove[state.leaf1ndex]
|
|
41
|
+
state.gap1ndex -= 1
|
|
42
|
+
state.leafAbove[state.leaf1ndex] = state.gapsWhere[state.gap1ndex]
|
|
43
|
+
state.leafBelow[state.leaf1ndex] = state.leafBelow[state.leafAbove[state.leaf1ndex]]
|
|
44
|
+
state.leafBelow[state.leafAbove[state.leaf1ndex]] = state.leaf1ndex
|
|
45
|
+
state.leafAbove[state.leafBelow[state.leaf1ndex]] = state.leaf1ndex
|
|
46
|
+
state.gapRangeStart[state.leaf1ndex] = state.gap1ndex
|
|
47
|
+
state.leaf1ndex += 1
|
|
48
|
+
state.groupsOfFolds *= 2
|
|
49
|
+
return state
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
from mapFolding.dataBaskets import Array1DElephino, Array1DLeavesTotal, Array3D, DatatypeElephino, DatatypeFoldsTotal, DatatypeLeavesTotal
|
|
2
|
+
from numba import jit
|
|
3
|
+
|
|
4
|
+
@jit(cache=True, error_model='numpy', fastmath=True, forceinline=True)
|
|
5
|
+
def count(groupsOfFolds: DatatypeFoldsTotal, gap1ndex: DatatypeElephino, gap1ndexCeiling: DatatypeElephino, indexDimension: DatatypeLeavesTotal, indexLeaf: DatatypeLeavesTotal, indexMiniGap: DatatypeElephino, leaf1ndex: DatatypeLeavesTotal, leafConnectee: DatatypeLeavesTotal, dimensionsUnconstrained: DatatypeLeavesTotal, countDimensionsGapped: Array1DLeavesTotal, gapRangeStart: Array1DElephino, gapsWhere: Array1DLeavesTotal, leafAbove: Array1DLeavesTotal, leafBelow: Array1DLeavesTotal, connectionGraph: Array3D, dimensionsTotal: DatatypeLeavesTotal, leavesTotal: DatatypeLeavesTotal) -> tuple[DatatypeFoldsTotal, DatatypeElephino, DatatypeElephino, DatatypeLeavesTotal, DatatypeLeavesTotal, DatatypeElephino, DatatypeLeavesTotal, DatatypeLeavesTotal, DatatypeLeavesTotal, Array1DLeavesTotal, Array1DElephino, Array1DLeavesTotal, Array1DLeavesTotal, Array1DLeavesTotal, Array3D, DatatypeLeavesTotal, DatatypeLeavesTotal]:
|
|
6
|
+
while leaf1ndex > 4:
|
|
7
|
+
if leafBelow[0] == 1:
|
|
8
|
+
if leaf1ndex > leavesTotal:
|
|
9
|
+
groupsOfFolds += 1
|
|
10
|
+
else:
|
|
11
|
+
dimensionsUnconstrained = dimensionsTotal
|
|
12
|
+
gap1ndexCeiling = gapRangeStart[leaf1ndex - 1]
|
|
13
|
+
indexDimension = 0
|
|
14
|
+
while indexDimension < dimensionsTotal:
|
|
15
|
+
leafConnectee = connectionGraph[indexDimension, leaf1ndex, leaf1ndex]
|
|
16
|
+
if leafConnectee == leaf1ndex:
|
|
17
|
+
dimensionsUnconstrained -= 1
|
|
18
|
+
else:
|
|
19
|
+
while leafConnectee != leaf1ndex:
|
|
20
|
+
gapsWhere[gap1ndexCeiling] = leafConnectee
|
|
21
|
+
if countDimensionsGapped[leafConnectee] == 0:
|
|
22
|
+
gap1ndexCeiling += 1
|
|
23
|
+
countDimensionsGapped[leafConnectee] += 1
|
|
24
|
+
leafConnectee = connectionGraph[indexDimension, leaf1ndex, leafBelow[leafConnectee]]
|
|
25
|
+
indexDimension += 1
|
|
26
|
+
if not dimensionsUnconstrained:
|
|
27
|
+
indexLeaf = 0
|
|
28
|
+
while indexLeaf < leaf1ndex:
|
|
29
|
+
gapsWhere[gap1ndexCeiling] = indexLeaf
|
|
30
|
+
gap1ndexCeiling += 1
|
|
31
|
+
indexLeaf += 1
|
|
32
|
+
indexMiniGap = gap1ndex
|
|
33
|
+
while indexMiniGap < gap1ndexCeiling:
|
|
34
|
+
gapsWhere[gap1ndex] = gapsWhere[indexMiniGap]
|
|
35
|
+
if countDimensionsGapped[gapsWhere[indexMiniGap]] == dimensionsUnconstrained:
|
|
36
|
+
gap1ndex += 1
|
|
37
|
+
countDimensionsGapped[gapsWhere[indexMiniGap]] = 0
|
|
38
|
+
indexMiniGap += 1
|
|
39
|
+
while gap1ndex == gapRangeStart[leaf1ndex - 1]:
|
|
40
|
+
leaf1ndex -= 1
|
|
41
|
+
leafBelow[leafAbove[leaf1ndex]] = leafBelow[leaf1ndex]
|
|
42
|
+
leafAbove[leafBelow[leaf1ndex]] = leafAbove[leaf1ndex]
|
|
43
|
+
gap1ndex -= 1
|
|
44
|
+
leafAbove[leaf1ndex] = gapsWhere[gap1ndex]
|
|
45
|
+
leafBelow[leaf1ndex] = leafBelow[leafAbove[leaf1ndex]]
|
|
46
|
+
leafBelow[leafAbove[leaf1ndex]] = leaf1ndex
|
|
47
|
+
leafAbove[leafBelow[leaf1ndex]] = leaf1ndex
|
|
48
|
+
gapRangeStart[leaf1ndex] = gap1ndex
|
|
49
|
+
leaf1ndex += 1
|
|
50
|
+
groupsOfFolds *= 2
|
|
51
|
+
return (groupsOfFolds, gap1ndex, gap1ndexCeiling, indexDimension, indexLeaf, indexMiniGap, leaf1ndex, leafConnectee, dimensionsUnconstrained, countDimensionsGapped, gapRangeStart, gapsWhere, leafAbove, leafBelow, connectionGraph, dimensionsTotal, leavesTotal)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mapFolding
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.4
|
|
4
4
|
Summary: Map folding algorithm with code transformation framework for optimizing numerical computations
|
|
5
5
|
Author-email: Hunter Hogan <HunterHogan@pm.me>
|
|
6
6
|
License: CC-BY-NC-4.0
|
|
@@ -32,6 +32,7 @@ Requires-Python: >=3.10
|
|
|
32
32
|
Description-Content-Type: text/markdown
|
|
33
33
|
License-File: LICENSE
|
|
34
34
|
Requires-Dist: autoflake
|
|
35
|
+
Requires-Dist: cytoolz
|
|
35
36
|
Requires-Dist: more_itertools
|
|
36
37
|
Requires-Dist: numba_progress
|
|
37
38
|
Requires-Dist: numba
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
mapFolding/Z0Z_flowControl.py,sha256=
|
|
1
|
+
mapFolding/Z0Z_flowControl.py,sha256=jGeImXadt0F_Fy6F5QtYQpLJP_iRo2Wh4fFjpCm9vCo,4141
|
|
2
2
|
mapFolding/__init__.py,sha256=XbCu7IEPzmIuPRy5iUFKbRbhqTRsie3RemnKVUdACCU,4360
|
|
3
3
|
mapFolding/basecamp.py,sha256=zKqG2lfhaUEicpXjResOrU8zIq3_-3KAFW-DLXATlpc,4749
|
|
4
4
|
mapFolding/beDRY.py,sha256=sTqg_xq3_c4Djer8HRg41ERhDulcl1ZgU4_RMksuv6c,15975
|
|
5
|
+
mapFolding/daoOfMapFolding.py,sha256=ncTIiBfTsM8SNVx9qefZ0bBcBtviWLSk4iPv3Z9nGiE,5442
|
|
5
6
|
mapFolding/dataBaskets.py,sha256=CrSEMfAr63l6zFA2v2YGygwSD8YeLb-3ZCKlpbp3Mho,4325
|
|
6
7
|
mapFolding/datatypes.py,sha256=LbDYemnIVLFqMIHPKWutEWId1iPMw6P7XCDm7Uw4it4,912
|
|
7
8
|
mapFolding/oeis.py,sha256=u9xiBrRXVJSFCC8FgLLuvZAsmX852UyjYqREXiulys8,17106
|
|
8
9
|
mapFolding/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
10
|
mapFolding/theDao.py,sha256=kc3rzTX3yts0PxgPCXFbgWvaqsBexsiU5ib2pzpvID0,10019
|
|
10
|
-
mapFolding/theDaoOfMapFolding.py,sha256=ncTIiBfTsM8SNVx9qefZ0bBcBtviWLSk4iPv3Z9nGiE,5442
|
|
11
11
|
mapFolding/theSSOT.py,sha256=rbv8esQeBG6uLWpFZu_ncMA4zIuQG3lj4FZNzC_6JGI,16138
|
|
12
12
|
mapFolding/toolboxFilesystem.py,sha256=kVZoU-NBvfYSvI4R8mEpMXRUZee-1JV0fjtMFWPhk8Y,9818
|
|
13
13
|
mapFolding/reference/__init__.py,sha256=GKcSgYE49NcTISx-JZbELXyq-eRkMeTL5g4DXInWFw0,2206
|
|
@@ -23,29 +23,35 @@ mapFolding/reference/jobsCompleted/__init__.py,sha256=TU93ZGUW1xEkT6d9mQFn_rp5Dv
|
|
|
23
23
|
mapFolding/reference/jobsCompleted/[2x19]/p2x19.py,sha256=_tvYtfzMWVo2VtUbIAieoscb4N8FFflgTdW4-ljBUuA,19626
|
|
24
24
|
mapFolding/reference/jobsCompleted/p2x19/p2x19.py,sha256=eZEw4Me4ocTt6VXoK2-Sbd5SowZtxRIbN9dZmc7OCVg,6395
|
|
25
25
|
mapFolding/someAssemblyRequired/RecipeJob.py,sha256=JL5Xkmp8ritVMhL1pGhX7eEw5fde3FVD8-9-vZOZwWI,5399
|
|
26
|
-
mapFolding/someAssemblyRequired/
|
|
27
|
-
mapFolding/someAssemblyRequired/
|
|
28
|
-
mapFolding/someAssemblyRequired/
|
|
29
|
-
mapFolding/someAssemblyRequired/
|
|
30
|
-
mapFolding/someAssemblyRequired/
|
|
31
|
-
mapFolding/someAssemblyRequired/
|
|
32
|
-
mapFolding/someAssemblyRequired/
|
|
26
|
+
mapFolding/someAssemblyRequired/Z0Z_makeSomeModules.py,sha256=UCJDQyT6VTauncCd-bNeFfM0HWtNVPJPXLIyK6fzQG8,10697
|
|
27
|
+
mapFolding/someAssemblyRequired/__init__.py,sha256=n3aOCM41eDQnisJCKsVfbDWK-F-jO9lp7wv_Lhn7FHY,4546
|
|
28
|
+
mapFolding/someAssemblyRequired/_theTypes.py,sha256=bCc9HT7v-HT9cMNFewD9HQh0tRDvRyItEHPOluES0tY,4930
|
|
29
|
+
mapFolding/someAssemblyRequired/_tool_Make.py,sha256=Du_MElrYGK8Vk72rGg3xx9aMpBCm0q1DpPcXQ0CeEUg,7651
|
|
30
|
+
mapFolding/someAssemblyRequired/_tool_Then.py,sha256=-aOVg_eZDQn2ZwamYNOMHFQ6QOl5rBobnIzdCJ2gYMY,6181
|
|
31
|
+
mapFolding/someAssemblyRequired/_toolboxAST.py,sha256=Wm0XUqqxKbwu1kIQ1F6iXEP2z25qmr1JsZ2CeWMBtLg,2376
|
|
32
|
+
mapFolding/someAssemblyRequired/_toolboxAntecedents.py,sha256=I6fI96dVPxIn601F-hF-WsSbbmj-MoTG5M6uTpFA2fI,15863
|
|
33
|
+
mapFolding/someAssemblyRequired/_toolboxContainers.py,sha256=jRUIAYi05OPnqRsPopvvxaXjH9kxaymTsn_ozf2hwA8,24207
|
|
34
|
+
mapFolding/someAssemblyRequired/_toolboxPython.py,sha256=1K7IzqzmHNTaPA6qTo73GZYHCIQRYI2Rn8aYJ3VelqY,7873
|
|
33
35
|
mapFolding/someAssemblyRequired/getLLVMforNoReason.py,sha256=9RPU6vK_eUg64GtVFI_nZnvUryXw8gfHJs9NyDYHIvg,2745
|
|
34
|
-
mapFolding/someAssemblyRequired/synthesizeNumbaJob.py,sha256=
|
|
36
|
+
mapFolding/someAssemblyRequired/synthesizeNumbaJob.py,sha256=iqnhda-Fx4z6LOL9qCGwrEnnt2oiAGSYVE47Pav1P80,15570
|
|
35
37
|
mapFolding/someAssemblyRequired/toolboxNumba.py,sha256=f2spS6SSobGdDNlpS2ELO7ejurqbMVITS2QZLIXDivk,10759
|
|
36
|
-
mapFolding/someAssemblyRequired/transformationTools.py,sha256=
|
|
38
|
+
mapFolding/someAssemblyRequired/transformationTools.py,sha256=cQTYg_aR0X7Y7nghr3HDxqA-j-84_NRbLP4CO9vBqDo,35363
|
|
37
39
|
mapFolding/syntheticModules/__init__.py,sha256=evVFqhCGa-WZKDiLcnQWjs-Bj34eRnfSLqz_d7dFYZY,83
|
|
40
|
+
mapFolding/syntheticModules/dataPacking.py,sha256=FmB-6Q0RFZ4c2brVUX0bHHZetowWBmBG3dQCOwjVYv8,2316
|
|
41
|
+
mapFolding/syntheticModules/initializeCount.py,sha256=nWSlJMMfIM3DvZxMn6ISQusUJqRYAjKQyLF5hwLEdBQ,3119
|
|
38
42
|
mapFolding/syntheticModules/numbaCount.py,sha256=zM-bp07c9tEDdvidwzZ_bJTd0JC0VUkYEEiHG--P1tQ,15525
|
|
39
|
-
|
|
43
|
+
mapFolding/syntheticModules/theorem2.py,sha256=9jrbZNNX4BWYZW1S0JjvRY2k7RU7I1RNUMV7JdCt1ZY,3017
|
|
44
|
+
mapFolding/syntheticModules/theorem2Numba.py,sha256=UChbeMxCGOUr8i5018Ql9KY-pbMAmcdMdqnkQklH7_k,3711
|
|
45
|
+
mapfolding-0.9.4.dist-info/licenses/LICENSE,sha256=NxH5Y8BdC-gNU-WSMwim3uMbID2iNDXJz7fHtuTdXhk,19346
|
|
40
46
|
tests/__init__.py,sha256=5VhHf0JJ2_DSh58zJ0rR5UkpoCon-0IkdljspTCzZ04,1950
|
|
41
47
|
tests/conftest.py,sha256=x8zMZQyTss3sn0GwHm_TSRwD9_LVlR8l_qF8r43Vxl4,14178
|
|
42
|
-
tests/test_computations.py,sha256=
|
|
48
|
+
tests/test_computations.py,sha256=oUl1M_bBBfHQQ4HIMeTcqEuPCXKqPSCC3havKDlr8ww,6505
|
|
43
49
|
tests/test_filesystem.py,sha256=T2DkjBoI3lW6tCxd5BilPmUFrVukNKLjOOZVZxLM560,3004
|
|
44
50
|
tests/test_oeis.py,sha256=uxvwmgbnylSDdsVJfuAT0LuYLbIVFwSgdLxHm-xUGBM,5043
|
|
45
51
|
tests/test_other.py,sha256=UMlK4JPInalpOZuPvTnUrgXWCJOxAw-OsPs6CxMR254,3753
|
|
46
52
|
tests/test_tasks.py,sha256=tOQc4uomKXGwWnENfbcThaVa1XofwXNCkGZbg4yS6VI,2833
|
|
47
|
-
mapfolding-0.9.
|
|
48
|
-
mapfolding-0.9.
|
|
49
|
-
mapfolding-0.9.
|
|
50
|
-
mapfolding-0.9.
|
|
51
|
-
mapfolding-0.9.
|
|
53
|
+
mapfolding-0.9.4.dist-info/METADATA,sha256=b774T-bTm3mOoOrVyNzkNXudrEGvfM2tDUKSbx8Nfck,7502
|
|
54
|
+
mapfolding-0.9.4.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
|
|
55
|
+
mapfolding-0.9.4.dist-info/entry_points.txt,sha256=F3OUeZR1XDTpoH7k3wXuRb3KF_kXTTeYhu5AGK1SiOQ,146
|
|
56
|
+
mapfolding-0.9.4.dist-info/top_level.txt,sha256=1gP2vFaqPwHujGwb3UjtMlLEGN-943VSYFR7V4gDqW8,17
|
|
57
|
+
mapfolding-0.9.4.dist-info/RECORD,,
|
tests/test_computations.py
CHANGED
|
@@ -85,6 +85,7 @@ All tests leverage standardized utilities like `standardizedEqualToCallableRetur
|
|
|
85
85
|
that provide consistent, informative error messages and simplify test validation.
|
|
86
86
|
"""
|
|
87
87
|
|
|
88
|
+
from typing import Literal
|
|
88
89
|
from mapFolding import countFolds, getFoldsTotalKnown, oeisIDfor_n
|
|
89
90
|
from mapFolding.oeis import settingsOEIS
|
|
90
91
|
from mapFolding.someAssemblyRequired.RecipeJob import RecipeJob
|
|
@@ -101,8 +102,9 @@ if __name__ == '__main__':
|
|
|
101
102
|
def test_algorithmSourceParallel(mapShapeTestParallelization: tuple[int, ...], useAlgorithmSourceDispatcher: None) -> None:
|
|
102
103
|
standardizedEqualToCallableReturn(getFoldsTotalKnown(mapShapeTestParallelization), countFolds, mapShapeTestParallelization, None, 'maximum', None)
|
|
103
104
|
|
|
104
|
-
|
|
105
|
-
|
|
105
|
+
@pytest.mark.parametrize('flow', ['daoOfMapFolding', 'theorem2', 'theorem2numba'])
|
|
106
|
+
def test_flowControl(mapShapeTestCountFolds: tuple[int, ...], flow: Literal['daoOfMapFolding'] | Literal['theorem2'] | Literal['theorem2numba']) -> None:
|
|
107
|
+
standardizedEqualToCallableReturn(getFoldsTotalKnown(mapShapeTestCountFolds), countFolds, None, None, None, None, mapShapeTestCountFolds, None, None, flow)
|
|
106
108
|
|
|
107
109
|
def test_algorithmSourceSequential(mapShapeTestCountFolds: tuple[int, ...], useAlgorithmSourceDispatcher: None) -> None:
|
|
108
110
|
standardizedEqualToCallableReturn(getFoldsTotalKnown(mapShapeTestCountFolds), countFolds, mapShapeTestCountFolds)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|