|
|
- # coding: utf-8
- #
- # Copyright © 2010—2014 Andrey Mikhaylenko and contributors
- #
- # This file is part of Argh.
- #
- # Argh is free software under terms of the GNU Lesser
- # General Public License version 3 (LGPLv3) as published by the Free
- # Software Foundation. See the file README.rst for copying conditions.
- #
- """
- Helpers
- ~~~~~~~
- """
- import argparse
-
- from argh.completion import autocomplete
- from argh.assembling import add_commands, set_default_command
- from argh.dispatching import PARSER_FORMATTER, ArghNamespace, dispatch
-
-
- __all__ = ['ArghParser']
-
-
- class ArghParser(argparse.ArgumentParser):
- """
- A subclass of :class:`ArgumentParser` with support for and a couple
- of convenience methods.
-
- All methods are but wrappers for stand-alone functions
- :func:`~argh.assembling.add_commands`,
- :func:`~argh.completion.autocomplete` and
- :func:`~argh.dispatching.dispatch`.
-
- Uses :attr:`~argh.dispatching.PARSER_FORMATTER`.
- """
- def __init__(self, *args, **kwargs):
- kwargs.setdefault('formatter_class', PARSER_FORMATTER)
- super(ArghParser, self).__init__(*args, **kwargs)
-
- def set_default_command(self, *args, **kwargs):
- "Wrapper for :func:`~argh.assembling.set_default_command`."
- return set_default_command(self, *args, **kwargs)
-
- def add_commands(self, *args, **kwargs):
- "Wrapper for :func:`~argh.assembling.add_commands`."
- return add_commands(self, *args, **kwargs)
-
- def autocomplete(self):
- "Wrapper for :func:`~argh.completion.autocomplete`."
- return autocomplete(self)
-
- def dispatch(self, *args, **kwargs):
- "Wrapper for :func:`~argh.dispatching.dispatch`."
- return dispatch(self, *args, **kwargs)
-
- def parse_args(self, args=None, namespace=None):
- """
- Wrapper for :meth:`argparse.ArgumentParser.parse_args`. If `namespace`
- is not defined, :class:`argh.dispatching.ArghNamespace` is used.
- This is required for functions to be properly used as commands.
- """
- namespace = namespace or ArghNamespace()
- return super(ArghParser, self).parse_args(args, namespace)
|