awscli2 fails to build with Python 3.14.0a3. ______________ TestCLIInputYAML.test_input_yaml_ignores_comments _______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = <tests.functional.test_cliinput.TestCLIInputYAML testMethod=test_input_yaml_ignores_comments> def test_input_yaml_ignores_comments(self): command = [ 's3api', 'list-objects-v2', '--cli-input-yaml', 'Bucket: test-bucket # Some comment\nEncodingType: url' ] > self.assert_params_for_cmd( command, {'Bucket': 'test-bucket', 'EncodingType': 'url'} ) tests/functional/test_cliinput.py:133: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/awscli/testutils.py:441: in assert_params_for_cmd stdout, stderr, rc = self.run_cmd(cmd, expected_rc) ../BUILDROOT/usr/lib/python3.14/site-packages/awscli/testutils.py:480: in run_cmd self.assertEqual( E AssertionError: 255 != 0 : Unexpected rc (expected: 0, actual: 255) for command: ['s3api', 'list-objects-v2', '--cli-input-yaml', 'Bucket: test-bucket # Some comment\nEncodingType: url'] E stdout: E stderr: E E badly formed help string ------------------------------ Captured log call ------------------------------- DEBUG awscli.clidriver:clidriver.py:903 OrderedDict({'bucket': <awscli.arguments.CLIArgument object at 0x7fe1a02c9850>, 'delimiter': <awscli.arguments.CLIArgument object at 0x7fe1a63ebdd0>, 'encoding-type': <awscli.arguments.CLIArgument object at 0x7fe1a63e95d0>, 'max-keys': <awscli.arguments.CLIArgument object at 0x7fe1a63e8550>, 'prefix': <awscli.arguments.CLIArgument object at 0x7fe1a63e8dd0>, 'continuation-token': <awscli.arguments.CLIArgument object at 0x7fe1a63e90d0>, 'fetch-owner': <awscli.arguments.BooleanArgument object at 0x7fe1c64276a0>, 'no-fetch-owner': <awscli.arguments.BooleanArgument object at 0x7fe1c6426360>, 'start-after': <awscli.arguments.CLIArgument object at 0x7fe1a63e8150>, 'request-payer': <awscli.arguments.CLIArgument object at 0x7fe1a63e8650>, 'expected-bucket-owner': <awscli.arguments.CLIArgument object at 0x7fe1a63e94d0>, 'optional-object-attributes': <awscli.arguments.ListArgument object at 0x7fe1a63e8fd0>}) DEBUG awscli.customizations.paginate:paginate.py:133 Modifying paging parameters for operation: ListObjectsV2 DEBUG awscli.clidriver:clidriver.py:505 Exception caught in main() Traceback (most recent call last): File "/usr/lib64/python3.14/argparse.py", line 1665, in _check_help formatter._expand_help(action) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ File "/usr/lib64/python3.14/argparse.py", line 604, in _expand_help return help_string % params ~~~~~~~~~~~~^~~~~~~~ ValueError: unsupported format character '%' (0x25) at index 957 The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/builddir/build/BUILD/awscli2-2.22.10-build/BUILDROOT/usr/lib/python3.14/site-packages/awscli/clidriver.py", line 499, in main return command_table[parsed_args.command](remaining, parsed_args) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/awscli2-2.22.10-build/BUILDROOT/usr/lib/python3.14/site-packages/awscli/clidriver.py", line 634, in __call__ return command_table[parsed_args.operation](remaining, parsed_globals) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/awscli2-2.22.10-build/BUILDROOT/usr/lib/python3.14/site-packages/awscli/clidriver.py", line 793, in __call__ operation_parser = self._create_operation_parser( self.arg_table, subcommand_table) File "/builddir/build/BUILD/awscli2-2.22.10-build/BUILDROOT/usr/lib/python3.14/site-packages/awscli/clidriver.py", line 920, in _create_operation_parser parser = ArgTableArgParser(arg_table, subcommand_table) File "/builddir/build/BUILD/awscli2-2.22.10-build/BUILDROOT/usr/lib/python3.14/site-packages/awscli/argparser.py", line 192, in __init__ self._build(argument_table, command_table) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/awscli2-2.22.10-build/BUILDROOT/usr/lib/python3.14/site-packages/awscli/argparser.py", line 197, in _build argument.add_to_parser(self) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^ File "/builddir/build/BUILD/awscli2-2.22.10-build/BUILDROOT/usr/lib/python3.14/site-packages/awscli/arguments.py", line 432, in add_to_parser parser.add_argument( ~~~~~~~~~~~~~~~~~~~^ cli_name, ^^^^^^^^^ help=self.documentation, ^^^^^^^^^^^^^^^^^^^^^^^^ type=self.cli_type, ^^^^^^^^^^^^^^^^^^^ required=self.required) ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib64/python3.14/argparse.py", line 1479, in add_argument self._check_help(action) ~~~~~~~~~~~~~~~~^^^^^^^^ File "/usr/lib64/python3.14/argparse.py", line 1667, in _check_help raise ValueError('badly formed help string') from exc ValueError: badly formed help string ______________ TestEMRutils.test_which_with_non_existing_command _______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = <tests.unit.customizations.emr.test_emr_utils.TestEMRutils object at 0x7f0087564550> def test_which_with_non_existing_command(self): > path = which('klajsflklj') tests/unit/customizations/emr/test_emr_utils.py:24: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ program = 'klajsflklj' def which(program): > for path in os.environ["PATH"].split(os.pathsep): E KeyError: 'PATH' https://docs.python.org/3.14/whatsnew/3.14.html For the build logs, see: https://copr-be.cloud.fedoraproject.org/results/@python/python3.14/fedora-rawhide-x86_64/08480126-awscli2/ For all our attempts to build awscli2 with Python 3.14, see: https://copr.fedorainfracloud.org/coprs/g/python/python3.14/package/awscli2/ Testing and mass rebuild of packages is happening in copr. You can follow these instructions to test locally in mock if your package builds with Python 3.14: https://copr.fedorainfracloud.org/coprs/g/python/python3.14/ Let us know here if you have any questions. Python 3.14 is planned to be included in Fedora 43. To make that update smoother, we're building Fedora packages with all pre-releases of Python 3.14. A build failure prevents us from testing all dependent packages (transitive [Build]Requires), so if this package is required a lot, it's important for us to get it fixed soon. We'd appreciate help from the people who know this package best, but if you don't want to work on this now, let us know so we can try to work around it on our side.
This bug appears to have been reported against 'rawhide' during the Fedora Linux 42 development cycle. Changing version to 42.