arraybridge 0.3.1__tar.gz → 0.3.2__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.
Files changed (86) hide show
  1. {arraybridge-0.3.1 → arraybridge-0.3.2}/PKG-INFO +2 -1
  2. {arraybridge-0.3.1 → arraybridge-0.3.2}/pyproject.toml +6 -2
  3. {arraybridge-0.3.1 → arraybridge-0.3.2}/src/arraybridge/__init__.py +1 -1
  4. {arraybridge-0.3.1 → arraybridge-0.3.2}/src/arraybridge/decorators.py +3 -2
  5. {arraybridge-0.3.1 → arraybridge-0.3.2}/tests/test_decorators.py +8 -0
  6. {arraybridge-0.3.1 → arraybridge-0.3.2}/.github/workflows/ci.yml +0 -0
  7. {arraybridge-0.3.1 → arraybridge-0.3.2}/.github/workflows/coverage-pages.yml +0 -0
  8. {arraybridge-0.3.1 → arraybridge-0.3.2}/.github/workflows/gpu-tests.yml +0 -0
  9. {arraybridge-0.3.1 → arraybridge-0.3.2}/.github/workflows/publish.yml +0 -0
  10. {arraybridge-0.3.1 → arraybridge-0.3.2}/.gitignore +0 -0
  11. {arraybridge-0.3.1 → arraybridge-0.3.2}/.readthedocs.yml +0 -0
  12. {arraybridge-0.3.1 → arraybridge-0.3.2}/ADDING_NEW_FRAMEWORKS.md +0 -0
  13. {arraybridge-0.3.1 → arraybridge-0.3.2}/CONTRIBUTING.md +0 -0
  14. {arraybridge-0.3.1 → arraybridge-0.3.2}/LICENSE +0 -0
  15. {arraybridge-0.3.1 → arraybridge-0.3.2}/README.md +0 -0
  16. {arraybridge-0.3.1 → arraybridge-0.3.2}/TESTING.md +0 -0
  17. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/Makefile +0 -0
  18. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/archive/CI_ARTIFACT_UPDATE.md +0 -0
  19. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/archive/CI_CUPY_FIX.md +0 -0
  20. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/archive/CI_IMPROVEMENTS.md +0 -0
  21. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/archive/CONFLICT_VISUALIZATION.md +0 -0
  22. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/archive/COVERAGE_AUDIT_PLAN.md +0 -0
  23. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/archive/DEPLOYMENT_SUMMARY.md +0 -0
  24. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/archive/GPU_TESTING_SETUP.md +0 -0
  25. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/archive/MERGE_CONFLICT_RESOLUTION.md +0 -0
  26. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/archive/MIGRATION_SUMMARY.md +0 -0
  27. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/archive/QUICK_FIX_GUIDE.txt +0 -0
  28. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/archive/README.md +0 -0
  29. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/archive/RESOLVED_FILES.md +0 -0
  30. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/ci-cd.md +0 -0
  31. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/.gitignore +0 -0
  32. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/Makefile +0 -0
  33. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/README.md +0 -0
  34. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/advanced_topics.rst +0 -0
  35. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/api_reference.rst +0 -0
  36. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/ci-cd.rst +0 -0
  37. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/conf.py +0 -0
  38. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/contributing.rst +0 -0
  39. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/converters.rst +0 -0
  40. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/decorators.rst +0 -0
  41. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/examples/basic_conversion.rst +0 -0
  42. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/examples/decorators.rst +0 -0
  43. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/examples/index.rst +0 -0
  44. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/examples/multi_framework.rst +0 -0
  45. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/gpu_features.rst +0 -0
  46. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/index.rst +0 -0
  47. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/installation.rst +0 -0
  48. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/quickstart.rst +0 -0
  49. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/stack_utils.rst +0 -0
  50. {arraybridge-0.3.1 → arraybridge-0.3.2}/docs/source/user_guide.rst +0 -0
  51. {arraybridge-0.3.1 → arraybridge-0.3.2}/paper.bib +0 -0
  52. {arraybridge-0.3.1 → arraybridge-0.3.2}/paper.md +0 -0
  53. {arraybridge-0.3.1 → arraybridge-0.3.2}/scripts/release.py +0 -0
  54. {arraybridge-0.3.1 → arraybridge-0.3.2}/scripts/update_version.py +0 -0
  55. {arraybridge-0.3.1 → arraybridge-0.3.2}/scripts/verify_release_ready.py +0 -0
  56. {arraybridge-0.3.1 → arraybridge-0.3.2}/src/arraybridge/array_geometry.py +0 -0
  57. {arraybridge-0.3.1 → arraybridge-0.3.2}/src/arraybridge/array_operations.py +0 -0
  58. {arraybridge-0.3.1 → arraybridge-0.3.2}/src/arraybridge/array_payload.py +0 -0
  59. {arraybridge-0.3.1 → arraybridge-0.3.2}/src/arraybridge/converters.py +0 -0
  60. {arraybridge-0.3.1 → arraybridge-0.3.2}/src/arraybridge/converters_registry.py +0 -0
  61. {arraybridge-0.3.1 → arraybridge-0.3.2}/src/arraybridge/dtype_scaling.py +0 -0
  62. {arraybridge-0.3.1 → arraybridge-0.3.2}/src/arraybridge/exceptions.py +0 -0
  63. {arraybridge-0.3.1 → arraybridge-0.3.2}/src/arraybridge/framework_config.py +0 -0
  64. {arraybridge-0.3.1 → arraybridge-0.3.2}/src/arraybridge/framework_ops.py +0 -0
  65. {arraybridge-0.3.1 → arraybridge-0.3.2}/src/arraybridge/gpu_cleanup.py +0 -0
  66. {arraybridge-0.3.1 → arraybridge-0.3.2}/src/arraybridge/oom_recovery.py +0 -0
  67. {arraybridge-0.3.1 → arraybridge-0.3.2}/src/arraybridge/slice_processing.py +0 -0
  68. {arraybridge-0.3.1 → arraybridge-0.3.2}/src/arraybridge/stack_utils.py +0 -0
  69. {arraybridge-0.3.1 → arraybridge-0.3.2}/src/arraybridge/types.py +0 -0
  70. {arraybridge-0.3.1 → arraybridge-0.3.2}/src/arraybridge/utils.py +0 -0
  71. {arraybridge-0.3.1 → arraybridge-0.3.2}/tests/__init__.py +0 -0
  72. {arraybridge-0.3.1 → arraybridge-0.3.2}/tests/conftest.py +0 -0
  73. {arraybridge-0.3.1 → arraybridge-0.3.2}/tests/test_array_geometry.py +0 -0
  74. {arraybridge-0.3.1 → arraybridge-0.3.2}/tests/test_converters.py +0 -0
  75. {arraybridge-0.3.1 → arraybridge-0.3.2}/tests/test_converters_registry.py +0 -0
  76. {arraybridge-0.3.1 → arraybridge-0.3.2}/tests/test_dtype_scaling.py +0 -0
  77. {arraybridge-0.3.1 → arraybridge-0.3.2}/tests/test_exceptions.py +0 -0
  78. {arraybridge-0.3.1 → arraybridge-0.3.2}/tests/test_framework_config.py +0 -0
  79. {arraybridge-0.3.1 → arraybridge-0.3.2}/tests/test_gpu_cleanup.py +0 -0
  80. {arraybridge-0.3.1 → arraybridge-0.3.2}/tests/test_integration.py +0 -0
  81. {arraybridge-0.3.1 → arraybridge-0.3.2}/tests/test_oom_recovery.py +0 -0
  82. {arraybridge-0.3.1 → arraybridge-0.3.2}/tests/test_registry_integration.py +0 -0
  83. {arraybridge-0.3.1 → arraybridge-0.3.2}/tests/test_slice_processing.py +0 -0
  84. {arraybridge-0.3.1 → arraybridge-0.3.2}/tests/test_stack_utils.py +0 -0
  85. {arraybridge-0.3.1 → arraybridge-0.3.2}/tests/test_types.py +0 -0
  86. {arraybridge-0.3.1 → arraybridge-0.3.2}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arraybridge
