Coverage for src/polystore/config.py: 100%

16 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-11-03 06:58 +0000

1from dataclasses import dataclass, field 

2from enum import Enum 

3from typing import Optional, Any 

4 

5 

6class ZarrChunkStrategy(Enum): 

7 WELL = 'well' 

8 FILE = 'file' 

9 

10 

11@dataclass 

12class CompressorConfig: 

13 """Minimal compressor config used by Zarr backend when real compressors aren't provided.""" 

14 name: str = 'none' 

15 

16 def create_compressor(self, level: Optional[int], shuffle: bool = True) -> Optional[Any]: 

17 """Return a compressor object acceptable to zarr or None to disable compression.""" 

18 # Minimal fallback: return None (no compression) 

19 return None 

20 

21 

22@dataclass 

23class ZarrConfig: 

24 """Minimal Zarr configuration dataclass for polystore (OpenHCS-agnostic).""" 

25 compression_level: Optional[int] = None 

26 compressor: CompressorConfig = field(default_factory=CompressorConfig) 

27 chunk_strategy: ZarrChunkStrategy = ZarrChunkStrategy.WELL