diff options
author | Tim Harder <radhermit@gmail.com> | 2020-01-20 04:13:41 -0700 |
---|---|---|
committer | Tim Harder <radhermit@gmail.com> | 2020-01-20 04:13:41 -0700 |
commit | a48edc4afb5d184aacff7f8430f0458fe55c8518 (patch) | |
tree | c60eff28fbd4544f37a9bc12b3a491bd10a42f24 /src/snakeoil/cli | |
parent | bump version (diff) | |
download | snakeoil-a48edc4afb5d184aacff7f8430f0458fe55c8518.tar.gz snakeoil-a48edc4afb5d184aacff7f8430f0458fe55c8518.tar.bz2 snakeoil-a48edc4afb5d184aacff7f8430f0458fe55c8518.zip |
cli.arghparse: ArgumentParser: separate pre-parse phase into it's own method
Diffstat (limited to 'src/snakeoil/cli')
-rw-r--r-- | src/snakeoil/cli/arghparse.py | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/snakeoil/cli/arghparse.py b/src/snakeoil/cli/arghparse.py index 7e914a1..7edf3f3 100644 --- a/src/snakeoil/cli/arghparse.py +++ b/src/snakeoil/cli/arghparse.py @@ -1078,8 +1078,13 @@ class ArgumentParser(OptionalsParser, CsvActionsParser): parsers.update(x._name_parser_map) return ImmutableDict(parsers) - def _parse_known_args(self, arg_strings, namespace): - """Add support for using a specified, default subparser.""" + def pre_parse(self, arg_strings=None, namespace=None): + """Reset registered defaults and pre-parse functions.""" + if arg_strings is None: + arg_strings = [] + if namespace is None: + namespace = Namespace() + # reset any flagged defaults for functor, parser in self.__reset_defaults: functor(parser, namespace) @@ -1093,7 +1098,11 @@ class ArgumentParser(OptionalsParser, CsvActionsParser): # wipe pre-parse functions so they only run once del self.__pre_parse[:] - # parse the remaining args + return namespace, arg_strings + + def _parse_known_args(self, arg_strings, namespace): + """Add support for running registered pre-parse functions.""" + namespace, arg_strings = self.pre_parse(arg_strings, namespace) return super()._parse_known_args(arg_strings, namespace) def parse_args(self, args=None, namespace=None): |