Advent of Python 3.13
by Karolina Surma
Hello fellow Fedorans,
As many of you know, there's an ongoing yearly effort of integrating a
new Python version to Fedora taking place in Copr[0]. This time we aim
to rebuild over 4000 packages and we couldn't possibly do it without you.
There have already been over 300 of bugzillas[1] created for packages
that fail to build with Python 3.13.0 alphas - and, I need to add,
almost 90 of them already fixed.
I'd love to thank everyone who jumped at the early bugzillas and helped
drive the progress of the rebuild. We're grateful and appreciate your
time and effort.
As there's the end of the year coming, various advents of... start to
appear. I'd like to propose (only half-jokingly) another one: Advent of
Python 3.13.
How would that work?
We publish the status of rebuild online:
https://befeleme.github.io/fedora-python-rebuild-status/
Look at a package you're familiar with and has got a red or orange dot
🔴/🟠 - meaning it fails to build.
On the Build failures page[2] you can find links to the package in the
rebuild Copr and if there's associated bugzilla blocking the main
PYTHON3.13 tracker, the link to the ticket.
What can you do?
- Fix the package (preferably upstream first)
- Let upstream know about the issue
- If you know the issue comes from Rawhide and is unrelated to Python
3.13, find (or create) a F40FTBFS ticket and set it to block PYTHON3.13
tracker too.
- If you've got no clue, ping me (ksurma) or mhroncok in the Matrix
channel[3], we'll be happy to cooperate in digging into the issue
- If a package is gray ⚪, it means we don't have all its dependencies
built yet, so we haven't tried to build it. Feel free to ignore it, but
any help with unblocking the dependencies will be welcome.
Cheers,
Karolina
For curious minds - what's currently blocking the rebuild?
The 50 most commonly needed components are:
135 python-contourpy
133 python-matplotlib
100 python-multidict
98 python-yarl
91 python-azure-common
85 python-aiohttp
85 python-greenlet
82 python-pandas
73 python-parso
72 python-msrest
72 python-zmq
70 python-jedi
69 python-asttokens
64 python-qt5
64 python-stack-data
63 ipython
61 python-jsonpointer
61 python-pyperclip
61 python-jupyter-core
57 python-jeepney
57 python-jupyter-client
56 python-SecretStorage
56 python-cliff
54 python-keyring
52 python-markdown-it-py
52 python-sqlalchemy
51 python-netaddr
51 python-stestr
48 python-anyio
47 python-django
45 python-mccabe
45 python-ipykernel
44 python-twisted
43 python-nbformat
41 python-oslotest
39 h5py
39 python-arrow
39 python-oslo-utils
38 python-nbclient
36 python-nbconvert
32 python-jsonpatch
32 python-oslo-config
32 python-flake8
31 python-keystoneauth1
30 python-numpydoc
29 python-rich
29 python-oslo-serialization
28 python-prometheus_client
28 python-vcrpy
27 python-isoduration
The 20 most commonly last-blocking components are (= if they're built,
this amount of packages will be unblocked):
26 python-azure-common
24 python-qt5
19 python-twisted
19 python-django
16 audit
12 future
12 h5py
10 python-pandas
8 python-cython0.29
7 glade
7 python-pydantic-core
7 python-numpydoc
7 python-furo
6 mercurial
6 python-flexmock
6 python-greenlet
5 gdb
5 python-pycurl
5 python-oslotest
5 python-anyio
The 20 most commonly last-blocking small combinations of components are:
38 python-azure-common, python-msrest
29 python-contourpy, python-matplotlib
24 python-aiohttp, python-multidict, python-yarl
11 python-flake8, python-mccabe
11 python-greenlet, python-sqlalchemy
7 poetry, python-CacheControl, python-SecretStorage,
python-installer, python-jeepney, python-keyring, python-rapidfuzz
7 pylint, python-astroid, python-mccabe
7 python-azure-common, python-msrest, python-msrestazure
7 ipython, python-asttokens, python-ipykernel, python-jedi,
python-jupyter-client, python-jupyter-core, python-parso,
python-stack-data, python-zmq
6 python-multidict, python-vcrpy, python-yarl
6 python-cliff, python-pyperclip, python-stestr
6 python-gevent, python-greenlet
5 python-markdown-it-py, python-rich
5 ipython, python-asttokens, python-jedi, python-parso,
python-stack-data
5 fedora-messaging, python-crochet, python-pika,
python-service-identity, python-twisted
4 gnuradio, python-pyopengl, python-pyqtgraph, python-qt5
3 python-markdown-it-py, python-mdit-py-plugins, python-myst-parser
3 python-aiohttp, python-multidict, python-pytest-aiohttp, python-yarl
3 python-contourpy, python-matplotlib, python-pytest-mpl
3 python-cliff, python-oslotest, python-pyperclip, python-stestr
[0] https://copr.fedorainfracloud.org/coprs/g/python/python3.13/
[1]
https://bugzilla.redhat.com/buglist.cgi?cmdtype=runnamed&list_id=13377511...
[2] https://befeleme.github.io/fedora-python-rebuild-status/failures/
[3] https://chat.fedoraproject.org/#/room/#python:fedoraproject.org
4 months, 4 weeks
Re: Rust bindings for Python (pyo3 versions <0.19, cpython) broken
with Python 3.12
by Fabio Valentini
On Fri, Nov 17, 2023 at 1:34 AM Kevin Fenzi <kevin(a)scrye.com> wrote:
>
> On Mon, Nov 13, 2023 at 07:25:10PM +0100, Fabio Valentini wrote:
> >
> > Yup, I've mentioned that in the bug I filed for python-bcrypt -
> > It might be as simple as bumping the dependency on pyo3 from v0.15 to v0.19.
>
> I've made an attempt here:
> https://src.fedoraproject.org/rpms/python-bcrypt/pull-request/9
All dependent packages have now moved off of pyo3 v0.15 to at least
pyo3 v0.19.2+ or the latest v0.20, both of which should be fine with
Python 3.12.
Thank you all for your help! I will retire the packages for pyo3 v0.15
from rawhide now.
Fabio
4 months, 4 weeks
Rust bindings for Python (pyo3 versions <0.19, cpython) broken with
Python 3.12
by Fabio Valentini
Hello Pythonistas and Rustaceans,
TL;DR: Only PyO3 v0.19.2 (and later) will ever properly support Python
3.12. Port your Python projects to v0.19 **NOW**.
Older versions of PyO3 (especially pyo3 v0.15, v0.16, v0.17, and
v0.18) are *not* compatible with Python 3.12 due to some ABI changes
in unicode strings and behavioural changes wrt/ "immortal" objects.
This also affects all current versions of the "cpython" Rust bindings,
with no timeline for Python 3.12 support.
As far as I can tell, extensions that use pyo3 < v0.19 or the
"cpython" bindings can (and likely will) not work as expected on
Python 3.12 if they use the affected APIs (either by producing garbage
data in strings that are passed over the FFI boundary, or by
crashing).
There are applications in Fedora that still rely on *ancient* versions
of PyO3, potentially affected by this:
- cpython: mercurial
- pyo3 v0.15: fapolicy-analyzer, python-bcrypt, python-cryptography
- pyo3 v0.16: python-y-py
- pyo3 v0.17: unused compat packages, will be retired
- pyo3 v0.18: matrix-synapse
I *stongly* recommend to move all of these packages to pyo3 v0.19 in
Rawhide as soon as possible. I will try to submit pull requests with
the required changes for affected packages (except mercurial, since
there's no version of the "cpython" crate that supports Python 3.12 in
sight).
There's already a few packages that depend on pyo3 v0.19, which I will
rebuild in rawhide for pyo3 v0.19.2, which has much better support for
Python 3.12 than v0.19.0 and v0.19.1 (breezy, python-rpds-py, orjson)
unless there are any objections.
As soon as no packages depend on the compat packages for old versions
of pyo3 any longer, I will retire them from Rawhide (and F39,
depending on the timing), since they will never work with Python 3.12
and nothing should use them.
I've added <package>-maintainers(a)fedoraproject.org for all these
packages to the CC of this message.
Fabio
Rust SIG / PyO3 maintainer in Fedora
5 months, 2 weeks