From 3f02bdcc542c786eb08bdb3b324887bfa21698a2 Mon Sep 17 00:00:00 2001 From: Tully Foote Date: Fri, 20 Sep 2024 12:40:44 -0700 Subject: [PATCH] Remove default value for defaults (#289) This is a dangerous practice becuse the default values could be mutated. And it should always be passed in. Supercedes #286 --- src/rocker/core.py | 2 +- src/rocker/extensions.py | 24 ++++++++++++------------ src/rocker/git_extension.py | 2 +- src/rocker/nvidia_extension.py | 6 +++--- src/rocker/rmw_extension.py | 2 +- src/rocker/ssh_extension.py | 2 +- src/rocker/volume_extension.py | 2 +- test/test_extension.py | 2 +- test/test_file_writing.py | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/rocker/core.py b/src/rocker/core.py index e9a3c242..b520f9d4 100644 --- a/src/rocker/core.py +++ b/src/rocker/core.py @@ -117,7 +117,7 @@ def check_args_for_activation(cls, cli_args): return True if cli_args.get(cls.get_name()) else False @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): raise NotImplementedError diff --git a/src/rocker/extensions.py b/src/rocker/extensions.py index 6d66ec62..3e22b71a 100644 --- a/src/rocker/extensions.py +++ b/src/rocker/extensions.py @@ -54,7 +54,7 @@ def get_docker_args(self, cliargs): return args @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument('--devices', default=defaults.get('devices', None), nargs='*', @@ -84,7 +84,7 @@ def get_snippet(self, cliargs): return empy_expand(snippet, self.get_environment_subs()) @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument(name_to_argument(DevHelpers.get_name()), action='store_true', default=defaults.get('dev_helpers', None), @@ -136,7 +136,7 @@ def get_docker_args(self, cliargs): return args @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument('--hostname', default=defaults.get('hostname', ''), help='Hostname of the container.') @@ -182,7 +182,7 @@ def get_docker_args(self, cliargs): return args @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument('--name', default=defaults.get('name', ''), help='Name of the container.') @@ -205,7 +205,7 @@ def get_docker_args(self, cliargs): return args @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): client = get_docker_client() parser.add_argument('--network', choices=[n['Name'] for n in client.networks()], default=defaults.get('network', None), @@ -231,7 +231,7 @@ def get_docker_args(self, cliargs): return ' '.join(args) @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument('--port', default=defaults.get('port', None), action='append', @@ -269,7 +269,7 @@ def get_docker_args(self, cliargs): return args % self.get_environment_subs() @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument(name_to_argument(PulseAudio.get_name()), action='store_true', default=defaults.get(PulseAudio.get_name(), None), @@ -288,7 +288,7 @@ def get_docker_args(self, cliargs): return ' -v %s:%s ' % (Path.home(), Path.home()) @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument(name_to_argument(HomeDir.get_name()), action='store_true', default=defaults.get(HomeDir.get_name(), None), @@ -344,7 +344,7 @@ def get_snippet(self, cliargs): return empy_expand(snippet, substitutions) @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument(name_to_argument(User.get_name()), action='store_true', default=defaults.get('user', None), @@ -400,7 +400,7 @@ def get_docker_args(self, cli_args): return ' '.join(args) @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument('--env', '-e', metavar='NAME[=VALUE]', type=str, @@ -436,7 +436,7 @@ def get_docker_args(self, cli_args): return ' --privileged' @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument(name_to_argument(Privileged.get_name()), action='store_true', default=defaults.get(Privileged.get_name(), None), @@ -463,7 +463,7 @@ def get_docker_args(self, cliargs): return ' '.join(args) @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument(name_to_argument(GroupAdd.get_name()), default=defaults.get(GroupAdd.get_name(), None), action='append', diff --git a/src/rocker/git_extension.py b/src/rocker/git_extension.py index 03acbdab..4fc0905f 100644 --- a/src/rocker/git_extension.py +++ b/src/rocker/git_extension.py @@ -46,7 +46,7 @@ def get_docker_args(self, cli_args): return args @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument('--git', action='store_true', default=defaults.get(Git.get_name(), None), diff --git a/src/rocker/nvidia_extension.py b/src/rocker/nvidia_extension.py index 8795b910..59170500 100644 --- a/src/rocker/nvidia_extension.py +++ b/src/rocker/nvidia_extension.py @@ -94,7 +94,7 @@ def precondition_environment(self, cliargs): raise ex @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument(name_to_argument(X11.get_name()), action='store_true', default=defaults.get(X11.get_name(), None), @@ -161,7 +161,7 @@ def get_docker_args(self, cliargs): return " --runtime=nvidia" @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument(name_to_argument(Nvidia.get_name()), choices=['auto', 'runtime', 'gpus'], nargs='?', @@ -231,7 +231,7 @@ def get_docker_args(self, cliargs): # Runtime requires --nvidia option too @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument(name_to_argument(Cuda.get_name()), action='store_true', default=defaults.get('cuda', None), diff --git a/src/rocker/rmw_extension.py b/src/rocker/rmw_extension.py index 5cef594f..5c52ee32 100644 --- a/src/rocker/rmw_extension.py +++ b/src/rocker/rmw_extension.py @@ -72,7 +72,7 @@ def get_snippet(self, cliargs): return empy_expand(snippet, data) @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument(name_to_argument(RMW.get_name()), default=defaults.get('rmw', None), nargs=1, diff --git a/src/rocker/ssh_extension.py b/src/rocker/ssh_extension.py index 37de6c68..4417b605 100644 --- a/src/rocker/ssh_extension.py +++ b/src/rocker/ssh_extension.py @@ -46,7 +46,7 @@ def get_docker_args(self, cli_args): return args @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument('--ssh', action='store_true', default=defaults.get(Ssh.get_name(), None), diff --git a/src/rocker/volume_extension.py b/src/rocker/volume_extension.py index 113ff568..a8c429e1 100644 --- a/src/rocker/volume_extension.py +++ b/src/rocker/volume_extension.py @@ -61,7 +61,7 @@ def get_docker_args(self, cli_args): return ' '.join(args) @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument(Volume.ARG_ROCKER_VOLUME, metavar='HOST-DIR[:CONTAINER-DIR[:OPTIONS]]', type=str, diff --git a/test/test_extension.py b/test/test_extension.py index 57eab1e4..7b946704 100644 --- a/test/test_extension.py +++ b/test/test_extension.py @@ -36,7 +36,7 @@ def plugin_load_parser_correctly(plugin): """A helper function to test that the plugins at least register an option for their own name.""" parser = argparse.ArgumentParser(description='test_parser') - plugin.register_arguments(parser) + plugin.register_arguments(parser, {}) argument_name = name_to_argument(plugin.get_name()) for action in parser._actions: option_strings = getattr(action, 'option_strings', []) diff --git a/test/test_file_writing.py b/test/test_file_writing.py index 899b7660..e3e84ae0 100644 --- a/test/test_file_writing.py +++ b/test/test_file_writing.py @@ -58,7 +58,7 @@ def get_files(self, cliargs): @staticmethod - def register_arguments(parser, defaults={}): + def register_arguments(parser, defaults): parser.add_argument('--test-file-injection', action='store_true', default=defaults.get('test_file_injection', False),