grimp 3.8__tar.gz → 3.8.1__tar.gz
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.
- {grimp-3.8 → grimp-3.8.1}/PKG-INFO +2 -1
- {grimp-3.8 → grimp-3.8.1}/pyproject.toml +2 -1
- {grimp-3.8 → grimp-3.8.1}/src/grimp/__init__.py +1 -1
- {grimp-3.8 → grimp-3.8.1}/src/grimp/application/usecases.py +15 -19
- {grimp-3.8 → grimp-3.8.1}/README.rst +0 -0
- {grimp-3.8 → grimp-3.8.1}/rust/.cargo/config.toml +0 -0
- {grimp-3.8 → grimp-3.8.1}/rust/Cargo.lock +0 -0
- {grimp-3.8 → grimp-3.8.1}/rust/Cargo.toml +0 -0
- {grimp-3.8 → grimp-3.8.1}/rust/src/errors.rs +0 -0
- {grimp-3.8 → grimp-3.8.1}/rust/src/exceptions.rs +0 -0
- {grimp-3.8 → grimp-3.8.1}/rust/src/graph/direct_import_queries.rs +0 -0
- {grimp-3.8 → grimp-3.8.1}/rust/src/graph/graph_manipulation.rs +0 -0
- {grimp-3.8 → grimp-3.8.1}/rust/src/graph/hierarchy_queries.rs +0 -0
- {grimp-3.8 → grimp-3.8.1}/rust/src/graph/higher_order_queries.rs +0 -0
- {grimp-3.8 → grimp-3.8.1}/rust/src/graph/import_chain_queries.rs +0 -0
- {grimp-3.8 → grimp-3.8.1}/rust/src/graph/mod.rs +0 -0
- {grimp-3.8 → grimp-3.8.1}/rust/src/graph/pathfinding.rs +0 -0
- {grimp-3.8 → grimp-3.8.1}/rust/src/lib.rs +0 -0
- {grimp-3.8 → grimp-3.8.1}/rust/src/module_expressions.rs +0 -0
- {grimp-3.8 → grimp-3.8.1}/rust/tests/large.rs +0 -0
- {grimp-3.8 → grimp-3.8.1}/rust/tests/large_graph.json +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/adaptors/__init__.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/adaptors/caching.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/adaptors/filesystem.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/adaptors/graph.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/adaptors/importscanner.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/adaptors/modulefinder.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/adaptors/packagefinder.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/adaptors/timing.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/algorithms/__init__.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/algorithms/shortest_path.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/application/__init__.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/application/config.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/application/ports/__init__.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/application/ports/caching.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/application/ports/filesystem.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/application/ports/graph.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/application/ports/importscanner.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/application/ports/modulefinder.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/application/ports/packagefinder.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/application/ports/timing.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/domain/__init__.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/domain/analysis.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/domain/valueobjects.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/exceptions.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/helpers.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/main.py +0 -0
- {grimp-3.8 → grimp-3.8.1}/src/grimp/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: grimp
|
|
3
|
-
Version: 3.8
|
|
3
|
+
Version: 3.8.1
|
|
4
4
|
Classifier: Development Status :: 5 - Production/Stable
|
|
5
5
|
Classifier: Intended Audience :: Developers
|
|
6
6
|
Classifier: License :: OSI Approved :: BSD License
|
|
@@ -16,6 +16,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
16
16
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
17
17
|
Classifier: Programming Language :: Rust
|
|
18
18
|
Classifier: Topic :: Utilities
|
|
19
|
+
Requires-Dist: joblib>=1.3.0
|
|
19
20
|
Requires-Dist: typing-extensions>=3.10.0.0
|
|
20
21
|
License-File: LICENSE
|
|
21
22
|
License-File: AUTHORS.rst
|
|
@@ -8,7 +8,7 @@ module-name = "grimp._rustgrimp"
|
|
|
8
8
|
|
|
9
9
|
[project]
|
|
10
10
|
name = "grimp"
|
|
11
|
-
version = "3.8"
|
|
11
|
+
version = "3.8.1"
|
|
12
12
|
license = {text = "BSD 2-Clause License"}
|
|
13
13
|
description = "Builds a queryable graph of the imports within one or more Python packages."
|
|
14
14
|
authors = [
|
|
@@ -16,6 +16,7 @@ authors = [
|
|
|
16
16
|
]
|
|
17
17
|
requires-python = ">=3.9"
|
|
18
18
|
dependencies = [
|
|
19
|
+
"joblib>=1.3.0",
|
|
19
20
|
"typing-extensions>=3.10.0.0",
|
|
20
21
|
]
|
|
21
22
|
classifiers = [
|
|
@@ -3,9 +3,10 @@ Use cases handle application logic.
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
from typing import Dict, Sequence, Set, Type, Union, cast, Iterable, Collection
|
|
6
|
-
import multiprocessing
|
|
7
6
|
import math
|
|
8
7
|
|
|
8
|
+
import joblib # type: ignore
|
|
9
|
+
|
|
9
10
|
from ..application.ports import caching
|
|
10
11
|
from ..application.ports.filesystem import AbstractFileSystem
|
|
11
12
|
from ..application.ports.graph import ImportGraph
|
|
@@ -228,7 +229,7 @@ def _create_chunks(module_files: Collection[ModuleFile]) -> tuple[tuple[ModuleFi
|
|
|
228
229
|
module_files_tuple = tuple(module_files)
|
|
229
230
|
|
|
230
231
|
number_of_module_files = len(module_files_tuple)
|
|
231
|
-
n_chunks =
|
|
232
|
+
n_chunks = _decide_number_of_processes(number_of_module_files)
|
|
232
233
|
chunk_size = math.ceil(number_of_module_files / n_chunks)
|
|
233
234
|
|
|
234
235
|
return tuple(
|
|
@@ -236,11 +237,11 @@ def _create_chunks(module_files: Collection[ModuleFile]) -> tuple[tuple[ModuleFi
|
|
|
236
237
|
)
|
|
237
238
|
|
|
238
239
|
|
|
239
|
-
def
|
|
240
|
+
def _decide_number_of_processes(number_of_module_files: int) -> int:
|
|
240
241
|
if number_of_module_files < MIN_NUMBER_OF_MODULES_TO_SCAN_USING_MULTIPROCESSING:
|
|
241
|
-
# Don't incur the overhead of
|
|
242
|
+
# Don't incur the overhead of multiple processes.
|
|
242
243
|
return 1
|
|
243
|
-
return min(
|
|
244
|
+
return min(joblib.cpu_count(), number_of_module_files)
|
|
244
245
|
|
|
245
246
|
|
|
246
247
|
def _scan_chunks(
|
|
@@ -257,20 +258,15 @@ def _scan_chunks(
|
|
|
257
258
|
)
|
|
258
259
|
|
|
259
260
|
number_of_processes = len(chunks)
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
[(import_scanner, exclude_type_checking_imports, chunk) for chunk in chunks],
|
|
270
|
-
)
|
|
271
|
-
for chunk_imports_by_module_file in import_scanning_jobs:
|
|
272
|
-
imports_by_module_file.update(chunk_imports_by_module_file)
|
|
273
|
-
return imports_by_module_file
|
|
261
|
+
import_scanning_jobs = joblib.Parallel(n_jobs=number_of_processes)(
|
|
262
|
+
joblib.delayed(_scan_chunk)(import_scanner, exclude_type_checking_imports, chunk)
|
|
263
|
+
for chunk in chunks
|
|
264
|
+
)
|
|
265
|
+
|
|
266
|
+
imports_by_module_file = {}
|
|
267
|
+
for chunk_imports_by_module_file in import_scanning_jobs:
|
|
268
|
+
imports_by_module_file.update(chunk_imports_by_module_file)
|
|
269
|
+
return imports_by_module_file
|
|
274
270
|
|
|
275
271
|
|
|
276
272
|
def _scan_chunk(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|