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
« 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."""
4import sys
5import argparse
6import shutil
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
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
26if __name__ == "__main__":
27 # Log command call
28 sl.log_command(sys.argv)
30 # Define command line arguments
31 parser = parser_function()
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)
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)
48 print(f"Start removing solver {solver_path.name} ...")
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)
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()
70 shutil.rmtree(solver_path)
72 print(f"Removing solver {solver_path.name} done!")