summaryrefslogtreecommitdiff
path: root/test/lib/ansible_test/_internal/cli/argparsing/argcompletion.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/lib/ansible_test/_internal/cli/argparsing/argcompletion.py')
-rw-r--r--test/lib/ansible_test/_internal/cli/argparsing/argcompletion.py25
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]: