mapFolding 0.9.2__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 +117 -0
- mapFolding/__init__.py +28 -26
- mapFolding/basecamp.py +1 -1
- mapFolding/beDRY.py +1 -2
- mapFolding/daoOfMapFolding.py +142 -0
- mapFolding/dataBaskets.py +49 -0
- mapFolding/datatypes.py +21 -0
- mapFolding/oeis.py +1 -2
- mapFolding/someAssemblyRequired/Z0Z_makeSomeModules.py +226 -0
- mapFolding/someAssemblyRequired/__init__.py +12 -2
- mapFolding/someAssemblyRequired/_theTypes.py +11 -5
- 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 +59 -53
- mapFolding/someAssemblyRequired/_toolboxPython.py +52 -50
- mapFolding/someAssemblyRequired/synthesizeNumbaJob.py +10 -9
- mapFolding/someAssemblyRequired/toolboxNumba.py +1 -1
- mapFolding/someAssemblyRequired/transformationTools.py +40 -58
- 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/theSSOT.py +13 -21
- {mapfolding-0.9.2.dist-info → mapfolding-0.9.4.dist-info}/METADATA +4 -3
- mapfolding-0.9.4.dist-info/RECORD +57 -0
- {mapfolding-0.9.2.dist-info → mapfolding-0.9.4.dist-info}/WHEEL +1 -1
- tests/__init__.py +2 -2
- tests/conftest.py +7 -7
- tests/test_computations.py +17 -13
- tests/test_tasks.py +2 -2
- mapfolding-0.9.2.dist-info/RECORD +0 -47
- {mapfolding-0.9.2.dist-info → mapfolding-0.9.4.dist-info}/entry_points.txt +0 -0
- {mapfolding-0.9.2.dist-info → mapfolding-0.9.4.dist-info}/licenses/LICENSE +0 -0
- {mapfolding-0.9.2.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)
|
mapFolding/theSSOT.py
CHANGED
|
@@ -19,12 +19,23 @@ collisions when transforming algorithms.
|
|
|
19
19
|
from collections.abc import Callable
|
|
20
20
|
from importlib import import_module as importlib_import_module
|
|
21
21
|
from inspect import getfile as inspect_getfile
|
|
22
|
-
from numpy import dtype, int64 as numpy_int64, integer, ndarray
|
|
23
22
|
from pathlib import Path
|
|
24
23
|
from tomli import load as tomli_load
|
|
25
24
|
from types import ModuleType
|
|
26
|
-
from typing import Any, TypeAlias, TypeVar
|
|
27
25
|
import dataclasses
|
|
26
|
+
from mapFolding.datatypes import (
|
|
27
|
+
Array1DElephino as Array1DElephino,
|
|
28
|
+
Array1DFoldsTotal as Array1DFoldsTotal,
|
|
29
|
+
Array1DLeavesTotal as Array1DLeavesTotal,
|
|
30
|
+
Array3D as Array3D,
|
|
31
|
+
DatatypeElephino as DatatypeElephino,
|
|
32
|
+
DatatypeFoldsTotal as DatatypeFoldsTotal,
|
|
33
|
+
DatatypeLeavesTotal as DatatypeLeavesTotal,
|
|
34
|
+
NumPyElephino as NumPyElephino,
|
|
35
|
+
NumPyFoldsTotal as NumPyFoldsTotal,
|
|
36
|
+
NumPyIntegerType as NumPyIntegerType,
|
|
37
|
+
NumPyLeavesTotal as NumPyLeavesTotal,
|
|
38
|
+
)
|
|
28
39
|
|
|
29
40
|
# Evaluate When Packaging https://github.com/hunterhogan/mapFolding/issues/18
|
|
30
41
|
try:
|
|
@@ -144,25 +155,6 @@ class PackageSettings:
|
|
|
144
155
|
|
|
145
156
|
The = PackageSettings(logicalPathModuleDispatcher=logicalPathModuleDispatcherHARDCODED, callableDispatcher=callableDispatcherHARDCODED, concurrencyPackage=concurrencyPackageHARDCODED)
|
|
146
157
|
|
|
147
|
-
# =============================================================================
|
|
148
|
-
# Flexible Data Structure System Needs Enhanced Paradigm https://github.com/hunterhogan/mapFolding/issues/9
|
|
149
|
-
|
|
150
|
-
NumPyIntegerType = TypeVar('NumPyIntegerType', bound=integer[Any], covariant=True)
|
|
151
|
-
|
|
152
|
-
DatatypeLeavesTotal: TypeAlias = int
|
|
153
|
-
NumPyLeavesTotal: TypeAlias = numpy_int64
|
|
154
|
-
|
|
155
|
-
DatatypeElephino: TypeAlias = int
|
|
156
|
-
NumPyElephino: TypeAlias = numpy_int64
|
|
157
|
-
|
|
158
|
-
DatatypeFoldsTotal: TypeAlias = int
|
|
159
|
-
NumPyFoldsTotal: TypeAlias = numpy_int64
|
|
160
|
-
|
|
161
|
-
Array3D: TypeAlias = ndarray[tuple[int, int, int], dtype[NumPyLeavesTotal]]
|
|
162
|
-
Array1DLeavesTotal: TypeAlias = ndarray[tuple[int], dtype[NumPyLeavesTotal]]
|
|
163
|
-
Array1DElephino: TypeAlias = ndarray[tuple[int], dtype[NumPyElephino]]
|
|
164
|
-
Array1DFoldsTotal: TypeAlias = ndarray[tuple[int], dtype[NumPyFoldsTotal]]
|
|
165
|
-
|
|
166
158
|
@dataclasses.dataclass
|
|
167
159
|
class ComputationState:
|
|
168
160
|
"""
|
|
@@ -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
|
|
@@ -8,7 +8,7 @@ Project-URL: Donate, https://www.patreon.com/integrated
|
|
|
8
8
|
Project-URL: Homepage, https://github.com/hunterhogan/mapFolding
|
|
9
9
|
Project-URL: Repository, https://github.com/hunterhogan/mapFolding.git
|
|
10
10
|
Project-URL: Issues, https://github.com/hunterhogan/mapFolding/issues
|
|
11
|
-
Keywords: A001415,A001416,A001417,A001418,A195646,algorithmic optimization,AST manipulation,code generation,code transformation,combinatorics,computational geometry,dataclass transformation,folding pattern enumeration,just-in-time compilation,map folding,Numba optimization,OEIS,performance optimization,source code analysis,stamp folding
|
|
11
|
+
Keywords: A000136,A001415,A001416,A001417,A001418,A195646,algorithmic optimization,AST manipulation,code generation,code transformation,combinatorics,computational geometry,dataclass transformation,folding pattern enumeration,just-in-time compilation,map folding,Numba optimization,OEIS,performance optimization,source code analysis,stamp folding
|
|
12
12
|
Classifier: Development Status :: 4 - Beta
|
|
13
13
|
Classifier: Environment :: Console
|
|
14
14
|
Classifier: Intended Audience :: Developers
|
|
@@ -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
|
|
@@ -106,7 +107,7 @@ def countFolds_optimized(shape_param):
|
|
|
106
107
|
|
|
107
108
|
### 2. Code Generation Framework
|
|
108
109
|
|
|
109
|
-
Study and extend a complete Python code transformation
|
|
110
|
+
Study and extend a complete Python code transformation assembly line:
|
|
110
111
|
|
|
111
112
|
- AST analysis and manipulation
|
|
112
113
|
- Dataclass decomposition ("shattering")
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
mapFolding/Z0Z_flowControl.py,sha256=jGeImXadt0F_Fy6F5QtYQpLJP_iRo2Wh4fFjpCm9vCo,4141
|
|
2
|
+
mapFolding/__init__.py,sha256=XbCu7IEPzmIuPRy5iUFKbRbhqTRsie3RemnKVUdACCU,4360
|
|
3
|
+
mapFolding/basecamp.py,sha256=zKqG2lfhaUEicpXjResOrU8zIq3_-3KAFW-DLXATlpc,4749
|
|
4
|
+
mapFolding/beDRY.py,sha256=sTqg_xq3_c4Djer8HRg41ERhDulcl1ZgU4_RMksuv6c,15975
|
|
5
|
+
mapFolding/daoOfMapFolding.py,sha256=ncTIiBfTsM8SNVx9qefZ0bBcBtviWLSk4iPv3Z9nGiE,5442
|
|
6
|
+
mapFolding/dataBaskets.py,sha256=CrSEMfAr63l6zFA2v2YGygwSD8YeLb-3ZCKlpbp3Mho,4325
|
|
7
|
+
mapFolding/datatypes.py,sha256=LbDYemnIVLFqMIHPKWutEWId1iPMw6P7XCDm7Uw4it4,912
|
|
8
|
+
mapFolding/oeis.py,sha256=u9xiBrRXVJSFCC8FgLLuvZAsmX852UyjYqREXiulys8,17106
|
|
9
|
+
mapFolding/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
+
mapFolding/theDao.py,sha256=kc3rzTX3yts0PxgPCXFbgWvaqsBexsiU5ib2pzpvID0,10019
|
|
11
|
+
mapFolding/theSSOT.py,sha256=rbv8esQeBG6uLWpFZu_ncMA4zIuQG3lj4FZNzC_6JGI,16138
|
|
12
|
+
mapFolding/toolboxFilesystem.py,sha256=kVZoU-NBvfYSvI4R8mEpMXRUZee-1JV0fjtMFWPhk8Y,9818
|
|
13
|
+
mapFolding/reference/__init__.py,sha256=GKcSgYE49NcTISx-JZbELXyq-eRkMeTL5g4DXInWFw0,2206
|
|
14
|
+
mapFolding/reference/flattened.py,sha256=QK1xG9SllqCoi68e86Hyl9d9ATUAAFNpTQI-3zmcp5I,16072
|
|
15
|
+
mapFolding/reference/hunterNumba.py,sha256=iLfyqwGdAh6c5GbapnKsWhAsNsR3O-fyGGHAdohluLw,7258
|
|
16
|
+
mapFolding/reference/irvineJavaPort.py,sha256=UEfIX4QbPLl5jnyfYIyX5YRR3_rYvPUikK8jLehsFko,4076
|
|
17
|
+
mapFolding/reference/jaxCount.py,sha256=TuDNKOnyhQfuixKmIxO9Algv7dvy7KMGhgsV3h96FGE,14853
|
|
18
|
+
mapFolding/reference/lunnonNumpy.py,sha256=mMgrgbrBpe4nmo72ThEI-MGH0OwEHmfMPczSXHp2qKo,4357
|
|
19
|
+
mapFolding/reference/lunnonWhile.py,sha256=ZL8GAQtPs5nJZSgoDl5USrLSS_zs03y98y1Z9E4jOmQ,3799
|
|
20
|
+
mapFolding/reference/rotatedEntryPoint.py,sha256=5ughpKUT2JQhoAKgoDUdYNjgWQYPGV8v-7dWEAdDmfE,10274
|
|
21
|
+
mapFolding/reference/total_countPlus1vsPlusN.py,sha256=yJZAVLVdoXqHag2_N6_6CT-Q6HXBgRro-eny93-Rlpw,9307
|
|
22
|
+
mapFolding/reference/jobsCompleted/__init__.py,sha256=TU93ZGUW1xEkT6d9mQFn_rp5DvRy0ZslEB2Q6MF5ZDc,2596
|
|
23
|
+
mapFolding/reference/jobsCompleted/[2x19]/p2x19.py,sha256=_tvYtfzMWVo2VtUbIAieoscb4N8FFflgTdW4-ljBUuA,19626
|
|
24
|
+
mapFolding/reference/jobsCompleted/p2x19/p2x19.py,sha256=eZEw4Me4ocTt6VXoK2-Sbd5SowZtxRIbN9dZmc7OCVg,6395
|
|
25
|
+
mapFolding/someAssemblyRequired/RecipeJob.py,sha256=JL5Xkmp8ritVMhL1pGhX7eEw5fde3FVD8-9-vZOZwWI,5399
|
|
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
|
|
35
|
+
mapFolding/someAssemblyRequired/getLLVMforNoReason.py,sha256=9RPU6vK_eUg64GtVFI_nZnvUryXw8gfHJs9NyDYHIvg,2745
|
|
36
|
+
mapFolding/someAssemblyRequired/synthesizeNumbaJob.py,sha256=iqnhda-Fx4z6LOL9qCGwrEnnt2oiAGSYVE47Pav1P80,15570
|
|
37
|
+
mapFolding/someAssemblyRequired/toolboxNumba.py,sha256=f2spS6SSobGdDNlpS2ELO7ejurqbMVITS2QZLIXDivk,10759
|
|
38
|
+
mapFolding/someAssemblyRequired/transformationTools.py,sha256=cQTYg_aR0X7Y7nghr3HDxqA-j-84_NRbLP4CO9vBqDo,35363
|
|
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
|
|
42
|
+
mapFolding/syntheticModules/numbaCount.py,sha256=zM-bp07c9tEDdvidwzZ_bJTd0JC0VUkYEEiHG--P1tQ,15525
|
|
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
|
|
46
|
+
tests/__init__.py,sha256=5VhHf0JJ2_DSh58zJ0rR5UkpoCon-0IkdljspTCzZ04,1950
|
|
47
|
+
tests/conftest.py,sha256=x8zMZQyTss3sn0GwHm_TSRwD9_LVlR8l_qF8r43Vxl4,14178
|
|
48
|
+
tests/test_computations.py,sha256=oUl1M_bBBfHQQ4HIMeTcqEuPCXKqPSCC3havKDlr8ww,6505
|
|
49
|
+
tests/test_filesystem.py,sha256=T2DkjBoI3lW6tCxd5BilPmUFrVukNKLjOOZVZxLM560,3004
|
|
50
|
+
tests/test_oeis.py,sha256=uxvwmgbnylSDdsVJfuAT0LuYLbIVFwSgdLxHm-xUGBM,5043
|
|
51
|
+
tests/test_other.py,sha256=UMlK4JPInalpOZuPvTnUrgXWCJOxAw-OsPs6CxMR254,3753
|
|
52
|
+
tests/test_tasks.py,sha256=tOQc4uomKXGwWnENfbcThaVa1XofwXNCkGZbg4yS6VI,2833
|
|
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/__init__.py
CHANGED
|
@@ -14,7 +14,7 @@ own recipe configurations and job implementations.
|
|
|
14
14
|
- Ensures consistency across different implementation strategies
|
|
15
15
|
|
|
16
16
|
2. **Code Generation Testing**
|
|
17
|
-
- Tests the AST transformation
|
|
17
|
+
- Tests the AST transformation assembly line from source to optimized implementations
|
|
18
18
|
- Validates that generated Numba-accelerated modules produce correct results
|
|
19
19
|
- Ensures robust code generation across different parameter sets
|
|
20
20
|
|
|
@@ -29,7 +29,7 @@ This suite is designed to make it easy to test your custom recipes and jobs:
|
|
|
29
29
|
|
|
30
30
|
### For Custom Recipes (RecipeSynthesizeFlow):
|
|
31
31
|
Copy and adapt the `syntheticDispatcherFixture` and associated tests from
|
|
32
|
-
`test_computations.py` to validate your customized code transformation
|
|
32
|
+
`test_computations.py` to validate your customized code transformation assembly lines.
|
|
33
33
|
|
|
34
34
|
### For Custom Jobs (RecipeJob):
|
|
35
35
|
Copy and adapt the `test_writeJobNumba` function to test specialized job modules
|
tests/conftest.py
CHANGED
|
@@ -56,7 +56,7 @@ See the examples in `test_computations.py` for guidance on adapting these fixtur
|
|
|
56
56
|
"""
|
|
57
57
|
|
|
58
58
|
from collections.abc import Callable, Generator, Sequence
|
|
59
|
-
from mapFolding import
|
|
59
|
+
from mapFolding import The
|
|
60
60
|
from mapFolding.beDRY import getLeavesTotal, validateListDimensions, makeDataContainer
|
|
61
61
|
from mapFolding.oeis import oeisIDsImplemented, settingsOEIS
|
|
62
62
|
from mapFolding.someAssemblyRequired import importLogicalPath2Callable, RecipeSynthesizeFlow
|
|
@@ -171,7 +171,7 @@ def oneTestCuzTestsOverwritingTests(oeisID_1random: str) -> tuple[int, ...]:
|
|
|
171
171
|
pass
|
|
172
172
|
|
|
173
173
|
@pytest.fixture
|
|
174
|
-
def
|
|
174
|
+
def mapShapeTestCountFolds(oeisID: str) -> tuple[int, ...]:
|
|
175
175
|
"""For each `oeisID` from the `pytest.fixture`, returns `listDimensions` from `valuesTestValidation`
|
|
176
176
|
if `validateListDimensions` approves. Each `listDimensions` is suitable for testing counts."""
|
|
177
177
|
while True:
|
|
@@ -202,10 +202,10 @@ def mapShapeTestFunctionality(oeisID_1random: str) -> tuple[int, ...]:
|
|
|
202
202
|
pass
|
|
203
203
|
|
|
204
204
|
@pytest.fixture
|
|
205
|
-
def
|
|
205
|
+
def mapShapeTestParallelization(oeisID: str) -> tuple[int, ...]:
|
|
206
206
|
"""For each `oeisID` from the `pytest.fixture`, returns `listDimensions` from `valuesTestParallelization`"""
|
|
207
207
|
n = random.choice(settingsOEIS[oeisID]['valuesTestParallelization'])
|
|
208
|
-
return
|
|
208
|
+
return settingsOEIS[oeisID]['getMapShape'](n)
|
|
209
209
|
|
|
210
210
|
@pytest.fixture
|
|
211
211
|
def mockBenchmarkTimer() -> Generator[unittest.mock.MagicMock | unittest.mock.AsyncMock, Any, None]:
|
|
@@ -255,8 +255,8 @@ def useThisDispatcher() -> Generator[Callable[..., None], Any, None]:
|
|
|
255
255
|
def patchDispatcher(callableTarget: Callable[..., Any]) -> None:
|
|
256
256
|
"""Patch the dispatcher property to return the target callable."""
|
|
257
257
|
# Create a new property that returns the target callable
|
|
258
|
-
def patched_dispatcher(self: theSSOT.PackageSettings) -> Callable[
|
|
259
|
-
def wrapper(state:
|
|
258
|
+
def patched_dispatcher(self: theSSOT.PackageSettings) -> Callable[..., Any]:
|
|
259
|
+
def wrapper(state: Any) -> Any:
|
|
260
260
|
return callableTarget(state)
|
|
261
261
|
return wrapper
|
|
262
262
|
|
|
@@ -268,7 +268,7 @@ def useThisDispatcher() -> Generator[Callable[..., None], Any, None]:
|
|
|
268
268
|
# Restore the original property
|
|
269
269
|
theSSOT.PackageSettings.dispatcher = original_dispatcher_property # type: ignore
|
|
270
270
|
|
|
271
|
-
def getAlgorithmDispatcher() -> Callable[
|
|
271
|
+
def getAlgorithmDispatcher() -> Callable[..., Any]:
|
|
272
272
|
moduleImported: ModuleType = importlib.import_module(The.logicalPathModuleSourceAlgorithm)
|
|
273
273
|
dispatcherCallable = getattr(moduleImported, The.sourceCallableDispatcher)
|
|
274
274
|
return dispatcherCallable
|
tests/test_computations.py
CHANGED
|
@@ -85,7 +85,8 @@ 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
|
|
88
|
+
from typing import Literal
|
|
89
|
+
from mapFolding import countFolds, getFoldsTotalKnown, oeisIDfor_n
|
|
89
90
|
from mapFolding.oeis import settingsOEIS
|
|
90
91
|
from mapFolding.someAssemblyRequired.RecipeJob import RecipeJob
|
|
91
92
|
from mapFolding.someAssemblyRequired.transformationTools import makeInitializedComputationState
|
|
@@ -98,28 +99,31 @@ import pytest
|
|
|
98
99
|
if __name__ == '__main__':
|
|
99
100
|
multiprocessing.set_start_method('spawn')
|
|
100
101
|
|
|
101
|
-
def test_algorithmSourceParallel(
|
|
102
|
-
standardizedEqualToCallableReturn(getFoldsTotalKnown(
|
|
102
|
+
def test_algorithmSourceParallel(mapShapeTestParallelization: tuple[int, ...], useAlgorithmSourceDispatcher: None) -> None:
|
|
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)
|
|
108
|
+
|
|
109
|
+
def test_algorithmSourceSequential(mapShapeTestCountFolds: tuple[int, ...], useAlgorithmSourceDispatcher: None) -> None:
|
|
110
|
+
standardizedEqualToCallableReturn(getFoldsTotalKnown(mapShapeTestCountFolds), countFolds, mapShapeTestCountFolds)
|
|
106
111
|
|
|
107
112
|
def test_aOFn_calculate_value(oeisID: str) -> None:
|
|
108
113
|
for n in settingsOEIS[oeisID]['valuesTestValidation']:
|
|
109
114
|
standardizedEqualToCallableReturn(settingsOEIS[oeisID]['valuesKnown'][n], oeisIDfor_n, oeisID, n)
|
|
110
115
|
|
|
111
|
-
def test_syntheticParallel(syntheticDispatcherFixture: None,
|
|
112
|
-
standardizedEqualToCallableReturn(getFoldsTotalKnown(
|
|
116
|
+
def test_syntheticParallel(syntheticDispatcherFixture: None, mapShapeTestParallelization: tuple[int, ...]) -> None:
|
|
117
|
+
standardizedEqualToCallableReturn(getFoldsTotalKnown(mapShapeTestParallelization), countFolds, mapShapeTestParallelization, None, 'maximum')
|
|
113
118
|
|
|
114
|
-
def test_syntheticSequential(syntheticDispatcherFixture: None,
|
|
115
|
-
standardizedEqualToCallableReturn(getFoldsTotalKnown(
|
|
119
|
+
def test_syntheticSequential(syntheticDispatcherFixture: None, mapShapeTestCountFolds: tuple[int, ...]) -> None:
|
|
120
|
+
standardizedEqualToCallableReturn(getFoldsTotalKnown(mapShapeTestCountFolds), countFolds, mapShapeTestCountFolds)
|
|
116
121
|
|
|
117
122
|
@pytest.mark.parametrize('pathFilenameTmpTesting', ['.py'], indirect=True)
|
|
118
|
-
def test_writeJobNumba(oneTestCuzTestsOverwritingTests:
|
|
123
|
+
def test_writeJobNumba(oneTestCuzTestsOverwritingTests: tuple[int, ...], pathFilenameTmpTesting: Path) -> None:
|
|
119
124
|
from mapFolding.someAssemblyRequired.toolboxNumba import SpicesJobNumba
|
|
120
125
|
from mapFolding.someAssemblyRequired.synthesizeNumbaJob import makeJobNumba
|
|
121
|
-
|
|
122
|
-
state = makeInitializedComputationState(mapShape)
|
|
126
|
+
state = makeInitializedComputationState(oneTestCuzTestsOverwritingTests)
|
|
123
127
|
|
|
124
128
|
pathFilenameModule = pathFilenameTmpTesting.absolute()
|
|
125
129
|
pathFilenameFoldsTotal = pathFilenameModule.with_suffix('.foldsTotalTesting')
|
|
@@ -142,4 +146,4 @@ def test_writeJobNumba(oneTestCuzTestsOverwritingTests: list[int], pathFilenameT
|
|
|
142
146
|
module.__name__ = "__main__"
|
|
143
147
|
Don_Lapre_Road_to_Self_Improvement.loader.exec_module(module)
|
|
144
148
|
|
|
145
|
-
standardizedEqualToCallableReturn(str(getFoldsTotalKnown(
|
|
149
|
+
standardizedEqualToCallableReturn(str(getFoldsTotalKnown(oneTestCuzTestsOverwritingTests)), pathFilenameFoldsTotal.read_text().strip)
|
tests/test_tasks.py
CHANGED
|
@@ -15,8 +15,8 @@ if __name__ == '__main__':
|
|
|
15
15
|
def test_countFoldsComputationDivisionsInvalid(mapShapeTestFunctionality: tuple[int, ...]) -> None:
|
|
16
16
|
standardizedEqualToCallableReturn(ValueError, countFolds, mapShapeTestFunctionality, None, {"wrong": "value"})
|
|
17
17
|
|
|
18
|
-
def test_countFoldsComputationDivisionsMaximum(
|
|
19
|
-
standardizedEqualToCallableReturn(getFoldsTotalKnown(tuple(
|
|
18
|
+
def test_countFoldsComputationDivisionsMaximum(mapShapeTestParallelization: list[int]) -> None:
|
|
19
|
+
standardizedEqualToCallableReturn(getFoldsTotalKnown(tuple(mapShapeTestParallelization)), countFolds, mapShapeTestParallelization, None, 'maximum', None)
|
|
20
20
|
|
|
21
21
|
@pytest.mark.parametrize("nameOfTest,callablePytest", PytestFor_defineConcurrencyLimit())
|
|
22
22
|
def test_defineConcurrencyLimit(nameOfTest: str, callablePytest: Callable[[], None]) -> None:
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
mapFolding/__init__.py,sha256=RwSpDoCykIukgnlZNf8HSmICtuk6xFuoovYvSuqzK_g,4253
|
|
2
|
-
mapFolding/basecamp.py,sha256=WQxSTucEuTA_ee7Wlfkd5RIClzEsal5OHaCwcT8g3rU,4747
|
|
3
|
-
mapFolding/beDRY.py,sha256=3GDFCzFHEL3uPAEGVxrUj8TX-MGHDObwn9KoMVEMKAc,16074
|
|
4
|
-
mapFolding/oeis.py,sha256=TYJKlCBrYSVhTCFret5QS5B_rs_MNEF8yFU0vLuu5OQ,17138
|
|
5
|
-
mapFolding/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
mapFolding/theDao.py,sha256=kc3rzTX3yts0PxgPCXFbgWvaqsBexsiU5ib2pzpvID0,10019
|
|
7
|
-
mapFolding/theSSOT.py,sha256=ozmfoUPVtbuB_i-m8On80nDGzqBSFHTvNrh6srHMrzY,16596
|
|
8
|
-
mapFolding/toolboxFilesystem.py,sha256=kVZoU-NBvfYSvI4R8mEpMXRUZee-1JV0fjtMFWPhk8Y,9818
|
|
9
|
-
mapFolding/reference/__init__.py,sha256=GKcSgYE49NcTISx-JZbELXyq-eRkMeTL5g4DXInWFw0,2206
|
|
10
|
-
mapFolding/reference/flattened.py,sha256=QK1xG9SllqCoi68e86Hyl9d9ATUAAFNpTQI-3zmcp5I,16072
|
|
11
|
-
mapFolding/reference/hunterNumba.py,sha256=iLfyqwGdAh6c5GbapnKsWhAsNsR3O-fyGGHAdohluLw,7258
|
|
12
|
-
mapFolding/reference/irvineJavaPort.py,sha256=UEfIX4QbPLl5jnyfYIyX5YRR3_rYvPUikK8jLehsFko,4076
|
|
13
|
-
mapFolding/reference/jaxCount.py,sha256=TuDNKOnyhQfuixKmIxO9Algv7dvy7KMGhgsV3h96FGE,14853
|
|
14
|
-
mapFolding/reference/lunnonNumpy.py,sha256=mMgrgbrBpe4nmo72ThEI-MGH0OwEHmfMPczSXHp2qKo,4357
|
|
15
|
-
mapFolding/reference/lunnonWhile.py,sha256=ZL8GAQtPs5nJZSgoDl5USrLSS_zs03y98y1Z9E4jOmQ,3799
|
|
16
|
-
mapFolding/reference/rotatedEntryPoint.py,sha256=5ughpKUT2JQhoAKgoDUdYNjgWQYPGV8v-7dWEAdDmfE,10274
|
|
17
|
-
mapFolding/reference/total_countPlus1vsPlusN.py,sha256=yJZAVLVdoXqHag2_N6_6CT-Q6HXBgRro-eny93-Rlpw,9307
|
|
18
|
-
mapFolding/reference/jobsCompleted/__init__.py,sha256=TU93ZGUW1xEkT6d9mQFn_rp5DvRy0ZslEB2Q6MF5ZDc,2596
|
|
19
|
-
mapFolding/reference/jobsCompleted/[2x19]/p2x19.py,sha256=_tvYtfzMWVo2VtUbIAieoscb4N8FFflgTdW4-ljBUuA,19626
|
|
20
|
-
mapFolding/reference/jobsCompleted/p2x19/p2x19.py,sha256=eZEw4Me4ocTt6VXoK2-Sbd5SowZtxRIbN9dZmc7OCVg,6395
|
|
21
|
-
mapFolding/someAssemblyRequired/RecipeJob.py,sha256=JL5Xkmp8ritVMhL1pGhX7eEw5fde3FVD8-9-vZOZwWI,5399
|
|
22
|
-
mapFolding/someAssemblyRequired/__init__.py,sha256=kMoIH57T68hHArRiW6EBuuC-JNpxTXgmjH2aqN-NjWE,4106
|
|
23
|
-
mapFolding/someAssemblyRequired/_theTypes.py,sha256=pkMnYGtIAvIgudcvmbhZwmNnczY3Gk_ZmcS_7vfSZsU,4342
|
|
24
|
-
mapFolding/someAssemblyRequired/_tool_Make.py,sha256=0TGZtCUt6uu8h47N833qZ9IIjbn_yhoPFsBDEotQp9A,7222
|
|
25
|
-
mapFolding/someAssemblyRequired/_tool_Then.py,sha256=0Xb-MfKJhXjoVBTC7CSjpgCxxilL_WquL4WzKQWMR5A,4464
|
|
26
|
-
mapFolding/someAssemblyRequired/_toolboxAntecedents.py,sha256=6m80_ThGF47WWIkYweEdc3LRq96fHklys7IpoFSqN7A,13288
|
|
27
|
-
mapFolding/someAssemblyRequired/_toolboxContainers.py,sha256=zXjE70W1XodEGo2H1PofLoDbjtTKaJVlfv5I49jMz3o,23609
|
|
28
|
-
mapFolding/someAssemblyRequired/_toolboxPython.py,sha256=TuRC5CD_6tTjjLuvGgPbnqCSvIP3Vp2k2r592Dcpff4,7642
|
|
29
|
-
mapFolding/someAssemblyRequired/getLLVMforNoReason.py,sha256=9RPU6vK_eUg64GtVFI_nZnvUryXw8gfHJs9NyDYHIvg,2745
|
|
30
|
-
mapFolding/someAssemblyRequired/synthesizeNumbaJob.py,sha256=0i4iBBzHY9Io0XrsmXD814P52C_igvv_Aeur4udR8jI,15571
|
|
31
|
-
mapFolding/someAssemblyRequired/toolboxNumba.py,sha256=cHpX8dn1Fr_TWpDgVhYx6ObmEeD6slYeMWeE9laJadI,10754
|
|
32
|
-
mapFolding/someAssemblyRequired/transformationTools.py,sha256=goxIq-LGu-lRkdzvCrKYDp9hJyKzL_TtNZnSP6zLbY8,35833
|
|
33
|
-
mapFolding/syntheticModules/__init__.py,sha256=evVFqhCGa-WZKDiLcnQWjs-Bj34eRnfSLqz_d7dFYZY,83
|
|
34
|
-
mapFolding/syntheticModules/numbaCount.py,sha256=zM-bp07c9tEDdvidwzZ_bJTd0JC0VUkYEEiHG--P1tQ,15525
|
|
35
|
-
mapfolding-0.9.2.dist-info/licenses/LICENSE,sha256=NxH5Y8BdC-gNU-WSMwim3uMbID2iNDXJz7fHtuTdXhk,19346
|
|
36
|
-
tests/__init__.py,sha256=UIvSWWz_anRXBELKPOdhfRoZ4hArHQTvghHrRquDHHw,1940
|
|
37
|
-
tests/conftest.py,sha256=G8vhDSTdTbYZUFBUKLFOUOzDL1Ja6NVZmICCh4biZas,14298
|
|
38
|
-
tests/test_computations.py,sha256=MbnK9kRRwH3UI7aVMreNuEbzNVC2hP0Gq2mR-xjuxrI,6205
|
|
39
|
-
tests/test_filesystem.py,sha256=T2DkjBoI3lW6tCxd5BilPmUFrVukNKLjOOZVZxLM560,3004
|
|
40
|
-
tests/test_oeis.py,sha256=uxvwmgbnylSDdsVJfuAT0LuYLbIVFwSgdLxHm-xUGBM,5043
|
|
41
|
-
tests/test_other.py,sha256=UMlK4JPInalpOZuPvTnUrgXWCJOxAw-OsPs6CxMR254,3753
|
|
42
|
-
tests/test_tasks.py,sha256=yrExYvFP23TEA3ta0IotMNmi59rwQ3Y9hA3fwvIhxTE,2851
|
|
43
|
-
mapfolding-0.9.2.dist-info/METADATA,sha256=Ec4d3Oalth5tiJ-9Cnxap4kp6ehPFVxij_YtkaunuyQ,7466
|
|
44
|
-
mapfolding-0.9.2.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
45
|
-
mapfolding-0.9.2.dist-info/entry_points.txt,sha256=F3OUeZR1XDTpoH7k3wXuRb3KF_kXTTeYhu5AGK1SiOQ,146
|
|
46
|
-
mapfolding-0.9.2.dist-info/top_level.txt,sha256=1gP2vFaqPwHujGwb3UjtMlLEGN-943VSYFR7V4gDqW8,17
|
|
47
|
-
mapfolding-0.9.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|