Source code for sparkle.instance

"""This package provides instance set support for Sparkle."""
from sparkle.instance.instances import \
    MultiFileInstanceSet, FileInstanceSet, IterableFileInstanceSet, InstanceSet
from pathlib import Path


[docs] def Instance_Set(target: any) -> InstanceSet: """The combined interface for all instance set types.""" if ((isinstance(target, Path) and (target / MultiFileInstanceSet.instance_csv).exists()) or (isinstance(target, list) and isinstance(target[0], Path) and (target[0].parent / MultiFileInstanceSet.instance_csv).exists())): return MultiFileInstanceSet(target) elif (not target.exists()) and \ (target.parent / MultiFileInstanceSet.instance_csv).exists(): # Single instance return MultiFileInstanceSet(target) elif isinstance(target, Path) and target.is_dir() and \ all([p.suffix in IterableFileInstanceSet.supported_filetypes for p in target.iterdir()]): return IterableFileInstanceSet(target) elif not target.exists(): # Resolve suffix alternatives = [p for p in target.parent.iterdir()] for alt in alternatives: if target.name == alt.stem: target = alt break return FileInstanceSet(target)