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