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

1""" 

2Storage backends package for openhcs. 

3 

4This package contains the storage backend implementations for openhcs. 

5""" 

6 

7import os 

8 

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 

23 

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 

34 

35 class FijiStreamingBackend: 

36 """Placeholder for subprocess runner mode.""" 

37 pass 

38 

39 class ZarrStorageBackend: 

40 """Placeholder for subprocess runner mode.""" 

41 pass 

42 

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]