Bug 2264225 - python-dill fails to build with Python 3.13: 3 tests fail
Summary: python-dill fails to build with Python 3.13: 3 tests fail
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: python-dill
Version: 41
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Sergio Pascual
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
: 2291671 (view as bug list)
Depends On:
Blocks: PYTHON3.13 2246347 2291509 2291565 2291567 2291594 2291599 2291659 2291706 2291707 2291708 2291726 2291735 2291746 2291790 2291794 2291833 2291842 2291845 2291861 2291895 2291917 2291919 2292011
TreeView+ depends on / blocked
 
Reported: 2024-02-14 17:10 UTC by Karolina Surma
Modified: 2024-10-01 01:14 UTC (History)
5 users (show)

Fixed In Version: python-dill-0.3.9~~20240914.8b86f509-1.fc42 python-dill-0.3.9~~20240914.8b86f509-1.fc41
Clone Of:
Environment:
Last Closed: 2024-10-01 01:14:56 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Fedora Package Sources python-dill pull-request 2 0 None None None 2024-09-17 10:22:10 UTC
Github uqfoundation dill issues 654 0 None open threading.Thread fails to pickle in python > 3.13.0a5 2024-04-23 22:59:13 UTC

Description Karolina Surma 2024-02-14 17:10:24 UTC
python-dill fails to build with Python 3.13.0a3.

+ /usr/bin/python3 dill/tests/__main__.py
F.....F...F...............<function <lambda> at 0x7efdedc1c720>
<function <lambda> at 0x7f406e588720>
<function <lambda> at 0x7f1a787f8720>
<function <lambda> at 0x7f2fcec50720>
<function <lambda> at 0x7fc2936b8720>
..
error: Bad exit status from /var/tmp/rpm-tmp.2ZlP8Q (%check)



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

For the build logs, see:
https://copr-be.cloud.fedoraproject.org/results/@python/python3.13/fedora-rawhide-x86_64/06996765-python-dill/

For all our attempts to build python-dill with Python 3.13, see:
https://copr.fedorainfracloud.org/coprs/g/python/python3.13/package/python-dill/

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

Let us know here if you have any questions.

Python 3.13 is planned to be included in Fedora 41.
To make that update smoother, we're building Fedora packages with all pre-releases of Python 3.13.
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 Sergio Pascual 2024-03-16 19:26:53 UTC
I have tried to see what is happening. The curious test system doesn't give a lot of information to work with, sorry. Please, go ahead.

Comment 2 Karolina Surma 2024-03-27 10:48:26 UTC
I looked at the package and tried to identify the failing tests. A segmentation fault happens when executing 3 of them.

<mock-chroot> sh-5.2# /usr/bin/python3 tests/__main__.py
.<function <lambda> at 0x7fa181c71b20>
<function <lambda> at 0x7fb0a2e59b20>
<function <lambda> at 0x7f93ce41db20>
<function <lambda> at 0x7f99795c8040>
<function <lambda> at 0x7f1a8850db20>
................ /builddir/build/BUILDROOT/python-dill-0.3.8-1.fc41.x86_64/usr/lib/python3.13/site-packages/dill/tests/test_objects.py
F... /builddir/build/BUILDROOT/python-dill-0.3.8-1.fc41.x86_64/usr/lib/python3.13/site-packages/dill/tests/test_registered.py
F...../builddir/build/BUILDROOT/python-dill-0.3.8-1.fc41.x86_64/usr/lib/python3.13/site-packages/dill/tests/test_weakref.py
F
<mock-chroot> sh-5.2# /usr/bin/python3 tests/test_objects.py 
Segmentation fault (core dumped)

Upon further investigation I've managed to isolate the change to a reproducer not involving dill at all.
Reported at CPython: https://github.com/python/cpython/issues/117281

Comment 3 Karolina Surma 2024-04-23 11:52:35 UTC
python-dill has built successfully with alpha6, but now, when building multiprocess, there's another issue:

