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)