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
« 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
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)