
On Mon, 2020-05-11 at 14:03 +0200, Erik Skultety wrote:
On Thu, May 07, 2020 at 05:41:57PM +0200, Andrea Bolognani wrote:
- installparser.set_defaults(func=self._action_install) + installparser.set_defaults(action="install")
please, keep the usage of the 'func' attribute: .set_defaults(func=Application._action_install)
- def run(self): - args = self._parser.parse_args() - if args.debug: - args.func(args) - else: - try: - args.func(args) - except Exception as err: - sys.stderr.write("{}: {}\n".format(sys.argv[0], err)) - sys.exit(1) + def run(self, args): + getattr(self, "_action_" + args.action)(args)
Okay, ^this is obfuscation: 1) the action attribute should not be misused for your own metadata, it defines a small set of actions to take when the option was seen on the cmdline [1] - for arbitrary actions, instantiate argparse.Action instead (also to be seen found at [1]) - you don't want to do this either in this case, instead, respect the meaning of the 'func' attribute
I did not realize "action" and "func" had special meaning for argparse. I'll adopt your suggestion. -- Andrea Bolognani / Red Hat / Virtualization