Bug 2485844 - F45FailsToInstall: python3-distributed
Summary: F45FailsToInstall: python3-distributed
Keywords:
Status: CLOSED WORKSFORME
Alias: None
Product: Fedora
Classification: Fedora
Component: python-distributed
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Elliott Sales de Andrade
QA Contact:
URL:
Whiteboard:
Depends On: 2440574 2458729 2485842
Blocks: PYTHON3.15 F45FailsToInstall, RAWHIDEFailsToInstall 2485868
TreeView+ depends on / blocked
 
Reported: 2026-06-06 17:50 UTC by Fedora Fails To Install
Modified: 2026-06-19 08:29 UTC (History)
4 users (show)

Fixed In Version: python-distributed-2026.3.0-3.fc45
Clone Of:
Environment:
Last Closed: 2026-06-19 08:29:02 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Fedora Package Sources python-distributed pull-request 3 0 None None None 2026-06-18 09:33:12 UTC
Github python cpython issues 151631 0 None open _find_incompatible_extension_module raises ModuleNotFoundError when sys.modules contains None for the parent package 2026-06-18 09:29:33 UTC

Description Fedora Fails To Install 2026-06-06 17:50:47 UTC
Hello,

Please note that this comment was generated automatically by https://forge.fedoraproject.org/releng/tooling/src/branch/main/release-process/bug-filing/follow-policy/follow_policy.py
If you feel that this output has mistakes, please open an issue at https://forge.fedoraproject.org/releng/tickets/issues

Your package (python-distributed) Fails To Install in Fedora 45:

can't install python3-distributed:
  - nothing provides python(abi) = 3.14 needed by python3-distributed-2026.3.0-1.fc45.noarch
  - nothing provides python3.14dist(packaging) >= 20 needed by python3-distributed-2026.3.0-1.fc45.noarch
  - nothing provides python3.14dist(click) >= 8 needed by python3-distributed-2026.3.0-1.fc45.noarch
  - nothing provides python3.14dist(cloudpickle) >= 3 needed by python3-distributed-2026.3.0-1.fc45.noarch
  - nothing provides python3.14dist(toolz) >= 0.12 needed by python3-distributed-2026.3.0-1.fc45.noarch
  - nothing provides ((python3.14dist(tblib) < 3.2 or python3.14dist(tblib) > 3.2) with (python3.14dist(tblib) < 3.2.1 or python3.14dist(tblib) > 3.2.1) with python3.14dist(tblib) >= 1.6) needed by python3-distributed-2026.3.0-1.fc45.noarch
  - nothing provides python3.14dist(jinja2) >= 2.10.3 needed by python3-distributed-2026.3.0-1.fc45.noarch
  - nothing provides python3.14dist(locket) >= 1 needed by python3-distributed-2026.3.0-1.fc45.noarch
  - nothing provides python3.14dist(msgpack) >= 1.0.2 needed by python3-distributed-2026.3.0-1.fc45.noarch
  - nothing provides python3.14dist(psutil) >= 5.8 needed by python3-distributed-2026.3.0-1.fc45.noarch
  - nothing provides python3.14dist(pyyaml) >= 5.4.1 needed by python3-distributed-2026.3.0-1.fc45.noarch
  - nothing provides python3.14dist(sortedcontainers) >= 2.0.5 needed by python3-distributed-2026.3.0-1.fc45.noarch
  - nothing provides python3.14dist(tornado) >= 6.2 needed by python3-distributed-2026.3.0-1.fc45.noarch
  - nothing provides python3.14dist(urllib3) >= 1.26.5 needed by python3-distributed-2026.3.0-1.fc45.noarch
  
If you know about this problem and are planning on fixing it, please acknowledge so by setting the bug status to ASSIGNED. If you don't have time to maintain this package, consider orphaning it, so maintainers of dependent packages realize the problem.


If you don't react accordingly to the policy for FTBFS/FTI bugs (https://docs.fedoraproject.org/en-US/fesco/Fails_to_build_from_source_Fails_to_install/), your package may be orphaned in 8+ weeks.


P.S. The data was generated solely from koji buildroot, so it might be newer than the latest compose or the content on mirrors. To reproduce, use the koji/local repo only, e.g. in mock:

    $ mock -r fedora-45-x86_64 --config-opts mirrored=False install python3-distributed