ERROR: test_fork (__main__.WithProcessesTestQueue.test_fork)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/builddir/build/BUILDROOT/python-multiprocess-0.70.16-2.fc41.x86_64/usr/lib/python3.13/site-packages/multiprocess/tests/__init__.py", line 1187, in test_fork
    p.start()
    ~~~~~~~^^
  File "/builddir/build/BUILDROOT/python-multiprocess-0.70.16-2.fc41.x86_64/usr/lib/python3.13/site-packages/multiprocess/process.py", line 121, in start
    self._popen = self._Popen(self)
                  ~~~~~~~~~~~^^^^^^
  File "/builddir/build/BUILDROOT/python-multiprocess-0.70.16-2.fc41.x86_64/usr/lib/python3.13/site-packages/multiprocess/context.py", line 224, in _Popen
    return _default_context.get_context().Process._Popen(process_obj)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/builddir/build/BUILDROOT/python-multiprocess-0.70.16-2.fc41.x86_64/usr/lib/python3.13/site-packages/multiprocess/context.py", line 289, in _Popen
    return Popen(process_obj)
           ~~~~~^^^^^^^^^^^^^
  File "/builddir/build/BUILDROOT/python-multiprocess-0.70.16-2.fc41.x86_64/usr/lib/python3.13/site-packages/multiprocess/popen_spawn_posix.py", line 32, in __init__
    super().__init__(process_obj)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/builddir/build/BUILDROOT/python-multiprocess-0.70.16-2.fc41.x86_64/usr/lib/python3.13/site-packages/multiprocess/popen_fork.py", line 19, in __init__
    self._launch(process_obj)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/builddir/build/BUILDROOT/python-multiprocess-0.70.16-2.fc41.x86_64/usr/lib/python3.13/site-packages/multiprocess/popen_spawn_posix.py", line 47, in _launch
    reduction.dump(process_obj, fp)
    ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILDROOT/python-multiprocess-0.70.16-2.fc41.x86_64/usr/lib/python3.13/site-packages/multiprocess/reduction.py", line 63, in dump
    ForkingPickler(file, protocol, *args, **kwds).dump(obj)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 420, in dump
    StockPickler.dump(self, obj)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 483, in dump
    self.save(obj)
    ~~~~~~~~~^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 414, in save
    StockPickler.save(self, obj, save_persistent_id)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 599, in save
    self.save_reduce(obj=obj, *rv)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 713, in save_reduce
    save(state)
    ~~~~^^^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 414, in save
    StockPickler.save(self, obj, save_persistent_id)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 556, in save
    f(self, obj)  # Call unbound method with explicit self
    ~^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 1217, in save_module_dict
    StockPickler.save_dict(pickler, obj)
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 968, in save_dict
    self._batch_setitems(obj.items())
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 992, in _batch_setitems
    save(v)
    ~~~~^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 414, in save
    StockPickler.save(self, obj, save_persistent_id)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 556, in save
    f(self, obj)  # Call unbound method with explicit self
    ~^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 1473, in save_instancemethod0
    pickler.save_reduce(MethodType, (obj.__func__, obj.__self__), obj=obj)
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 688, in save_reduce
    save(args)
    ~~~~^^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 414, in save
    StockPickler.save(self, obj, save_persistent_id)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 556, in save
    f(self, obj)  # Call unbound method with explicit self
    ~^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 883, in save_tuple
    save(element)
    ~~~~^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 414, in save
    StockPickler.save(self, obj, save_persistent_id)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 556, in save
    f(self, obj)  # Call unbound method with explicit self
    ~^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 1832, in save_type
    _save_with_postproc(pickler, (_create_type, (
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
        type(obj), obj.__name__, obj.__bases__, _dict
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )), obj=obj, postproc_list=postproc_list)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 1098, in _save_with_postproc
    pickler.save_reduce(*reduction, obj=obj)
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 688, in save_reduce
    save(args)
    ~~~~^^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 414, in save
    StockPickler.save(self, obj, save_persistent_id)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 556, in save
    f(self, obj)  # Call unbound method with explicit self
    ~^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 898, in save_tuple
    save(element)
    ~~~~^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 414, in save
    StockPickler.save(self, obj, save_persistent_id)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 556, in save
    f(self, obj)  # Call unbound method with explicit self
    ~^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 1217, in save_module_dict
    StockPickler.save_dict(pickler, obj)
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 968, in save_dict
    self._batch_setitems(obj.items())
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 992, in _batch_setitems
    save(v)
    ~~~~^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 414, in save
    StockPickler.save(self, obj, save_persistent_id)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 556, in save
    f(self, obj)  # Call unbound method with explicit self
    ~^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 883, in save_tuple
    save(element)
    ~~~~^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 414, in save
    StockPickler.save(self, obj, save_persistent_id)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 599, in save
    self.save_reduce(obj=obj, *rv)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 688, in save_reduce
    save(args)
    ~~~~^^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 414, in save
    StockPickler.save(self, obj, save_persistent_id)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 556, in save
    f(self, obj)  # Call unbound method with explicit self
    ~^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 883, in save_tuple
    save(element)
    ~~~~^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 414, in save
    StockPickler.save(self, obj, save_persistent_id)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 556, in save
    f(self, obj)  # Call unbound method with explicit self
    ~^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 928, in save_list
    self._batch_appends(obj)
    ~~~~~~~~~~~~~~~~~~~^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 955, in _batch_appends
    save(tmp[0])
    ~~~~^^^^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 414, in save
    StockPickler.save(self, obj, save_persistent_id)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 599, in save
    self.save_reduce(obj=obj, *rv)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 713, in save_reduce
    save(state)
    ~~~~^^^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 414, in save
    StockPickler.save(self, obj, save_persistent_id)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 556, in save
    f(self, obj)  # Call unbound method with explicit self
    ~^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 1217, in save_module_dict
    StockPickler.save_dict(pickler, obj)
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 968, in save_dict
    self._batch_setitems(obj.items())
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 992, in _batch_setitems
    save(v)
    ~~~~^^^
  File "/usr/lib/python3.13/site-packages/dill/_dill.py", line 414, in save
    StockPickler.save(self, obj, save_persistent_id)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/pickle.py", line 574, in save
    rv = reduce(self.proto)
         ~~~~~~^^^^^^^^^^^^
