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.
@@ -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
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=thYz1WA7v0PCigvZcNMcKhNnJoIjLJkVgD4wUTXveGY,3272
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/__init__.py,sha256=W2RdYl78-Z17TiXY8dDOKZIEMeowfhSzMTwfGjwR2k4,4111
27
- mapFolding/someAssemblyRequired/_theTypes.py,sha256=MS_M4fHLxsHA1JzrPxC2YPnXu--_XAsc_j8VAkyCe5Y,4341
28
- mapFolding/someAssemblyRequired/_tool_Make.py,sha256=0TGZtCUt6uu8h47N833qZ9IIjbn_yhoPFsBDEotQp9A,7222
29
- mapFolding/someAssemblyRequired/_tool_Then.py,sha256=0Xb-MfKJhXjoVBTC7CSjpgCxxilL_WquL4WzKQWMR5A,4464
30
- mapFolding/someAssemblyRequired/_toolboxAntecedents.py,sha256=6m80_ThGF47WWIkYweEdc3LRq96fHklys7IpoFSqN7A,13288
31
- mapFolding/someAssemblyRequired/_toolboxContainers.py,sha256=qDvmr9GYc5rPYQ5A-lbqqGFBUy3UrA0HOAnfULDE_n0,24303
32
- mapFolding/someAssemblyRequired/_toolboxPython.py,sha256=TuRC5CD_6tTjjLuvGgPbnqCSvIP3Vp2k2r592Dcpff4,7642
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=yFAGTtKSgv7L87PjPjQMS4wz7Bgs37B1_qqZO8cntQ0,15568
36
+ mapFolding/someAssemblyRequired/synthesizeNumbaJob.py,sha256=iqnhda-Fx4z6LOL9qCGwrEnnt2oiAGSYVE47Pav1P80,15570
35
37
  mapFolding/someAssemblyRequired/toolboxNumba.py,sha256=f2spS6SSobGdDNlpS2ELO7ejurqbMVITS2QZLIXDivk,10759
36
- mapFolding/someAssemblyRequired/transformationTools.py,sha256=1_qIlrK5a9e5vjRW5vru-v50mkuCmFMaV7lU01cq-ss,35838
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
- mapfolding-0.9.3.dist-info/licenses/LICENSE,sha256=NxH5Y8BdC-gNU-WSMwim3uMbID2iNDXJz7fHtuTdXhk,19346
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=H7AlEAGdl4klAGyeF9z0Gzy2SBtN49xWt4rdftqusnU,6335
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.3.dist-info/METADATA,sha256=Jv9oPprJ2nb4ECje2fC3-tcRO3FAL0EAi7gZqKeMLzU,7479
48
- mapfolding-0.9.3.dist-info/WHEEL,sha256=lTU6B6eIfYoiQJTZNc-fyaR6BpL6ehTzU3xGYxn2n8k,91
49
- mapfolding-0.9.3.dist-info/entry_points.txt,sha256=F3OUeZR1XDTpoH7k3wXuRb3KF_kXTTeYhu5AGK1SiOQ,146
50
- mapfolding-0.9.3.dist-info/top_level.txt,sha256=1gP2vFaqPwHujGwb3UjtMlLEGN-943VSYFR7V4gDqW8,17
51
- mapfolding-0.9.3.dist-info/RECORD,,
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.1)
2
+ Generator: setuptools (79.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -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
- def test_theDaoOfMapFolding(mapShapeTestCountFolds: tuple[int, ...]) -> None:
105
- standardizedEqualToCallableReturn(getFoldsTotalKnown(mapShapeTestCountFolds), countFolds, None, None, None, None, mapShapeTestCountFolds, None, None, 'theDaoOfMapFolding')
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)