3
- Version: 0.3.1
3
+ Version: 0.3.2
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
@@ -23,6 +23,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
23
  Requires-Python: >=3.10
24
24
  Requires-Dist: metaclass-registry>=0.1.5
25
25
  Requires-Dist: numpy>=1.20
26
+ Requires-Dist: python-introspect>=0.1.11
26
27
  Provides-Extra: all
27
28
  Requires-Dist: cupy>=10.0; extra == 'all'
28
29
  Requires-Dist: jax>=0.3; extra == 'all'
@@ -5,7 +5,7 @@ build-backend = "hatchling.build"
5
5
 
6
6
  [project]
7
7
  name = "arraybridge"
8
- version = "0.3.1"
8
+ version = "0.3.2"
9
9
  description = "Unified API for NumPy, CuPy, PyTorch, TensorFlow, JAX, and pyclesperanto with automatic memory type conversion"
10
10
  authors = [{name = "Tristan Simas", email = "tristan.simas@mail.mcgill.ca"}]
11
11
  license = {text = "MIT"}
@@ -25,7 +25,11 @@ classifiers = [
25
25
  ]
26
26
  keywords = ["numpy", "cupy", "pytorch", "tensorflow", "jax", "gpu", "array", "tensor", "conversion"]
27
27
 
28
- dependencies = ["numpy>=1.20", "metaclass-registry>=0.1.5"]
28
+ dependencies = [
29
+ "numpy>=1.20",
30
+ "metaclass-registry>=0.1.5",
31
+ "python-introspect>=0.1.11",
32
+ ]
29
33
 
