Coverage for openhcs/io/__init__.py: 70.8%
22 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-01 18:33 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-01 18:33 +0000
1"""
2Storage backends package for openhcs.
4This package contains the storage backend implementations for openhcs.
5"""
7import os
9# Essential imports (always available)
10from .atomic import file_lock, atomic_write_json, atomic_update_json, FileLockError, FileLockTimeoutError
11from .base import DataSink, StorageBackend, storage_registry, reset_memory_backend
12from .backend_registry import (
13 StorageBackendMeta, get_backend_instance, discover_all_backends,
14 cleanup_backend_connections, cleanup_all_backends, STORAGE_BACKENDS
15)
16from .disk import DiskStorageBackend
17from .filemanager import FileManager
18from .memory import MemoryStorageBackend
19from .metadata_writer import AtomicMetadataWriter, MetadataWriteError, MetadataUpdateRequest, get_metadata_path
20from .metadata_migration import detect_legacy_format, migrate_legacy_metadata, migrate_plate_metadata
21from .pipeline_migration import detect_legacy_pipeline, migrate_pipeline_file, load_pipeline_with_migration
22from .streaming import StreamingBackend
24# GPU-heavy imports (only in normal mode)
25if os.getenv('OPENHCS_SUBPROCESS_NO_GPU') != '1': 25 ↛ 31line 25 didn't jump to line 31 because the condition on line 25 was always true
26 from .napari_stream import NapariStreamingBackend
27 from .fiji_stream import FijiStreamingBackend
28 from .zarr import ZarrStorageBackend
29else:
30 # Subprocess runner mode - create placeholder classes to avoid import errors
31 class NapariStreamingBackend:
32 """Placeholder for subprocess runner mode."""
33 pass
35 class FijiStreamingBackend:
36 """Placeholder for subprocess runner mode."""
37 pass
39 class ZarrStorageBackend:
40 """Placeholder for subprocess runner mode."""
41 pass
43__all__ = [
44 'DataSink',
45 'StorageBackend',
46 'StreamingBackend',
47 'storage_registry',
48 'reset_memory_backend',
49 'StorageBackendMeta',
50 'get_backend_instance',
51 'discover_all_backends',
52 'cleanup_all_backends',
53 'STORAGE_BACKENDS',
54 'DiskStorageBackend',
55 'MemoryStorageBackend',
56 'NapariStreamingBackend',
57 'FijiStreamingBackend',
58 'ZarrStorageBackend',
59 'FileManager',
60 'file_lock',
61 'atomic_write_json',
62 'atomic_update_json',
63 'FileLockError',
64 'FileLockTimeoutError',
65 'AtomicMetadataWriter',
66 'MetadataWriteError',
67 'MetadataUpdateRequest',
68 'get_metadata_path',
69 'detect_legacy_format',
70 'migrate_legacy_metadata',
71 'migrate_plate_metadata',
72 'detect_legacy_pipeline',
73 'migrate_pipeline_file',
74 'load_pipeline_with_migration'
75]