mapFolding 0.9.1__py3-none-any.whl → 0.9.3__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 +99 -0
- mapFolding/__init__.py +63 -60
- mapFolding/basecamp.py +40 -35
- mapFolding/beDRY.py +72 -66
- mapFolding/dataBaskets.py +49 -0
- mapFolding/datatypes.py +21 -0
- mapFolding/oeis.py +57 -75
- mapFolding/reference/__init__.py +2 -2
- mapFolding/someAssemblyRequired/__init__.py +6 -4
- mapFolding/someAssemblyRequired/_theTypes.py +9 -1
- mapFolding/someAssemblyRequired/_tool_Make.py +0 -1
- mapFolding/someAssemblyRequired/_tool_Then.py +16 -8
- mapFolding/someAssemblyRequired/_toolboxAntecedents.py +111 -35
- mapFolding/someAssemblyRequired/_toolboxContainers.py +58 -49
- mapFolding/someAssemblyRequired/synthesizeNumbaJob.py +42 -42
- mapFolding/someAssemblyRequired/toolboxNumba.py +3 -11
- mapFolding/someAssemblyRequired/transformationTools.py +94 -70
- mapFolding/syntheticModules/numbaCount.py +9 -11
- mapFolding/theDao.py +19 -21
- mapFolding/theDaoOfMapFolding.py +142 -0
- mapFolding/theSSOT.py +36 -58
- mapFolding/toolboxFilesystem.py +29 -38
- {mapfolding-0.9.1.dist-info → mapfolding-0.9.3.dist-info}/METADATA +4 -3
- mapfolding-0.9.3.dist-info/RECORD +51 -0
- {mapfolding-0.9.1.dist-info → mapfolding-0.9.3.dist-info}/WHEEL +1 -1
- tests/__init__.py +2 -2
- tests/conftest.py +7 -7
- tests/test_computations.py +15 -13
- tests/test_other.py +0 -7
- tests/test_tasks.py +2 -2
- mapfolding-0.9.1.dist-info/RECORD +0 -47
- /mapFolding/reference/{lunnanNumpy.py → lunnonNumpy.py} +0 -0
- /mapFolding/reference/{lunnanWhile.py → lunnonWhile.py} +0 -0
- {mapfolding-0.9.1.dist-info → mapfolding-0.9.3.dist-info}/entry_points.txt +0 -0
- {mapfolding-0.9.1.dist-info → mapfolding-0.9.3.dist-info}/licenses/LICENSE +0 -0
- {mapfolding-0.9.1.dist-info → mapfolding-0.9.3.dist-info}/top_level.txt +0 -0
mapFolding/theSSOT.py
CHANGED
|
@@ -1,31 +1,41 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Single Source of Truth module for configuration, types, and computational state management.
|
|
3
3
|
|
|
4
|
-
This module defines the core data structures, type definitions, and configuration settings
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
This module defines the core data structures, type definitions, and configuration settings used throughout the
|
|
5
|
+
mapFolding package. It implements the Single Source of Truth (SSOT) principle to ensure consistency across the package's
|
|
6
|
+
components.
|
|
7
7
|
|
|
8
8
|
Key features:
|
|
9
|
-
1. The ComputationState dataclass, which encapsulates the state of the folding computation
|
|
10
|
-
2. Unified type definitions for integers and arrays used in the computation
|
|
11
|
-
3. Configuration settings for synthetic module generation and dispatching
|
|
12
|
-
4. Path resolution and management for package resources and job output
|
|
13
|
-
5. Dynamic dispatch functionality for algorithm implementations
|
|
14
|
-
|
|
15
|
-
The module differentiates between "the" identifiers (package defaults) and other identifiers
|
|
16
|
-
|
|
9
|
+
1. The `ComputationState` dataclass, which encapsulates the state of the folding computation.
|
|
10
|
+
2. Unified type definitions for integers and arrays used in the computation.
|
|
11
|
+
3. Configuration settings for synthetic module generation and dispatching.
|
|
12
|
+
4. Path resolution and management for package resources and job output.
|
|
13
|
+
5. Dynamic dispatch functionality for algorithm implementations.
|
|
14
|
+
|
|
15
|
+
The module differentiates between "the" identifiers (package defaults) and other identifiers to avoid namespace
|
|
16
|
+
collisions when transforming algorithms.
|
|
17
17
|
"""
|
|
18
18
|
|
|
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, int16 as numpy_int16, integer, ndarray, uint8 as numpy_uint8
|
|
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
|
|
28
|
-
from
|
|
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
|
+
)
|
|
29
39
|
|
|
30
40
|
# Evaluate When Packaging https://github.com/hunterhogan/mapFolding/issues/18
|
|
31
41
|
try:
|
|
@@ -54,10 +64,9 @@ class PackageSettings:
|
|
|
54
64
|
"""
|
|
55
65
|
Centralized configuration settings for the mapFolding package.
|
|
56
66
|
|
|
57
|
-
This class implements the Single Source of Truth (SSOT) principle for package
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
is imported and used throughout the package to retrieve configuration values.
|
|
67
|
+
This class implements the Single Source of Truth (SSOT) principle for package configuration, providing a consistent
|
|
68
|
+
interface for accessing package settings, paths, and dispatch functions. The primary instance of this class, named
|
|
69
|
+
`The`, is imported and used throughout the package to retrieve configuration values.
|
|
61
70
|
"""
|
|
62
71
|
|
|
63
72
|
logicalPathModuleDispatcher: str | None = None
|
|
@@ -146,48 +155,20 @@ class PackageSettings:
|
|
|
146
155
|
|
|
147
156
|
The = PackageSettings(logicalPathModuleDispatcher=logicalPathModuleDispatcherHARDCODED, callableDispatcher=callableDispatcherHARDCODED, concurrencyPackage=concurrencyPackageHARDCODED)
|
|
148
157
|
|
|
149
|
-
# =============================================================================
|
|
150
|
-
# Flexible Data Structure System Needs Enhanced Paradigm https://github.com/hunterhogan/mapFolding/issues/9
|
|
151
|
-
|
|
152
|
-
NumPyIntegerType = TypeVar('NumPyIntegerType', bound=integer[Any], covariant=True)
|
|
153
|
-
|
|
154
|
-
# DatatypeLeavesTotal: TypeAlias = int
|
|
155
|
-
NumPyLeavesTotal: TypeAlias = numpy_uint8
|
|
156
|
-
# NumPyLeavesTotal: TypeAlias = numpy_int16 # this would be uint8, but mapShape (2,2,2,2, 2,2,2,2) has 256 leaves, so generic containers must accommodate at least 256 leaves
|
|
157
|
-
|
|
158
|
-
# DatatypeElephino: TypeAlias = int
|
|
159
|
-
NumPyElephino: TypeAlias = numpy_uint8
|
|
160
|
-
# NumPyElephino: TypeAlias = numpy_int16
|
|
161
|
-
|
|
162
|
-
# DatatypeFoldsTotal: TypeAlias = int
|
|
163
|
-
NumPyFoldsTotal: TypeAlias = numpy_int64
|
|
164
|
-
|
|
165
|
-
DatatypeLeavesTotal = uint8
|
|
166
|
-
DatatypeElephino = uint8
|
|
167
|
-
DatatypeFoldsTotal = int64
|
|
168
|
-
|
|
169
|
-
Array3D: TypeAlias = ndarray[tuple[int, int, int], dtype[NumPyLeavesTotal]]
|
|
170
|
-
Array1DLeavesTotal: TypeAlias = ndarray[tuple[int], dtype[NumPyLeavesTotal]]
|
|
171
|
-
Array1DElephino: TypeAlias = ndarray[tuple[int], dtype[NumPyElephino]]
|
|
172
|
-
Array1DFoldsTotal: TypeAlias = ndarray[tuple[int], dtype[NumPyFoldsTotal]]
|
|
173
|
-
|
|
174
158
|
@dataclasses.dataclass
|
|
175
159
|
class ComputationState:
|
|
176
160
|
"""
|
|
177
161
|
Represents the complete state of a map folding computation.
|
|
178
162
|
|
|
179
|
-
This dataclass encapsulates all the information required to compute the number of
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
that flows through the entire computational algorithm.
|
|
163
|
+
This dataclass encapsulates all the information required to compute the number of possible ways to fold a map,
|
|
164
|
+
including the map dimensions, leaf connections, computation progress, and fold counting. It serves as the central
|
|
165
|
+
data structure that flows through the entire computational algorithm.
|
|
183
166
|
|
|
184
167
|
Fields are categorized into:
|
|
185
|
-
1. Input parameters (mapShape
|
|
186
|
-
2. Core computational structures (connectionGraph
|
|
187
|
-
3. Tracking variables for the folding algorithm state
|
|
188
|
-
4. Result accumulation fields (foldsTotal
|
|
189
|
-
|
|
190
|
-
The data structures and algorithms are based on Lunnon's 1971 paper on map folding.
|
|
168
|
+
1. Input parameters (`mapShape`, `leavesTotal`, etc.).
|
|
169
|
+
2. Core computational structures (`connectionGraph`, etc.).
|
|
170
|
+
3. Tracking variables for the folding algorithm state.
|
|
171
|
+
4. Result accumulation fields (`foldsTotal`, `groupsOfFolds`).
|
|
191
172
|
"""
|
|
192
173
|
# NOTE Python is anti-DRY, again, `DatatypeLeavesTotal` metadata needs to match the type
|
|
193
174
|
mapShape: tuple[DatatypeLeavesTotal, ...] = dataclasses.field(init=True, metadata={'elementConstructor': 'DatatypeLeavesTotal'})
|
|
@@ -233,7 +214,7 @@ class ComputationState:
|
|
|
233
214
|
foldsTotal: DatatypeFoldsTotal = DatatypeFoldsTotal(0)
|
|
234
215
|
"""The final computed total number of distinct folding patterns."""
|
|
235
216
|
|
|
236
|
-
gap1ndex:
|
|
217
|
+
gap1ndex: DatatypeElephino = DatatypeElephino(0)
|
|
237
218
|
"""Current index into gaps array during algorithm execution."""
|
|
238
219
|
|
|
239
220
|
gap1ndexCeiling: DatatypeElephino = DatatypeElephino(0)
|
|
@@ -254,16 +235,13 @@ class ComputationState:
|
|
|
254
235
|
leaf1ndex: DatatypeLeavesTotal = DatatypeLeavesTotal(1)
|
|
255
236
|
"""Active leaf being processed in the folding algorithm. Starts at 1, not 0."""
|
|
256
237
|
|
|
257
|
-
leafConnectee:
|
|
238
|
+
leafConnectee: DatatypeLeavesTotal = DatatypeLeavesTotal(0)
|
|
258
239
|
"""Leaf that is being connected to the active leaf."""
|
|
259
240
|
|
|
260
|
-
# leafSequence: list[DatatypeLeavesTotal] = dataclasses.field(default_factory=list, metadata={'elementConstructor': 'DatatypeLeavesTotal'})
|
|
261
|
-
|
|
262
241
|
taskIndex: DatatypeLeavesTotal = DatatypeLeavesTotal(0)
|
|
263
242
|
"""Index of the current parallel task when using task divisions."""
|
|
264
243
|
|
|
265
244
|
def __post_init__(self) -> None:
|
|
266
|
-
# self.leafSequence = [self.leaf1ndex]
|
|
267
245
|
from mapFolding.beDRY import getConnectionGraph, makeDataContainer
|
|
268
246
|
self.dimensionsTotal = DatatypeLeavesTotal(len(self.mapShape))
|
|
269
247
|
leavesTotalAsInt = int(self.leavesTotal)
|
mapFolding/toolboxFilesystem.py
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Filesystem utilities for managing map folding computation results.
|
|
3
3
|
|
|
4
|
-
This module provides functions for standardized handling of files related to the mapFolding
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
This module provides functions for standardized handling of files related to the mapFolding package, with a focus on
|
|
5
|
+
saving, retrieving, and naming computation results. It implements consistent naming conventions and path resolution
|
|
6
|
+
strategies to ensure that:
|
|
7
7
|
|
|
8
8
|
1. Computation results are stored in a predictable location.
|
|
9
9
|
2. Filenames follow a consistent pattern based on map dimensions.
|
|
10
10
|
3. Results can be reliably retrieved for future reference.
|
|
11
11
|
4. The system handles file operations safely with appropriate error handling.
|
|
12
12
|
|
|
13
|
-
The module serves as the standardized interface between the computational components
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
computations that may take days to complete.
|
|
13
|
+
The module serves as the standardized interface between the computational components of the package and the filesystem,
|
|
14
|
+
abstracting away the details of file operations and path management. It provides robust fallback mechanisms to preserve
|
|
15
|
+
computation results even in the face of filesystem errors, which is critical for long-running computations that may take
|
|
16
|
+
days to complete.
|
|
18
17
|
|
|
19
18
|
The functions here adhere to a consistent approach to path handling:
|
|
20
19
|
- Cross-platform compatibility through the use of `pathlib`.
|
|
@@ -33,9 +32,9 @@ def getFilenameFoldsTotal(mapShape: tuple[int, ...]) -> str:
|
|
|
33
32
|
"""
|
|
34
33
|
Create a standardized filename for a computed `foldsTotal` value.
|
|
35
34
|
|
|
36
|
-
This function generates a consistent, filesystem-safe filename based on map dimensions.
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
This function generates a consistent, filesystem-safe filename based on map dimensions. Standardizing filenames
|
|
36
|
+
ensures that results can be reliably stored and retrieved, avoiding potential filesystem incompatibilities or Python
|
|
37
|
+
naming restrictions.
|
|
39
38
|
|
|
40
39
|
Parameters:
|
|
41
40
|
mapShape: A sequence of integers representing the dimensions of the map.
|
|
@@ -49,7 +48,7 @@ def getFilenameFoldsTotal(mapShape: tuple[int, ...]) -> str:
|
|
|
49
48
|
- Safe filesystem characters
|
|
50
49
|
- Unique extension (.foldsTotal)
|
|
51
50
|
- Python-safe strings (no starting with numbers, no reserved words)
|
|
52
|
-
- The 'p' prefix comes from
|
|
51
|
+
- The 'p' prefix comes from Lunnon's original code.
|
|
53
52
|
"""
|
|
54
53
|
return 'p' + 'x'.join(str(dimension) for dimension in sorted(mapShape)) + '.foldsTotal'
|
|
55
54
|
|
|
@@ -57,14 +56,13 @@ def getPathFilenameFoldsTotal(mapShape: tuple[int, ...], pathLikeWriteFoldsTotal
|
|
|
57
56
|
"""
|
|
58
57
|
Get a standardized path and filename for the computed `foldsTotal` value.
|
|
59
58
|
|
|
60
|
-
This function resolves paths for storing computation results, handling different
|
|
61
|
-
|
|
62
|
-
that all parent directories exist in the resulting path.
|
|
59
|
+
This function resolves paths for storing computation results, handling different input types including directories,
|
|
60
|
+
absolute paths, or relative paths. It ensures that all parent directories exist in the resulting path.
|
|
63
61
|
|
|
64
62
|
Parameters:
|
|
65
63
|
mapShape: List of dimensions for the map folding problem.
|
|
66
|
-
pathLikeWriteFoldsTotal (getPathJobRootDEFAULT): Path, filename, or relative path and filename.
|
|
67
|
-
|
|
64
|
+
pathLikeWriteFoldsTotal (getPathJobRootDEFAULT): Path, filename, or relative path and filename. If None, uses
|
|
65
|
+
default path. If a directory, appends standardized filename.
|
|
68
66
|
|
|
69
67
|
Returns:
|
|
70
68
|
pathFilenameFoldsTotal: Absolute path and filename for storing the `foldsTotal` value.
|
|
@@ -91,10 +89,9 @@ def getPathRootJobDEFAULT() -> Path:
|
|
|
91
89
|
"""
|
|
92
90
|
Get the default root directory for map folding computation jobs.
|
|
93
91
|
|
|
94
|
-
This function determines the appropriate default directory for storing computation
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
Google Colab.
|
|
92
|
+
This function determines the appropriate default directory for storing computation results based on the current
|
|
93
|
+
runtime environment. It uses platform-specific directories for normal environments and adapts to special
|
|
94
|
+
environments like Google Colab.
|
|
98
95
|
|
|
99
96
|
Returns:
|
|
100
97
|
pathJobDEFAULT: Path to the default directory for storing computation results
|
|
@@ -112,10 +109,7 @@ def getPathRootJobDEFAULT() -> Path:
|
|
|
112
109
|
|
|
113
110
|
def _saveFoldsTotal(pathFilename: PathLike[str] | PurePath, foldsTotal: int) -> None:
|
|
114
111
|
"""
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
This is a low-level function used by the public `saveFoldsTotal` function.
|
|
118
|
-
It handles the basic file operation without extensive error handling.
|
|
112
|
+
Standardized function to save a `foldsTotal` value to a file.
|
|
119
113
|
|
|
120
114
|
Parameters:
|
|
121
115
|
pathFilename: Path where the `foldsTotal` value should be saved
|
|
@@ -129,9 +123,8 @@ def saveFoldsTotal(pathFilename: PathLike[str] | PurePath, foldsTotal: int) -> N
|
|
|
129
123
|
"""
|
|
130
124
|
Save `foldsTotal` value to disk with multiple fallback mechanisms.
|
|
131
125
|
|
|
132
|
-
This function attempts to save the computed `foldsTotal` value to the specified
|
|
133
|
-
|
|
134
|
-
The robustness is critical since these computations may take days to complete.
|
|
126
|
+
This function attempts to save the computed `foldsTotal` value to the specified location, with backup strategies in
|
|
127
|
+
case the primary save attempt fails. The robustness is critical since these computations may take days to complete.
|
|
135
128
|
|
|
136
129
|
Parameters:
|
|
137
130
|
pathFilename: Target save location for the `foldsTotal` value
|
|
@@ -165,9 +158,8 @@ def saveFoldsTotalFAILearly(pathFilename: PathLike[str] | PurePath) -> None:
|
|
|
165
158
|
"""
|
|
166
159
|
Preemptively test file write capabilities before beginning computation.
|
|
167
160
|
|
|
168
|
-
This function performs validation checks on the target file location before
|
|
169
|
-
|
|
170
|
-
aspects of filesystem functionality to ensure results can be saved:
|
|
161
|
+
This function performs validation checks on the target file location before a potentially long-running computation
|
|
162
|
+
begins. It tests several critical aspects of filesystem functionality to ensure results can be saved:
|
|
171
163
|
|
|
172
164
|
1. Checks if the file already exists to prevent accidental overwrites.
|
|
173
165
|
2. Verifies that parent directories exist.
|
|
@@ -182,8 +174,8 @@ def saveFoldsTotalFAILearly(pathFilename: PathLike[str] | PurePath) -> None:
|
|
|
182
174
|
FileNotFoundError: If parent directories don't exist or if write tests fail.
|
|
183
175
|
|
|
184
176
|
Notes:
|
|
185
|
-
This function helps prevent a situation where a computation runs for
|
|
186
|
-
|
|
177
|
+
This function helps prevent a situation where a computation runs for hours or days only to discover at the end
|
|
178
|
+
that results cannot be saved.
|
|
187
179
|
"""
|
|
188
180
|
if Path(pathFilename).exists():
|
|
189
181
|
raise FileExistsError(f"`{pathFilename = }` exists: a battle of overwriting might cause tears.")
|
|
@@ -201,17 +193,16 @@ def writeStringToHere(this: str, pathFilename: PathLike[str] | PurePath) -> None
|
|
|
201
193
|
"""
|
|
202
194
|
Write a string to a file, creating parent directories if needed.
|
|
203
195
|
|
|
204
|
-
This utility function provides a consistent interface for writing string content
|
|
205
|
-
|
|
206
|
-
string conversion.
|
|
196
|
+
This utility function provides a consistent interface for writing string content to files across the package. It
|
|
197
|
+
handles path creation and ensures proper string conversion.
|
|
207
198
|
|
|
208
199
|
Parameters:
|
|
209
200
|
this: The string content to write to the file.
|
|
210
201
|
pathFilename: The target file path where the string should be written.
|
|
211
202
|
|
|
212
203
|
Notes:
|
|
213
|
-
This function creates all parent directories in the path if they don't exist,
|
|
214
|
-
|
|
204
|
+
This function creates all parent directories in the path if they don't exist, making it safe to use with newly
|
|
205
|
+
created directory structures.
|
|
215
206
|
"""
|
|
216
207
|
pathFilename = Path(pathFilename)
|
|
217
208
|
pathFilename.parent.mkdir(parents=True, exist_ok=True)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mapFolding
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.3
|
|
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
|
|
@@ -38,6 +38,7 @@ Requires-Dist: numba
|
|
|
38
38
|
Requires-Dist: numpy
|
|
39
39
|
Requires-Dist: platformdirs
|
|
40
40
|
Requires-Dist: python_minifier
|
|
41
|
+
Requires-Dist: sympy
|
|
41
42
|
Requires-Dist: tomli
|
|
42
43
|
Requires-Dist: Z0Z_tools
|
|
43
44
|
Provides-Extra: testing
|
|
@@ -105,7 +106,7 @@ def countFolds_optimized(shape_param):
|
|
|
105
106
|
|
|
106
107
|
### 2. Code Generation Framework
|
|
107
108
|
|
|
108
|
-
Study and extend a complete Python code transformation
|
|
109
|
+
Study and extend a complete Python code transformation assembly line:
|
|
109
110
|
|
|
110
111
|
- AST analysis and manipulation
|
|
111
112
|
- Dataclass decomposition ("shattering")
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
mapFolding/Z0Z_flowControl.py,sha256=thYz1WA7v0PCigvZcNMcKhNnJoIjLJkVgD4wUTXveGY,3272
|
|
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/dataBaskets.py,sha256=CrSEMfAr63l6zFA2v2YGygwSD8YeLb-3ZCKlpbp3Mho,4325
|
|
6
|
+
mapFolding/datatypes.py,sha256=LbDYemnIVLFqMIHPKWutEWId1iPMw6P7XCDm7Uw4it4,912
|
|
7
|
+
mapFolding/oeis.py,sha256=u9xiBrRXVJSFCC8FgLLuvZAsmX852UyjYqREXiulys8,17106
|
|
8
|
+
mapFolding/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
mapFolding/theDao.py,sha256=kc3rzTX3yts0PxgPCXFbgWvaqsBexsiU5ib2pzpvID0,10019
|
|
10
|
+
mapFolding/theDaoOfMapFolding.py,sha256=ncTIiBfTsM8SNVx9qefZ0bBcBtviWLSk4iPv3Z9nGiE,5442
|
|
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/__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
|
|
33
|
+
mapFolding/someAssemblyRequired/getLLVMforNoReason.py,sha256=9RPU6vK_eUg64GtVFI_nZnvUryXw8gfHJs9NyDYHIvg,2745
|
|
34
|
+
mapFolding/someAssemblyRequired/synthesizeNumbaJob.py,sha256=yFAGTtKSgv7L87PjPjQMS4wz7Bgs37B1_qqZO8cntQ0,15568
|
|
35
|
+
mapFolding/someAssemblyRequired/toolboxNumba.py,sha256=f2spS6SSobGdDNlpS2ELO7ejurqbMVITS2QZLIXDivk,10759
|
|
36
|
+
mapFolding/someAssemblyRequired/transformationTools.py,sha256=1_qIlrK5a9e5vjRW5vru-v50mkuCmFMaV7lU01cq-ss,35838
|
|
37
|
+
mapFolding/syntheticModules/__init__.py,sha256=evVFqhCGa-WZKDiLcnQWjs-Bj34eRnfSLqz_d7dFYZY,83
|
|
38
|
+
mapFolding/syntheticModules/numbaCount.py,sha256=zM-bp07c9tEDdvidwzZ_bJTd0JC0VUkYEEiHG--P1tQ,15525
|
|
39
|
+
mapfolding-0.9.3.dist-info/licenses/LICENSE,sha256=NxH5Y8BdC-gNU-WSMwim3uMbID2iNDXJz7fHtuTdXhk,19346
|
|
40
|
+
tests/__init__.py,sha256=5VhHf0JJ2_DSh58zJ0rR5UkpoCon-0IkdljspTCzZ04,1950
|
|
41
|
+
tests/conftest.py,sha256=x8zMZQyTss3sn0GwHm_TSRwD9_LVlR8l_qF8r43Vxl4,14178
|
|
42
|
+
tests/test_computations.py,sha256=H7AlEAGdl4klAGyeF9z0Gzy2SBtN49xWt4rdftqusnU,6335
|
|
43
|
+
tests/test_filesystem.py,sha256=T2DkjBoI3lW6tCxd5BilPmUFrVukNKLjOOZVZxLM560,3004
|
|
44
|
+
tests/test_oeis.py,sha256=uxvwmgbnylSDdsVJfuAT0LuYLbIVFwSgdLxHm-xUGBM,5043
|
|
45
|
+
tests/test_other.py,sha256=UMlK4JPInalpOZuPvTnUrgXWCJOxAw-OsPs6CxMR254,3753
|
|
46
|
+
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,,
|
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,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 mapFolding import countFolds, getFoldsTotalKnown, oeisIDfor_n
|
|
88
|
+
from mapFolding import countFolds, getFoldsTotalKnown, oeisIDfor_n
|
|
89
89
|
from mapFolding.oeis import settingsOEIS
|
|
90
90
|
from mapFolding.someAssemblyRequired.RecipeJob import RecipeJob
|
|
91
91
|
from mapFolding.someAssemblyRequired.transformationTools import makeInitializedComputationState
|
|
@@ -98,28 +98,30 @@ import pytest
|
|
|
98
98
|
if __name__ == '__main__':
|
|
99
99
|
multiprocessing.set_start_method('spawn')
|
|
100
100
|
|
|
101
|
-
def test_algorithmSourceParallel(
|
|
102
|
-
standardizedEqualToCallableReturn(getFoldsTotalKnown(
|
|
101
|
+
def test_algorithmSourceParallel(mapShapeTestParallelization: tuple[int, ...], useAlgorithmSourceDispatcher: None) -> None:
|
|
102
|
+
standardizedEqualToCallableReturn(getFoldsTotalKnown(mapShapeTestParallelization), countFolds, mapShapeTestParallelization, None, 'maximum', None)
|
|
103
103
|
|
|
104
|
-
def
|
|
105
|
-
standardizedEqualToCallableReturn(getFoldsTotalKnown(
|
|
104
|
+
def test_theDaoOfMapFolding(mapShapeTestCountFolds: tuple[int, ...]) -> None:
|
|
105
|
+
standardizedEqualToCallableReturn(getFoldsTotalKnown(mapShapeTestCountFolds), countFolds, None, None, None, None, mapShapeTestCountFolds, None, None, 'theDaoOfMapFolding')
|
|
106
|
+
|
|
107
|
+
def test_algorithmSourceSequential(mapShapeTestCountFolds: tuple[int, ...], useAlgorithmSourceDispatcher: None) -> None:
|
|
108
|
+
standardizedEqualToCallableReturn(getFoldsTotalKnown(mapShapeTestCountFolds), countFolds, mapShapeTestCountFolds)
|
|
106
109
|
|
|
107
110
|
def test_aOFn_calculate_value(oeisID: str) -> None:
|
|
108
111
|
for n in settingsOEIS[oeisID]['valuesTestValidation']:
|
|
109
112
|
standardizedEqualToCallableReturn(settingsOEIS[oeisID]['valuesKnown'][n], oeisIDfor_n, oeisID, n)
|
|
110
113
|
|
|
111
|
-
def test_syntheticParallel(syntheticDispatcherFixture: None,
|
|
112
|
-
standardizedEqualToCallableReturn(getFoldsTotalKnown(
|
|
114
|
+
def test_syntheticParallel(syntheticDispatcherFixture: None, mapShapeTestParallelization: tuple[int, ...]) -> None:
|
|
115
|
+
standardizedEqualToCallableReturn(getFoldsTotalKnown(mapShapeTestParallelization), countFolds, mapShapeTestParallelization, None, 'maximum')
|
|
113
116
|
|
|
114
|
-
def test_syntheticSequential(syntheticDispatcherFixture: None,
|
|
115
|
-
standardizedEqualToCallableReturn(getFoldsTotalKnown(
|
|
117
|
+
def test_syntheticSequential(syntheticDispatcherFixture: None, mapShapeTestCountFolds: tuple[int, ...]) -> None:
|
|
118
|
+
standardizedEqualToCallableReturn(getFoldsTotalKnown(mapShapeTestCountFolds), countFolds, mapShapeTestCountFolds)
|
|
116
119
|
|
|
117
120
|
@pytest.mark.parametrize('pathFilenameTmpTesting', ['.py'], indirect=True)
|
|
118
|
-
def test_writeJobNumba(oneTestCuzTestsOverwritingTests:
|
|
121
|
+
def test_writeJobNumba(oneTestCuzTestsOverwritingTests: tuple[int, ...], pathFilenameTmpTesting: Path) -> None:
|
|
119
122
|
from mapFolding.someAssemblyRequired.toolboxNumba import SpicesJobNumba
|
|
120
123
|
from mapFolding.someAssemblyRequired.synthesizeNumbaJob import makeJobNumba
|
|
121
|
-
|
|
122
|
-
state = makeInitializedComputationState(mapShape)
|
|
124
|
+
state = makeInitializedComputationState(oneTestCuzTestsOverwritingTests)
|
|
123
125
|
|
|
124
126
|
pathFilenameModule = pathFilenameTmpTesting.absolute()
|
|
125
127
|
pathFilenameFoldsTotal = pathFilenameModule.with_suffix('.foldsTotalTesting')
|
|
@@ -142,4 +144,4 @@ def test_writeJobNumba(oneTestCuzTestsOverwritingTests: list[int], pathFilenameT
|
|
|
142
144
|
module.__name__ = "__main__"
|
|
143
145
|
Don_Lapre_Road_to_Self_Improvement.loader.exec_module(module)
|
|
144
146
|
|
|
145
|
-
standardizedEqualToCallableReturn(str(getFoldsTotalKnown(
|
|
147
|
+
standardizedEqualToCallableReturn(str(getFoldsTotalKnown(oneTestCuzTestsOverwritingTests)), pathFilenameFoldsTotal.read_text().strip)
|
tests/test_other.py
CHANGED
|
@@ -14,20 +14,15 @@ import sys
|
|
|
14
14
|
(['a'], ValueError, ValueError), # string
|
|
15
15
|
([-4, 2], [-4, 2], ValueError), # negative
|
|
16
16
|
([-3], [-3], ValueError), # negative
|
|
17
|
-
([0, 0], [0, 0], NotImplementedError), # no positive dimensions
|
|
18
|
-
([0, 5, 6], [0, 5, 6], (5, 6)), # zeros ignored
|
|
19
|
-
([0], [0], NotImplementedError), # edge case
|
|
20
17
|
([1, 2, 3, 4, 5], [1, 2, 3, 4, 5], (1, 2, 3, 4, 5)), # sequential
|
|
21
18
|
([1, sys.maxsize], [1, sys.maxsize], (1, sys.maxsize)), # maxint
|
|
22
19
|
([7.5], ValueError, ValueError), # float
|
|
23
20
|
([1] * 1000, [1] * 1000, (1,) * 1000), # long list
|
|
24
21
|
([11], [11], NotImplementedError), # single dimension
|
|
25
|
-
([13, 0, 17], [13, 0, 17], (13, 17)), # zeros handled
|
|
26
22
|
([2, 2, 2, 2], [2, 2, 2, 2], (2, 2, 2, 2)), # repeated dimensions
|
|
27
23
|
([2, 3, 4], [2, 3, 4], (2, 3, 4)),
|
|
28
24
|
([2, 3], [2, 3], (2, 3)),
|
|
29
25
|
([2] * 11, [2] * 11, (2,) * 11), # power of 2
|
|
30
|
-
([3, 2], [3, 2], (2, 3)), # return value is sorted
|
|
31
26
|
([3] * 5, [3] * 5, (3,) * 5), # power of 3
|
|
32
27
|
([None], TypeError, TypeError), # None
|
|
33
28
|
([True], TypeError, TypeError), # bool
|
|
@@ -36,8 +31,6 @@ import sys
|
|
|
36
31
|
([complex(1,1)], ValueError, ValueError), # complex number
|
|
37
32
|
([float('inf')], ValueError, ValueError), # infinity
|
|
38
33
|
([float('nan')], ValueError, ValueError), # NaN
|
|
39
|
-
([sys.maxsize - 1, 1], [sys.maxsize - 1, 1], (1, sys.maxsize - 1)), # near maxint
|
|
40
|
-
([sys.maxsize // 2, sys.maxsize // 2, 2], [sys.maxsize // 2, sys.maxsize // 2, 2], (2, sys.maxsize // 2, sys.maxsize // 2)), # overflow protection
|
|
41
34
|
([sys.maxsize, sys.maxsize], [sys.maxsize, sys.maxsize], (sys.maxsize, sys.maxsize)), # overflow protection
|
|
42
35
|
(range(3, 7), [3, 4, 5, 6], (3, 4, 5, 6)), # range sequence type
|
|
43
36
|
(tuple([3, 5, 7]), [3, 5, 7], (3, 5, 7)), # tuple sequence type
|
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=TXCWanI9snueVZMTtjLNpvG4um7vyPXmJeIvvrBuJCA,3887
|
|
2
|
-
mapFolding/basecamp.py,sha256=L0eduDE8-5SnEYpnI-GHs-am4ico9kEn75SuOUgibZ8,4770
|
|
3
|
-
mapFolding/beDRY.py,sha256=6E7fLwBK5E7vnI4mHJK6EmxU2Vmxk5d8yBip45uuuyw,15213
|
|
4
|
-
mapFolding/oeis.py,sha256=kVBIYUx4AvGGCqKBvtvSZvq1B6oLPw24wCHNZIOtiTc,17170
|
|
5
|
-
mapFolding/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
mapFolding/theDao.py,sha256=oj-NKxFVsfMUTQomQDK6Xh6GmKbE9gLqMWEyPStzIj0,10022
|
|
7
|
-
mapFolding/theSSOT.py,sha256=fG0WuZrCx77qgJmjZSFLmY03_oQzhh1Xr70-0pNLRe4,17223
|
|
8
|
-
mapFolding/toolboxFilesystem.py,sha256=5RZ9CshZwgjejH_sMG4_Kk4JX3QJLkK30OqFeL5jFWg,9974
|
|
9
|
-
mapFolding/reference/__init__.py,sha256=UIEU8BJR_YDzjFQcLel3XtHzOCJiOUGlGiWzOzbvhik,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/lunnanNumpy.py,sha256=mMgrgbrBpe4nmo72ThEI-MGH0OwEHmfMPczSXHp2qKo,4357
|
|
15
|
-
mapFolding/reference/lunnanWhile.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=JLccUsx6FnBn1W2XbaBfVD3KNGmfw0HoO0NwxbzF3uA,4036
|
|
23
|
-
mapFolding/someAssemblyRequired/_theTypes.py,sha256=YFiQI6zsrFNruvqGDXHJVH0OWXsOj9EwDrt4G59OVHA,3995
|
|
24
|
-
mapFolding/someAssemblyRequired/_tool_Make.py,sha256=GQDt6LXGJ1QLVQTGdEu-GJH7y4I2rO60sIBVS5p2Rjk,7384
|
|
25
|
-
mapFolding/someAssemblyRequired/_tool_Then.py,sha256=uc1of9ZPCp5Vrh5Qg80giatGHwT9wRzW3dWaKxGYQsg,4125
|
|
26
|
-
mapFolding/someAssemblyRequired/_toolboxAntecedents.py,sha256=9RWpbKkf90ApmUPckLqJLhjK6Iasq8Txsa9IOYwTbgw,10909
|
|
27
|
-
mapFolding/someAssemblyRequired/_toolboxContainers.py,sha256=-ImBTd0IlgmHwL9VrUarykOeSmmdLOrRiISoel5vizA,23794
|
|
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=N5rl_YbiK0YTRv3V27tRrrwVxpEbSe6sxZJBMtLNlco,15587
|
|
31
|
-
mapFolding/someAssemblyRequired/toolboxNumba.py,sha256=3Saast4QvugNwluc4CLMfelZG2sKdZO74z_8p2LkG_k,10972
|
|
32
|
-
mapFolding/someAssemblyRequired/transformationTools.py,sha256=M5cDR1_jPOs92XoPd8Mbcxc5fTWW2YwaG4HGcSJQUeY,34238
|
|
33
|
-
mapFolding/syntheticModules/__init__.py,sha256=evVFqhCGa-WZKDiLcnQWjs-Bj34eRnfSLqz_d7dFYZY,83
|
|
34
|
-
mapFolding/syntheticModules/numbaCount.py,sha256=hQPPLKZi99Sayny1Gp3Y9Jv_XLSwozIiUmOrHVaaQ2Q,15768
|
|
35
|
-
mapfolding-0.9.1.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=zZmSZpcNsk4oeD4EHNLMNtmiz9hnwwoV62DFSQrLKwo,4258
|
|
42
|
-
tests/test_tasks.py,sha256=yrExYvFP23TEA3ta0IotMNmi59rwQ3Y9hA3fwvIhxTE,2851
|
|
43
|
-
mapfolding-0.9.1.dist-info/METADATA,sha256=UQmPj1bF5CjCNrNSwfemNPHz80PPRqKr63EbE5rdMzI,7445
|
|
44
|
-
mapfolding-0.9.1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
45
|
-
mapfolding-0.9.1.dist-info/entry_points.txt,sha256=F3OUeZR1XDTpoH7k3wXuRb3KF_kXTTeYhu5AGK1SiOQ,146
|
|
46
|
-
mapfolding-0.9.1.dist-info/top_level.txt,sha256=1gP2vFaqPwHujGwb3UjtMlLEGN-943VSYFR7V4gDqW8,17
|
|
47
|
-
mapfolding-0.9.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|