Packages that failed to build with Python 3.10 (and what to do)
by Tomas Hrnciar
Hello.
As you might already know, we have recently merged in the Python 3.10 side
tag to Rawhide, despite several builds not succeeding. We always aim for
some compromise between having the side tag open for too long and having
too many failures.
https://fedoraproject.org/wiki/Changes/Python3.10
The packages, when not rebuilt, are not installable in rawhide, hence
fixing them should be our top priority. If you need help with Python-related
issues, we (the Python Maintenance team at Red Hat) are happy to help.
Unfortunately, several packages fail to build for Python-unrelated reasons.
Most of the packages only fail to build because their dependencies were not
yet rebuilt. Chances are, you already got an automated
F35FailsToInstall bugzilla
from Miro, that your package fails to install. It would be really helpful
if you could find the missing dependency and mark the bugzilla for your
package depending on the bugzilla for the missing dep. We slowly progress
to do that as well, but your help is crucial here.
If your package fails because there is a non-dependency problem, you might have
already received a bugzilla from us in the past. If the build failure is
related to changes in Python 3.10, it should contain some hints about the
problem.
# What to do?
General advice: If you are aware of the problem and working towards fixing
it, set your bugzilla to ASSIGNED to avoid further automated reminders.
If blocked by dependencies, do not close the bugzillas as NOTABUG or
DUPLICATE just because it is "not a problem in your package". The
automation will file new ones anyway.
## My package fails to build because it has test failures in %check
Please, try to resolve the failures. If you are confident that the package
works fine, but the tests are wrong, skip some failing tests, ideally with
a link to an upstream issue. Do not disable (e.g. comment out) all tests
just to unblock the rebuild of your package, it usually only hides the
problem.
## My package fails to build because it has broken build dependencies
Please try to track the missing build dependencies in Bugzilla. If
possible, help the maintainers of your dependencies to get them rebuilt.
When in need of escalation, ask us for provenpackager help (ideally with
pull requests to be merged). Once possible, rebuild your package (no need
to bump the release, we already did that). When you do, the bugzilla will
eventually get automatically closed, but you can do that manually as well.
## My package was rebuilt with Python 3.10 but it has broken runtime
dependencies
Please try to track the missing runtime dependencies in Bugzilla. If
possible, help the maintainers of your dependencies to get them rebuilt.
When in need of escalation, ask us for provenpackager help (ideally with
pull requests to be merged). When the dependencies are rebuilt, your
package will install successfully once again and the bugzilla will
eventually get automatically closed, but you can do that manually as well.
## My package failed to build but installs just fine
Some packages that only require libpython3.9.so.1.0 will successfully pull
in the python3.9 package as a dependency and hence they don't have
installation issues. They need to be rebuilt with Python 3.10 anyway, we
don't want Fedora users to pull in two Python versions unless they need
them for development purposes.
## How to run things locally?
You can use mock. Make sure to:
1. Clear all caches first: $ mock -r fedora-rawhide-x86_64--scrub=all
2. Use the Koji repo: $ mock -r fedora-rawhide-x86_64 --enablerepo=local
...
## Where to get help
Reply to this thread or find us (thrnciar, mhroncok) on #fedora-python IRC
channel (libera.chat).
---
Let us know if you have other questions.
Maintainers by package:
5minute pmoravco
APLpy sergiopr skytux
MUSIC ankursinha
Mayavi chedi orion
NLopt besser82
OpenIPMI branto jridky lupinix pknirsch
ProDy sagitter
PyMca zbyszek
androguard fab
ansible-review dcallagh ttrinks
antlr4-project jjames
astrometry lupinix
autoarchive fab
blender design-sw hobbes1069 ignatenkobrain kwizart luya roma
s4504kr slaanesh
bugzilla2fedmsg abompard
buildbot besser82 giallu ignatenkobrain ngompa radez smilner
buildstream atim bochecha
calibre chkr heliocastro kevin nushio zbyszek
certbot nb
clufter jpokorny mlisik omular tojeline
collectd fab kevin mhlavink ruben xaeth
condor bbockelm bcotton eerlands matt matyas stevetraylen
tstclair ttheisen valtri
copr-backend clime dturecek frostyx msuchy praiskup
copr-dist-git clime dturecek frostyx msuchy praiskup
datagrepper ralph
diffoscope halfie zbyszek
distgen bkabrda hhorak phracek pkubat
dnfdaemon besser82 ngompa
dnfdragora besser82 ngompa
dolfin limb zbyszek
espresso deji jngrad junghans
fbthrift dcavalca filbranden salimma
folly dcavalca filbranden salimma
fontdump pnemade
freecad hobbes1069 jkastner zultron
ginga lupinix
gnome-gmail llaumgui
gnumeric aarem belegdol huzaifas
gr-air-modes jskarvad
h5py stevetraylen terjeros
imath hobbes1069 jridky
ipsilon ngompa puiterwijk simo
jpype raphgro
jrnl music
kdevelop-python dvratil jgrulich minh
kitty atim salimma
lasso jhrozek rcritten simo
ldns pemensik pwouters thozza
libguestfs mdbooth rjones
libkml smani
libpoly jjames
libprelude fab totol
libproxy amigadave cicku danw npmccallum
libpst carllibpst
libunity rdieter
liquidctl suve
lirc hobbes1069 jwilson leamas
luxcorerender besser82 kwizart luya slaanesh
m2crypto mitr ngompa
mailman3 abompard ngompa
matrix-synapse dcallagh
mingw-python3 smani
mirrormanager2 adrian
mlt martinkg sergiomb
mod_wsgi jdornak jkaluza jorton lmacken mrunge
module-build-service breilly mikem
moose zbyszek
mopidy girst
mopidy-mpd girst
nbdkit rjones
nyx jorti
openmeeg sagitter
openscap evgenyz isimluk jcerny matyc mmarhefk pvrabec vpolasek
wsato
opentrep denisarnaud
osbs-client bkabrda cverna maxamillion ttomecek twaugh vrutkovs
paraview deji orion sagitter
pcl rmattes thofmann
perl-Inline-Python jonkni
petsc sagitter
pew mcyprian tadej
postfix-mta-sts-resolver duck
prewikka totol
psi4 jussilehtola
py-radix kevin
py4j raphgro
pydeps lbazan
pygrib jdekloe
pykka fab
pymol sagitter sergiomb
pyp2rpm gordonmessmer kevin
pyproj jdekloe
python-EvoPreprocess iztokf
python-IPy kevin
python-MDAnalysis junghans
python-SALib ankursinha
python-TestSlide dcavalca filbranden salimma
python-aenum fab
python-agate jujens
python-agate-dbf jujens
python-agate-excel jujens
python-agate-sql jujens
python-aiodns fantom
python-aiosmtpd abompard
python-aiostream fab
python-aiozmq nonamedotc
python-animatplot qulogic
python-anyio carlwgeorge fab
python-aodhclient apevec pkilambi
python-apprise lead2gold
python-asteval fab
python-astroML lupinix
python-astropy orion sergiopr
python-astropy-healpix lupinix
python-astroquery lupinix
python-astroscrappy lupinix
python-asyncio-dgram fab
python-august fab
python-authheaders ngompa
python-authlib v02460
python-azure-sdk melmorabity mhayden
python-barbicanclient apevec chandankumar
python-basemap jspaleta limb
python-beniget churchyard
python-bidict fab
python-black cheimes churchyard
python-brian2 ankursinha
python-cartopy qulogic
python-ccdproc lupinix
python-cclib sagitter
python-certbot-apache nb
python-certbot-dns-cloudflare nb
python-certbot-dns-cloudxns nb
python-certbot-dns-digitalocean elyscape nb
python-certbot-dns-dnsimple nb
python-certbot-dns-dnsmadeeasy nb
python-certbot-dns-gehirn elyscape
python-certbot-dns-google elyscape nb
python-certbot-dns-linode elyscape
python-certbot-dns-luadns nb
python-certbot-dns-nsone nb
python-certbot-dns-ovh elyscape
python-certbot-dns-rfc2136 logic nb
python-certbot-dns-route53 elyscape nb
python-certbot-dns-sakuracloud elyscape
python-certbot-nginx nb
python-chaospy lbazan
python-cinderclient apevec eharney jruzicka
python-citeproc-py ignatenkobrain
python-compreffor athoscr
python-concurrentloghandler dcallagh
python-configargparse fab nb noodles
python-contextily qulogic
python-contextualbandits iztokf
python-cookiecutter chedi wakko666
python-cssutils kevin thias
python-csvkit jujens
python-cypari2 pcpa
python-cysignals pcpa
python-dask qulogic
python-databay fab
python-dbusmock ngompa
python-dcrpm dcavalca filbranden salimma
python-descartes qulogic
python-designateclient apevec vkmc
python-devtools fab
python-dipy ankursinha
python-diskcache fab
python-django-auth-ldap ignatenkobrain
python-django-post_office lbazan
python-dkimpy ngompa
python-docx kushal124
python-drgn dcavalca filbranden salimma
python-duecredit ankursinha
python-earthpy iztokf
python-elephant lbazan
python-elpy lbazan
python-emcee sergiopr
python-engineio nonamedotc
python-envisage orion
python-eventlet abbot ignatenkobrain kevin
python-eyed3 amigadave bpepple cicku pjp
python-f5-sdk xavierb
python-falcon abompard carlwgeorge
python-fastapi music
python-fastavro ankursinha
python-ffc zbyszek
python-fiat fab
python-flask-autoindex pcpa
python-flask-silk pcpa
python-flask-socketio nonamedotc
python-flask-whooshee clime mrmeee rkuska
python-fn codeblock orphan
python-fpylll pcpa
python-fsleyes-props ankursinha
python-fslpy ankursinha
python-fsspec qulogic
python-furl ignatenkobrain
python-gast churchyard
python-gatspy lupinix
python-gcsfs fab
python-geopandas qulogic
python-geoplot qulogic
python-glanceclient apevec jruzicka
python-gnocchiclient mrunge pkilambi
python-gradunwarp ignatenkobrain
python-grako brouhaha
python-gunicorn dcallagh ngompa
python-h5io ignatenkobrain
python-hdfs ankursinha
python-hdmf lbazan
python-healpy lupinix
python-heatclient apevec jruzicka ryansb zaneb
python-holidays orphan
python-hypothesmith dcavalca salimma
python-imbalanced-learn iztokf
python-insteon fab
python-interrogate iztokf
python-joblib besser82 ignatenkobrain sergiopr
python-jsonfield lbazan
python-jsons fab
python-jupymake jjames
python-jupyter-polymake jjames
python-keystoneauth1 alphacc apevec pabelanger
python-keystoneclient apevec jruzicka
python-klusta ankursinha
python-language-server nonamedotc
python-leather jujens
python-lfpy lbazan victortyau
python-libpysal qulogic
python-losant-rest fab
python-lz4 jgu orion
python-lzo huzaifas
python-magnumclient apevec chandankumar
python-manilaclient zaitcev
python-mapclassify qulogic
python-mapnik tomh
python-matrix-nio ankursinha
python-mechanize mohanboddu
python-minibelt uggla
python-missingno lbazan
python-mistralclient amoralej
python-mne ignatenkobrain
python-mne-bids lbazan
python-mnemonic jonny
python-molten akhaitov
python-msrest melmorabity
python-msrestazure melmorabity
python-mtg tc01
python-murano-pkg-check jpena
python-music21 zbyszek
python-nashpy iztokf
python-nb2plots jjames
python-netmiko divius
python-network-runner radez
python-networkx jjames plautrba
python-neurosynth lbazan
python-neutronclient apevec jruzicka
python-niaaml iztokf
python-niaclass iztokf
python-nibabel ignatenkobrain
python-nikola jamatos maxamillion
python-nilearn ankursinha
python-nipy ignatenkobrain
python-nitime ankursinha
python-nixio ankursinha
python-novaclient apevec jruzicka
python-novaclient-os-networks ctria rjmco
python-novaclient-os-virtual-interfaces ctria rjmco
python-numpoly lbazan
python-octaviaclient cgoncalves
python-odml major
python-oletools rebus robert
python-openstackclient apevec
python-openstacksdk apevec jpena
python-opentelemetry melmorabity
python-orderedmultidict ignatenkobrain
python-os-client-config amoralej apevec pabelanger
python-osc-lib amoralej apevec hguemar jpena jruzicka
python-oslo-concurrency apevec mrunge
python-oslo-db apevec gchamoul
python-oslo-log apevec hguemar
python-oslo-serialization apevec nsaje social
python-oslo-utils apevec
python-photutils sergiopr
python-pingouin ankursinha
python-pplpy jjames
python-praw fab fale
python-prawcore fab
python-productivity fab
python-pybids ankursinha
python-pycares fantom
python-pyeclib hguemar zaitcev
python-pymatreader ankursinha
python-pymoc lupinix
python-pynetdicom alciregi
python-pynwb lbazan
python-pyone siddharthvipul1
python-pypet ankursinha
python-pyphi ankursinha
python-pyqtgraph swt2c
python-pyriemann ankursinha
python-pysb zbyszek
python-pyscaffold ankursinha
python-pyscf jussilehtola
python-pyshtools qulogic
python-pyside2 hobbes1069
python-pystemd ngompa salimma
python-pytest-cases zbyszek
python-pytest-mpi orion
python-pytest-relaxed athmane
python-pytest-toolbox fab
python-pyunicorn iztokf
python-pyvlx fab
python-pyvo lupinix
python-qcelemental jussilehtola
python-qdarkstyle nonamedotc
python-reproject lupinix
python-rnc2rng ignatenkobrain
python-rply ignatenkobrain
python-rsd-lib amoralej
python-rx atim carlwgeorge limb
python-saharaclient apevec egafford jruzicka mimccune
python-schedule fab
python-shade larsks pabelanger
python-shortuuid pbrobinson
python-siosocks fab
python-sklearn-nature-inspired-algorithms ankursinha iztokf
python-slackclient limb
python-slixmpp-omemo fantom
python-smbprotocol fab
python-social-auth-core cqi
python-socketio nonamedotc
python-soco fab
python-sortedcollections fab
python-spnego fab
python-sport-activities-features iztokf
python-spyder-kernels nonamedotc
python-sqlalchemy-collectd mbayer mrunge
python-sshtunnel orphan
python-starlette music
python-stompest abompard
python-subprocess-tee chedi
python-sushy amoralej divius
python-svg-path kevin ralph
python-swiftclient apevec jruzicka zaitcev
python-sybil fab
python-tackerclient amoralej
python-taskflow apevec eharney
python-tenacity mrunge pkilambi snecker
python-test_server raphgro
python-testfixtures fab
python-texext jjames
python-theano ignatenkobrain jjames sergiopr
python-traitsui chedi ignatenkobrain orion
python-transitions orphan
python-trimesh ankursinha
python-troveclient jruzicka mrunge
python-twilio mich181189
python-typeguard dcavalca salimma snecker
python-uvicorn carlwgeorge
python-vitrageclient mrunge
python-watchgod carlwgeorge
python-wcmatch pnemade
python-webpy mrunge
python-wsproto carlwgeorge
python-xarray qulogic
python-xbout davidsch
python-yapf lbazan
python-yappi amoralej
python-zarr qulogic
python-zict qulogic
pythran churchyard
rmol denisarnaud
sagemath pcpa
spectrographic suve
sshuttle jgu kevin maci
sudo alakatos kzak mattdm rsroka zfridric
sugar-datastore dsd pbrobinson tomeu
sugar-paint callkalpa chimosky pbrobinson
swift-lang tachoknight
sympy cbm jjames jussilehtola orion
trademgen denisarnaud
usd luya music slaanesh
uwsgi orphan
veusz jsanders
virt-bootstrap fidencio rstoyanov
watchman dcavalca filbranden salimma
xonsh carmenbianca jdulaney
Packages by maintainer:
aarem gnumeric
abbot python-eventlet
abompard bugzilla2fedmsg mailman3 python-aiosmtpd python-falcon
python-stompest
adrian mirrormanager2
akhaitov python-molten
alakatos sudo
alciregi python-pynetdicom
alphacc python-keystoneauth1
amigadave libproxy python-eyed3
amoralej python-mistralclient python-os-client-config python-osc-lib
python-rsd-lib python-sushy python-tackerclient python-yappi
ankursinha MUSIC python-SALib python-brian2 python-dipy python-duecredit
python-fastavro python-fsleyes-props python-fslpy python-hdfs python-klusta
python-matrix-nio python-nilearn python-nitime python-nixio python-pingouin
python-pybids python-pymatreader python-pypet python-pyphi python-pyriemann
python-pyscaffold python-sklearn-nature-inspired-algorithms python-trimesh
apevec python-aodhclient python-barbicanclient python-cinderclient
python-designateclient python-glanceclient python-heatclient
python-keystoneauth1 python-keystoneclient python-magnumclient
python-neutronclient python-novaclient python-openstackclient
python-openstacksdk python-os-client-config python-osc-lib
python-oslo-concurrency python-oslo-db python-oslo-log
python-oslo-serialization python-oslo-utils python-saharaclient
python-swiftclient python-taskflow
athmane python-pytest-relaxed
athoscr python-compreffor
atim buildstream kitty python-rx
bbockelm condor
bcotton condor
belegdol gnumeric
besser82 NLopt buildbot dnfdaemon dnfdragora luxcorerender python-joblib
bkabrda distgen osbs-client
bochecha buildstream
bpepple python-eyed3
branto OpenIPMI
breilly module-build-service
brouhaha python-grako
callkalpa sugar-paint
carllibpst libpst
carlwgeorge python-anyio python-falcon python-rx python-uvicorn
python-watchgod python-wsproto
carmenbianca xonsh
cbm sympy
cgoncalves python-octaviaclient
chandankumar python-barbicanclient python-magnumclient
chedi Mayavi python-cookiecutter python-subprocess-tee python-traitsui
cheimes python-black
chimosky sugar-paint
chkr calibre
churchyard python-beniget python-black python-gast pythran
cicku libproxy python-eyed3
clime copr-backend copr-dist-git python-flask-whooshee
codeblock python-fn
cqi python-social-auth-core
ctria python-novaclient-os-networks
python-novaclient-os-virtual-interfaces
cverna osbs-client
danw libproxy
davidsch python-xbout
dcallagh ansible-review matrix-synapse python-concurrentloghandler
python-gunicorn
dcavalca fbthrift folly python-TestSlide python-dcrpm python-drgn
python-hypothesmith python-typeguard watchman
deji espresso paraview
denisarnaud opentrep rmol trademgen
design-sw blender
divius python-netmiko python-sushy
dsd sugar-datastore
dturecek copr-backend copr-dist-git
duck postfix-mta-sts-resolver
dvratil kdevelop-python
eerlands condor
egafford python-saharaclient
eharney python-cinderclient python-taskflow
elyscape python-certbot-dns-digitalocean python-certbot-dns-gehirn
python-certbot-dns-google python-certbot-dns-linode python-certbot-dns-ovh
python-certbot-dns-route53 python-certbot-dns-sakuracloud
evgenyz openscap
fab androguard autoarchive collectd libprelude pykka python-aenum
python-aiostream python-anyio python-asteval python-asyncio-dgram
python-august python-bidict python-configargparse python-databay
python-devtools python-diskcache python-fiat python-gcsfs python-insteon
python-jsons python-losant-rest python-praw python-prawcore
python-productivity python-pytest-toolbox python-pyvlx python-schedule
python-siosocks python-smbprotocol python-soco python-sortedcollections
python-spnego python-sybil python-testfixtures
fale python-praw
fantom python-aiodns python-pycares python-slixmpp-omemo
fidencio virt-bootstrap
filbranden fbthrift folly python-TestSlide python-dcrpm python-drgn watchman
frostyx copr-backend copr-dist-git
gchamoul python-oslo-db
giallu buildbot
girst mopidy mopidy-mpd
gordonmessmer pyp2rpm
halfie diffoscope
heliocastro calibre
hguemar python-osc-lib python-oslo-log python-pyeclib
hhorak distgen
hobbes1069 blender freecad imath lirc python-pyside2
huzaifas gnumeric python-lzo
ignatenkobrain blender buildbot python-citeproc-py python-django-auth-ldap
python-eventlet python-furl python-gradunwarp python-h5io python-joblib
python-mne python-nibabel python-nipy python-orderedmultidict
python-rnc2rng python-rply python-theano python-traitsui
isimluk openscap
iztokf python-EvoPreprocess python-contextualbandits python-earthpy
python-imbalanced-learn python-interrogate python-nashpy python-niaaml
python-niaclass python-pyunicorn python-sklearn-nature-inspired-algorithms
python-sport-activities-features
jamatos python-nikola
jcerny openscap
jdekloe pygrib pyproj
jdornak mod_wsgi
jdulaney xonsh
jgrulich kdevelop-python
jgu python-lz4 sshuttle
jhrozek lasso
jjames antlr4-project libpoly python-jupymake python-jupyter-polymake
python-nb2plots python-networkx python-pplpy python-texext python-theano
sympy
jkaluza mod_wsgi
jkastner freecad
jngrad espresso
jonkni perl-Inline-Python
jonny python-mnemonic
jorti nyx
jorton mod_wsgi
jpena python-murano-pkg-check python-openstacksdk python-osc-lib
jpokorny clufter
jridky OpenIPMI imath
jruzicka python-cinderclient python-glanceclient python-heatclient
python-keystoneclient python-neutronclient python-novaclient python-osc-lib
python-saharaclient python-swiftclient python-troveclient
jsanders veusz
jskarvad gr-air-modes
jspaleta python-basemap
jujens python-agate python-agate-dbf python-agate-excel
python-agate-sql python-csvkit python-leather
junghans espresso python-MDAnalysis
jussilehtola psi4 python-pyscf python-qcelemental sympy
jwilson lirc
kevin calibre collectd py-radix pyp2rpm python-IPy python-cssutils
python-eventlet python-svg-path sshuttle
kushal124 python-docx
kwizart blender luxcorerender
kzak sudo
larsks python-shade
lbazan pydeps python-chaospy python-django-post_office python-elephant
python-elpy python-hdmf python-jsonfield python-lfpy python-missingno
python-mne-bids python-neurosynth python-numpoly python-pynwb python-yapf
lead2gold python-apprise
leamas lirc
limb dolfin python-basemap python-rx python-slackclient
llaumgui gnome-gmail
lmacken mod_wsgi
logic python-certbot-dns-rfc2136
lupinix OpenIPMI astrometry ginga python-astroML python-astropy-healpix
python-astroquery python-astroscrappy python-ccdproc python-gatspy
python-healpy python-pymoc python-pyvo python-reproject
luya blender luxcorerender usd
maci sshuttle
major python-odml
martinkg mlt
matt condor
mattdm sudo
matyas condor
matyc openscap
maxamillion osbs-client python-nikola
mbayer python-sqlalchemy-collectd
mcyprian pew
mdbooth libguestfs
melmorabity python-azure-sdk python-msrest python-msrestazure
python-opentelemetry
mhayden python-azure-sdk
mhlavink collectd
mich181189 python-twilio
mikem module-build-service
mimccune python-saharaclient
minh kdevelop-python
mitr m2crypto
mlisik clufter
mmarhefk openscap
mohanboddu python-mechanize
mrmeee python-flask-whooshee
mrunge mod_wsgi python-gnocchiclient python-oslo-concurrency
python-sqlalchemy-collectd python-tenacity python-troveclient
python-vitrageclient python-webpy
msuchy copr-backend copr-dist-git
music jrnl python-fastapi python-starlette usd
nb certbot python-certbot-apache python-certbot-dns-cloudflare
python-certbot-dns-cloudxns python-certbot-dns-digitalocean
python-certbot-dns-dnsimple python-certbot-dns-dnsmadeeasy
python-certbot-dns-google python-certbot-dns-luadns
python-certbot-dns-nsone python-certbot-dns-rfc2136
python-certbot-dns-route53 python-certbot-nginx python-configargparse
ngompa buildbot dnfdaemon dnfdragora ipsilon m2crypto mailman3
python-authheaders python-dbusmock python-dkimpy python-gunicorn
python-pystemd
nonamedotc python-aiozmq python-engineio python-flask-socketio
python-language-server python-qdarkstyle python-socketio
python-spyder-kernels
noodles python-configargparse
npmccallum libproxy
nsaje python-oslo-serialization
nushio calibre
omular clufter
orion Mayavi paraview python-astropy python-envisage python-lz4
python-pytest-mpi python-traitsui sympy
orphan python-fn python-holidays python-sshtunnel python-transitions
uwsgi
pabelanger python-keystoneauth1 python-os-client-config python-shade
pbrobinson python-shortuuid sugar-datastore sugar-paint
pcpa python-cypari2 python-cysignals python-flask-autoindex
python-flask-silk python-fpylll sagemath
pemensik ldns
phracek distgen
pjp python-eyed3
pkilambi python-aodhclient python-gnocchiclient python-tenacity
pknirsch OpenIPMI
pkubat distgen
plautrba python-networkx
pmoravco 5minute
pnemade fontdump python-wcmatch
praiskup copr-backend copr-dist-git
puiterwijk ipsilon
pvrabec openscap
pwouters ldns
qulogic python-animatplot python-cartopy python-contextily python-dask
python-descartes python-fsspec python-geopandas python-geoplot
python-libpysal python-mapclassify python-pyshtools python-xarray
python-zarr python-zict
radez buildbot python-network-runner
ralph datagrepper python-svg-path
raphgro jpype py4j python-test_server
rcritten lasso
rdieter libunity
rebus python-oletools
rjmco python-novaclient-os-networks
python-novaclient-os-virtual-interfaces
rjones libguestfs nbdkit
rkuska python-flask-whooshee
rmattes pcl
robert python-oletools
roma blender
rsroka sudo
rstoyanov virt-bootstrap
ruben collectd
ryansb python-heatclient
s4504kr blender
sagitter ProDy openmeeg paraview petsc pymol python-cclib
salimma fbthrift folly kitty python-TestSlide python-dcrpm python-drgn
python-hypothesmith python-pystemd python-typeguard watchman
sergiomb mlt pymol
sergiopr APLpy python-astropy python-emcee python-joblib python-photutils
python-theano
siddharthvipul1 python-pyone
simo ipsilon lasso
skytux APLpy
slaanesh blender luxcorerender usd
smani libkml mingw-python3
smilner buildbot
snecker python-tenacity python-typeguard
social python-oslo-serialization
stevetraylen condor h5py
suve liquidctl spectrographic
swt2c python-pyqtgraph
tachoknight swift-lang
tadej pew
tc01 python-mtg
terjeros h5py
thias python-cssutils
thofmann pcl
thozza ldns
tojeline clufter
tomeu sugar-datastore
tomh python-mapnik
totol libprelude prewikka
tstclair condor
ttheisen condor
ttomecek osbs-client
ttrinks ansible-review
twaugh osbs-client
uggla python-minibelt
v02460 python-authlib
valtri condor
victortyau python-lfpy
vkmc python-designateclient
vpolasek openscap
vrutkovs osbs-client
wakko666 python-cookiecutter
wsato openscap
xaeth collectd
xavierb python-f5-sdk
zaitcev python-manilaclient python-pyeclib python-swiftclient
zaneb python-heatclient
zbyszek PyMca calibre diffoscope dolfin moose python-ffc python-music21
python-pysb python-pytest-cases
zfridric sudo
zultron freecad
2 years, 10 months
Draft of New Python Packaging Guidelines
by Petr Viktorin
Hello!
Below is a draft of new Packaging Guidelines! It's full of unfinished
areas (marked with XXX), but it's ready for scrutiny.
A possibly updated version is on
https://hackmd.io/XzJe-sHUQvWK7cSrEH_aKg?view
Generally, for rules marked **SHOULD** we know of cases where they
should be broken; for things marked **MUST** we don't.
We have tried to only take the Good Existing Things™ (macros, practices)
and revise the rest without thinking about the past much. Some used
technology is unfortunately not compatible with current EPELs, but we
have considered Fedora 31+. Using the current Python guidelines will
still be an option for people who target EPEL 6/7/8.
The main controversial idea (of many) is synchronizing Fedora's names
(a.k.a. `python3dist(...)`, a.k.a. `name` in `setup.py`) with the Python
Package Index (PyPI, pypi.org), which has by now become the de-facto
canonical namespace for freely redistributable Python packages.
We believe that this will help both Fedora and the greater Python
ecosystem, but there will definitely be some growing pains.
Most of Fedora Python packages already are on PyPI, but more than 250
are missing. There is software developed within Fedora (e.g. pagure,
fedpkg, rust2rpm); projects that aren't primarily Python packages (e.g.
perf, ceph, xen, setroubleshoot, iotop); and others.
A full list is attached. The names have been temporarily blocked on PyPI
to keep trolls from taking them while this is discussed.
Over at the Python Discourse we are discussing how to properly handle
these; once that discussion is settled they should be unblocked:
https://discuss.python.org/t/pypi-as-a-project-repository-vs-name-registr...
Another general idea is that package metadata should be kept upstream;
the spec file should duplicate as little of it as possible. Any
adjustments should be done with upstreamable patches.
The draft lives on hackmd.io, which we found easy to collaborate with.
If you have an account there, we can add you. If you'd like to
collaborate some other way, let us know.
Petr and Miro
-----------------------
Current draft for inline comments:
> [IMPORTANT]
> This is a DRAFT; it is not in effect yet.
# Python Packaging Guidelines (draft)
> [IMPORTANT]
> This is a *beta* version of the Python Packaging Guidelines and the
associated RPM macros.
> Packagers that opt in to following this version **MUST** be prepared
to change their packages frequently when the guidelines or macros are
updated.
> These packagers **SHOULD** join [Python SIG mailing
list](https://lists.fedoraproject.org/archives/list/python-devel@lists.fe...
and monitor/start conversations there.
These Guidelines represent a major rewrite and paradigm shift, and not
all packages are updated to reflect this.
Older guidelines are still being kept up to date, and existing packages
**MAY** use them instead of this document:
* 201x-era Python packaging guidelines (for packages that use e.g.
`%py3_install` or `setup.py install`)
* Python 2 appendix (for e.g. `%py2_install`) (requires FESCo exception)
> [NOTE]
> These guidelines only support Fedora 31+. For older releases (such as
in EPEL 8), consult the older guidelines (XXX link).
The two "Distro-wide guidelines" below apply to all software in Fedora
that uses Python at build- or run-time.
These rest of the Guidelines apply to packages that ship code that *can*
be imported in Python.
Specifically, that is all packages that install files under
`/usr/lib*/python*/`.
Except for the two "Distro-wide guidelines", these Guidelines do not
apply to simple one-file scripts or utilities, especially if these are
included with software not written in Python.
However, if an application (e.g. CLI tool, script or GUI app) needs a
more complex Python library, the library **SHOULD** be packaged as an
importable library under these guidelines.
A major goal for Python packaging in Fedora is to *harmonize with the
wider Python ecosystem*, that is, the [Python Packaging
Authority](https://pypa.io) (PyPA) standards and the [Python Package
Index](https://pypi.org) (PyPI).
Packagers **SHOULD** be prepared to get involved with upstream projects
to establish best practices as outlined here. We wish to improve both
Fedora and the wider Python ecosystem.
> [NOTE]
> Fedora's Python SIG not only develops these guidelines, but it's also
involved in PyPA standards and Python packaging best practices. Check
out [the wiki](https://fedoraproject.org/wiki/SIGs/Python) or [mailing
list](https://lists.fedoraproject.org/archives/list/python-devel@lists.fe...
if you need help or wish to help out.
## Distro-wide guidelines
### BuildRequire python3-devel
**Every** package that uses Python (at runtime and/or build time),
and/or installs Python modules **MUST** explicitly include
`BuildRequires: python3-devel` in its `.spec` file, even if Python is
not actually invoked during build time.
If the package uses an alternate Python interpreter instead of `python3`
(e.g. `pypy`, `jython`, `python27`), it **MAY** instead require the
coresponding `*-devel` package.
The `*-devel` package brings in relevant RPM macros. It may also enable
automated or manual checks: for example, Python maintainers use this
requirement to list packages that use Python in some way and might be
affected by planned changes.
### Mandatory macros
The following macros **MUST** be used where applicable.
The expansions in parentheses are provided only as reference/examples.
The macros are defined for you in all supported Fedora and EPEL versions.
* `%{python3}` (`/usr/bin/python3`)
The Python interpreter.
For example, this macro should be used for invoking Python from a
`spec` file script, passed to `configure` scripts to select a Python
executable, or used as `%{python3} -m pytest` to run a Python-based tool.
> XXX: Use shebang opts for shebang; document pathfix macro. Document
cases where you don't want this.
* `%{python3_version}` (e.g. `3.9`)
Version of the Python interpreter.
* `%{python3_version_nodots}` (e.g. `39`)
Version of the Python interpreter without the dot.
* `%{python3_sitelib}` (e.g. `/usr/lib/python3.9/site-packages`)
Where pure-Python modules are installed.
* `%{python3_sitearch}` (e.g. `/usr/lib64/python3.9/site-packages`)
Where Python3 extension modules (native code, e.g. compiled from C)
are installed.
The rest of this document uses these macros, along with `%{_bindir}`
(`/usr/bin/`), instead of the raw path names.
## Python implementation support
Fedora primarily targets *CPython*, the reference implementation of the
Python language. We generally use “Python” to mean CPython.
Alternate implementations like `pypy` are available, but currently lack
comprehensive tooling and guidelines. When targetting these, there are
no hard rules (except the general Fedora packaging guidelines). But
please try to abide by the *spirit* of these guidelines. When in doubt,
consider consulting the Python SIG.
## Python version support
Fedora packages **MUST NOT** depend on other versions of the CPython
interpreter than the current `python3`.
In Fedora, Python libraries are packaged for a single version of Python,
called `python3`. For example, in Fedora 32, `python3` is Python 3.8.
In the past, there were multiple Python stacks, e.g. `python3.7` and
`python2.7`, installable together on the same machine. That is also the
case in some projects that build *on top* of Fedora, like RHEL, EPEL and
CentOS. Fedora might re-introduce parallell-installable stacks in the
future (for example if a switch to a new Python version needs a
transition period, or if enough interested maintainers somehow appear).
> XXX dots in package names!
Fedora does include alternate interpreter versions, e.g. `python2.7` or
`python3.5`, but these are meant only for developers that need to test
upstream code. Bug and security fixes for these interpreters only cover
this use case.
Packages such as `pip` or `tox`, which enable setting up isolated
environments and installing third-party packages into them, **MAY**, as
an exception to the rule above, use these interpreters as long as this
is coordinated with the maintainers of the relevant Python interpreter.
## BuildRequire pyproject-rpm-macros
While these guidelines are in Beta, each Python package **MUST** have
`BuildRequires: pyproject-rpm-macros` to access the beta macros.
(When we go out of Beta, listing the dependency won't be necessary:
we'll make `python3-devel` require it.)
## Naming
Python packages have several different names, which should be kept in
sync but will sometimes differ for historical or practical reasons. They
are:
* the Fedora *source package name* (or *component name*, `%{name}`),
* the Fedora *built RPM name*,
* the *project name* used on *PyPI* or by *pip*, and
* the *importable module name* used in Python (a single package may have
multiple importable modules).
Some examples (both good and worse):
| Fedora component | Built RPM | Project name | Importable
module |
| ----------------- | ------------------ | -------------- |
-------------------- |
| `python-requests` | `python3-requests` | `requests` | `requests`
|
| `PyYAML` | `python3-pyyaml` | `pyyaml` | `yaml`
|
| `python-ldap` | `python3-ldap` | `python-ldap` | `ldap`,
`ldif`, etc. |
| `python-pillow` | `python3-pillow` | `pillow` | `PIL`
|
Elsewhere in this text, the metavariables `SRPMNAME`, `RPMNAME`,
`PROJECTNAME`, `MODNAME` refer to these names, respectively.
### Canonical project name
Most of these names are case-sensitive machine-friendly identifiers, but
the *project name* has human-friendly semantics: it is case-insensitive
and treats some sets of characters (like `._-`) specially.
For automated use, it needs to be
[normalized](https://www.python.org/dev/peps/pep-0503/#normalized-names)
to a canonical format used by Python tools and services such as
setuptools, pip and PyPI.
The `%{py_dist_name}` macro implements this normalization.
Elsewhere in this text, the metavariable `DISTNAME` refers to the
canonical form of the project name.
> XXX
> ```spec
> # XXX specfile
> %py_set_name Django
> -> %distname django
> -> %pojectname Django
> ```
>
> XXX rewrite: It is customary to define the macro `%{distname}` as the
canonical project name and use it throughout the `spec` file. Some
helper macros use `%{distname}` for this purpose by default.
>
> XXX in some places, the "original project name" must be used -- e.g.
`%pypi_source` and `%autosetup` need `Django`, not `django`.
> XXX The following sections should supersede the [Python section on
the Naming
guidelines](https://docs.fedoraproject.org/en-US/packaging-guidelines/Nam....
### Library naming
A built (i.e. non-SRPM) package for a *Python library* **MUST** be named
with the `python3-` prefix.
A source package containing primarily a *Python library* **MUST** be
named with the prefix `python-`.
The Fedora package's name **SHOULD** contain the *canonical project
name*. If possible, the project name **SHOULD** be the same as the name
of the main importable module, with underscores (`_`) replaced by dashes
(`-`).
A *Python library* is a package meant to be imported in Python, such as
with `import requests`.
Tools like *Ansible* or *IDLE*, whose code is importable but not
primarily meant to be imported, are not considered libraries in this
sense, so this section does not apply for them.
(See the [general Libraries and Applications
guidelines](https://docs.fedoraproject.org/en-US/packaging-guidelines/#_l...
for details.)
If the importable module name and the project name do not match, users
frequently end up confused. In this case, packagers *should* ensure that
upstream is aware of the problem and (especially for new packages where
renaming is feasible) strive to get the package renamed. The Python SIG
is available for assistance.
The Fedora package name should be formed by taking the *project name*
and prepending `python-` if it does not already start with `python-`.
This may leads to conflicts (e.g. between
[bugzilla](https://pypi.org/project/bugzilla/) and
[python-bugzilla](https://pypi.org/project/python-bugzilla/)). In that
case, ensure upstream is aware of the potentially confusing naming and
apply best judgment.
### Application naming
Packages that primarily provide executables **SHOULD** be named
according to the general Fedora guidelines (e.g. `ansible`).
Consider adding a virtual provide according to Library naming above
(e.g. `python3-PROJECTNAME`), if it would help users find the package.
## Files to include
### Source files and bytecode cache
Packages **MUST** include the source file (`*.py`) **AND** the bytecode
cache (`*.pyc`) for each pure-Python module.
The cache files are found in a `__pycache__` directory and have an
interpreter-dependent suffix like `.cpython-39.pyc`.
The cache is not necessary to run the software, but if it is not found,
Python will try to create it. If this succeeds, the file is not tracked
by RPM and it will linger on the system after uninstallation. If it does
not succeed, users can get spurious SELinux AVC denials in the logs.
Normally, byte compilation (generating the cache files) is done for you
by the `brp-python-bytecompile` script (XXX link to BRP guidelines),
which runs automatically after the `%install` section of the spec file
has been processed. It byte compiles any `.py` files that it finds in
`%{python3_sitelib}` or `%{python3_sitearch}`.
You must include these files of your package (i.e. in the `%files` section).
If the code is in a subdirectory (importable package), include the
entire directory:
```
%files
%{python3_sitelib}/foo/
```
Adding the trailing slash is best practice for directories.
However, this cannot be used for top-level scripts (those directly in
e.g. `%{python3_sitelib}`), because both `%{python3_sitelib}` and
`%{python3_sitelib}/__pycache__/` are owned by Python itself.
Here, the `%pycached` macro can help. It expands to the given `*.py`
source file and its corresponding cache file(s). For example:
```
%files
%pycached %{python3_sitelib}/foo.py
```
expands roughly to:
```
%files
%{python3_sitelib}/foo.py
%{python3_sitelib}/__pycache__/foo.cpython-3X{,.opt-?}.pyc
```
#### Manual byte compilation
If you need to bytecompile stuff outside of
`%{python3_sitelib}`/`%{python3_sitearch}`, use the `%py_byte_compile`
macro.
For more details on `%py_byte_compile` and on the internals of bytecode
compilation, please see the
[appendix](https://docs.fedoraproject.org/en-US/packaging-guidelines/Pytho....
> XXX: Copy the section from appendix here
### Dist-info metadata
Each Python package **MUST** include *Package Distribution Metadata*
conforming to [PyPA
specifications](https://packaging.python.org/specifications/)
(specifically, [Recording installed
distributons](https://packaging.python.org/specifications/recording-insta...).
This applies to libraries (e.g. `python-requests`) as well as tools
(e.g. `ansible`).
> XXX what with splitting into subpackages? 1) dist-info always
installed, 2) dist-info installed trough a metapackage?
> * Ideally, do the split upstream
> * Consider package split between library & tool (see poetry, fedpkg)
>
> e.g.
> When software is split into several subpackages, it is OK to only
ship metadata in one built RPM.
The metadata takes the form of a `dist-info` directory installed in
`%{python3_sitelib}` or `%{python3_sitearch}`, and contains information
that tools like
[`importlib.metadata`](https://docs.python.org/3/library/importlib.metadata.html)
use to introspect installed libraries.
> XXX example %files with manual dist-info entry
Note that some older tools instead put metadata in an `egg-info`
directory, or even a single file.
This won't happen if you use the `%pyproject_wheel` macro.
If your package uses a build system that generates an `egg-info`
directory or file, please contact Python SIG.
> XXX We need a better solution before we go out of beta.
As an exception, the Python standard library **MAY** ship without this
metadata.
### Explicit lists
Packagers **SHOULD NOT** simply glob everything under a shared directory.
In particular, the following **SHOULD NOT** be used:
* `%{python3_sitelib}/*`
* `%{python3_sitearch}/*`
* `%{python_sitelib}/*`
* `%{python_sitearch}/*`
* `%{_bindir}/*`
* `%pyproject_save_files *`
* `%pyproject_save_files +bindir`
This rule serves as a check against common mistakes which are otherwise
hard to detect. It does limit some possibilities for automation.
The most common mistake this rule prevents is installing a test suite
system-wide as an importable module named `test`, which would then
conflict with other such packages.
## PyPI parity
Every Python package in Fedora **SHOULD** also be available on [the
Python Package Index](https://pypi.org) (PyPI).
The command `pip install PROJECTNAME` **MUST** install the same package
(possibly in a different version), install nothing, or fail with a
reasonable error message.
If this is not the case, the packager **MUST** contact upstream about
this. The goal is to get the project name registered or blocked on PyPI,
or to otherwise ensure the rule is followed.
> XXX Note that project names that were in Fedora but not on PyPI when
these guidelines were proposed are *blocked* as we discuss how they
should be handled.
> This prevents potential trolls, but also legitimate owners, from
taking them.
This is necessary to protect users, avoid confusion, and enable
automation as Fedora and upstream ecosystems grow more integrated.
As always, specific exceptions can be granted by FPC (XXX link
exceptions rules).
> XXX Write an automated check for this.
## Provides and requirements
### Provides for importable modules
For any module intended to be used in Python 3 with `import MODNAME`,
the package that includes it **SHOULD** provide `python3-MODNAME`, with
underscores (`_`) replaced by dashes (`-`).
This is of course always the case if the package is named
`python3-MODNAME`. If the subpackage has some other name, then add
`%py_provides python3-MODNAME` explicitly. See the following section to
learn about `%py_provides`.
### Automatic unversioned provides
For any `FOO`, a package that provides `python3-FOO` **SHOULD** use
`%py_provides` or an automatic generator to also provide `python-FOO`.
The provide **SHOULD NOT** be added manually: if the generator or macro
is not used, the provide shall not be added at all.
On Fedora 33+, this is done automatically for package names by a
generator. The generator can be disabled by undefining
`%__pythonname_provides`.
The following macro invocation will provide both `python3-FOO` and
`python-FOO`:
%py_provides python3-FOO
> XXX: finalize `%py_provides`
Using the generator or macro is important, because the specific form of
the provide may change in the future.
### Machine-readable provides
Every Python package **MUST** provide `python3dist(DISTNAME)` **and**
`python3.Xdist(DISTNAME)`, where `X` is the minor version of the
interpreter and `DISTNAME` is the *canonical project name* corresponding
to the *dist-info metadata*, for example `python3.9dist(requests)`.
(XXX: add links to previous sections)
This is generated automatically from the dist-info metadata.
The provide **SHOULD NOT** be added manually: if the generator fails to
add it, the metadata **MUST** be fixed.
If necessary, the automatic generator can be disabled by undefining
`%__pythondist_provides`.
These *Provides* are used for automatically generated *Requires*.
### Dependencies
As mentioned above, each Python package **MUST** explicitly BuildRequire
`python3-devel`.
Packages **MUST NOT** have dependencies (either build-time or runtime)
with the unversioned prefix `python-` if the corresponding `python3-`
dependency can be used instead.
Packages **SHOULD NOT** have explicit dependencies (either build-time or
runtime) with a minor-version prefix such as `python3.8-` or
`python3.8dist(`. Such dependencies **SHOULD** instead be automatically
generated or a macro should be used to get the version.
Packages **SHOULD NOT** have an explicit runtime dependency on `python3`.
Instead of depending on `python3`, packges have an automatic dependency
on `python(abi) = 3.X` when they install files to `%{python3_sitelib}`
or `%{python3_sitearch}`, or they have an automatic dependency on
`/usr/bin/python3` if they have executable Python scripts, or they have
an automatic dependency on `libpython3.X.so.1.0()` if they embed Python.
These rules help ensure a smooth upgrade path when `python3` is updated
in new versions of Fedora.
### Automatically generated dependencies
Packages **MUST** use the automatic Python run-time dependency generator.
Packages **SHOULD** use the opt-in build-dependency generator if possible.
Any necessary changes **MUST** be done by patches or modifying the
source (e.g. with `sed`), rather than disabling the generator. The
resulting change **SHOULD** be offered to upstream. As an exception,
[filtering](https://docs.fedoraproject.org/en-US/packaging-guidelines/Auto...
**MAY** be used for temporary workarounds and bootstrapping.
Dependencies covered by the generators **SHOULD NOT** be repeated in the
`.spec` file. (For example, if the generator finds a `requests`
dependency, then `Requires: python3-requests` is redundant.)
The automatically generated requirements are in the form
`python3.Xdist(DISTNAME)`, potentially augmented with version
requirements or combined together with [rich
dependencies](https://rpm.org/user_doc/boolean_dependencies.html).
Note that the generators only cover Python packages. Other dependencies,
often C libraries like `openssl-devel`, must be specified in the `.spec`
file manually.
> XXX When implemented, this goes here: Alternatively, upstream Python
packages may list non-Python dependencies in the
`[tool.fedora.requires]`/`[tool.fedora.buildrequires]` section of
`pyproject.toml`. This is non-standard and only recommended for
Fedora-related packages.
Where the requirements are specified in the source depends on each
project's build system and preferences. Common locations are
`pyproject.toml`, `setup.py`, `setup.cfg`, `config.toml`.
#### Run-time dependency generator
The automatic runtime dependency generator uses package metadata (as
recorded in installed `*.dist-info` directories) to determine what the
package depends on.
In an emergency, you can opt-out from running the requires generator by
adding `%{?python_disable_dependency_generator}` to the package
(usually, just before the main package’s `%description`).
#### Build-time dependency generator
The opt-in (but strongly recommended) build-time dependency generator
gathers information from [`pyproject.toml` build-system
information](https://www.python.org/dev/peps/pep-0517/#source-trees)
(with fallback to `setuptools`) plus a standardized [build-system
hook](https://www.python.org/dev/peps/pep-0517/#get-requires-for-build-wh...
to gather further requirements. See `%pyproject_buildrequires` (XXX
link) for more details.
### Test dependencies
See the *Tests* section. (XXX link.)
### Extras
> XXX No story here so far.
> XXX Note:
[python-django-storages](https://src.fedoraproject.org/rpms/python-django-...,
`drf-yasg` etc. do `%python_provide python3-%{srcname}+%{distname}` and
`python3dist(%{srcname}/%{extraname})` XXX
`python3dist(%{srcname}[%{extraname}])`
## Interpreter invocation
### Shebangs
Shebangs lines to invoke Python **SHOULD** be `#!%{python3}
-%{py3_shebang_flags}` and it **MAY** include extra flags.
> XXX define py3_shebang_flags
If the default flags from `%{py3_shebang_flags}` are not desirable,
packages **SHOULD** explicitly redefine the macro to remove them.
Using `#!%{python3}` (`#!/usr/bin/python3`) rather than e.g.
`#!/usr/bin/env python` ensures that the system-wide Python interpreter
is used to run the code, even if the user modifies `$PATH` (e.g. by
activating a virtual environment).
By default, `-%{py3_shebang_flags}` expands to `-s`, which means *don't
add user site directory to `sys.path`*. That ensures user-installed
Python packages (e.g. by `pip install --user`) don't interfere with the
RPM installed software. Sometimes, `pip`-installed content is desirable,
such as with plugins. Redefining `%{py3_shebang_flags}` to not include
`s`, rather than not using the macro at all, ensures that existing or
future automation won't add the flag.
The `%pyproject_install` macro automatically changes all Python shebangs
in `%{buildroot}%{_bindir}/*` to use `%{python3}` and add
`%{py3_shebang_flags}` to the existing flags. If you're not using the
macro or you need to change a shebang in a different directory, you can
use the `pathfix.py` command as follows:
```
pathfix.py -n -p -k -i %{python3} -a %{py3_shebang_flags} SCRIPTNAME …
```
> XXX Ouch! Macroize this? Hell yes!
>
> `%py3_shebang_fix <paths>` -- also rename `%{py3_shebang_flags}`
(doesn't include dash)
>
> can be used in `%prep` or `%install`
where:
* `-n` disables ceating backups
* `-p` preserves timestamps
* `-k` keeps existing flags
* `-i` specifies the new interpreter
### Invokable Python modules
Every executable `TOOL` for which the current version of Python matters
**SHOULD** also be invokable by `python3 -m TOOL`.
If the software doesn't provide this functionality, packagers **SHOULD**
ask the upstream to add it.
This applies to tools that modify the current Python environment (like
installing or querying packages), use Python for configuration, or use
Python to run plugins.
It does not apply to tools like GIMP or Bash which support plugins in
multiple languages and/or have other means to specify the interpreter.
For example, `pip` can be invoked as `python3 -m pip`.
This allows users to accurately specify the Python version used to run
the software. This convention works across different environments that
might not always set `$PATH` or install scripts consistently.
## Using Cython
Tightening the general Fedora policy, packages **MUST NOT** use files
pre-generated by Cython. These **MUST** be deleted in `%prep` and
regenerated during the build.
As an exception, these sources **MAY** be used temporarily to prevent
build time circular dependencies by following the
[bootstrapping](https://docs.fedoraproject.org/en-US/packaging-guidelines/...
guidelines.
Generated files (the ones that must be deleted) have a generic `.c` or
`.cpp` extension.
Cython source files (which should stay) usually have the `.pyx` or
`.pxd` extension.
Cython is a popular tool for writing extension modules for Python. If
compiles a Python-like language to C, which is then fed to the C compiler.
Historically, Cython was hard to use upstream as a build-time
dependency. Many projects include pre-generated C files in source
distribution to avoid users from needing to install the tool.
Cython uses CPython's fast-changing internal API for performance
reasons. For a new release of Python, Cython generally needs to be
updated and the C files regenerated. In Fedora, this is frequently
needed before upstreams release re-generated sources (e.g. for Alpha
versins of Python).
Since we do not have a problem with build-time dependencies, we always
want to run the Cython step.
> XXX example spec snippet
## Tests
### Running tests
If a test suite exists, it **MUST** be run in the `%check` section
and/or in Fedora CI.
You **MAY** exclude specific failing tests.
You **MUST NOT** disable the entire testsuite or ignore the result to
solve a build failure.
As an exception, you **MAY** disable tests with an appropriate `%if`
conditional (e.g. bcond) when
[bootstrapping](https://docs.fedoraproject.org/en-US/packaging-guidelines/....
A popular testing tool, and one which is well integrated in Fedora, is
`tox`. Upstream, it is commonly used to test against multiple Python
versions. In a Fedora package, BuildRequire test dependencies (see *Test
dependencies* below) and run `tox` with:
```
%tox
```
This sets up the environment (`$PATH`, `$PYTHONPATH`,
`$TOX_TESTENV_PASSENV`) and instructs `tox` to use the current
environment rather than create new ones.
For more options, see *Build macros* (XXX link to section).
When upstream doesn't use `tox`, the tests need to be run directly
depending on upstream choice of a test runner. A popular runner is
`pytest`, which can be run against the package to be installed using:
```
export PATH=%{buildroot}%{_bindir}
export
PYTHONPATH=%{buildroot}%{python3_sitearch}:%{buildroot}%{python3_sitelib}
/usr/bin/pytest # XXX `%{python} -m pytest` doesn't work :( -- sees PWD
```
> XXX Do we want a macro for that? We do, because not all projects have
tox.
>
> Define %__pytest or %_pytest %pytest_command - /usr/bin/pytest
>
> Define %pytest (see above snippet) (not parametric)
Use positional arguments to specify test directory, and `-k` to select
tests (e.g. `-k "not network"` may deselect all network-related tests).
### Test dependencies
One part of the Python packaging ecosystem that is still not
standardized is specifying test dependencies (and development
dependencies in general).
The best practice to specify tests is using an extra (XXX link to
section above, which should be fleshed out) like `[test]` or `[dev]`. In
this case, upstream's instructions to install test dependencies might
look like `pip install -e.[test]`.
Projects using `tox` usually specify test dependencies in a
`tox`-specific format: a
[requires](https://tox.readthedocs.io/en/latest/config.html#conf-requires)
key in the configuration.
Both forms are handled by the `%pyproject_buildrequires` macro, see below.
If upstream does not use either form, list test dependencies as manual
*BuildRequires* in the `spec` file.
### Linters
In `%check`, packages **SHOULD NOT** run “linters”: code style checkers,
test coverage checkers and other tools that check code quality rather
than functionality.
Tools like `black`, `pylint`, `flake8`, or `mypy` are often
“opinionated” and their “opinions” change frequently enough that they
are nuisance in Fedora, where the linter is not pinned to an exact version.
Furthermore, some of these tools take a long time to adapt to new Python
versions, preventing early testing with Aplha and Beta releases of Python.
And they are just not needed: wrongly formatted code is not important
enough for the Fedora packager to bug the upstream about it.
Making such an issue break a package build is entirely unreasonable.
Linters *do* make sense in upstream CI. But not in Fedora.
If a linter is used, disable it and remove the dependency on it. If that
is not easy, talk to upstream about making it easy (for example with a
configuration option or a separate `tox` environment).
For packages that contain such linters, use them at runtime or extend
them, you will usually need to run the linter in `%check`. Run it to
test functionality, not code quality of the packaged software.
## Source files from PyPI
Packages **MAY** use sources from PyPI.
However, packages **SHOULD NOT** use an archive that omits test suites,
licences and/or documentation present in other source archives.
For example, as of this writing `pip` provides a [source tarball
(“sdist”)](https://pypi.org/project/pip/#files) which omits the
relatively large `tests` and `docs` directories present in [the source
on GitHub](https://github.com/pypa/pip). In this case, the tarball from
GitHub should be used (XXX link to source URL guidelines).
When using sources from PyPI, you can use the `%pypi_source` macro to
generate the proper URL. See the *Macro reference* (XXX link directly to
macro) for details.
## Sample spec file
The following is a viable spec file for a hypothetical Python library
called `pello` that follows packaging best practices.
> XXX *Need to get `Pello` uploaded as real example and on GH under
fedora-python.
```
%py_set_name Pello
Name: python-%{distname}
Version: 1.2.3
Release: 1%{?dist}
Summary: Example Python library
License: MIT
URL: https://github.com/fedora-python/Pello
Source0: %{pypi_source}
BuildArch: noarch
BuildRequires: python3-devel
BuildRequires: pyproject-rpm-macros
%global _description %{expand:
A python module which provides a convenient example.
This description provides some details.}
%description %_description
%package -n python3-%{distname}
Summary: %{summary}
%description -n python3-%{distname} %_description
%prep
%autosetup -p1 -n %{projectname}-%{version}
%generate_buildrequires
%pyproject_buildrequires -t
%build
%pyproject_wheel
%install
%pyproject_install
# Here, "pello" is the name of the importable module.
# You may use %%{distname} here if it's the same.
%pyproject_save_files pello
%check
%tox
# Note that there is no %%files section for
# the unversioned python module, python-%%{distname}
%files -n python3-%{distname} -f %{pyproject_files}
%doc README.md
%license LICENSE
%{_bindir}/pello-greeting
```
## Macro Reference
See the *Mandatory macros* section above. (XXX link to section)
<!-- Keep order and examples the same as in Mandatory macros -->
* `%{python3}` (`/usr/bin/python3`)
* `%{python3_version}` (e.g. `3.9`)
* `%{python3_version_nodots}` (e.g. `39`)
* `%{python3_sitelib}` (e.g. `/usr/lib/python3.9/site-packages`)
* `%{python3_sitearch}` (e.g. `/usr/lib64/python3.9/site-packages`)
### Name macros
* `%py_set_name PROJECTNAME` (e.g. `%py_set_name Django`)
Sets `%{projectname}` to the given name, and `%{distname}` to the
canonical version of it. These macros can then be used throughout the
`spec` file.
See *Naming* for details and *Sample spec file* for examples. (XXX
link to sections)
* `%{projectname}` (e.g. `Django`)
Set by `%py_set_name` to the *project name* of the software.
* `%{distname}` (e.g. `django`)
Set by `%py_set_name` to the *canonical project name* of the software.
### Shebang macro
* `%{py3_shebang_flags}` (`s`)
Flags for `%{python3}` to use in shebangs.
Redefine this macro to use a different set of flags. See *Shebangs*
[XXX link section] for details.
### Convenience macros
* `%{pypi_source [PROJECTNAME [VERSION [EXT]]]}` (e.g.
`https://.../Django-3.0.5.tar.gz`)
Evaluates to the appropriate URL for source archive hosted on PyPI.
Accepts up to three optional arguments:
1. The name of the PyPI project. Defaults to `%srcname` if defined,
or to `%pypi_name` if defined, or to `%name` (the package name). [XXX
default to `%projectname`]
2. The version of the PyPI project. Defaults to `%version` (the
package version).
3. The file extension to use. Defaults to `tar.gz`.
In most cases it is not necessary to specify any arguments.
* `%{python3_platform}` (e.g. `linux-x86_64`)
The platform name. Used in some Python build systems.
### Build macros
These macros are most useful for packaging Python projects that use the
`pyproject.toml` file defined in [PEP
518](https://www.python.org/dev/peps/pep-0518/) and [PEP
517](https://www.python.org/dev/peps/pep-0517/), which specifies the
package's build dependencies (including the build system, such as
setuptools, flit or poetry).
If `pyproject.toml` is not found, the macros automatically fall backs to
using `setuptools` with configuration in `setup.cfg`/`setup.py`.
A full tutorial and discussion for the macros is available in the
macros' [README](https://src.fedoraproject.org/rpms/pyproject-rpm-macros/).
* `%pyproject_wheel`
Build the package. Commonly, this is the only macro needed in the
`%build` section.
This macro needs BuildRequires generated by `%pyproject_buildrequires`.
* `%pyproject_install`
Install the package built by `%pyproject_wheel`.
This macro needs BuildRequires generated by `%pyproject_buildrequires`.
* `%pyproject_buildrequires`
Generate BuildRequires for the package. Used in the
`%generate_buildrequires` section of the `spec` file. The macro has
these options:
* `-r`: Include build-time requirements (commonly needed for `%check`).
* `-x EXTRA`: Include dependencies given by the given *extra* (XXX
link). [XXX Multiple comma separated values cannot be given yet.]
* `-t`: Include dependencies for the default *tox* environment.
Implies `-r`.
* `-e ENV`: Include dependencies for the given *tox* environment, and
save the `ENV` name as `%{toxenv}`. Implies `-r`. Multiple comma
separated values can be given, for example:
%pyproject_buildrequires -e %{toxenv}-unit,%{toxenv}-integration
* `%pyproject_save_files MODNAME …`
Generate a list of files corresponding to the given importable
modules, and save it as `%{pyproject_files}`.
Note that README and licence files are not included.
Also, while the macro allows including executable files (using the
`+bindir` flag), this feature **MUST NOT** be used in Fedora.
The `MODNAME` may be a glob pattern, which should be specific to
your package. As mentioned in the *Explicit lists* section, expressions
like `%pyproject_save_files *` are not acceptable.
* `%{pyproject_files}`
Path of the file written by `%pyproject_save_files`, to be used as:
%files -n python3-%{distname} -f %{pyproject_files}
* `%tox`
Run tests using `tox`.
A different environment may be specified with `-e`, for example:
```
%check
%tox
%if %{with integration_test}
%tox -e %{toxenv}-integration
%endif
```
Flags for the `tox` command can be specified after `--`:
%tox -- --parallel 0
Additional arguments for the test runner may be specified after
another `--`:
%tox -- --parallel 0 -- --verbose tests/*
* `%{toxenv}`
The *tox* environment used by the `%tox` macro.
Can be overridden manually or with `%pyproject_buildrequires -t ENV`.
* `%{default_toxenv}` (e.g. `py39`)
The system-wide default value of `%{toxenv}`.
### Manual Generation
The following macros are available for cases where automatic generation
is turned off.
They can also be useful for handling files in non-standard locations
where the generators don't look.
* `%pycached MODNAME.py`
Given a Python file, lists the file and the files with its bytecode
cache. See *Source files and bytecode cache* for more information.
* `%{py_provides python3-MODNAME}`
> XXX
See *The `%python_provide` macro* for more details.
* `%{py_byte_compile INTERPRETER PATH}`
> XXX`%{python3_byte_compile PATH}` XXX?
Byte-compile a Python file into a `__pycache__/*.pyc`.
See [Manual byte
compilation](https://docs.fedoraproject.org/en-US/packaging-guidelines/Py...
in the Appendix for usage.
* `%{py_dist_name PROJECTNAME}`
Given a *project name* (e.g. `PyYAML`) it will convert it to the
canonical format (e.g. `pyyaml`). See *Canonical project name* for more
information.
* `%{py3_dist PROJECTNAME …}`
Given one or more *project names*, it will convert them to the
canonical format and evaluate to `python3dist(DISTNAME)`, which is
useful when listing dependencies. See *Machine-readable provides* for
more information.
### System Settings
The following macros can be redefined for special use cases. Most of
such cases are unacceptable in Fedora.
* `%{__python}` (`/usr/bin/python`)
Defining this macro changes the meaning of all “unversioned” Python
macros such as `%{python}` or `%{python_sitelib}`.
Don’t use these macros without redefining `%{__python}`.
* `%{__python3}` (`/usr/bin/python3`)
The python 3 interpreter. Redefining this macro changes all the
`%{python3...}` macros, e.g. `%{python3_sitelib}`.
* `%{python3_pkgversion}` (`3`)
Distro-wide Python version, i.e. the `3` in `python3`.
Projects that build on top of Fedora may define it to e.g. `3.9` to
try allowing multiple Python stacks installable in parallel.
### XXX Conditionals?
> XXX How to properly express: "if python_version >= 3.8"?
> The current way is comparing integers from %python3_version_nodots,
but that will break with 3.10/4.0 comparsion.
> Do a Lua macro that splits the versions and compares them?
> This looks more general, is there something in RPM we can use?
### Disabling automation
The following macros can turn off Python-specific automation.
Consider contacting the Python SIG if you need to do this.
* `%{?python_disable_dependency_generator}`
Disables the automatic dependency generator. See *Automatically
generated dependencies* for details.
* `%__pythonname_provides`
> XXX undefine to disable %python-provides generator
* `%__pythondist_requires`
> XXX undefine to disable %python3dist generator
### Deprecated Macros
The following macros are deprecated. See the *201x-era Python Packaging
guidelines* (XXX link) for how some of them were used.
* `%py3_build`
* `%py3_build_wheel`
* `%py3_build_egg`
* `%py3_install`
* `%py3_install_wheel`
* `%py3_install_egg`
* `%py3dir`
* `%py3_other_build`
* `%py3_other_install`
* `%python_provide` (without `s` at the end)
> XXX: `%pyX_build` breaks shebang when upstream already uses some
flags (https://bugzilla.redhat.com/show_bug.cgi?id=1335203) -- should we
document this in the old guidelines?
## Reviewer checklist
> After the guidelines are done, distill the **MUST**s/**SHOULD**s here.
> XXX: Do we need a checklist at all?
> How do we keep it updated (which hasn't happened in the last N years)
2 years, 10 months
Re: [HEADS UP] Fedora 35 Python 3.10 rebuilds have started in a side
tag
by Miro Hrončok
On 14. 06. 21 14:40, Alexander Bokovoy wrote:
> On ma, 14 kesä 2021, Miro Hrončok wrote:
>> On 14. 06. 21 13:40, Alexander Bokovoy wrote:
>>> On ma, 14 kesä 2021, Victor Stinner wrote:
>>>> Congrats, that's amazing! :-) Let's fix remaining broken packages!
>>>
>>> Right now the biggest broken package to us (FreeIPA) is mod_wsgi which
>>> relied on Python C API which was removed in Python 3.10. The same API
>>> was used by uWSGI as well, so it would really be great if Python core
>>> developers and Python maintainers team could have helped mod_wsgi/uWSGI
>>> upstreams to migrate from the old API.
>>>
>>> Sadly, this was only found after the fact when a side-tag was already
>>> merged, so FreeIPA right now is broken in Fedora Rawhide.
>>
>> The problem in mod_wsgi was actually found and reported in November 2020 [1],
>> which is exactly why we test with each pre-release of Python: To report
>> problems *early* and give maintainers time to fix them, so we can land the
>> new version with limited negative impact.
>>
>> Unfortunately, the mod_wsgi maintainer did not respond to the problem :(
>> While we try really hard, we cannot report each failure to upstreams directly.
>>
>> The fact that this blocks FreeIPA was indeed only discovered by chance while
>> the side tag rebuild was already in progress (and about to be merged). I
>> wonder haw can we improve the process to ensure problems like this are known
>> to FreeIPA maintainers since the beginning and prioritized accordingly.
>> (Ideally, the process would not only be improved for FreeIPA but the entire
>> distro.)
>
> Well, this is a dependency problem in the first place. When an ABI
> change happens, like a Python ABI change with 3.10 mass-rebuild, it
> should be assumed and expected that until all previously successfully
> built packages were to be rebuilt, there will be broken dependencies.
Yes, however getting "all previously successfully built packages rebuilt" is an
impossible goal. Instead we strive to get "most of them rebuilt" and "the
important ones rebuilt". Getting most of them rebuilt is not an easy task but
at least is is quite easy to quantify: 3333 are rebuilt, 293 to go, that is
~91%. OTOH knowing what is "important" is hard. There is the "critical path"
thing (but mod_wsgi is not in it and the list seems heavily outdated).
> Perhaps, we could extend our existing checks for a broken compose to be
> done on a side-tag on demand? This way mass-rebuilders could ask for
> such a run one they consider to be ready to merge and see how that
> side-tag merge would affect the distribution. I don't think we have a
> better way to detect it before the merge.
We try hard not to break the compose. It is not fully automated and having a
way to run a test compose would be awesome.
However, this particular problem does not break the compose, the compose is
done now even when mod_wsgi is not installable.
We have also validated the following groups are installable before merging the
side tag:
@anaconda-tools
@base-x
@cloud-server-environment
@container-management
@core
@domain-client
@firefox
@fonts
@guest-agents
@headless-management
@input-methods
@kde-apps
@kde-desktop-environment
@kde-media
@libreoffice
@multimedia
@networkmanager-submodules
@printing
@server-product
@standard
@workstation-product-environment
Because we parsed them from the hopefully compsoe-blocking media kickstarts.
> What I do not see as acceptable is what Python core team did in November
> 2020 when this issue was made clear in the original PR to remove the
> 'old' parser that broke mod_wsgi/uWSGI/unbound and some more packages.
> Instead of following up in providing a supported API function, the
> comment[1] from Victor was practically ignored.
I am not happy either that Python upstream keeps breaking things and often the
migration path is "go figure". Whenever and wherever I can, I argue against that :(
>> I assume that opening bugzillas for all the dependent packages for each
>> failure would be considered as spam by many.
>
> It depends on what that bug opening would mean. If you are doing it
> early together with an upstream that breaks its ABI/API, helping them to
> see the issues early is one of your goals -- as you stated above.
> Realizing through reverse dependencies a damage such breakage could
> cause is something you (as Python maintainers in Fedora) could
> definitely do and raise the issue earlier also with the package
> maintainers/upstreams. In this case FreeIPA is affected but we missed it
> completely in November 2020 as nobody told us mod_wsgi would not work
> anymore.
This is a chicken-egg problem: Until we measure the impact, we don't know it.
And reporting many dependent-packages bugzillas early seems like a waste of
effort if the bug is getting fixed soon. What we need to detect (and we don't
know how to automate that yet) is:
- a bugzilla for a problem is stalled AND
- the package is dependent on by "important stuff" or by a large stack
Even when not automated, we manually rise priorities for bugzillas that block
the builds of large stacks.
What would be particularity helpful would be if *all* the package maintainers
triaged their bugzillas and responded to them in timely manner, notify
upstreams and ask for help if they need it. However, that is not realistic.
>> In the meantime, I've marked mod_wsgi as "blocker" for the Python 3.11
>> rebuild next year, but that is not a systematic solution.
>>
>>> I saw that there is some discussion and an effort to help mod_wsgi
>>> upstream already, thank you!
>>
>> There is a proposed fix [2] but we don't know enough about Apache to say if
>> it is ideal. In case this blocks you very much, I suggest you work with the
>> Fedora's mod_wsgi maintainer and backport this patch to rawhide, keeping an
>> eye on it in case it breaks your use cases, and report problems to us, so we
>> can adapt it. At this point of the Fedora 35 development schedule, I think
>> this patch should be good enough for it.
>
> I already nominated mod_wsgi bug as Fedora 35 beta release blocker
> because it violates Fedora Server release criteria[2]. I am not a
> maintainer for mod_wsgi myself and have no rights to that package.
I know and I voted +1 for a blocker. I am not a maintainer for mod_wsgi either.
--
Miro Hrončok
--
Phone: +420777974800
IRC: mhroncok
2 years, 10 months
Re: [HEADS UP] Fedora 35 Python 3.10 rebuilds have started in a side
tag
by Miro Hrončok
On 14. 06. 21 13:40, Alexander Bokovoy wrote:
> On ma, 14 kesä 2021, Victor Stinner wrote:
>> Congrats, that's amazing! :-) Let's fix remaining broken packages!
>
> Right now the biggest broken package to us (FreeIPA) is mod_wsgi which
> relied on Python C API which was removed in Python 3.10. The same API
> was used by uWSGI as well, so it would really be great if Python core
> developers and Python maintainers team could have helped mod_wsgi/uWSGI
> upstreams to migrate from the old API.
>
> Sadly, this was only found after the fact when a side-tag was already
> merged, so FreeIPA right now is broken in Fedora Rawhide.
The problem in mod_wsgi was actually found and reported in November 2020 [1],
which is exactly why we test with each pre-release of Python: To report
problems *early* and give maintainers time to fix them, so we can land the new
version with limited negative impact.
Unfortunately, the mod_wsgi maintainer did not respond to the problem :( While
we try really hard, we cannot report each failure to upstreams directly.
The fact that this blocks FreeIPA was indeed only discovered by chance while
the side tag rebuild was already in progress (and about to be merged). I wonder
haw can we improve the process to ensure problems like this are known to
FreeIPA maintainers since the beginning and prioritized accordingly. (Ideally,
the process would not only be improved for FreeIPA but the entire distro.)
I assume that opening bugzillas for all the dependent packages for each failure
would be considered as spam by many.
In the meantime, I've marked mod_wsgi as "blocker" for the Python 3.11 rebuild
next year, but that is not a systematic solution.
> I saw that there is some discussion and an effort to help mod_wsgi
> upstream already, thank you!
There is a proposed fix [2] but we don't know enough about Apache to say if it
is ideal. In case this blocks you very much, I suggest you work with the
Fedora's mod_wsgi maintainer and backport this patch to rawhide, keeping an eye
on it in case it breaks your use cases, and report problems to us, so we can
adapt it. At this point of the Fedora 35 development schedule, I think this
patch should be good enough for it.
[1] https://bugzilla.redhat.com/show_bug.cgi?id=1898158#c0
[2] https://github.com/GrahamDumpleton/mod_wsgi/pull/688
--
Miro Hrončok
--
Phone: +420777974800
IRC: mhroncok
2 years, 10 months
[HEADS UP] Fedora 35 Python 3.10 rebuilds have started in a side tag
by Tomas Hrnciar
Hello, in order to deliver Python 3.10, we are running a coordinated
rebuild in a side tag.
https://fedoraproject.org/wiki/Changes/Python3.10
If you see a "Rebuilt for Python 3.10" (or similar) commit in your package,
please don't rebuild it in regular rawhide.
If you need to, please let us know, so we can coordinate.
If you'd like to build the package, you should be able to build it in the
side tag via:
on branch rawhide:
$ fedpkg build --target=f35-python
$ koji wait-repo f35-python --build <nvr>
Note that it will take a while before all the essential packages are
rebuilt, so don't expect all your dependencies to be available right away.
When in trouble, ask here or on IRC (#fedora-python on Libera.Chat).
Builds:
https://koji.fedoraproject.org/koji/builds?latest=0&tagID=f35-python&orde...
Please avoid any potentially disturbing changes in Python packages until
the rebuild is over.
Thanks. Let us know if you have any questions.
PS: I've BCC'ed maintainers of the "initial bootstrap sequence". If your
package is listed below, it means it is essential that you coordinate all
rawhide changes -- if you don't, this may potentially make the disturbing
experience longer than necessary. Thank You so much for your patience.
Maintainers by package:
Cython churchyard ignatenkobrain nbecker stevetraylen
GitPython athoscr dgoodwin ignatenkobrain lsedlar
PyQt4 rdieter than
PyYAML jeckersb
abrt abrt-team mgrabovs mmarusak
anaconda anaconda-maint jkonecny m4rtink rvykydal sbueno
vpodzime vponcova
asciidoc fab jridky nphilipp tmz
automake jjanco kasal panovotn praiskup ttomecek
babel fschwarz nphilipp
boost denisarnaud jwakely trodgers
breezy churchyard opohorel
brotli carlwgeorge pouar tagoh
clang airlied daveisfera sbergmann sergesanspaille
siddharths tstellar
cloud-init dustymabe gholms larsks mhayden otubo
createrepo_c dmach jrohel mblaha pkratoch tmlcoch
dblatex alexlan jchaloup mjg
dbus-python alexl amigadave besser82 caillon caolanm mbarnes
ngompa phuang rdieter rhughes rstrode ssp stefanok vtrefny
dnf dmach jmracek jrohel mblaha pkratoch
dnf-plugins-core dmach jmracek mblaha pkratoch
dnf-plugins-extras dmach jmracek mblaha pkratoch
fedmod karsten nphilipp
fedmsg ralph
fedora-messaging abompard
file kdudka odubaj svashisht vmihalko
fros jfilak
future sagitter
gdb jankratochvil keiths kevinb sergiodj
glade kalev
gobject-introspection dcbw otaylor walters
gpgme fkluknav ignatenkobrain isimluk rdieter
ipython churchyard cstratak dcantrell ignatenkobrain lbalhar
mrunge salimma tomspur
itstool mclasen
kernel-tools acaringi jcline jforbes jwboyer lgoncalv patrickt
pbrobinson
kobo dmach rohanpm
koji ausil kevin mikem puiterwijk
libblockdev sbueno tbzatek vpodzime vtrefny
libbytesize tbzatek vpodzime vtrefny
libcomps akozumpl dmach jluza jmracek mblaha pkratoch
libdnf dmach jmracek jrohel mblaha pkratoch
libgit2-glib ignatenkobrain kalev nacho pwalter
libmodulemd asamalik nphilipp packit ppisar sgallagh
libpwquality pwouters tmraz
librepo dmach pkratoch tmlcoch
libreport abrt-team mgrabovs mmarusak
libselinux dwalsh mgrepl pcmoore plautrba vmojzis
libsolv dmach ignatenkobrain jmracek jrohel ngompa pkratoch
libxml2 ignatenkobrain jpokorny veillard
linkchecker churchyard cicku dchen
lorax bcl clumens dcantrell dshea wwoods
marshalparser lbalhar
mercurial kiilerix nbecker pstodulk
meson carlwgeorge ekulik ignatenkobrain wtaymans
mock jcwillia mebrown msuchy praiskup
mpi4py deji limb tomspur
mpich deji zbyszek
ninja-build bonzini carlwgeorge cicku ignatenkobrain jperrin
mathstuf
numpy cstratak jspaleta limb orion rdieter tomspur ttomecek
openmpi deji dledford jhladky orion pkfed
pdc-client bliu chcao cheng chuzhang kevin lholecek lsedlar
nphilipp
poetry churchyard thrnciar
policycoreutils dwalsh lvrabec mgrepl pcmoore plautrba vmojzis
pungi dmach lsedlar maxamillion onosek tdawson wwoods
pyOpenSSL jcline jlieskov lmacken pwouters tmraz
pybind11 jussilehtola
pycairo alexl caillon caolanm kalev ralph rhughes rstrode ssp
pydot besser82 spot
pygobject3 nacho walters
pykickstart bcl clumens dcantrell jkonecny m4rtink rvykydal sbueno
vponcova
pyparsing apevec churchyard jamatos sharkcz terjeros
pyparted bcl clumens dcantrell
pyserial stingray
pytest churchyard mrunge radez thm
python-Automat carlwgeorge eclipseo
python-Bottleneck besser82
python-CacheControl thrnciar
python-Pallets-Sphinx-Themes codeblock
python-PyPDF2 aarem
python-SecretStorage cicku cstratak raphgro robert williamjmorenor
python-Traits ignatenkobrain orion
python-WSGIProxy2 ondrejj
python-aiohttp fab ignatenkobrain
python-alembic ralph
python-amqp eharney frantisekz raphgro
python-anytree gerd lkundrak
python-apipkg fab ktdreyer thm
python-appdirs apevec hguemar ignatenkobrain
python-argcomplete churchyard ignatenkobrain mfabik msrb stevetraylen
python-argh cstratak
python-argon2-cffi atim limb paulcarroty
python-arrow pingou ralph
python-asgiref carlwgeorge
python-asn1crypto cheimes npmccallum
python-astroid bcl limb lupinix mrunge orion
python-async-generator carlwgeorge
python-async-timeout clime fab ignatenkobrain
python-atomicwrites mathstuf mbaldessari
python-attrs brouhaha churchyard lbalhar
python-augeas xaeth
python-backcall churchyard orion
python-backoff abompard
python-bcrypt pingou williamjmorenor
python-beanbag kevin
python-beautifulsoup4 kevin mrunge ralph terjeros
python-betamax ignatenkobrain pnemade
python-billiard fab frantisekz mrunge ngompa pingou pjp sundaram
python-bleach bowlofeggs ignatenkobrain mrunge
python-blinker jamatos pjp sundaram
python-blivet blivet-maint dlehman japokorn jkonecny m4rtink
rvykydal sbueno vpodzime vponcova vtrefny
python-boto apevec gholms limb skottler
python-boto3 cstratak fale limb
python-botocore davdunc fale gholms limb lkundrak
python-bottle sundaram
python-bugzilla crobinso dzickus
python-cachy fab
python-case mrunge ngompa pingou
python-cccolutils puiterwijk
python-celery abompard frantisekz mrunge ngompa pingou
python-certifi churchyard jmontleon
python-cffi brouhaha churchyard lbalhar
python-chai kevin pingou ralph
python-chardet churchyard jcline kushal
python-cheroot ignatenkobrain jcaratzas radez
python-cherrypy ignatenkobrain jcaratzas mrunge radez
python-cleo thrnciar
python-click cstratak fab
python-click-completion chedi wakko666
python-clikit thrnciar
python-colander ignatenkobrain lmacken ralph
python-colorama fale mrunge
python-configobj dcallagh fale lmacken terjeros
python-constantly eclipseo
python-contextlib2 abompard pingou ralph tjikkun
python-convertdate fab
python-cornice hguemar lmacken
python-cornice-sphinx abompard
python-cov-core abompard bkabrda
python-coverage abompard lmacken mrunge spot
python-cppy qulogic
python-cpuinfo pnemade
python-crashtest thrnciar
python-crochet abompard
python-cryptography cheimes jcline noodles npmccallum
python-cssselect brouhaha echevemaster kevin ralph
python-curio carlwgeorge
python-cycler nbecker
python-daemon kushal lmacken ralph tomspur xavierb
python-dateparser fab limb
python-dateutil hguemar jspaleta limb pjp tomspur
python-decorator fale kevin ralph
python-defusedxml bkabrda churchyard
python-dict-sorted fale ignatenkobrain
python-dill sergiopr
python-distlib cottsay cstratak
python-distro mblaha msuchy
python-django bkabrda churchyard jdornak mrunge rdopiera salimma
sgallagh
python-dns aviso lbalhar louizatakk pspacek pwouters
python-docs-theme ksurma
python-docutils churchyard
python-dogpile-cache ralph
python-dulwich fab
python-editor apevec kevin ralph social
python-elementpath churchyard thrnciar
python-enchant cstratak
python-entrypoints nonamedotc orion
python-ephem fab
python-execnet adeza ktdreyer thm
python-extras mrunge salimma
python-factory-boy jorti
python-faker jorti
python-fastimport dcallagh
python-fastjsonschema thrnciar
python-fedora codeblock ricky
python-feedgen lbalhar
python-fields cottsay
python-filelock cottsay
python-fixtures apevec mrunge pabelanger
python-flaky churchyard
python-flask codeblock frantisekz hguemar hushan
python-flit churchyard
python-fluidity-sm pghmcfc
python-freezegun cstratak kevin ralph
python-genshi fschwarz
python-genty churchyard
python-gevent dcallagh ignatenkobrain orion skottler
python-gitdb athoscr ignatenkobrain lsedlar
python-graphviz eclipseo
python-greenlet abbot ignatenkobrain kevin salimma terjeros
python-gssapi rharwood simo
python-h11 carlwgeorge
python-h2 eclipseo
python-hamcrest ignatenkobrain
python-hpack eclipseo
python-html5lib churchyard pjp sagitter salimma sundaram
python-httpbin adamwill
python-httpcore fab
python-httplib2 abompard dchen ignatenkobrain jspaleta kevin limb
python-httpretty jpopelka
python-httpx fab
python-humanize jfilak stevetraylen
python-hupper kevin
python-hyperframe eclipseo
python-hyperlink eclipseo
python-hypothesis churchyard dcavalca ignatenkobrain pingou salimma
python-idna churchyard cstratak lbalhar
python-imagesize aviso
python-incremental ykarel
python-iniconfig churchyard
python-iniparse ignatenkobrain lupinix
python-invoke pghmcfc
python-ipykernel churchyard pcpa
python-ipython_genutils orion
python-ipywidgets lbalhar
python-iso8601 fab ilianaw
python-isodate dcallagh dscott jlaska jmatthews
python-isort limb orion
python-itsdangerous dcallagh ignatenkobrain
python-jaraco-classes jcaratzas radez
python-jaraco-collections mrunge
python-jaraco-envs cstratak
python-jaraco-functools jcaratzas radez
python-jaraco-packaging jcaratzas radez
python-jaraco-path thrnciar
python-jaraco-text mrunge
python-jedi carlwgeorge lbalhar
python-jeepney goeran
python-jinja2 thm
python-jmespath fale gholms kevin lkundrak
python-jsonpatch apevec dprince skottler
python-jsonpointer agerstmayr dprince mgoodwin nathans skottler
python-jsonschema apevec
python-jupyter-client churchyard tomspur
python-jupyter-core churchyard orion tomspur
python-jupyterlab_pygments nonamedotc
python-jwt carlwgeorge kevin ralph
python-kerberos rcritten simo
python-keyring apevec cicku ctubbsii ignatenkobrain robert rtnpro
python-kitchen kevin pingou ralph
python-kiwisolver qulogic
python-kombu fab frantisekz mrunge ngompa pingou pjp sundaram
python-lark-parser totol
python-latexcodec jjames
python-lazy-object-proxy bcl limb lupinix
python-ldap abbra alexl caillon caolanm cheimes pspacek rhughes
rstrode ssp
python-lexicon pghmcfc
python-lit sergesanspaille tstellar
python-lockfile kevin moezroy thrnciar xavierb
python-lxml fale ignatenkobrain mizdebsk
python-m2r nforro
python-mako abompard cverna ignatenkobrain kylev lmacken
python-markdown thm
python-markdown-it-py ksurma lbalhar
python-markupsafe churchyard
python-matplotlib cstratak jgu jspaleta pcpa qulogic rathann tomspur
python-matplotlib-inline lbalhar
python-mccabe churchyard
python-mdit-py-plugins ksurma lbalhar
python-meh clumens m4rtink vpodzime
python-memcached apevec hguemar kevin sgallagh
python-mimeparse abompard carlwgeorge stevetraylen
python-mistune lupinix
python-mock churchyard ttorling
python-moksha-common lbalhar lmacken ralph
python-moksha-hub lbalhar lmacken ralph
python-monotonic apevec hguemar
python-more-itertools aarem churchyard jcaratzas
python-msgpack dfateyev fab ktdreyer pjp sundaram
python-multidict athmane fab ignatenkobrain
python-multilib jgreguske lsedlar
python-munch kevin ralph
python-mypy_extensions ignatenkobrain
python-myst-parser ksurma lbalhar
python-nbclient nonamedotc
python-nbconvert nonamedotc
python-nbformat orion tomspur
python-nbsphinx churchyard ksurma
python-nest_asyncio nonamedotc
python-nose churchyard
python-nose-cov jdulaney
python-nose-cover3 mrunge ngompa pingou
python-nose-exclude mrunge
python-nose2 abompard
python-notebook churchyard ksurma
python-ntplib vpodzime
python-numexpr tnorth zbyszek
python-numpydoc orion tomspur
python-oauthlib jdornak ralph
python-olefile rebus robert smani
python-openid-cla puiterwijk
python-openid-teams puiterwijk
python-openidc-client mohanboddu
python-openstackdocstheme jpena
python-ordered-set msuchy
python-orderedset vtrefny
python-outcome carlwgeorge
python-packaging lbalhar
python-pandas kushal orion sergiopr wakko666
python-pandocfilters zbyszek
python-parameterized ignatenkobrain
python-paramiko athmane ignatenkobrain ivazquez orion pghmcfc sgallagh
python-parso carlwgeorge
python-paste abompard kylev
python-paste-deploy dcallagh kylev lmacken ralph
python-pastel thrnciar
python-path jcaratzas laxathom
python-pathspec adrienverge churchyard
python-patiencediff opohorel
python-pbr apevec mrunge
python-pep517 churchyard pviktori
python-pexpect amcnabb fabiand ignatenkobrain radez swt2c tomspur
python-pickleshare ignatenkobrain nonamedotc
python-pid carlwgeorge dshea
python-pika icheishvili jcline ngompa silas
python-pikepdf qulogic zdohnal
python-pillow miminar smani
python-pip bkabrda churchyard ncoghlan sundaram torsava ttorling
python-pkginfo thrnciar
python-plaster abompard
python-plaster-pastedeploy abompard
python-pluggy mrunge thm
python-ply sgallagh spot
python-poetry-core churchyard thrnciar
python-polib cicku dchen diegobz dshea ivazquez moezroy suanand
python-portend adeza jcaratzas radez
python-pretend piotrp
python-prettytable apevec clalance imcleod
python-priority eclipseo
python-process-tests orion
python-productmd dmach lsedlar
python-prometheus_client jkaluza mprahl
python-prompt-toolkit carlwgeorge fale
python-psutil salimma
python-psycopg2 devrim hhorak jmlich panovotn praiskup
python-ptyprocess ignatenkobrain orion tomspur
python-py mrunge thm
python-pyasn1 kanarip rcritten
python-pybtex jjames
python-pybtex-docutils jjames
python-pycdlib clalance
python-pycodestyle churchyard orion
python-pycparser brouhaha churchyard lbalhar
python-pycurl jsynacek kdudka msekleta svashisht
python-pydbus m4rtink
python-pyface chedi ignatenkobrain orion
python-pygments churchyard smilner
python-pygments-pytest churchyard jcaratzas
python-pylev thrnciar
python-pylibravatar kevin ralph
python-pylons-sphinx-themes abompard
python-pymeeus fab
python-pymongo amcnabb apevec cstratak hhorak mskalick
python-pynacl dciabrin ignatenkobrain
python-pyquery kevin ralph
python-pyramid kevin lmacken ralph rossdylan tdabasin
python-pyramid-fas-openid abompard
python-pyramid-mako kevin ralph
python-pyroute2 jirka pavlix psavelye
python-pyrsistent decathorpe devrim music
python-pysocks abompard kevin ralph ttorling
python-pytest-aiohttp fab
python-pytest-benchmark jorti
python-pytest-capturelog ignatenkobrain pviktori
python-pytest-cov chedi cstratak ttomecek
python-pytest-expect churchyard
python-pytest-fixture-config kevin
python-pytest-forked swt2c
python-pytest-httpbin adamwill
python-pytest-mock fab jujens
python-pytest-randomly dcallagh
python-pytest-rerunfailures cottsay
python-pytest-runner vrutkovs
python-pytest-shutil kevin
python-pytest-subtests fab
python-pytest-timeout swt2c
python-pytest-trio fab
python-pytest-virtualenv kevin
python-pytest-xdist swt2c
python-pyudev clockfort dshea mulhern
python-qt5 rdieter than
python-raven tjikkun
python-rdflib dcallagh dmalcolm dscott nphilipp pingou
python-readthedocs-sphinx-ext jjames
python-redis cicku kevin maxamillion ralph
python-regex thm
python-repoze-lru adeza jcaratzas
python-requests abompard cstratak jcline ralph sagarun
python-requests-download churchyard
python-requests-file dshea
python-requests-ftp dshea
python-requests-gssapi rharwood
python-requests-kerberos dcallagh
python-requests-toolbelt ignatenkobrain pnemade
python-requests-unixsocket jcaratzas radez
python-responses athoscr
python-rfc3986 apevec jpena ykarel
python-rpm-macros churchyard cstratak tibbs torsava
python-rpmfluff dshea ignatenkobrain jhutar jlaska
python-rsa fale jmontleon
python-rst-linker jcaratzas radez
python-s3transfer fale ignatenkobrain limb
python-scour limb
python-scripttest churchyard mbacovsk
python-selenium halfie mrunge
python-semantic_version apevec hguemar mhrivnak
python-send2trash churchyard
python-service-identity carlwgeorge eclipseo ignatenkobrain ralph
python-setuptools churchyard cstratak thrnciar
python-setuptools-rust cheimes
python-setuptools_git fab
python-setuptools_scm churchyard cstratak ignatenkobrain stevetraylen
python-setuptools_scm_git_archive athoscr nforro ttomecek
python-shellingham churchyard
python-should_dsl pghmcfc
python-simplegeneric churchyard ignatenkobrain jcaratzas tomspur
python-simplejson fab ignatenkobrain kylev mrunge
python-simpleline jkonecny m4rtink sbueno
python-simplemediawiki lmacken potty ralph
python-six apevec bkabrda churchyard mrunge pviktori
python-smartcols ignatenkobrain
python-smmap athoscr ignatenkobrain lsedlar
python-sniffio carlwgeorge
python-snowballstemmer cottsay jujens
python-sortedcontainers qulogic
python-soupsieve zbyszek
python-spec pghmcfc
python-sphinx aviso churchyard cstratak salimma toshio
python-sphinx-copybutton jjames
python-sphinx-epytext churchyard opohorel
python-sphinx-gallery orion
python-sphinx-hoverxref salimma
python-sphinx-inline-tabs churchyard thrnciar
python-sphinx-issues qulogic
python-sphinx-last-updated-by-git cstratak
python-sphinx-removed-in churchyard jcaratzas
python-sphinx-testing jcaratzas jjames
python-sphinx-theme-alabaster jujens orion
python-sphinx-theme-py3doc-enhanced jujens
python-sphinx_rtd_theme jjames piotrp
python-sphinx_selective_exclude salimma
python-sphinxcontrib-apidoc chandankumar
python-sphinxcontrib-applehelp churchyard cstratak
python-sphinxcontrib-bibtex jjames
python-sphinxcontrib-devhelp churchyard
python-sphinxcontrib-github-alt churchyard
python-sphinxcontrib-htmlhelp churchyard cstratak
python-sphinxcontrib-httpdomain dcallagh
python-sphinxcontrib-jsmath churchyard cstratak
python-sphinxcontrib-log-cabinet thm
python-sphinxcontrib-qthelp churchyard cstratak
python-sphinxcontrib-serializinghtml churchyard cstratak
python-sphinxcontrib-svg2pdfconverter belegdol
python-sphinxcontrib-trio jcaratzas thm
python-sphinxcontrib-websupport churchyard jpena
python-sqlalchemy ivazquez lmacken nphilipp
python-sqlalchemy_schemadisplay mattia
python-sqlparse fale hhorak jdulaney
python-stevedore apevec dprince
python-stomper mprahl ralph
python-sure bkabrda churchyard
python-systemd mjia zbyszek
python-tables tnorth zbyszek
python-tempita kylev ricky
python-templated-dictionary msuchy
python-tempora jcaratzas radez
python-termcolor mikelo2 mrunge
python-terminado churchyard orion ttorling
python-testpath churchyard thrnciar
python-testrepository apevec mrunge
python-testscenarios apevec ktdreyer mrunge
python-testtools abompard salimma
python-text-unidecode fab
python-tidy terjeros
python-toml churchyard jujens
python-tomlkit churchyard
python-tornado abompard churchyard fab limb orion tomspur
python-towncrier eclipseo
python-tox cathay4t churchyard mrunge
python-tox-current-env churchyard pviktori
python-tqdm ignatenkobrain sgallagh
python-traitlets churchyard orion
python-traitsui chedi ignatenkobrain orion
python-transaction abompard ondrejj
python-translationstring abompard
python-trio carlwgeorge
python-trustme carlwgeorge jcaratzas
python-twisted churchyard eclipseo jsteffan tomprince
python-txws kevin ralph
python-txzmq kevin ralph
python-typing-extensions fab jonny
python-tzlocal ankursinha piotrp
python-u-msgpack-python churchyard
python-urllib3 abompard jcline sagarun
python-vcrpy kevin ralph
python-venusian lmacken ralph rossdylan tdabasin
python-vine frantisekz mrunge ngompa pingou
python-virtualenv churchyard cstratak lbalhar mhayden mrunge orion
smilner
python-waitress lgs ralph
python-wcwidth abompard aviso churchyard fale
python-webencodings abompard
python-webob hguemar lmacken mrunge ralph ricky
python-websocket-client carlwgeorge
python-webtest lmacken ondrejj ricky
python-werkzeug abompard codeblock frantisekz hguemar
python-wheel churchyard cstratak ignatenkobrain torsava
python-whoosh rkuska sgallagh
python-widgetsnbextension lbalhar
python-wrapt chandankumar ralph
python-wxpython4 swt2c
python-xmlschema churchyard
python-xmltodict fab ralph
python-xmp-toolkit qulogic
python-yarl fab ignatenkobrain
python-zbase32 anishpatil
python-zc-lockfile jcaratzas radez ralph
python-zmq ralph tomspur
python-zope-component abompard ralph tdabasin
python-zope-configuration ngompa tdabasin
python-zope-deprecation abompard tdabasin
python-zope-event abompard ralph tdabasin
python-zope-exceptions abompard ralph tdabasin
python-zope-i18nmessageid ngompa ralph tdabasin
python-zope-interface lbalhar ralph
python-zope-schema abompard ralph tdabasin
python-zope-testing abompard ralph tdabasin
python3-docs churchyard cstratak ksurma pviktori thrnciar torsava
python3-mypy dshea limb
python3-openid jdornak
python3-py3dns bojan kevin ralph
python3-pytest-asyncio jujens
python3-typed_ast limb
python3.10 churchyard cstratak thrnciar torsava vstinner
pytz limb
pyutil anishpatil
pyxattr defolos frankcrawford kevin szpak
pyxdg spot
rpkg cqi lsedlar onosek
rpm ffesti ignatenkobrain mjw packaging-team pmatilai
pmoravco vmukhame
rpmconf mjakubicek msuchy
rpmlint kevin spot tibbs tmz twoerner
rust-packaging ignatenkobrain
scipy cstratak jspaleta nforro orion tomspur ttomecek
sip rdieter than
sip5 swt2c
subunit apevec jjames
unbound aegorenk akhaitov pavlix pemensik pwouters thozza
vtk jgu mrceresa orion
waf salimma thm
Packages by maintainer:
aarem python-PyPDF2 python-more-itertools
abbot python-greenlet
abbra python-ldap
abompard fedora-messaging python-backoff python-celery python-contextlib2
python-cornice-sphinx python-cov-core python-coverage python-crochet
python-httplib2 python-mako python-mimeparse python-nose2 python-paste
python-plaster python-plaster-pastedeploy python-pylons-sphinx-themes
python-pyramid-fas-openid python-pysocks python-requests python-testtools
python-tornado python-transaction python-translationstring python-urllib3
python-wcwidth python-webencodings python-werkzeug python-zope-component
python-zope-deprecation python-zope-event python-zope-exceptions
python-zope-schema python-zope-testing
abrt-team abrt libreport
acaringi kernel-tools
adamwill python-httpbin python-pytest-httpbin
adeza python-execnet python-portend python-repoze-lru
adrienverge python-pathspec
aegorenk unbound
agerstmayr python-jsonpointer
airlied clang
akhaitov unbound
akozumpl libcomps
alexl dbus-python pycairo python-ldap
alexlan dblatex
amcnabb python-pexpect python-pymongo
amigadave dbus-python
anaconda-maint anaconda
anishpatil python-zbase32 pyutil
ankursinha python-tzlocal
apevec pyparsing python-appdirs python-boto python-editor
python-fixtures python-jsonpatch python-jsonschema python-keyring
python-memcached python-monotonic python-pbr python-prettytable
python-pymongo python-rfc3986 python-semantic_version python-six
python-stevedore python-testrepository python-testscenarios subunit
asamalik libmodulemd
athmane python-multidict python-paramiko
athoscr GitPython python-gitdb python-responses
python-setuptools_scm_git_archive python-smmap
atim python-argon2-cffi
ausil koji
aviso python-dns python-imagesize python-sphinx python-wcwidth
bcl lorax pykickstart pyparted python-astroid
python-lazy-object-proxy
belegdol python-sphinxcontrib-svg2pdfconverter
besser82 dbus-python pydot python-Bottleneck
bkabrda python-cov-core python-defusedxml python-django python-pip
python-six python-sure
bliu pdc-client
blivet-maint python-blivet
bojan python3-py3dns
bonzini ninja-build
bowlofeggs python-bleach
brouhaha python-attrs python-cffi python-cssselect python-pycparser
caillon dbus-python pycairo python-ldap
caolanm dbus-python pycairo python-ldap
carlwgeorge brotli meson ninja-build python-Automat python-asgiref
python-async-generator python-curio python-h11 python-jedi python-jwt
python-mimeparse python-outcome python-parso python-pid
python-prompt-toolkit python-service-identity python-sniffio python-trio
python-trustme python-websocket-client
cathay4t python-tox
chandankumar python-sphinxcontrib-apidoc python-wrapt
chcao pdc-client
chedi python-click-completion python-pyface python-pytest-cov
python-traitsui
cheimes python-asn1crypto python-cryptography python-ldap
python-setuptools-rust
cheng pdc-client
churchyard Cython breezy ipython linkchecker poetry pyparsing pytest
python-argcomplete python-attrs python-backcall python-certifi python-cffi
python-chardet python-defusedxml python-django python-docutils
python-elementpath python-flaky python-flit python-genty python-html5lib
python-hypothesis python-idna python-iniconfig python-ipykernel
python-jupyter-client python-jupyter-core python-markupsafe python-mccabe
python-mock python-more-itertools python-nbsphinx python-nose
python-notebook python-pathspec python-pep517 python-pip python-poetry-core
python-pycodestyle python-pycparser python-pygments python-pygments-pytest
python-pytest-expect python-requests-download python-rpm-macros
python-scripttest python-send2trash python-setuptools python-setuptools_scm
python-shellingham python-simplegeneric python-six python-sphinx
python-sphinx-epytext python-sphinx-inline-tabs python-sphinx-removed-in
python-sphinxcontrib-applehelp python-sphinxcontrib-devhelp
python-sphinxcontrib-github-alt python-sphinxcontrib-htmlhelp
python-sphinxcontrib-jsmath python-sphinxcontrib-qthelp
python-sphinxcontrib-serializinghtml python-sphinxcontrib-websupport
python-sure python-terminado python-testpath python-toml python-tomlkit
python-tornado python-tox python-tox-current-env python-traitlets
python-twisted python-u-msgpack-python python-virtualenv python-wcwidth
python-wheel python-xmlschema python3-docs python3.10
chuzhang pdc-client
cicku linkchecker ninja-build python-SecretStorage python-keyring
python-polib python-redis
clalance python-prettytable python-pycdlib
clime python-async-timeout
clockfort python-pyudev
clumens lorax pykickstart pyparted python-meh
codeblock python-Pallets-Sphinx-Themes python-fedora python-flask
python-werkzeug
cottsay python-distlib python-fields python-filelock
python-pytest-rerunfailures python-snowballstemmer
cqi rpkg
crobinso python-bugzilla
cstratak ipython numpy python-SecretStorage python-argh python-boto3
python-click python-distlib python-enchant python-freezegun python-idna
python-jaraco-envs python-matplotlib python-pymongo python-pytest-cov
python-requests python-rpm-macros python-setuptools python-setuptools_scm
python-sphinx python-sphinx-last-updated-by-git
python-sphinxcontrib-applehelp python-sphinxcontrib-htmlhelp
python-sphinxcontrib-jsmath python-sphinxcontrib-qthelp
python-sphinxcontrib-serializinghtml python-virtualenv python-wheel
python3-docs python3.10 scipy
ctubbsii python-keyring
cverna python-mako
davdunc python-botocore
daveisfera clang
dcallagh python-configobj python-fastimport python-gevent python-isodate
python-itsdangerous python-paste-deploy python-pytest-randomly
python-rdflib python-requests-kerberos python-sphinxcontrib-httpdomain
dcantrell ipython lorax pykickstart pyparted
dcavalca python-hypothesis
dcbw gobject-introspection
dchen linkchecker python-httplib2 python-polib
dciabrin python-pynacl
decathorpe python-pyrsistent
defolos pyxattr
deji mpi4py mpich openmpi
denisarnaud boost
devrim python-psycopg2 python-pyrsistent
dfateyev python-msgpack
dgoodwin GitPython
diegobz python-polib
dledford openmpi
dlehman python-blivet
dmach createrepo_c dnf dnf-plugins-core dnf-plugins-extras kobo
libcomps libdnf librepo libsolv pungi python-productmd
dmalcolm python-rdflib
dprince python-jsonpatch python-jsonpointer python-stevedore
dscott python-isodate python-rdflib
dshea lorax python-pid python-polib python-pyudev python-requests-file
python-requests-ftp python-rpmfluff python3-mypy
dustymabe cloud-init
dwalsh libselinux policycoreutils
dzickus python-bugzilla
echevemaster python-cssselect
eclipseo python-Automat python-constantly python-graphviz python-h2
python-hpack python-hyperframe python-hyperlink python-priority
python-service-identity python-towncrier python-twisted
eharney python-amqp
ekulik meson
fab asciidoc python-aiohttp python-apipkg python-async-timeout
python-billiard python-cachy python-click python-convertdate
python-dateparser python-dulwich python-ephem python-httpcore python-httpx
python-iso8601 python-kombu python-msgpack python-multidict python-pymeeus
python-pytest-aiohttp python-pytest-mock python-pytest-subtests
python-pytest-trio python-setuptools_git python-simplejson
python-text-unidecode python-tornado python-typing-extensions
python-xmltodict python-yarl
fabiand python-pexpect
fale python-boto3 python-botocore python-colorama python-configobj
python-decorator python-dict-sorted python-jmespath python-lxml
python-prompt-toolkit python-rsa python-s3transfer python-sqlparse
python-wcwidth
ffesti rpm
fkluknav gpgme
frankcrawford pyxattr
frantisekz python-amqp python-billiard python-celery python-flask
python-kombu python-vine python-werkzeug
fschwarz babel python-genshi
gerd python-anytree
gholms cloud-init python-boto python-botocore python-jmespath
goeran python-jeepney
halfie python-selenium
hguemar python-appdirs python-cornice python-dateutil python-flask
python-memcached python-monotonic python-semantic_version python-webob
python-werkzeug
hhorak python-psycopg2 python-pymongo python-sqlparse
hushan python-flask
icheishvili python-pika
ignatenkobrain Cython GitPython gpgme ipython libgit2-glib libsolv libxml2
meson ninja-build python-Traits python-aiohttp python-appdirs
python-argcomplete python-async-timeout python-betamax python-bleach
python-cheroot python-cherrypy python-colander python-dict-sorted
python-gevent python-gitdb python-greenlet python-hamcrest python-httplib2
python-hypothesis python-iniparse python-itsdangerous python-keyring
python-lxml python-mako python-multidict python-mypy_extensions
python-parameterized python-paramiko python-pexpect python-pickleshare
python-ptyprocess python-pyface python-pynacl python-pytest-capturelog
python-requests-toolbelt python-rpmfluff python-s3transfer
python-service-identity python-setuptools_scm python-simplegeneric
python-simplejson python-smartcols python-smmap python-tqdm python-traitsui
python-wheel python-yarl rpm rust-packaging
ilianaw python-iso8601
imcleod python-prettytable
isimluk gpgme
ivazquez python-paramiko python-polib python-sqlalchemy
jamatos pyparsing python-blinker
jankratochvil gdb
japokorn python-blivet
jcaratzas python-cheroot python-cherrypy python-jaraco-classes
python-jaraco-functools python-jaraco-packaging python-more-itertools
python-path python-portend python-pygments-pytest python-repoze-lru
python-requests-unixsocket python-rst-linker python-simplegeneric
python-sphinx-removed-in python-sphinx-testing python-sphinxcontrib-trio
python-tempora python-trustme python-zc-lockfile
jchaloup dblatex
jcline kernel-tools pyOpenSSL python-chardet python-cryptography
python-pika python-requests python-urllib3
jcwillia mock
jdornak python-django python-oauthlib python3-openid
jdulaney python-nose-cov python-sqlparse
jeckersb PyYAML
jfilak fros python-humanize
jforbes kernel-tools
jgreguske python-multilib
jgu python-matplotlib vtk
jhladky openmpi
jhutar python-rpmfluff
jirka python-pyroute2
jjames python-latexcodec python-pybtex python-pybtex-docutils
python-readthedocs-sphinx-ext python-sphinx-copybutton
python-sphinx-testing python-sphinx_rtd_theme python-sphinxcontrib-bibtex
subunit
jjanco automake
jkaluza python-prometheus_client
jkonecny anaconda pykickstart python-blivet python-simpleline
jlaska python-isodate python-rpmfluff
jlieskov pyOpenSSL
jluza libcomps
jmatthews python-isodate
jmlich python-psycopg2
jmontleon python-certifi python-rsa
jmracek dnf dnf-plugins-core dnf-plugins-extras libcomps libdnf libsolv
jonny python-typing-extensions
jorti python-factory-boy python-faker python-pytest-benchmark
jpena python-openstackdocstheme python-rfc3986
python-sphinxcontrib-websupport
jperrin ninja-build
jpokorny libxml2
jpopelka python-httpretty
jridky asciidoc
jrohel createrepo_c dnf libdnf libsolv
jspaleta numpy python-dateutil python-httplib2 python-matplotlib scipy
jsteffan python-twisted
jsynacek python-pycurl
jujens python-pytest-mock python-snowballstemmer
python-sphinx-theme-alabaster python-sphinx-theme-py3doc-enhanced
python-toml python3-pytest-asyncio
jussilehtola pybind11
jwakely boost
jwboyer kernel-tools
kalev glade libgit2-glib pycairo
kanarip python-pyasn1
karsten fedmod
kasal automake
kdudka file python-pycurl
keiths gdb
kevin koji pdc-client python-beanbag python-beautifulsoup4 python-chai
python-cssselect python-decorator python-editor python-freezegun
python-greenlet python-httplib2 python-hupper python-jmespath python-jwt
python-kitchen python-lockfile python-memcached python-munch
python-pylibravatar python-pyquery python-pyramid python-pyramid-mako
python-pysocks python-pytest-fixture-config python-pytest-shutil
python-pytest-virtualenv python-redis python-txws python-txzmq python-vcrpy
python3-py3dns pyxattr rpmlint
kevinb gdb
kiilerix mercurial
ksurma python-docs-theme python-markdown-it-py python-mdit-py-plugins
python-myst-parser python-nbsphinx python-notebook python3-docs
ktdreyer python-apipkg python-execnet python-msgpack python-testscenarios
kushal python-chardet python-daemon python-pandas
kylev python-mako python-paste python-paste-deploy python-simplejson
python-tempita
larsks cloud-init
laxathom python-path
lbalhar ipython marshalparser python-attrs python-cffi python-dns
python-feedgen python-idna python-ipywidgets python-jedi
python-markdown-it-py python-matplotlib-inline python-mdit-py-plugins
python-moksha-common python-moksha-hub python-myst-parser python-packaging
python-pycparser python-virtualenv python-widgetsnbextension
python-zope-interface
lgoncalv kernel-tools
lgs python-waitress
lholecek pdc-client
limb mpi4py numpy python-argon2-cffi python-astroid python-boto
python-boto3 python-botocore python-dateparser python-dateutil
python-httplib2 python-isort python-lazy-object-proxy python-s3transfer
python-scour python-tornado python3-mypy python3-typed_ast pytz
lkundrak python-anytree python-botocore python-jmespath
lmacken pyOpenSSL python-colander python-configobj python-cornice
python-coverage python-daemon python-mako python-moksha-common
python-moksha-hub python-paste-deploy python-pyramid python-simplemediawiki
python-sqlalchemy python-venusian python-webob python-webtest
louizatakk python-dns
lsedlar GitPython pdc-client pungi python-gitdb python-multilib
python-productmd python-smmap rpkg
lupinix python-astroid python-iniparse python-lazy-object-proxy
python-mistune
lvrabec policycoreutils
m4rtink anaconda pykickstart python-blivet python-meh python-pydbus
python-simpleline
mathstuf ninja-build python-atomicwrites
mattia python-sqlalchemy_schemadisplay
maxamillion pungi python-redis
mbacovsk python-scripttest
mbaldessari python-atomicwrites
mbarnes dbus-python
mblaha createrepo_c dnf dnf-plugins-core dnf-plugins-extras libcomps
libdnf python-distro
mclasen itstool
mebrown mock
mfabik python-argcomplete
mgoodwin python-jsonpointer
mgrabovs abrt libreport
mgrepl libselinux policycoreutils
mhayden cloud-init python-virtualenv
mhrivnak python-semantic_version
mikelo2 python-termcolor
mikem koji
miminar python-pillow
mizdebsk python-lxml
mjakubicek rpmconf
mjg dblatex
mjia python-systemd
mjw rpm
mmarusak abrt libreport
moezroy python-lockfile python-polib
mohanboddu python-openidc-client
mprahl python-prometheus_client python-stomper
mrceresa vtk
mrunge ipython pytest python-astroid python-beautifulsoup4
python-billiard python-bleach python-case python-celery python-cherrypy
python-colorama python-coverage python-django python-extras python-fixtures
python-jaraco-collections python-jaraco-text python-kombu
python-nose-cover3 python-nose-exclude python-pbr python-pluggy python-py
python-selenium python-simplejson python-six python-termcolor
python-testrepository python-testscenarios python-tox python-vine
python-virtualenv python-webob
msekleta python-pycurl
mskalick python-pymongo
msrb python-argcomplete
msuchy mock python-distro python-ordered-set
python-templated-dictionary rpmconf
mulhern python-pyudev
music python-pyrsistent
nacho libgit2-glib pygobject3
nathans python-jsonpointer
nbecker Cython mercurial python-cycler
ncoghlan python-pip
nforro python-m2r python-setuptools_scm_git_archive scipy
ngompa dbus-python libsolv python-billiard python-case python-celery
python-kombu python-nose-cover3 python-pika python-vine
python-zope-configuration python-zope-i18nmessageid
nonamedotc python-entrypoints python-jupyterlab_pygments python-nbclient
python-nbconvert python-nest_asyncio python-pickleshare
noodles python-cryptography
nphilipp asciidoc babel fedmod libmodulemd pdc-client python-rdflib
python-sqlalchemy
npmccallum python-asn1crypto python-cryptography
odubaj file
ondrejj python-WSGIProxy2 python-transaction python-webtest
onosek pungi rpkg
opohorel breezy python-patiencediff python-sphinx-epytext
orion numpy openmpi python-Traits python-astroid python-backcall
python-entrypoints python-gevent python-ipython_genutils python-isort
python-jupyter-core python-nbformat python-numpydoc python-pandas
python-paramiko python-process-tests python-ptyprocess python-pycodestyle
python-pyface python-sphinx-gallery python-sphinx-theme-alabaster
python-terminado python-tornado python-traitlets python-traitsui
python-virtualenv scipy vtk
otaylor gobject-introspection
otubo cloud-init
pabelanger python-fixtures
packaging-team rpm
packit libmodulemd
panovotn automake python-psycopg2
patrickt kernel-tools
paulcarroty python-argon2-cffi
pavlix python-pyroute2 unbound
pbrobinson kernel-tools
pcmoore libselinux policycoreutils
pcpa python-ipykernel python-matplotlib
pemensik unbound
pghmcfc python-fluidity-sm python-invoke python-lexicon python-paramiko
python-should_dsl python-spec
phuang dbus-python
pingou python-arrow python-bcrypt python-billiard python-case
python-celery python-chai python-contextlib2 python-hypothesis
python-kitchen python-kombu python-nose-cover3 python-rdflib python-vine
piotrp python-pretend python-sphinx_rtd_theme python-tzlocal
pjp python-billiard python-blinker python-dateutil python-html5lib
python-kombu python-msgpack
pkfed openmpi
pkratoch createrepo_c dnf dnf-plugins-core dnf-plugins-extras libcomps
libdnf librepo libsolv
plautrba libselinux policycoreutils
pmatilai rpm
pmoravco rpm
pnemade python-betamax python-cpuinfo python-requests-toolbelt
potty python-simplemediawiki
pouar brotli
ppisar libmodulemd
praiskup automake mock python-psycopg2
psavelye python-pyroute2
pspacek python-dns python-ldap
pstodulk mercurial
puiterwijk koji python-cccolutils python-openid-cla python-openid-teams
pviktori python-pep517 python-pytest-capturelog python-six
python-tox-current-env python3-docs
pwalter libgit2-glib
pwouters libpwquality pyOpenSSL python-dns unbound
qulogic python-cppy python-kiwisolver python-matplotlib python-pikepdf
python-sortedcontainers python-sphinx-issues python-xmp-toolkit
radez pytest python-cheroot python-cherrypy python-jaraco-classes
python-jaraco-functools python-jaraco-packaging python-pexpect
python-portend python-requests-unixsocket python-rst-linker python-tempora
python-zc-lockfile
ralph fedmsg pycairo python-alembic python-arrow python-beautifulsoup4
python-chai python-colander python-contextlib2 python-cssselect
python-daemon python-decorator python-dogpile-cache python-editor
python-freezegun python-jwt python-kitchen python-moksha-common
python-moksha-hub python-munch python-oauthlib python-paste-deploy
python-pylibravatar python-pyquery python-pyramid python-pyramid-mako
python-pysocks python-redis python-requests python-service-identity
python-simplemediawiki python-stomper python-txws python-txzmq python-vcrpy
python-venusian python-waitress python-webob python-wrapt python-xmltodict
python-zc-lockfile python-zmq python-zope-component python-zope-event
python-zope-exceptions python-zope-i18nmessageid python-zope-interface
python-zope-schema python-zope-testing python3-py3dns
raphgro python-SecretStorage python-amqp
rathann python-matplot
2 years, 10 months
How to track the build failure built on f35-python
by Chenxiong Qi
Hi,
I just noticed that python-social-auth-core-4.1.0-2.fc35 keeps failing
to build on f35-python. I'm wondering if there is any mechanism to
report a bug in Bugzilla automatically, or how do we usually track
such failure?
Thanks.
--
Regards,
Chenxiong Qi
2 years, 10 months
Re: [HEADS UP] Fedora 35 Python 3.10 rebuilds have started in a side
tag
by Miro Hrončok
On 07. 06. 21 19:27, Richard W.M. Jones wrote:
> On Mon, Jun 07, 2021 at 07:14:06PM +0200, Miro Hrončok wrote:
>> Hello package maintainers,
>>
>> The following packages have been rebuilt in Rawhide while the Python
>> 3.10 rebuild is still in progress:
>>
>> libnbd
>
> Ah...
>
>> Please, do not build Python packages in Rawhide unless it is time
>> sensitive. If you need to upgrade your package, wait until the
>> rebuild is over or build them in the f35-python side tag.
>
> Looks like you've rebuilt it in the side tag, so we're OK?
Yes, we are OK now, just please don't build it in rawhide again, so we don't
have to play "what build is the latest one" game :D
Thanks,
--
Miro Hrončok
--
Phone: +420777974800
IRC: mhroncok
2 years, 10 months