TypeError: cannot pickle '_thread._ThreadHandle' object

Comment 4 Ben Beasley 2024-04-23 22:59:14 UTC
Upstream issue: https://github.com/uqfoundation/dill/issues/654

Comment 5 Miro Hrončok 2024-06-03 12:22:35 UTC
This blocks at least:

mpi4py -> python-pytest-mpi -> h5py

$ repoquery -q --repo=rawhide{,-source} --whatrequires python3-dill --whatrequires python3-mpi4py-mpich --whatrequires python3-mpi4py-openmpi --whatrequires python3-pytest-mpi --whatrequires python3-h5py --whatrequires python3-h5py-mpich --whatrequires python3-h5py-openmpi
MUSIC-0:1.2.1-5.fc40.src
PyMca-0:5.9.2-3.fc40.src
PyMca-0:5.9.2-3.fc40.x86_64
arbor-0:0.9.0-7.fc41.src
arbor-mpich-0:0.9.0-7.fc41.x86_64
arbor-openmpi-0:0.9.0-7.fc41.x86_64
diffoscope-0:264-1.fc41.src
espresso-0:4.2.2-1.fc41.src
h5py-0:3.11.0-1.fc41.src
libsonata-0:0.1.23-6.fc40.src
morphio-0:3.3.9-2.fc41.src
mpi4py-0:3.1.6-1.fc41.src
netgen-mesher-0:6.2.2403-2.fc41.src
neuron-0:8.2.2-9.fc40.src
neuron-mpich-0:8.2.2-9.fc40.x86_64
neuron-openmpi-0:8.2.2-9.fc40.x86_64
paraview-0:5.12.0-3.fc41.src
paraview-mpich-0:5.12.0-3.fc41.x86_64
paraview-openmpi-0:5.12.0-3.fc41.x86_64
pylint-0:3.2.2-1.fc41.src
python-astropy-0:5.3.2-9.fc41.src
python-bioread-0:3.0.1-4.fc40.src
python-dask-0:2024.2.1-3.fc41~bootstrap.src
python-dijitso-0:2019.1.0-18.fc40.src
python-dipy-0:1.9.0-6.fc41.src
python-emcee-0:3.1.6-2.fc41.src
python-exdir-0:0.5.0.1-4.fc41.src
python-fslpy-0:3.19.0-1.fc41.src
python-h5io-0:0.2.2-1.fc41.src
python-h5netcdf-0:1.2.0-3.fc40.src
python-hdf5storage-0:0.1.18-12.fc40.src
python-hdmf-0:3.14.0-2.fc41.src
python-klusta-0:3.0.16-27.fc41.src
python-lazy-ops-0:0.2.0-13.fc40.src
python-lfpy-0:2.3-5.fc40.src
python-mne-0:1.6.1-6.fc41.src
python-multiprocess-0:0.70.16-2.fc41.src
python-netpyne-0:1.0.6-4.fc41.src
python-nibabel-0:5.2.1-3.fc41.src
python-nixio-0:1.5.3-10.fc40.src
python-opytimizer-0:3.1.2-6.fc40.src
python-pathos-0:0.3.2-2.fc41.src
python-probeinterface-0:0.2.21-1.fc40.src
python-pymapvbvd-0:0.5.7-3.fc41.src
python-pymatreader-0:0.0.32-5.fc40.src
python-pynn-0:0.12.3-2.fc41.src
python-pynwb-0:2.5.0-5.fc40.src
python-pyqtgraph-0:0.13.7-1.fc41.src
python-pyscf-0:2.5.0-1.fc41.src
python-pytest-mpi-0:0.6-8.fc40.src
python-simframe-0:1.0.4-4.fc40.src
python-spyking-circus-0:1.1.0-11.fc40.src
python-zarr-0:2.16.1-1.fc40.src
python3-MUSIC-mpich-0:1.2.1-5.fc40.x86_64
python3-MUSIC-openmpi-0:1.2.1-5.fc40.x86_64
python3-bioread+all-0:3.0.1-4.fc40.noarch
python3-bioread+hdf5-0:3.0.1-4.fc40.noarch
python3-dijitso-0:2019.1.0-18.fc40.noarch
python3-dill+readline-0:0.3.8-1.fc40.noarch
python3-dipy-0:1.9.0-6.fc41.x86_64
python3-espresso-mpich-0:4.2.2-1.fc41.x86_64
python3-espresso-openmpi-0:4.2.2-1.fc41.x86_64
python3-fslpy-0:3.19.0-1.fc41.noarch
python3-h5io-0:0.2.2-1.fc41.noarch
python3-h5netcdf-0:1.2.0-3.fc40.noarch
python3-h5py-mpich-0:3.11.0-1.fc41.x86_64
python3-h5py-openmpi-0:3.11.0-1.fc41.x86_64
python3-hdf5storage-0:0.1.18-12.fc40.noarch
python3-hdmf-0:3.14.0-2.fc41.noarch
python3-klusta-0:3.0.16-27.fc41.noarch
python3-lazy-ops-0:0.2.0-13.fc40.noarch
python3-lfpy-0:2.3-5.fc40.x86_64
python3-multiprocess-0:0.70.16-2.fc41.noarch
python3-nixio-0:1.5.3-10.fc40.noarch
python3-opytimizer-0:3.1.2-6.fc40.noarch
python3-pathos-0:0.3.2-2.fc41.noarch
python3-pylint-0:3.2.2-1.fc41.noarch
python3-pymapvbvd-0:0.5.7-3.fc41.noarch
python3-pymatreader-0:0.0.32-5.fc40.x86_64
python3-pynwb-0:2.5.0-5.fc40.noarch
python3-pyscf-0:2.5.0-1.fc41.x86_64
python3-simframe-0:1.0.4-4.fc40.noarch
python3-spyking-circus-0:1.1.0-11.fc40.noarch
python3-tvb-data-0:1.5.9-15.fc40.noarch
veusz-0:3.6.2-4.fc40.src
votca-0:2024-2.fc40.src