30
34
  [project.optional-dependencies]
31
35
  cupy = ["cupy>=10.0"]
@@ -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.3.1"
8
+ __version__ = "0.3.2"
9
9
 
10
10
  from . import decorators as _decorators
11
11
  from .array_geometry import ArrayGeometry
@@ -23,6 +23,7 @@ from typing import Any, ClassVar, TypeVar, cast
23
23
 
24
24
  import numpy as np
25
25
  from metaclass_registry import AutoRegisterMeta, RegistryFamily, RegistryKeyAttribute
26
+ from python_introspect import RuntimeParameterDeclarationABC
26
27
 
27
28
  from arraybridge.array_payload import ArrayPayload
28
29
  from arraybridge.oom_recovery import _execute_with_oom_recovery
@@ -60,7 +61,7 @@ class DtypeConversion(Enum):
60
61
  return dtype_map.get(self, None)
61
62
 
62
63
 
63
- class DtypeConversionConfig(ABC):
64
+ class DtypeConversionConfig(RuntimeParameterDeclarationABC):
64
65
  """Nominal dtype conversion config surface consumed by decorators."""
65
66
 
66
67
  @property
@@ -90,7 +91,7 @@ class DtypeConversionConfig(ABC):
90
91
  )
91
92
 
92
93
 
93
- class SliceBySliceRuntimeParameter:
94
+ class SliceBySliceRuntimeParameter(RuntimeParameterDeclarationABC):
94
95
  """Nominal slice-by-slice execution parameter consumed by decorators."""
95
96
 
96
97
  preserve_for_execution = True
@@ -6,6 +6,7 @@ from typing import Any
6
6
 
7
7
  import numpy as np
8
8
  import pytest
9
+ from python_introspect import RuntimeParameterDeclarationABC
9
10
 
10
11
  from arraybridge import ArrayPayload
11
12
  from arraybridge.decorators import (
@@ -33,6 +34,13 @@ class TestDtypeConversion:
33
34
  assert DtypeConversion.UINT8.value == "uint8"
34
35
  assert DtypeConversion.UINT16.value == "uint16"
35
36
  assert DtypeConversion.INT16.value == "int16"
37
+
38
+ def test_runtime_parameters_are_nominal_declarations(self):
39
+ assert issubclass(DtypeConversionConfig, RuntimeParameterDeclarationABC)
40
+ assert issubclass(
41
+ SliceBySliceRuntimeParameter,
42
+ RuntimeParameterDeclarationABC,
43
+ )
36
44
  assert DtypeConversion.INT32.value == "int32"
37
45
  assert DtypeConversion.FLOAT32.value == "float32"
38
46
  assert DtypeConversion.FLOAT64.value == "float64"
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