aws / aws/aws-encryption-sdk-cli

Does not work with Python 3.14, breaking changes to Argparse

Open
#434 0 comments 3 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
82
Forks
42
PR merge metrics
No merged PRs in 30d

Description

All CLI commands are broken when using Python 3.14 due to changes in Argparse, adding nested mutually exclusive groups is now an error:

```
$ aws-encryption-cli --version --verbosity 4
Encountered unexpected error: increase verbosity to see details.
ValueError("mutually exclusive groups cannot be nested")
```

Exception traceback:

```Traceback (most recent call last):
File "/Users/xxxxxx/.local/bin/aws-encryption-cli", line 7, in
sys.exit(cli())
~~~^^
File "/Users/xxxxxx/.local/pipx/venvs/aws-encryption-sdk-cli/lib/python3.14/site-packages/aws_encryption_sdk_cli/__init__.py", line 270, in cli
args = parse_args(raw_args)
File "/Users/xxxxxx/.local/pipx/venvs/aws-encryption-sdk-cli/lib/python3.14/site-packages/aws_encryption_sdk_cli/internal/arg_parsing.py", line 636, in parse_args
parser = _build_parser()
File "/Users/xxxxxx/.local/pipx/venvs/aws-encryption-sdk-cli/lib/python3.14/site-packages/aws_encryption_sdk_cli/internal/arg_parsing.py", line 186, in _build_parser
operating_action = version_or_action.add_mutually_exclusive_group()
File "/opt/homebrew/Cellar/python@3.14/3.14.0_1/Frameworks/Python.framework/Versions/3.14/lib/python3.14/argparse.py", line 1816, in add_mutually_exclusive_group
raise ValueError('mutually exclusive groups cannot be nested')
ValueError: mutually exclusive groups cannot be nested
```

In Python 3.14 the relevant code in argparse.py is:
```python
class _MutuallyExclusiveGroup(_ArgumentGroup):
...
def add_mutually_exclusive_group(self, **kwargs):
raise ValueError('mutually exclusive groups cannot be nested')
```

At a glance, I'm not sure how to fix this, it looks to require a bit of an overhaul of argument parsing. Nesting mutually exclusive groups has been deprecated since Python 3.11 though.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.