Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,5 @@ jobs:
black --check src/

- name: Run mypy (type checking)
continue-on-error: true # Scientific code often has complex types
run: |
mypy src/
2 changes: 1 addition & 1 deletion src/arraybridge/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
NumPy/numcodecs import cost.
"""

__version__ = "0.4.0"
__version__ = "0.4.1"

_LAZY_EXPORTS: dict[str, str] = {
"MemoryType": ".types",
Expand Down
8 changes: 5 additions & 3 deletions src/arraybridge/array_operations.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,8 @@ def _mapped_dtype(target_dtype: Any, module: Any) -> Any:


@cache
def _leaf_instance(leaf: type[ArrayOperations]) -> ArrayOperations:
return leaf()
def _leaf_instance(memory_type_value: str) -> ArrayOperations:
return ArrayOperations.__registry__[memory_type_value]()


class ArrayOperations(metaclass=AutoRegisterMeta):
Expand All @@ -98,13 +98,15 @@ class ArrayOperations(metaclass=AutoRegisterMeta):
@classmethod
def for_memory(cls, memory_type: MemoryType) -> ArrayOperations:
"""Return the operations leaf declared for ``memory_type``."""
return _leaf_instance(cls.__registry__[memory_type.value])
return _leaf_instance(memory_type.value)

@cached_property
def module(self) -> Any:
"""The framework module, imported on first use."""
from arraybridge.types import MemoryType

# Only registered leaves are instantiated, and each declares memory_type.
assert self.memory_type is not None
return MemoryType(self.memory_type).import_module()

@property
Expand Down
Loading