Bug 2433885

Summary: python-hupper fails to build with Python 3.15: ModuleNotFoundError: No module named 'pytest_cov.embed'
Product: [Fedora] Fedora Reporter: Karolina Surma <ksurma>
Component: python-hupperAssignee: Kevin Fenzi <kevin>
Status: NEW --- QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: infra-sig, kevin, ksurma, mhroncok
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 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: 2412434    

Description Karolina Surma 2026-01-28 14:43:33 UTC
python-hupper fails to build with Python 3.15.0a5.

_____________________ test_myapp_reloads_when_touching_ini _____________________

testapp = <TestApp(Thread-2, stopped 140042405930688)>

    def test_myapp_reloads_when_touching_ini(testapp):
        testapp.start('myapp', ['--reload'])
>       testapp.wait_for_response()

tests/test_it.py:11: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/util.py:72: in wait_for_response
    self.tmpsize = wait_for_change(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

path = '/tmp/tmpuliy9jed', last_size = 0, timeout = 5, interval = 0.1

    def wait_for_change(path, last_size=0, timeout=5, interval=0.1):
        start = time.time()
        size = os.path.getsize(path)
        while size == last_size:
            duration = time.time() - start
            sleepfor = interval
            if timeout is not None:  # pragma: no cover
                if duration >= timeout:
>                   raise RuntimeError(
                        'timeout waiting for change to file=%s' % (path,)
                    )
E                   RuntimeError: timeout waiting for change to file=/tmp/tmpuliy9jed

tests/util.py:99: RuntimeError
--------------------------- Captured stderr teardown ---------------------------
-- test app failed --
name=myapp
args=['--reload']
code=1
-- stdout --

-- stderr --
Traceback (most recent call last):
  File "<frozen runpy>", line 187, in _run_module_as_main
  File "<frozen runpy>", line 147, in _get_module_details
  File "<frozen runpy>", line 111, in _get_module_details
  File "/builddir/build/BUILD/python-hupper-1.12.1-build/hupper-1.12.1/tests/myapp/__init__.py", line 1, in <module>
    import pytest_cov.embed
ModuleNotFoundError: No module named 'pytest_cov.embed'

___________________ test_myapp_reloads_when_touching_pyfile ____________________

testapp = <TestApp(Thread-3, stopped 140042405930688)>

    def test_myapp_reloads_when_touching_pyfile(testapp):
        testapp.start('myapp', ['--reload'])
>       testapp.wait_for_response()

tests/test_it.py:23: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/util.py:72: in wait_for_response
    self.tmpsize = wait_for_change(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

path = '/tmp/tmpntvw8qt3', last_size = 0, timeout = 5, interval = 0.1

    def wait_for_change(path, last_size=0, timeout=5, interval=0.1):
        start = time.time()
        size = os.path.getsize(path)
        while size == last_size:
            duration = time.time() - start
            sleepfor = interval
            if timeout is not None:  # pragma: no cover
                if duration >= timeout:
>                   raise RuntimeError(
                        'timeout waiting for change to file=%s' % (path,)
                    )
E                   RuntimeError: timeout waiting for change to file=/tmp/tmpntvw8qt3

tests/util.py:99: RuntimeError
--------------------------- Captured stderr teardown ---------------------------
-- test app failed --
name=myapp
args=['--reload']
code=1
-- stdout --

-- stderr --
Traceback (most recent call last):
  File "<frozen runpy>", line 187, in _run_module_as_main
  File "<frozen runpy>", line 147, in _get_module_details
  File "<frozen runpy>", line 111, in _get_module_details
  File "/builddir/build/BUILD/python-hupper-1.12.1-build/hupper-1.12.1/tests/myapp/__init__.py", line 1, in <module>
    import pytest_cov.embed
ModuleNotFoundError: No module named 'pytest_cov.embed'

https://docs.python.org/3.15/whatsnew/3.15.html

For the build logs, see:
https://copr-be.cloud.fedoraproject.org/results/@python/python3.15/fedora-rawhide-x86_64/10038565-python-hupper/

For all our attempts to build python-hupper with Python 3.15, see:
https://copr.fedorainfracloud.org/coprs/g/python/python3.15/package/python-hupper/

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.15:
https://copr.fedorainfracloud.org/coprs/g/python/python3.15/

Let us know here if you have any questions.

Python 3.15 is planned to be included in Fedora 45.
To make that update smoother, we're building Fedora packages with all pre-releases of Python 3.15.
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.