1+ from pathlib import Path
2+
13from wfl .utils .file_utils import clean_dir
24
35def clean_rundir (rundir , keep_files , default_keep_files , calculation_succeeded ):
@@ -7,19 +9,30 @@ def clean_rundir(rundir, keep_files, default_keep_files, calculation_succeeded):
79 ----------
810 rundir: str
911 path to run dir
10- keep_files: 'default' / list(str ) / '*' / bool / None
12+ keep_files: 'default' / iterable(file_glob ) / '*' / bool / None
1113 files to keep, None or False for nothing, '*' or True for all
1214 default_keep_files: list(str)
1315 files to keep if keep_files == 'default' or calculation_succeeded is False
16+ and keep_files is not True
1417 calculation_succeeded: bool
1518 """
16- if not calculation_succeeded :
17- clean_dir (rundir , set (default_keep_files ) | set (keep_files if keep_files else []), force = False )
18- elif keep_files == 'default' :
19- clean_dir (rundir , default_keep_files , force = False )
20- elif not keep_files :
21- clean_dir (rundir , False , force = False )
22- else :
23- clean_dir (rundir , keep_files , force = False )
19+ if isinstance (keep_files , str ):
20+ if keep_files == 'default' :
21+ keep_files = default_keep_files
22+ elif keep_files == '*'
23+ keep_files = [keep_files ]
24+ else :
25+ raise ValueError (f"str keep_files can only be 'default' or '*', not '{ keep_files } '" )
2426
27+ # now keep_files should either be True, evaluate to False, or an iterable
28+
29+ # calculation failed, default optionally union with keep_files
30+ if not calculation_succeeded :
31+ if not keep_files :
32+ keep_files = default_keep_files
33+ elif keep_files is not True :
34+ keep_files = set (default_keep_files ) | set (keep_files )
35+ else :
36+ raise ValueError (f"Unknown type or value for keep_files '{ keep_files } '" )
2537
38+ clean_dir (rundir , keep_files , force = False )
0 commit comments