diff options
Diffstat (limited to 'test/lib/ansible_test/_internal')
-rw-r--r-- | test/lib/ansible_test/_internal/cli/argparsing/argcompletion.py | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/test/lib/ansible_test/_internal/cli/argparsing/argcompletion.py b/test/lib/ansible_test/_internal/cli/argparsing/argcompletion.py index 219c33f4ff..26abcf82fd 100644 --- a/test/lib/ansible_test/_internal/cli/argparsing/argcompletion.py +++ b/test/lib/ansible_test/_internal/cli/argparsing/argcompletion.py @@ -17,10 +17,19 @@ class Substitute: try: import argcomplete - from argcomplete import ( - CompletionFinder, - default_validator, - ) + try: + # argcomplete 3+ + # see: https://github.com/kislyuk/argcomplete/commit/bd781cb08512b94966312377186ebc5550f46ae0 + from argcomplete.finders import ( + CompletionFinder, + default_validator, + ) + except ImportError: + # argcomplete <3 + from argcomplete import ( + CompletionFinder, + default_validator, + ) warn = argcomplete.warn # pylint: disable=invalid-name except ImportError: @@ -72,7 +81,13 @@ class CompType(enum.Enum): def register_safe_action(action_type: t.Type[argparse.Action]) -> None: """Register the given action as a safe action for argcomplete to use during completion if it is not already registered.""" if argcomplete and action_type not in argcomplete.safe_actions: - argcomplete.safe_actions += (action_type,) + if isinstance(argcomplete.safe_actions, set): + # argcomplete 3+ + # see: https://github.com/kislyuk/argcomplete/commit/bd781cb08512b94966312377186ebc5550f46ae0 + argcomplete.safe_actions.add(action_type) + else: + # argcomplete <3 + argcomplete.safe_actions += (action_type,) def get_comp_type() -> t.Optional[CompType]: |