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

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

2 

3from sparkle.instance.instances import ( 

4 MultiFileInstanceSet, 

5 FileInstanceSet, 

6 IterableFileInstanceSet, 

7 InstanceSet, 

8) 

9from pathlib import Path 

10 

11 

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)