Coverage for sparkle/instance/__init__.py: 69%
16 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-09-29 10:17 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2025-09-29 10:17 +0000
1"""This package provides instance set support for Sparkle."""
3from sparkle.instance.instances import (
4 MultiFileInstanceSet,
5 FileInstanceSet,
6 IterableFileInstanceSet,
7 InstanceSet,
8)
9from pathlib import Path
12def Instance_Set(target: any) -> InstanceSet:
13 """The combined interface for all instance set types."""
14 if (
15 isinstance(target, Path)
16 and (target / MultiFileInstanceSet.instance_csv).exists()
17 ) or (
18 isinstance(target, list)
19 and isinstance(target[0], Path)
20 and (target[0].parent / MultiFileInstanceSet.instance_csv).exists()
21 ):
22 return MultiFileInstanceSet(target)
23 elif (not target.exists()) and (
24 target.parent / MultiFileInstanceSet.instance_csv
25 ).exists():
26 # Single instance
27 return MultiFileInstanceSet(target)
28 elif (
29 isinstance(target, Path)
30 and target.is_dir()
31 and all(
32 [
33 p.suffix in IterableFileInstanceSet.supported_filetypes
34 for p in target.iterdir()
35 ]
36 )
37 ):
38 return IterableFileInstanceSet(target)
39 elif not target.exists(): # Resolve suffix
40 alternatives = [p for p in target.parent.iterdir()]
41 for alt in alternatives:
42 if target.name == alt.stem:
43 target = alt
44 break
45 return FileInstanceSet(target)