Bug 2367786

Summary: awscli2 fails to build with Python 3.14: various test failures
Product: [Fedora] Fedora Reporter: Karolina Surma <ksurma>
Component: awscli2Assignee: Nikola Forró <nforro>
Status: CLOSED WORKSFORME QA Contact:
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: davdunc, dominik, fti-bugs, ksurma, mhroncok, nforro
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2025-06-13 20:21:43 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 2322407, 2339432, 2339435    

Description Karolina Surma 2025-05-21 13:01:21 UTC
awscli2 fails to build with Python 3.14.0b1.

____________________________ test_lru_cache_weakref ____________________________
[gw0] linux -- Python 3.14.0 /usr/bin/python3

    def test_lru_cache_weakref():
        class ClassWithCachedMethod:
            @lru_cache_weakref(maxsize=10)
            def cached_fn(self, a, b):
                return a + b
    
        cls1 = ClassWithCachedMethod()
        cls2 = ClassWithCachedMethod()
    
        assert cls1.cached_fn.cache_info().currsize == 0
>       assert getrefcount(cls1) == 2
E       assert 1 == 2
E        +  where 1 = getrefcount(<tests.unit.botocore.test_utils.test_lru_cache_weakref.<locals>.ClassWithCachedMethod object at 0x7f7d7cee1940>)

tests/unit/botocore/test_utils.py:3649: AssertionError
________________ TestEMRutils.test_which_with_existing_command _________________
[gw0] linux -- Python 3.14.0 /usr/bin/python3

self = <tests.unit.customizations.emr.test_emr_utils.TestEMRutils object at 0x7f7e0d177110>

    def test_which_with_existing_command(self):
>       pythonPath = which('python') or which('python.exe')

tests/unit/customizations/emr/test_emr_utils.py:19: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

program = 'python'

    def which(program):
>       for path in os.environ["PATH"].split(os.pathsep):
E       KeyError: 'PATH'

../BUILDROOT/usr/lib/python3.14/site-packages/awscli/customizations/emr/emrutils.py:220: KeyError
______________ TestEMRutils.test_which_with_non_existing_command _______________
[gw0] linux -- Python 3.14.0 /usr/bin/python3

self = <tests.unit.customizations.emr.test_emr_utils.TestEMRutils object at 0x7f7e0d177250>

    def test_which_with_non_existing_command(self):
>       path = which('klajsflklj')

tests/unit/customizations/emr/test_emr_utils.py:23: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

program = 'klajsflklj'

    def which(program):
>       for path in os.environ["PATH"].split(os.pathsep):
E       KeyError: 'PATH'

../BUILDROOT/usr/lib/python3.14/site-packages/awscli/customizations/emr/emrutils.py:220: KeyError
___________________ TestWriteException.test_write_exception ____________________
[gw0] linux -- Python 3.14.0 /usr/bin/python3

self = <tests.functional.test_utils.TestWriteException testMethod=test_write_exception>

    def test_write_exception(self):
        error_message = "Some error message."
        ex = Exception(error_message)
>       with codecs.open(self.outfile, 'w+', encoding='utf-8') as outfile:

tests/functional/test_utils.py:21: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

filename = '/tmp/tmpmri5h0su/stdout', mode = 'w+', encoding = 'utf-8'
errors = 'strict', buffering = -1

>   ???
E   DeprecationWarning: codecs.open() is deprecated. Use open() instead.

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-b1/fedora-rawhide-x86_64/09066399-awscli2/

For all our attempts to build awscli2 with Python 3.14, see:
https://copr.fedorainfracloud.org/coprs/g/python/python3.14-b1/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-b1/

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.

Comment 1 Karolina Surma 2025-06-11 15:52:13 UTC
*** Bug 2371678 has been marked as a duplicate of this bug. ***

Comment 2 Fedora Fails To Install 2025-06-13 20:21:43 UTC
Hello,

Please note that this comment was generated automatically by https://pagure.io/releng/blob/main/f/scripts/ftbfs-fti/follow-policy.py
If you feel that this output has mistakes, please open an issue at https://pagure.io/releng/

All subpackages of a package against which this bug was filled are now installable or removed from Fedora 43.

Thanks for taking care of it!