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.
Files changed (36) hide show
  1. mapFolding/Z0Z_flowControl.py +99 -0
  2. mapFolding/__init__.py +63 -60
  3. mapFolding/basecamp.py +40 -35
  4. mapFolding/beDRY.py +72 -66
  5. mapFolding/dataBaskets.py +49 -0
  6. mapFolding/datatypes.py +21 -0
  7. mapFolding/oeis.py +57 -75
  8. mapFolding/reference/__init__.py +2 -2
  9. mapFolding/someAssemblyRequired/__init__.py +6 -4
  10. mapFolding/someAssemblyRequired/_theTypes.py +9 -1
  11. mapFolding/someAssemblyRequired/_tool_Make.py +0 -1
  12. mapFolding/someAssemblyRequired/_tool_Then.py +16 -8
  13. mapFolding/someAssemblyRequired/_toolboxAntecedents.py +111 -35
  14. mapFolding/someAssemblyRequired/_toolboxContainers.py +58 -49
  15. mapFolding/someAssemblyRequired/synthesizeNumbaJob.py +42 -42
  16. mapFolding/someAssemblyRequired/toolboxNumba.py +3 -11
  17. mapFolding/someAssemblyRequired/transformationTools.py +94 -70
  18. mapFolding/syntheticModules/numbaCount.py +9 -11
  19. mapFolding/theDao.py +19 -21
  20. mapFolding/theDaoOfMapFolding.py +142 -0
  21. mapFolding/theSSOT.py +36 -58
  22. mapFolding/toolboxFilesystem.py +29 -38
  23. {mapfolding-0.9.1.dist-info → mapfolding-0.9.3.dist-info}/METADATA +4 -3
  24. mapfolding-0.9.3.dist-info/RECORD +51 -0
  25. {mapfolding-0.9.1.dist-info → mapfolding-0.9.3.dist-info}/WHEEL +1 -1
  26. tests/__init__.py +2 -2
  27. tests/conftest.py +7 -7
  28. tests/test_computations.py +15 -13
  29. tests/test_other.py +0 -7
  30. tests/test_tasks.py +2 -2
  31. mapfolding-0.9.1.dist-info/RECORD +0 -47
  32. /mapFolding/reference/{lunnanNumpy.py → lunnonNumpy.py} +0 -0
  33. /mapFolding/reference/{lunnanWhile.py → lunnonWhile.py} +0 -0
  34. {mapfolding-0.9.1.dist-info → mapfolding-0.9.3.dist-info}/entry_points.txt +0 -0
  35. {mapfolding-0.9.1.dist-info → mapfolding-0.9.3.dist-info}/licenses/LICENSE +0 -0
  36. {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
- used throughout the mapFolding package. It implements the Single Source of Truth (SSOT)
6
- principle to ensure consistency across the package's components.
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
- to avoid namespace collisions when transforming algorithms.
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 numba import int64, uint8
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
- configuration, providing a consistent interface for accessing package settings,
59
- paths, and dispatch functions. The primary instance of this class, named `The`,
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
- possible ways to fold a map, including the map dimensions, leaf connections,
181
- computation progress, and fold counting. It serves as the central data structure
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, leavesTotal, etc.)
186
- 2. Core computational structures (connectionGraph, etc.)
187
- 3. Tracking variables for the folding algorithm state
188
- 4. Result accumulation fields (foldsTotal, groupsOfFolds)
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: DatatypeLeavesTotal = DatatypeLeavesTotal(0)
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: DatatypeElephino = DatatypeElephino(0)
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)
@@ -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
- package, with a focus on saving, retrieving, and naming computation results. It implements
6
- consistent naming conventions and path resolution strategies to ensure that:
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
- of the package and the filesystem, abstracting away the details of file operations
15
- and path management. It provides robust fallback mechanisms to preserve computation
16
- results even in the face of filesystem errors, which is critical for long-running
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
- Standardizing filenames ensures that results can be reliably stored and retrieved,
38
- avoiding potential filesystem incompatibilities or Python naming restrictions.
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 Lunnan's original code.
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
- input types including directories, absolute paths, or relative paths. It ensures
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
- If None, uses default path. If a directory, appends standardized filename.
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
- results based on the current runtime environment. It uses platform-specific
96
- directories for normal environments and adapts to special environments like
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
- Internal helper function to save a `foldsTotal` value to a file.
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
- location, with backup strategies in case the primary save attempt fails.
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
- a potentially long-running computation begins. It tests several critical
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
- hours or days only to discover at the end that results cannot be saved.
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
- to files across the package. It handles path creation and ensures proper
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
- making it safe to use with newly created directory structures.
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.1
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 pipeline:
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: setuptools (78.1.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
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 pipeline from source to optimized implementations
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 pipelines.
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 ComputationState, The
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 listDimensionsTestCountFolds(oeisID: str) -> tuple[int, ...]:
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 listDimensionsTestParallelization(oeisID: str) -> list[int]:
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 list(settingsOEIS[oeisID]['getMapShape'](n))
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[['ComputationState'], 'ComputationState']:
259
- def wrapper(state: 'ComputationState') -> 'ComputationState':
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[[ComputationState], ComputationState]:
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
@@ -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, validateListDimensions
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(listDimensionsTestParallelization: list[int], useAlgorithmSourceDispatcher: None) -> None:
102
- standardizedEqualToCallableReturn(getFoldsTotalKnown(tuple(listDimensionsTestParallelization)), countFolds, listDimensionsTestParallelization, None, 'maximum', None)
101
+ def test_algorithmSourceParallel(mapShapeTestParallelization: tuple[int, ...], useAlgorithmSourceDispatcher: None) -> None:
102
+ standardizedEqualToCallableReturn(getFoldsTotalKnown(mapShapeTestParallelization), countFolds, mapShapeTestParallelization, None, 'maximum', None)
103
103
 
104
- def test_algorithmSourceSequential(listDimensionsTestCountFolds: tuple[int, ...], useAlgorithmSourceDispatcher: None) -> None:
105
- standardizedEqualToCallableReturn(getFoldsTotalKnown(tuple(listDimensionsTestCountFolds)), countFolds, listDimensionsTestCountFolds)
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, listDimensionsTestParallelization: list[int]) -> None:
112
- standardizedEqualToCallableReturn(getFoldsTotalKnown(tuple(listDimensionsTestParallelization)), countFolds, listDimensionsTestParallelization, None, 'maximum')
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, listDimensionsTestCountFolds: list[int]) -> None:
115
- standardizedEqualToCallableReturn(getFoldsTotalKnown(tuple(listDimensionsTestCountFolds)), countFolds, listDimensionsTestCountFolds)
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: list[int], pathFilenameTmpTesting: Path) -> None:
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
- mapShape = validateListDimensions(oneTestCuzTestsOverwritingTests)
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(mapShape)), pathFilenameFoldsTotal.read_text().strip)
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(listDimensionsTestParallelization: list[int]) -> None:
19
- standardizedEqualToCallableReturn(getFoldsTotalKnown(tuple(listDimensionsTestParallelization)), countFolds, listDimensionsTestParallelization, None, 'maximum', None)
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