Coverage for sparkle/instance/__init__.py: 88%

16 statements  

« prev     ^ index     » next       coverage.py v7.9.1, created at 2025-07-01 13:21 +0000

1"""This package provides instance set support for Sparkle.""" 

2from sparkle.instance.instances import \ 

3 MultiFileInstanceSet, FileInstanceSet, IterableFileInstanceSet, InstanceSet 

4from pathlib import Path 

5 

6 

7def Instance_Set(target: any) -> InstanceSet: 

8 """The combined interface for all instance set types.""" 

9 if ((isinstance(target, Path) 

10 and (target / MultiFileInstanceSet.instance_csv).exists()) 

11 or (isinstance(target, list) and isinstance(target[0], Path) 

12 and (target[0].parent / MultiFileInstanceSet.instance_csv).exists())): 

13 return MultiFileInstanceSet(target) 

14 elif (not target.exists()) and \ 

15 (target.parent / MultiFileInstanceSet.instance_csv).exists(): 

16 # Single instance 

17 return MultiFileInstanceSet(target) 

18 elif isinstance(target, Path) and target.is_dir() and \ 

19 all([p.suffix in IterableFileInstanceSet.supported_filetypes 

20 for p in target.iterdir()]): 

21 return IterableFileInstanceSet(target) 

22 elif not target.exists(): # Resolve suffix 

23 alternatives = [p for p in target.parent.iterdir()] 

24 for alt in alternatives: 

25 if target.name == alt.stem: 

26 target = alt 

27 break 

28 return FileInstanceSet(target)