diff options
author | Todd Leonhardt <todd.leonhardt@gmail.com> | 2018-05-21 12:19:51 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-21 12:19:51 -0400 |
commit | c2594ff278ac50556cf4781910439ea1977a5873 (patch) | |
tree | ac10af5c53c45221062ff7440ea16a7343e7c230 /cmd2/argcomplete_bridge.py | |
parent | a38e3f26887f60a358a5e36421a52526a04637f5 (diff) | |
parent | 34c7e650145c21499f3cc7667b71bb44c65fab01 (diff) | |
download | cmd2-git-c2594ff278ac50556cf4781910439ea1977a5873.tar.gz |
Merge pull request #409 from python-cmd2/autocompleter
Autocompleter
Diffstat (limited to 'cmd2/argcomplete_bridge.py')
-rw-r--r-- | cmd2/argcomplete_bridge.py | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/cmd2/argcomplete_bridge.py b/cmd2/argcomplete_bridge.py index a036af1e..0ac68f1c 100644 --- a/cmd2/argcomplete_bridge.py +++ b/cmd2/argcomplete_bridge.py @@ -6,11 +6,16 @@ try: import argcomplete except ImportError: # pragma: no cover # not installed, skip the rest of the file - pass - + DEFAULT_COMPLETER = None else: # argcomplete is installed + # Newer versions of argcomplete have FilesCompleter at top level, older versions only have it under completers + try: + DEFAULT_COMPLETER = argcomplete.FilesCompleter() + except AttributeError: + DEFAULT_COMPLETER = argcomplete.completers.FilesCompleter() + from contextlib import redirect_stdout import copy from io import StringIO @@ -102,7 +107,7 @@ else: def __call__(self, argument_parser, completer=None, always_complete_options=True, exit_method=os._exit, output_stream=None, exclude=None, validator=None, print_suppressed=False, append_space=None, - default_completer=argcomplete.FilesCompleter()): + default_completer=DEFAULT_COMPLETER): """ :param argument_parser: The argument parser to autocomplete on :type argument_parser: :class:`argparse.ArgumentParser` @@ -140,9 +145,14 @@ else: added to argcomplete.safe_actions, if their values are wanted in the ``parsed_args`` completer argument, or their execution is otherwise desirable. """ - self.__init__(argument_parser, always_complete_options=always_complete_options, exclude=exclude, - validator=validator, print_suppressed=print_suppressed, append_space=append_space, - default_completer=default_completer) + # Older versions of argcomplete have fewer keyword arguments + if sys.version_info >= (3, 5): + self.__init__(argument_parser, always_complete_options=always_complete_options, exclude=exclude, + validator=validator, print_suppressed=print_suppressed, append_space=append_space, + default_completer=default_completer) + else: + self.__init__(argument_parser, always_complete_options=always_complete_options, exclude=exclude, + validator=validator, print_suppressed=print_suppressed) if "_ARGCOMPLETE" not in os.environ: # not an argument completion invocation |