P.P.S. If this bug has been reported in the middle of upgrading multiple dependent packages, please consider using side tags: https://docs.fedoraproject.org/en-US/fesco/Updates_Policy/#updating-inter-dependent-packages

Thanks!

Comment 1 Fedora Fails To Install 2026-06-14 09:04:45 UTC
Hello,

Please note that this comment was generated automatically by https://forge.fedoraproject.org/releng/tooling/src/branch/main/release-process/bug-filing/follow-policy/follow_policy.py
If you feel that this output has mistakes, please open an issue at https://forge.fedoraproject.org/releng/tickets/issues

This package fails to install and maintainers are advised to take one of the following actions:

 - Fix this bug and close this bugzilla once the update makes it to the repository.
   (The same script that posted this comment will eventually close this bugzilla
   when the fixed package reaches the repository, so you don't have to worry about it.)

or

 - Move this bug to ASSIGNED if you plan on fixing this, but simply haven't done so yet.

or

 - Orphan the package if you no longer plan to maintain it.


If you do not take one of these actions, the process at https://docs.fedoraproject.org/en-US/fesco/Fails_to_build_from_source_Fails_to_install/#_package_removal_for_long_standing_ftbfs_and_fti_bugs will continue.
This package may be orphaned in 7+ weeks.
This is the first reminder (step 3) from the policy.

Don't hesitate to ask for help on https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/ if you are unsure how to fix this bug.

Comment 2 Elliott Sales de Andrade 2026-06-16 06:11:00 UTC
Building with fixed liborc and dask from https://src.fedoraproject.org/rpms/python-dask/pull-request/16, there's one failure below. There's no mention of dask or distributed here, so it seems to be a bug in the standard library, pytest, or importlib?

________________ test_conda_install_fails_when_conda_not_found _________________

self = <TCP (closed) ConnectionPool local=tcp://127.0.0.1:35468 remote=tcp://127.0.0.1:41953>
deserializers = None

    async def read(self, deserializers=None):
        stream = self.stream
        if stream is None:
            raise CommClosedError()
    
        fmt = "Q"
        fmt_size = struct.calcsize(fmt)
    
        try:
            # Don't store multiple numpy or parquet buffers into the same buffer, or
            # none will be released until all are released.
>           frames_nosplit_nbytes_bin = await stream.read_bytes(fmt_size)
                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           tornado.iostream.StreamClosedError: Stream is closed

../../BUILDROOT/usr/lib/python3.15/site-packages/distributed/comm/tcp.py:226: StreamClosedError

The above exception was the direct cause of the following exception:

c = <Client: No scheduler connected>
s = <Scheduler 'tcp://127.0.0.1:41953', workers: 0, cores: 0, tasks: 0>
a = <Worker 'tcp://127.0.0.1:40447', name: 0, status: closed, stored: 0, running: 0/2, ready: 0, comm: 0, waiting: 0>
b = <Worker 'tcp://127.0.0.1:37757', name: 1, status: closed, stored: 0, running: 0/2, ready: 0, comm: 0, waiting: 0>

    @gen_cluster(client=True, nthreads=[("", 2), ("", 2)])
    async def test_conda_install_fails_when_conda_not_found(c, s, a, b):
        with captured_logger(
            "distributed.diagnostics.plugin", level=logging.ERROR
        ) as logger:
            with mock.patch.dict("sys.modules", {"conda": None}):
                with pytest.raises(RuntimeError):
>                   await c.register_plugin(CondaInstall(packages=["not-a-package"]))

../../BUILDROOT/usr/lib/python3.15/site-packages/distributed/diagnostics/tests/test_install_plugin.py:101: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../BUILDROOT/usr/lib/python3.15/site-packages/distributed/client.py:5174: in _register_scheduler_plugin
    return await self.scheduler.register_scheduler_plugin(
../../BUILDROOT/usr/lib/python3.15/site-packages/distributed/core.py:1259: in send_recv_from_rpc
    return await send_recv(comm=comm, op=key, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
../../BUILDROOT/usr/lib/python3.15/site-packages/distributed/core.py:1018: in send_recv
    response = await comm.read(deserializers=deserializers)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
../../BUILDROOT/usr/lib/python3.15/site-packages/distributed/comm/tcp.py:237: in read
    convert_stream_closed_error(self, e)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

obj = <TCP (closed) ConnectionPool local=tcp://127.0.0.1:35468 remote=tcp://127.0.0.1:41953>
exc = StreamClosedError('Stream is closed')

    def convert_stream_closed_error(obj, exc):
        """
        Re-raise StreamClosedError or SSLError as CommClosedError.
        """
        if hasattr(exc, "real_error"):
            # The stream was closed because of an underlying OS error
            if exc.real_error is None:
>               raise CommClosedError(f"in {obj}: {exc}") from exc
E               distributed.comm.core.CommClosedError: in <TCP (closed) ConnectionPool.register_scheduler_plugin local=tcp://127.0.0.1:35468 remote=tcp://127.0.0.1:41953>: Stream is closed

../../BUILDROOT/usr/lib/python3.15/site-packages/distributed/comm/tcp.py:137: CommClosedError
----------------------------- Captured stderr call -----------------------------
2026-06-16 01:27:39,389 - distributed.scheduler - INFO - State start
2026-06-16 01:27:39,390 - distributed.scheduler - INFO -   Scheduler at:     tcp://127.0.0.1:32995
2026-06-16 01:27:39,391 - distributed.scheduler - INFO -   dashboard at:  http://127.0.0.1:43881/status
2026-06-16 01:27:39,391 - distributed.scheduler - INFO - Registering Worker plugin shuffle
2026-06-16 01:27:39,394 - distributed.worker - INFO -       Start worker at:      tcp://127.0.0.1:41031
2026-06-16 01:27:39,394 - distributed.worker - INFO -          Listening to:      tcp://127.0.0.1:41031
2026-06-16 01:27:39,394 - distributed.worker - INFO -           Worker name:                          0
2026-06-16 01:27:39,394 - distributed.worker - INFO -          dashboard at:            127.0.0.1:39539
2026-06-16 01:27:39,394 - distributed.worker - INFO - Waiting to connect to:      tcp://127.0.0.1:32995
2026-06-16 01:27:39,394 - distributed.worker - INFO - -------------------------------------------------
2026-06-16 01:27:39,394 - distributed.worker - INFO -               Threads:                          2
2026-06-16 01:27:39,395 - distributed.worker - INFO -                Memory:                  14.58 GiB
2026-06-16 01:27:39,395 - distributed.worker - INFO -       Local Directory: /tmp/dask-scratch-space/worker-6h3vu0tq
2026-06-16 01:27:39,395 - distributed.worker - INFO - -------------------------------------------------
2026-06-16 01:27:39,395 - distributed.worker - INFO -       Start worker at:      tcp://127.0.0.1:36309
2026-06-16 01:27:39,395 - distributed.worker - INFO -          Listening to:      tcp://127.0.0.1:36309
2026-06-16 01:27:39,395 - distributed.worker - INFO -           Worker name:                          1
2026-06-16 01:27:39,395 - distributed.worker - INFO -          dashboard at:            127.0.0.1:45053
2026-06-16 01:27:39,395 - distributed.worker - INFO - Waiting to connect to:      tcp://127.0.0.1:32995
2026-06-16 01:27:39,395 - distributed.worker - INFO - -------------------------------------------------
2026-06-16 01:27:39,396 - distributed.worker - INFO -               Threads:                          2
2026-06-16 01:27:39,396 - distributed.worker - INFO -                Memory:                  14.58 GiB
2026-06-16 01:27:39,396 - distributed.worker - INFO -       Local Directory: /tmp/dask-scratch-space/worker-mcnymh2a
2026-06-16 01:27:39,396 - distributed.worker - INFO - -------------------------------------------------
2026-06-16 01:27:39,398 - distributed.scheduler - INFO - Register worker addr: tcp://127.0.0.1:41031 name: 0
2026-06-16 01:27:39,398 - distributed.scheduler - INFO - Starting worker compute stream, tcp://127.0.0.1:41031
2026-06-16 01:27:39,398 - distributed.core - INFO - Starting established connection to tcp://127.0.0.1:46500
2026-06-16 01:27:39,398 - distributed.scheduler - INFO - Register worker addr: tcp://127.0.0.1:36309 name: 1
2026-06-16 01:27:39,399 - distributed.scheduler - INFO - Starting worker compute stream, tcp://127.0.0.1:36309
2026-06-16 01:27:39,399 - distributed.core - INFO - Starting established connection to tcp://127.0.0.1:46502
2026-06-16 01:27:39,399 - distributed.worker - INFO - Starting Worker plugin shuffle
2026-06-16 01:27:39,399 - distributed.worker - INFO - Starting Worker plugin shuffle
2026-06-16 01:27:39,400 - distributed.worker - INFO -         Registered to:      tcp://127.0.0.1:32995
2026-06-16 01:27:39,400 - distributed.worker - INFO - -------------------------------------------------
2026-06-16 01:27:39,401 - distributed.worker - INFO -         Registered to:      tcp://127.0.0.1:32995
2026-06-16 01:27:39,401 - distributed.worker - INFO - -------------------------------------------------
2026-06-16 01:27:39,401 - distributed.core - INFO - Starting established connection to tcp://127.0.0.1:32995
2026-06-16 01:27:39,401 - distributed.core - INFO - Starting established connection to tcp://127.0.0.1:32995
2026-06-16 01:27:39,404 - distributed.scheduler - INFO - Receive client connection: Client-1740e537-6944-11f1-8f7f-5d73814b89c4
2026-06-16 01:27:39,404 - distributed.core - INFO - Starting established connection to tcp://127.0.0.1:46504
2026-06-16 01:27:39,405 - distributed.diagnostics.plugin - ERROR - conda install failed because conda could not be found. Please make sure that conda is installed.
--- Logging error ---
2026-06-16 01:27:39,447 - distributed.scheduler - INFO - Remove client Client-1740e537-6944-11f1-8f7f-5d73814b89c4
2026-06-16 01:27:39,447 - distributed.core - INFO - Received 'close-stream' from tcp://127.0.0.1:46504; closing.
2026-06-16 01:27:39,447 - distributed.scheduler - INFO - Remove client Client-1740e537-6944-11f1-8f7f-5d73814b89c4
2026-06-16 01:27:39,447 - distributed.scheduler - INFO - Close client connection: Client-1740e537-6944-11f1-8f7f-5d73814b89c4
2026-06-16 01:27:39,448 - distributed.worker - INFO - Stopping worker at tcp://127.0.0.1:41031. Reason: worker-close
2026-06-16 01:27:39,448 - distributed.worker - INFO - Stopping worker at tcp://127.0.0.1:36309. Reason: worker-close
2026-06-16 01:27:39,448 - distributed.worker - INFO - Removing Worker plugin shuffle
2026-06-16 01:27:39,448 - distributed.worker - INFO - Removing Worker plugin shuffle
2026-06-16 01:27:39,449 - distributed.core - INFO - Connection to tcp://127.0.0.1:32995 has been closed.
2026-06-16 01:27:39,450 - distributed.core - INFO - Connection to tcp://127.0.0.1:32995 has been closed.
2026-06-16 01:27:39,450 - distributed.core - INFO - Received 'close-stream' from tcp://127.0.0.1:46500; closing.
2026-06-16 01:27:39,450 - distributed.core - INFO - Received 'close-stream' from tcp://127.0.0.1:46502; closing.
2026-06-16 01:27:39,450 - distributed.scheduler - INFO - Remove worker addr: tcp://127.0.0.1:41031 name: 0 (stimulus_id='handle-worker-cleanup-1781587659.450758')
2026-06-16 01:27:39,451 - distributed.scheduler - INFO - Remove worker addr: tcp://127.0.0.1:36309 name: 1 (stimulus_id='handle-worker-cleanup-1781587659.4510844')
2026-06-16 01:27:39,451 - distributed.scheduler - INFO - Lost all workers
2026-06-16 01:27:39,452 - distributed.scheduler - INFO - Closing scheduler. Reason: unknown
2026-06-16 01:27:39,452 - distributed.scheduler - INFO - Scheduler closing all comms
------------------------------ Captured log call -------------------------------
ERROR    asyncio:base_events.py:1927 Exception in default exception handler
Traceback (most recent call last):
  File "/usr/lib64/python3.15/asyncio/base_events.py", line 1920, in call_exception_handler
    self.default_exception_handler(context)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/usr/lib64/python3.15/asyncio/base_events.py", line 1892, in default_exception_handler
    logger.error('\n'.join(log_lines), exc_info=exc_info)
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.15/logging/__init__.py", line 1552, in error
    self._log(ERROR, msg, args, **kwargs)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.15/logging/__init__.py", line 1668, in _log
    self.handle(record)
    ~~~~~~~~~~~^^^^^^^^
  File "/usr/lib64/python3.15/logging/__init__.py", line 1684, in handle
    self.callHandlers(record)
    ~~~~~~~~~~~~~~~~~^^^^^^^^
  File "/usr/lib64/python3.15/logging/__init__.py", line 1740, in callHandlers
    hdlr.handle(record)
    ~~~~~~~~~~~^^^^^^^^
  File "/usr/lib64/python3.15/logging/__init__.py", line 1030, in handle
    self.emit(record)
    ~~~~~~~~~^^^^^^^^
  File "/usr/lib/python3.15/site-packages/_pytest/logging.py", line 384, in emit
    super().emit(record)
    ~~~~~~~~~~~~^^^^^^^^
  File "/usr/lib64/python3.15/logging/__init__.py", line 1162, in emit
    self.handleError(record)
    ~~~~~~~~~~~~~~~~^^^^^^^^
  File "/usr/lib64/python3.15/logging/__init__.py", line 1154, in emit
    msg = self.format(record)
  File "/usr/lib64/python3.15/logging/__init__.py", line 1002, in format
    return fmt.format(record)
           ~~~~~~~~~~^^^^^^^^
  File "/usr/lib/python3.15/site-packages/_pytest/logging.py", line 137, in format
    return super().format(record)
           ~~~~~~~~~~~~~~^^^^^^^^
  File "/usr/lib64/python3.15/logging/__init__.py", line 720, in format
    record.exc_text = self.formatException(record.exc_info)
                      ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.15/logging/__init__.py", line 670, in formatException
    traceback.print_exception(ei[0], ei[1], tb, limit=None, file=sio)
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.15/traceback.py", line 174, in print_exception
    te = TracebackException(type(value), value, tb, limit=limit, compact=True)
  File "/usr/lib64/python3.15/traceback.py", line 1260, in __init__
    cause = TracebackException(
        type(e.__cause__),
    ...<6 lines>...
        max_group_depth=max_group_depth,
        _seen=_seen)
  File "/usr/lib64/python3.15/traceback.py", line 1207, in __init__
    elif abi_tag := _find_incompatible_extension_module(module_name):
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/usr/lib64/python3.15/traceback.py", line 2075, in _find_incompatible_extension_module
    traversable = importlib.resources.files(parent)
  File "/usr/lib64/python3.15/importlib/resources/_common.py", line 22, in files
    return from_package(resolve(anchor))
                        ~~~~~~~^^^^^^^^
  File "/usr/lib64/python3.15/functools.py", line 1003, in wrapper
    return dispatch(args[0].__class__)(*args, **kw)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/usr/lib64/python3.15/importlib/resources/_common.py", line 48, in _
    return importlib.import_module(cand)
           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/lib64/python3.15/importlib/__init__.py", line 88, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1381, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1364, in _find_and_load
ModuleNotFoundError: import of conda halted; None in sys.modules

Comment 3 Miro Hrončok 2026-06-18 09:29:34 UTC
I found the cause, and I have a workaround. Reported in https://github.com/python/cpython/issues/151631

Comment 4 Miro Hrončok 2026-06-18 09:33:12 UTC
Workaround in https://src.fedoraproject.org/rpms/python-distributed/pull-request/3

Comment 5 Fedora Fails To Install 2026-06-19 08:29:02 UTC
Hello,

Please note that this comment was generated automatically by https://forge.fedoraproject.org/releng/tooling/src/branch/main/release-process/bug-filing/follow-policy/follow_policy.py
If you feel that this output has mistakes, please open an issue at https://forge.fedoraproject.org/releng/tickets/issues

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

Thanks for taking care of it!


Note You need to log in before you can comment on or make changes to this bug.