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

43 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 a solver from the Sparkle platform.""" 

3 

4import sys 

5import argparse 

6import shutil 

7 

8from sparkle.platform import file_help as sfh 

9from sparkle.CLI.help import global_variables as gv 

10from sparkle.structures import PerformanceDataFrame 

11from sparkle.CLI.help import logging as sl 

12from sparkle.platform import CommandName, COMMAND_DEPENDENCIES 

13from sparkle.CLI.initialise import check_for_initialise 

14from sparkle.CLI.help import argparse_custom as ac 

15from sparkle.CLI.help.nicknames import resolve_object_name 

16 

17 

18def parser_function() -> argparse.ArgumentParser: 

19 """Define the command line arguments.""" 

20 parser = argparse.ArgumentParser() 

21 parser.add_argument(*ac.SolverRemoveArgument.names, 

22 **ac.SolverRemoveArgument.kwargs) 

23 return parser 

24 

25 

26if __name__ == "__main__": 

27 # Log command call 

28 sl.log_command(sys.argv) 

29 

30 # Define command line arguments 

31 parser = parser_function() 

32 

33 # Process command line arguments 

34 args = parser.parse_args() 

35 solver_path = resolve_object_name(args.solver, 

36 gv.solver_nickname_mapping, 

37 gv.settings().DEFAULT_solver_dir) 

38 

39 check_for_initialise(COMMAND_DEPENDENCIES[CommandName.REMOVE_SOLVER]) 

40 if solver_path is None: 

41 print(f'Could not resolve Solver path/name "{solver_path}"!') 

42 sys.exit(-1) 

43 if not solver_path.parent == gv.settings().DEFAULT_solver_dir: 

44 # Allow user to only specify solvers in Sparkle solver dir 

45 print("Specified Solver is not is platform directory! Exiting.") 

46 sys.exit(-1) 

47 

48 print(f"Start removing solver {solver_path.name} ...") 

49 

50 solver_nickname_mapping = gv.solver_nickname_mapping 

51 if len(solver_nickname_mapping): 

52 nickname = None 

53 for key in solver_nickname_mapping: 

54 if solver_nickname_mapping[key] == str(solver_path): 

55 nickname = key 

56 break 

57 sfh.add_remove_platform_item( 

58 nickname, 

59 gv.solver_nickname_list_path, 

60 gv.file_storage_data_mapping[gv.solver_nickname_list_path], 

61 remove=True) 

62 

63 if gv.settings().DEFAULT_performance_data_path.exists(): 

64 performance_data = PerformanceDataFrame( 

65 gv.settings().DEFAULT_performance_data_path) 

66 if solver_path.name in performance_data.dataframe.columns: 

67 performance_data.remove_solver(solver_path.name) 

68 performance_data.save_csv() 

69 

70 shutil.rmtree(solver_path) 

71 

72 print(f"Removing solver {solver_path.name} done!")