From 38fe34244ca166418a882cc6e191ccff3a8fc9d1 Mon Sep 17 00:00:00 2001 From: Matt Clay Date: Mon, 28 Nov 2022 13:29:32 -0800 Subject: [PATCH] ansible-test - Fix completion error in Python 3.11. --- .../ansible-test-fix-python-3.11-traceback.yml | 2 ++ .../ansible_test/_internal/cli/argparsing/parsers.py | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 changelogs/fragments/ansible-test-fix-python-3.11-traceback.yml diff --git a/changelogs/fragments/ansible-test-fix-python-3.11-traceback.yml b/changelogs/fragments/ansible-test-fix-python-3.11-traceback.yml new file mode 100644 index 00000000000..717b917b79d --- /dev/null +++ b/changelogs/fragments/ansible-test-fix-python-3.11-traceback.yml @@ -0,0 +1,2 @@ +bugfixes: + - ansible-test - Added a work-around for a traceback under Python 3.11 when completing certain command line options. diff --git a/test/lib/ansible_test/_internal/cli/argparsing/parsers.py b/test/lib/ansible_test/_internal/cli/argparsing/parsers.py index a2e40475ab9..a6a45e9e394 100644 --- a/test/lib/ansible_test/_internal/cli/argparsing/parsers.py +++ b/test/lib/ansible_test/_internal/cli/argparsing/parsers.py @@ -22,24 +22,26 @@ ASSIGNMENT_DELIMITER = '=' PATH_DELIMITER = '/' -@dataclasses.dataclass(frozen=True) +# This class was originally frozen. However, that causes issues when running under Python 3.11. +# See: https://github.com/python/cpython/issues/99856 +@dataclasses.dataclass class Completion(Exception): """Base class for argument completion results.""" -@dataclasses.dataclass(frozen=True) +@dataclasses.dataclass class CompletionUnavailable(Completion): """Argument completion unavailable.""" message: str = 'No completions available.' -@dataclasses.dataclass(frozen=True) +@dataclasses.dataclass class CompletionError(Completion): """Argument completion error.""" message: t.Optional[str] = None -@dataclasses.dataclass(frozen=True) +@dataclasses.dataclass class CompletionSuccess(Completion): """Successful argument completion result.""" list_mode: bool