arraybridge 0.2.8__tar.gz → 0.2.10__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.
- {arraybridge-0.2.8 → arraybridge-0.2.10}/.github/badges/coverage.svg +1 -1
- {arraybridge-0.2.8 → arraybridge-0.2.10}/PKG-INFO +1 -1
- {arraybridge-0.2.8 → arraybridge-0.2.10}/pyproject.toml +3 -3
- {arraybridge-0.2.8 → arraybridge-0.2.10}/src/arraybridge/__init__.py +1 -1
- {arraybridge-0.2.8 → arraybridge-0.2.10}/src/arraybridge/decorators.py +6 -19
- {arraybridge-0.2.8 → arraybridge-0.2.10}/.github/workflows/ci.yml +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/.github/workflows/coverage-pages.yml +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/.github/workflows/gpu-tests.yml +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/.github/workflows/publish.yml +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/.gitignore +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/.readthedocs.yml +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/ADDING_NEW_FRAMEWORKS.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/CI_ARTIFACT_UPDATE.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/CI_CUPY_FIX.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/CI_IMPROVEMENTS.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/CONFLICT_VISUALIZATION.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/CONTRIBUTING.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/COVERAGE_AUDIT_PLAN.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/DEPLOYMENT_SUMMARY.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/GPU_TESTING_SETUP.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/LICENSE +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/MERGE_CONFLICT_RESOLUTION.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/MIGRATION_SUMMARY.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/QUICK_FIX_GUIDE.txt +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/README.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/RESOLVED_FILES.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/SETUP_INSTRUCTIONS.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/TESTING.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/Makefile +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/ci-cd.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/.gitignore +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/Makefile +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/README.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/advanced_topics.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/api/converters.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/api/decorators.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/api/exceptions.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/api/index.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/api/types.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/api/utils.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/api_reference.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/ci-cd.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/conf.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/contributing.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/converters.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/decorators.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/examples/basic_conversion.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/examples/decorators.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/examples/index.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/examples/multi_framework.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/gpu_features.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/index.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/installation.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/quickstart.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/stack_utils.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/docs/source/user_guide.rst +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/paper.bib +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/paper.md +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/scripts/release.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/scripts/update_and_release.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/scripts/update_version.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/scripts/verify_release_ready.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/src/arraybridge/converters.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/src/arraybridge/converters_registry.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/src/arraybridge/dtype_scaling.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/src/arraybridge/exceptions.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/src/arraybridge/framework_config.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/src/arraybridge/framework_ops.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/src/arraybridge/gpu_cleanup.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/src/arraybridge/oom_recovery.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/src/arraybridge/slice_processing.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/src/arraybridge/stack_utils.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/src/arraybridge/types.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/src/arraybridge/utils.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/tests/__init__.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/tests/conftest.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/tests/test_converters.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/tests/test_converters_registry.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/tests/test_decorators.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/tests/test_dtype_scaling.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/tests/test_exceptions.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/tests/test_framework_config.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/tests/test_gpu_cleanup.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/tests/test_integration.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/tests/test_oom_recovery.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/tests/test_registry_integration.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/tests/test_slice_processing.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/tests/test_stack_utils.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/tests/test_types.py +0 -0
- {arraybridge-0.2.8 → arraybridge-0.2.10}/tests/test_utils.py +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="coverage:
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="coverage: 75.14%"><title>coverage: 75.14%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="114" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="53" height="20" fill="#97ca00"/><rect width="114" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="315" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">coverage</text><text x="315" y="140" transform="scale(.1)" fill="#fff" textLength="510">coverage</text><text aria-hidden="true" x="865" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">75.14%</text><text x="865" y="140" transform="scale(.1)" fill="#fff" textLength="430">75.14%</text></g></svg>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: arraybridge
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.10
|
|
4
4
|
Summary: Unified API for NumPy, CuPy, PyTorch, TensorFlow, JAX, and pyclesperanto with automatic memory type conversion
|
|
5
5
|
Project-URL: Homepage, https://github.com/OpenHCSDev/arraybridge
|
|
6
6
|
Project-URL: Documentation, https://arraybridge.readthedocs.io
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "arraybridge"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.10"
|
|
8
8
|
description = "Unified API for NumPy, CuPy, PyTorch, TensorFlow, JAX, and pyclesperanto with automatic memory type conversion"
|
|
9
9
|
authors = [{name = "Tristan Simas", email = "tristan.simas@mail.mcgill.ca"}]
|
|
10
10
|
license = {text = "MIT"}
|
|
@@ -113,13 +113,13 @@ target-version = ["py39", "py310", "py311", "py312"]
|
|
|
113
113
|
|
|
114
114
|
[tool.ruff]
|
|
115
115
|
line-length = 100
|
|
116
|
-
target-version = "0.2.
|
|
116
|
+
target-version = "0.2.9"
|
|
117
117
|
|
|
118
118
|
[tool.ruff.lint]
|
|
119
119
|
select = ["E", "F", "I", "N", "W", "UP"]
|
|
120
120
|
|
|
121
121
|
[tool.mypy]
|
|
122
|
-
python_version = "0.2.
|
|
122
|
+
python_version = "0.2.9"
|
|
123
123
|
warn_return_any = true
|
|
124
124
|
warn_unused_configs = true
|
|
125
125
|
disallow_untyped_defs = false # Too strict for scientific code
|
|
@@ -5,7 +5,7 @@ This package provides automatic memory type conversion, declarative decorators,
|
|
|
5
5
|
and unified utilities for working with multiple array/tensor frameworks.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
__version__ = "0.2.
|
|
8
|
+
__version__ = "0.2.10"
|
|
9
9
|
|
|
10
10
|
from .converters import convert_memory, detect_memory_type
|
|
11
11
|
from .decorators import (
|
|
@@ -167,10 +167,12 @@ def _create_dtype_wrapper(func, mem_type: MemoryType, func_name: str):
|
|
|
167
167
|
scale_func = SCALING_FUNCTIONS[mem_type.value]
|
|
168
168
|
|
|
169
169
|
@functools.wraps(func)
|
|
170
|
-
def dtype_wrapper(image, *args,
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
170
|
+
def dtype_wrapper(image, *args, slice_by_slice: bool = False, **kwargs):
|
|
171
|
+
|
|
172
|
+
# Get dtype_config from kwargs (injected by OpenHCS)
|
|
173
|
+
dtype_config = kwargs.pop("dtype_config")
|
|
174
|
+
# Extract the conversion mode from the config dataclass
|
|
175
|
+
dtype_conversion = dtype_config.default_dtype_conversion
|
|
174
176
|
|
|
175
177
|
# Store original dtype
|
|
176
178
|
original_dtype = getattr(image, "dtype", None)
|
|
@@ -222,16 +224,6 @@ def _create_dtype_wrapper(func, mem_type: MemoryType, func_name: str):
|
|
|
222
224
|
# Check if parameters already exist
|
|
223
225
|
param_names = [p.name for p in new_params]
|
|
224
226
|
|
|
225
|
-
# Add dtype_conversion parameter first (before slice_by_slice)
|
|
226
|
-
if "dtype_conversion" not in param_names:
|
|
227
|
-
dtype_param = inspect.Parameter(
|
|
228
|
-
"dtype_conversion",
|
|
229
|
-
inspect.Parameter.KEYWORD_ONLY,
|
|
230
|
-
default=DtypeConversion.PRESERVE_INPUT,
|
|
231
|
-
annotation=Optional[DtypeConversion],
|
|
232
|
-
)
|
|
233
|
-
new_params.append(dtype_param)
|
|
234
|
-
|
|
235
227
|
# Add slice_by_slice parameter
|
|
236
228
|
if "slice_by_slice" not in param_names:
|
|
237
229
|
slice_param = inspect.Parameter(
|
|
@@ -248,11 +240,6 @@ def _create_dtype_wrapper(func, mem_type: MemoryType, func_name: str):
|
|
|
248
240
|
dtype_wrapper.__doc__ += (
|
|
249
241
|
f"\n\n Additional Parameters " f"(added by {mem_type.value} decorator):\n"
|
|
250
242
|
)
|
|
251
|
-
dtype_wrapper.__doc__ += (
|
|
252
|
-
" dtype_conversion (DtypeConversion, optional): "
|
|
253
|
-
"How to handle output dtype.\n"
|
|
254
|
-
)
|
|
255
|
-
dtype_wrapper.__doc__ += " Defaults to PRESERVE_INPUT (match input dtype).\n"
|
|
256
243
|
dtype_wrapper.__doc__ += (
|
|
257
244
|
" slice_by_slice (bool, optional): " "Process 3D arrays slice-by-slice.\n"
|
|
258
245
|
)
|
|
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
|
|
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
|