Comment 6 Miro Hrončok 2024-06-03 12:40:29 UTC
The dependency in mpi4py was unused, I opened https://src.fedoraproject.org/rpms/mpi4py/pull-request/2

Comment 7 Ben Beasley 2024-06-05 00:51:57 UTC
The current failure on Python 3.13.0b1 looks like this:

$ gh repo clone uqfoundation/dill
$ cd dill
$ python3.13 -V
Python 3.13.0b1
$ tox -e py313
.pkg: _optional_hooks> python /usr/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta
.pkg: get_requires_for_build_sdist> python /usr/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta
.pkg: get_requires_for_build_wheel> python /usr/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta
.pkg: prepare_metadata_for_build_wheel> python /usr/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta
.pkg: build_sdist> python /usr/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta
py313: install_package> python -I -m pip install --force-reinstall --no-deps /home/ben/src/forks/dill/.tox/.tmp/package/2/dill-0.3.9.dev0.tar.gz
py313: commands[0]> .tox/py313/bin/python -m pip install .
Processing /home/ben/src/forks/dill
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: dill
  Building wheel for dill (pyproject.toml) ... done
  Created wheel for dill: filename=dill-0.3.9.dev0-py3-none-any.whl size=116162 sha256=86a3739b5a701f9aefd7840a31f695eefa0e8408a55028bfe497423a5d87d061
  Stored in directory: /tmp/pip-ephem-wheel-cache-sukup0uc/wheels/4b/69/4e/74fd16e96eb0e05af8c484f673696525e999353b5fec3ad50d
