From 1fd6043c996a38d111b90065ad668548ce933ebe Mon Sep 17 00:00:00 2001 From: Milind Date: Sun, 11 Feb 2024 00:47:33 +0530 Subject: [PATCH] Allow unrecognised arguments to pass through based on source of arguments (not allowed for command-line, allowed for python function call) --- gridpath/get_scenario_inputs.py | 36 ++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/gridpath/get_scenario_inputs.py b/gridpath/get_scenario_inputs.py index 85d96ce67..1b6da6391 100644 --- a/gridpath/get_scenario_inputs.py +++ b/gridpath/get_scenario_inputs.py @@ -283,14 +283,10 @@ def delete_prior_inputs(inputs_directory): for f in prior_input_tab_files: os.remove(os.path.join(inputs_directory, f)) - -def parse_arguments(args): +def create_parser(): """ - :param args: the script arguments specified by the user - :return: the parsed known argument values ( - Python object) - - Parse the known arguments. + + :return: argument parser object """ parser = ArgumentParser( add_help=True, @@ -300,9 +296,27 @@ def parse_arguments(args): get_get_inputs_parser(), ], ) + + return parser - parsed_arguments = parser.parse_known_args(args=args)[0] +def parse_arguments(func_args): + """ + :param args: the function arguments specified by the caller + :return: the parsed known argument values ( + Python object) + Parse the known arguments. + """ + parser = create_parser() + + is_cli_entry_point = func_args is None + if is_cli_entry_point: + args = sys.argv[1:] + parsed_arguments = parser.parse_args(args=args) + else: + args = func_args + parsed_arguments = parser.parse_known_args(args=args)[0] + return parsed_arguments @@ -421,16 +435,14 @@ def write_linked_subproblems_map(scenario_directory, conn, subscenarios): ) -def main(args=None): +def main(func_args=None): """ :return: """ # Retrieve DB location and scenario_id and/or name from args - if args is None: - args = sys.argv[1:] - parsed_arguments = parse_arguments(args=args) + parsed_arguments = parse_arguments(func_args=func_args) db_path = parsed_arguments.database scenario_id_arg = parsed_arguments.scenario_id