Coverage for sparkle/CLI/remove_instances.py: 0%

42 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2024-09-27 09:10 +0000

1#!/usr/bin/env python3 

2"""Sparkle command to remove an instance set from the Sparkle platform.""" 

3 

4import sys 

5import argparse 

6import shutil 

7 

8from sparkle.CLI.help import global_variables as gv 

9from sparkle.platform import file_help as sfh 

10from sparkle.structures import FeatureDataFrame, PerformanceDataFrame 

11from sparkle.instance import instance_set 

12from sparkle.CLI.help import logging as sl 

13from sparkle.platform import CommandName, COMMAND_DEPENDENCIES 

14from sparkle.CLI.initialise import check_for_initialise 

15from sparkle.CLI.help import argparse_custom as ac 

16from sparkle.CLI.help.nicknames import resolve_object_name 

17 

18 

19def parser_function() -> argparse.ArgumentParser: 

20 """Define the command line arguments.""" 

21 parser = argparse.ArgumentParser() 

22 parser.add_argument(*ac.InstancesPathRemoveArgument.names, 

23 **ac.InstancesPathRemoveArgument.kwargs) 

24 return parser 

25 

26 

27if __name__ == "__main__": 

28 # Log command call 

29 sl.log_command(sys.argv) 

30 

31 # Define command line arguments 

32 parser = parser_function() 

33 

34 # Process command line arguments 

35 args = parser.parse_args() 

36 instances_path = resolve_object_name(args.instances_path, 

37 target_dir=gv.settings().DEFAULT_instance_dir) 

38 

39 check_for_initialise(COMMAND_DEPENDENCIES[CommandName.REMOVE_INSTANCES]) 

40 

41 if instances_path is None or not instances_path.exists() or not\ 

42 instances_path.is_dir(): 

43 print(f'Could not resolve instances path arg "{args.instances_path}"!') 

44 print("Check that the path or nickname is spelled correctly.") 

45 sys.exit(-1) 

46 

47 print(f"Start removing all instances in directory {instances_path} ...") 

48 old_instance_set = instance_set(instances_path) 

49 # Remove from feature data and performance data 

50 feature_data = FeatureDataFrame(gv.settings().DEFAULT_feature_data_path) 

51 performance_data = PerformanceDataFrame(gv.settings().DEFAULT_performance_data_path) 

52 for instance in old_instance_set.instance_paths: 

53 feature_data.remove_instances(str(instance)) 

54 performance_data.remove_instance(str(instance)) 

55 

56 feature_data.save_csv() 

57 performance_data.save_csv() 

58 

59 # Remove nickname, if it exists 

60 instances_nicknames = gv.file_storage_data_mapping[gv.instances_nickname_path] 

61 for key in instances_nicknames: 

62 if instances_nicknames[key] == instances_path: 

63 sfh.add_remove_platform_item(instances_path, 

64 gv.instances_nickname_path, 

65 key=key, remove=True) 

66 break 

67 

68 # Remove the directory and all its files 

69 shutil.rmtree(instances_path) 

70 

71 print(f"Removing instances in directory {instances_path} done!")