Successfully built dill
Installing collected packages: dill
  Attempting uninstall: dill
    Found existing installation: dill 0.3.9.dev0
    Uninstalling dill-0.3.9.dev0:
      Successfully uninstalled dill-0.3.9.dev0
Successfully installed dill-0.3.9.dev0
py313: commands[1]> .tox/py313/bin/python dill/tests/__main__.py
.<function <lambda> at 0x7fecfbe8be20>
<function <lambda> at 0x7f937fe8be20>
<function <lambda> at 0x7fed0408be20>
<function <lambda> at 0x7fbd8328be20>
<function <lambda> at 0x7f2a7ea8be20>
Traceback (most recent call last):
  File "/home/ben/src/forks/dill/dill/tests/test_detect.py", line 154, in <module>
    test_bad_things()
    ~~~~~~~~~~~~~~~^^
  File "/home/ben/src/forks/dill/dill/tests/test_detect.py", line 32, in test_bad_things
    assert len(s) is len(a) # TypeError (and possibly PicklingError)
           ^^^^^^^^^^^^^^^^
AssertionError
...F.......................
py313: exit 1 (1.79 seconds) /home/ben/src/forks/dill> .tox/py313/bin/python dill/tests/__main__.py pid=182079
  py313: FAIL code 1 (6.48=setup[2.72]+cmd[1.97,1.79] seconds)
  evaluation failed :( (6.53 seconds)

s is:

{('TypeError', "cannot pickle 'frame' object"), ('TypeError', "cannot pickle 'FrameLocalsProxy' object")}

and a is:

{'TypeError': "cannot pickle 'FrameLocalsProxy' object"}

which appears related in some way to PEP 667.

I have commented in the upstream issue: https://github.com/uqfoundation/dill/issues/654#issuecomment-2148637243

Comment 8 Karolina Surma 2024-06-12 15:00:17 UTC
*** Bug 2291671 has been marked as a duplicate of this bug. ***

Comment 9 Sergio Pascual 2024-06-16 09:23:40 UTC
I have built a version of dill without the tests, with the hope that at least some of the F41FailsToInstall can be fixed. The tests are inside a bcond



https://koji.fedoraproject.org/koji/buildinfo?buildID=2471158

Comment 10 Fedora Fails To Install 2024-06-16 15:45:25 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 41.

Thanks for taking care of it!

Comment 11 Miro Hrončok 2024-06-16 19:06:57 UTC
(In reply to Sergio Pascual from comment #9)
> I have built a version of dill without the tests, with the hope that at
> least some of the F41FailsToInstall can be fixed. The tests are inside a
> bcond

I've removed the FailsToInstall tracker to avoid autoclosure. This package is likely still broken, see bz2246347.

Comment 12 Sergio Pascual 2024-06-16 19:09:08 UTC
(In reply to Miro Hrončok from comment #11)
> (In reply to Sergio Pascual from comment #9)
> > I have built a version of dill without the tests, with the hope that at
> > least some of the F41FailsToInstall can be fixed. The tests are inside a
> > bcond
> 
> I've removed the FailsToInstall tracker to avoid autoclosure. This package
> is likely still broken, see bz2246347.

Yes, I was trying to write preciselly that, but I have collisioned with you!

Comment 13 Ben Beasley 2024-09-05 15:28:55 UTC
Analysis of dependent packages:

==== pylint ====

OK. Tests relating to dill are not extremely thorough. Parallel mode works, e.g. "pylint -j0 /usr/lib/python3.13/site-packages/setuptools" in a Rawhide chroot, so I think pylint is not using the broken parts, i.e., pickling thread handles.

==== python-fslpy ====

OK. Use of dill is confined to fsl/utils/run.py and fsl/utils/fslsub.py. It’s pretty straightforward usage, and I think python-fslpy is also managing to avoid needing to pickle a thread handle.

==== python-multiprocess ====

FTBFS, bug 2246347. Many tests fail or error with TypeError: cannot pickle '_thread._ThreadHandle' object.

==== python-netpyne ====

Used only in netpyne/batch/sbi_parallel.py. Seems to be OK since it’s not pickling thread handles.

==== python-opytimizer ====

Used for persisting models to file storage. Seems to be avoiding pickling thread handles, too.

==== python-pathos ====

FTBFS, bug 2301194, bug 2291833. Needs python-multiprocess working (and might have issues with its direct use of dill too – who knows?)

==== python-simframe ====

OK – either it is not persisting thread handles, or the test don’t reveal it.

------------------------------------------------------------

So the problem cases among directly-dependent packages are python-multiprocess and python-pathos. Here is the graph of dependent packages I found for those.

python-multiprocess ----------------> python-SALib
                |||\-> python-pathos -^
                 \\\-> python-cro
                  \\-> python-jenkins -> python-jenkins-job-builder
                   \-> python-sklearn-genetic

Comment 15 Fedora Update System 2024-09-20 20:02:14 UTC
FEDORA-2024-8b3e88405f (python-dill-0.3.9~~20240914.8b86f509-1.fc42) has been submitted as an update to Fedora 42.
https://bodhi.fedoraproject.org/updates/FEDORA-2024-8b3e88405f

Comment 16 Fedora Update System 2024-09-20 20:14:49 UTC
FEDORA-2024-8b3e88405f (python-dill-0.3.9~~20240914.8b86f509-1.fc42) has been pushed to the Fedora 42 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 17 Fedora Update System 2024-09-21 09:54:58 UTC
FEDORA-2024-725de708a9 (python-cro-0.0.5.2-7.fc41, python-dill-0.3.9~~20240914.8b86f509-1.fc41, and 2 more) has been submitted as an update to Fedora 41.
https://bodhi.fedoraproject.org/updates/FEDORA-2024-725de708a9

Comment 18 Fedora Update System 2024-09-22 02:11:48 UTC
FEDORA-2024-725de708a9 has been pushed to the Fedora 41 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2024-725de708a9`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2024-725de708a9

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 19 Fedora Update System 2024-09-23 02:07:49 UTC
FEDORA-2024-725de708a9 has been pushed to the Fedora 41 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2024-725de708a9`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2024-725de708a9

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 20 Fedora Update System 2024-10-01 01:14:56 UTC
FEDORA-2024-725de708a9 (python-cro-0.0.5.2-7.fc41, python-dill-0.3.9~~20240914.8b86f509-1.fc41, and 5 more) has been pushed to the Fedora 41 stable repository.
If problem still persists, please make note of it in this bug report.


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