Wiki - https://fedoraproject.org/wiki/Changes/Pytest_8
This is a proposed Change for Fedora Linux. This document represents a proposed Change. As part of the Changes process, proposals are publicly announced in order to receive community feedback. This proposal will only be implemented if approved by the Fedora Engineering Steering Committee.
== Summary ==
Update to a new upstream release of pytest that is not completely compatible with previous releases. Pytest 8 is a major upstream release removing a lot of deprecated functions and introducing breaking changes.
== Owner == * Name: [[User:thrnciar| Tomáš Hrnčiar]] * Name: [[User:churchyard| Miro Hrončok]] * Email: python-maint@redhat.com
== Detailed Description == Pytest is a popular Python framework for writing tests. The 8th major release brings various improvements. The most notable enhancements are: * The diffs that pytest prints when an assertion fails were improved. * Added the new verbosity_assertions configuration option for fine-grained control of failed assertions verbosity. * Additional support for exception groups and __notes__ * custom directory collectors * “new-style” hook wrappers are now used internally
[https://docs.pytest.org/en/stable/changelog.html#breaking-changes Breaking changes:] * PytestRemovedIn8Warning deprecation warnings are now errors by default * Several breaking changes to pytest’s collection phase, particularly around how filesystem directories and Python packages are collected, fixing deficiencies and allowing for cleanups and improvements to pytest’s internals. * Sanitized the handling of the default parameter when defining configuration options * pytest’s setup.py file is removed * warns() now re-emits unmatched warnings when the context closes – previously it would consume all warnings, hiding those that were not matched by the function * The internal FixtureManager.getfixtureclosure method has changed. Plugins which use this method or which subclass FixtureManager and overwrite that method will need to adapt to the change.
List of packages that will likely fail to build.
Maintainers by package: * cffconvert iztokf * cloud-init dustymabe gholms larsks mhayden otubo * copr-backend frostyx msuchy praiskup * copr-frontend frostyx msuchy praiskup * copr-rpmbuild frostyx praiskup * fedmsg kevin * git-up ekohl * h5py orion stevetraylen terjeros * httpie churchyard codeblock mikelo2 * ipython churchyard cstratak ignatenkobrain lbalhar mrunge salimma tomspur * jrnl music * mu churchyard kushal * pg_activity mikelo2 * python-APScheduler mmassari zuul * python-aiohttp-cors kwizart * python-alembic frantisekz * python-ase besser82 marcindulak * python-astropy orion sergiopr * python-atpublic abompard jonathanspw * python-attrs churchyard lbalhar * python-aws-sam-translator music * python-bluepyopt ankursinha * python-boto3 cstratak fale limb * python-chalice dcavalca * python-contextily qulogic * python-cssutils kevin * python-dbus-next alebastr * python-dirhash cottsay * python-django-extensions aekoroglu ngompa salimma * python-earthpy iztokf * python-ecdsa brouhaha jonathanspw orion * python-efel ankursinha * python-fastjsonschema thrnciar * python-fiona qulogic * python-fslpy ankursinha * python-geopandas qulogic * python-geoplot qulogic * python-glob2 jujens * python-graphviz eclipseo mairacanal * python-hid-parser rathann * python-ipykernel churchyard pcpa * python-ipywidgets lbalhar * python-josepy nb * python-kombu fab frantisekz mrunge ngompa pingou pjp * python-lexicon mhayden pghmcfc * python-libpysal qulogic * python-mapclassify qulogic * python-marshmallow-enum fab * python-mathics-pygments dcavalca * python-mirrors-countme asaleh nphilipp * python-mne ankursinha ignatenkobrain * python-mplcursors qulogic * python-networkx jjames plautrba * python-nibabel ankursinha ignatenkobrain * python-nikola jamatos maxamillion * python-notebook churchyard ksurma lbalhar * python-oci mhayden * python-openapi-core mattia music * python-opentelemetry mhayden music pwouters rominf * python-papermill ankursinha * python-paramiko ignatenkobrain limb orion pghmcfc sgallagh * python-parsel jonathanspw * python-pem mhayden * python-pint jcapitao lzachar mrunge * python-prettytable apevec clalance * python-pydantic gotmax23 music nikromen * python-pymeeus fab * python-pynwb lbazan * python-pysaml2 apevec * python-pytest-cases zbyszek * python-pytest-forked swt2c * python-pytest-lazy-fixture ankursinha mikelo2 * python-pytest-mpi orion * python-pytest-postgresql mikelo2 * python-pytest-relaxed jkucera * python-pytest-xdist swt2c * python-qudida thunderbirdtr * python-rasterio qulogic * python-remoto branto fsimonce jcaratzas ktdreyer * python-requests abompard cstratak jcline sagarun * python-requests-credssp fab * python-responses athoscr fschwarz salimma * python-sentry-sdk edward-evans-aiven elisre italomga nickfarrell pwouters rominf rommell * python-service-identity carlwgeorge eclipseo * python-sybil fab * python-textual jonathanspw * python-tpm2-pytss jjelen * python-trustme carlwgeorge jcaratzas * python-uranium churchyard gferon * python-uvicorn carlwgeorge * python-vine frantisekz mrunge ngompa pingou * python-virtualenv churchyard cstratak lbalhar mhayden mrunge orion * python-werkzeug abompard codeblock frantisekz hguemar tdawson * python-willow lyessaadi * rpy alexlan jamatos * scipy cstratak mmuzila nforro orion psimovec tomspur ttomecek * thefuck principis * yt-dlp gotmax23 mikelo2 * yubikey-manager gbcox orion
Packages by maintainer: * abompard python-atpublic python-requests python-werkzeug * aekoroglu python-django-extensions * alebastr python-dbus-next * alexlan rpy * ankursinha python-bluepyopt python-efel python-fslpy python-mne python-nibabel python-papermill python-pytest-lazy-fixture * apevec python-prettytable python-pysaml2 * asaleh python-mirrors-countme * athoscr python-responses * besser82 python-ase * branto python-remoto * brouhaha python-ecdsa * carlwgeorge python-service-identity python-trustme python-uvicorn * churchyard httpie ipython mu python-attrs python-ipykernel python-notebook python-uranium python-virtualenv * clalance python-prettytable * codeblock httpie python-werkzeug * cottsay python-dirhash * cstratak ipython python-boto3 python-requests python-virtualenv scipy * dcavalca python-chalice python-mathics-pygments * dustymabe cloud-init * eclipseo python-graphviz python-service-identity * edward-evans-aiven python-sentry-sdk * ekohl git-up * elisre python-sentry-sdk * fab python-kombu python-marshmallow-enum python-pymeeus python-requests-credssp python-sybil * fale python-boto3 * frantisekz python-alembic python-kombu python-vine python-werkzeug * frostyx copr-backend copr-frontend copr-rpmbuild * fschwarz python-responses * fsimonce python-remoto * gbcox yubikey-manager * gferon python-uranium * gholms cloud-init * gotmax23 python-pydantic yt-dlp * hguemar python-werkzeug * ignatenkobrain ipython python-mne python-nibabel python-paramiko * italomga python-sentry-sdk * iztokf cffconvert python-earthpy * jamatos python-nikola rpy * jcapitao python-pint * jcaratzas python-remoto python-trustme * jcline python-requests * jjames python-networkx * jjelen python-tpm2-pytss * jkucera python-pytest-relaxed * jonathanspw python-atpublic python-ecdsa python-parsel python-textual * jujens python-glob2 * kevin fedmsg python-cssutils * ksurma python-notebook * ktdreyer python-remoto * kushal mu * kwizart python-aiohttp-cors * larsks cloud-init * lbalhar ipython python-attrs python-ipywidgets python-notebook python-virtualenv * lbazan python-pynwb * limb python-boto3 python-paramiko * lyessaadi python-willow * lzachar python-pint * mairacanal python-graphviz * marcindulak python-ase * mattia python-openapi-core * maxamillion python-nikola * mhayden cloud-init python-lexicon python-oci python-opentelemetry python-pem python-virtualenv * mikelo2 httpie pg_activity python-pytest-lazy-fixture python-pytest-postgresql yt-dlp * mmassari python-APScheduler * mmuzila scipy * mrunge ipython python-kombu python-pint python-vine python-virtualenv * msuchy copr-backend copr-frontend * music jrnl python-aws-sam-translator python-openapi-core python-opentelemetry python-pydantic * nb python-josepy * nforro scipy * ngompa python-django-extensions python-kombu python-vine * nickfarrell python-sentry-sdk * nikromen python-pydantic * nphilipp python-mirrors-countme * orion h5py python-astropy python-ecdsa python-paramiko python-pytest-mpi python-virtualenv scipy yubikey-manager * otubo cloud-init * pcpa python-ipykernel * pghmcfc python-lexicon python-paramiko * pingou python-kombu python-vine * pjp python-kombu * plautrba python-networkx * praiskup copr-backend copr-frontend copr-rpmbuild * principis thefuck * psimovec scipy * pwouters python-opentelemetry python-sentry-sdk * qulogic python-contextily python-fiona python-geopandas python-geoplot python-libpysal python-mapclassify python-mplcursors python-rasterio * rathann python-hid-parser * rominf python-opentelemetry python-sentry-sdk * rommell python-sentry-sdk * sagarun python-requests * salimma ipython python-django-extensions python-responses * sergiopr python-astropy * sgallagh python-paramiko * stevetraylen h5py * swt2c python-pytest-forked python-pytest-xdist * tdawson python-werkzeug * terjeros h5py * thrnciar python-fastjsonschema * thunderbirdtr python-qudida * tomspur ipython scipy * ttomecek scipy * zbyszek python-pytest-cases * zuul python-APScheduler
== Benefit to Fedora ==
Fedora offers cutting-edge technologies for Python and pytest is one of the most important Python packages. By doing this update we bring users the latest features that pytest offers and also we enable Fedora 41 to receive future updates as well.
== Scope == * Proposal owners: update pytest to 8.x.x, provide help
* Other developers: report problems to the upstream and backport patch to the affected packages. The impact can be tested using [https://copr.fedorainfracloud.org/coprs/thrnciar/pytest/packages/ copr repository] where Pytest 8.x.x has been built. Alternatively you can open a PR to distgit and see the result in CORP - https://copr.fedorainfracloud.org/coprs/thrnciar/pytest/builds/?dirname=pyte...:<your PR number>
* Release engineering: [https://pagure.io/releng/issues #Releng issue number]
* Policies and guidelines: N/A (not needed for this Change)
* Trademark approval: N/A (not needed for this Change)
* Alignment with Objectives:
== Upgrade/compatibility impact == There is a clean upgrade path from current version to pytest 8.x.x. Fedora users using RPM-packaged Pytest will use pytest 8.x.x by default.
== How To Test == * Find the package you want to update in this [https://copr.fedorainfracloud.org/coprs/thrnciar/pytest/packages/ copr repository] and check the build logs to determine the fail cause. * Work with the upstream to resolve the issue. * When updating the package, you can test it using the same copr repository where the latest version of pytest has been built. * Let us know if something doesn't work as it should.
== User Experience == Regular distro users shouldn't notice any change in pytest behaviour, except for packages using removed functions. Such packages will fail and should be fixed by their maintainers.
== Contingency Plan == * Contingency mechanism: (What to do? Who will do it?) Proposal owners will introduce a pytest7 compatibility package. * Contingency deadline: beta freeze * Blocks release? N/A (not a System Wide Change)
== Documentation == [https://docs.pytest.org/en/stable/changelog.html Pytest changelog]
This page is the documentation.
== Release Notes ==
On 05-04-2024 23:45, Aoife Moloney wrote:
== Summary ==
Update to a new upstream release of pytest that is not completely compatible with previous releases. Pytest 8 is a major upstream release removing a lot of deprecated functions and introducing breaking changes.
I was wondering how this will pan out with the introduction of Python 3.13, which is also planned for F41 and comes with its own set of breaking changes. Some of those affecting tests.
The current test builds are run against Python 3.12. Will all Python packages also be tested against Python 3.13 with pytest 8 later on? Does that even make sense?
Anyway, it's two major updates affecting the Python ecosystem, which are both aiming at F41. Maybe letting the dust settle on Python 3.13 first and then updating pytest to the next major release will let package maintainers (and upstream) focus more. Just some food for thought.
-- Sandro
On Суб, 06 кра 2024, Sandro wrote:
On 05-04-2024 23:45, Aoife Moloney wrote:
== Summary ==
Update to a new upstream release of pytest that is not completely compatible with previous releases. Pytest 8 is a major upstream release removing a lot of deprecated functions and introducing breaking changes.
I was wondering how this will pan out with the introduction of Python 3.13, which is also planned for F41 and comes with its own set of breaking changes. Some of those affecting tests.
The current test builds are run against Python 3.12. Will all Python packages also be tested against Python 3.13 with pytest 8 later on? Does that even make sense?
Anyway, it's two major updates affecting the Python ecosystem, which are both aiming at F41. Maybe letting the dust settle on Python 3.13 first and then updating pytest to the next major release will let package maintainers (and upstream) focus more. Just some food for thought.
On top of that, I wonder how the packages were chosen. FreeIPA is missing in the test COPR at all (but freeipa-healthcheck is present). FreeIPA is also missing in the list of affected packages. We do use pytest and some of more complex pytest plugins (multihost, sourceorder), also add our own extensions.
I filed an upstream issue to track Pytest 8: https://pagure.io/freeipa/issue/9571
I got a list of all packages BuildRequiring pytest using this command:
$ repoquery --repo=rawhide{,-source} --whatrequires python3-pytest --recursive | grep src$ | pkgname | sort | uniq > packages.txt
FreeIPA is not there because pytest build time dependency is disabled via bcond.
On Mon, Apr 8, 2024 at 8:16 AM Alexander Bokovoy abokovoy@redhat.com wrote:
On Суб, 06 кра 2024, Sandro wrote:
On 05-04-2024 23:45, Aoife Moloney wrote:
== Summary ==
Update to a new upstream release of pytest that is not completely compatible with previous releases. Pytest 8 is a major upstream release removing a lot of deprecated functions and introducing breaking changes.
I was wondering how this will pan out with the introduction of Python 3.13, which is also planned for F41 and comes with its own set of breaking changes. Some of those affecting tests.
The current test builds are run against Python 3.12. Will all Python packages also be tested against Python 3.13 with pytest 8 later on? Does that even make sense?
Anyway, it's two major updates affecting the Python ecosystem, which are both aiming at F41. Maybe letting the dust settle on Python 3.13 first and then updating pytest to the next major release will let package maintainers (and upstream) focus more. Just some food for thought.
On top of that, I wonder how the packages were chosen. FreeIPA is missing in the test COPR at all (but freeipa-healthcheck is present). FreeIPA is also missing in the list of affected packages. We do use pytest and some of more complex pytest plugins (multihost, sourceorder), also add our own extensions.
I filed an upstream issue to track Pytest 8: https://pagure.io/freeipa/issue/9571
-- / Alexander Bokovoy Sr. Principal Software Engineer Security / Identity Management Engineering Red Hat Limited, Finland -- _______________________________________________ devel mailing list -- devel@lists.fedoraproject.org To unsubscribe send an email to devel-leave@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue
On Sat, Apr 6, 2024 at 12:46 PM Sandro lists@penguinpee.nl wrote:
On 05-04-2024 23:45, Aoife Moloney wrote:
== Summary ==
Update to a new upstream release of pytest that is not completely compatible with previous releases. Pytest 8 is a major upstream release removing a lot of deprecated functions and introducing breaking changes.
I was wondering how this will pan out with the introduction of Python 3.13, which is also planned for F41 and comes with its own set of breaking changes. Some of those affecting tests.
The current test builds are run against Python 3.12. Will all Python packages also be tested against Python 3.13 with pytest 8 later on? Does that even make sense?
I dug up some numbers.
1769 packages depends on pytest - 138 fails with pytest 8 and python 3.12 - 1631 builds with pytest 8 and python 3.12 - 1294 were attempted to build with python 3.13 (either succesfully or unsuccesfully) - 61 packages failed with either (python 3.13) or (python 3.12 and pytest 8) - 337 weren't attempted yet to build with python 3.13 (probably missing dependencies)
I am aware it's not ideal to test against 3.12, but right now it's our best option since a lot of packages are still missing dependencies in python 3.13 copr.
Anyway, it's two major updates affecting the Python ecosystem, which are both aiming at F41. Maybe letting the dust settle on Python 3.13 first and then updating pytest to the next major release will let package maintainers (and upstream) focus more. Just some food for thought.
The priority is to deliver python 3.13. I want to ship pytest after python 3.13 mass rebuild to avoid disruptions on that front. Until then I want to open bugzillas to notify maintainers and backport patches if available. There is also an option to introduce pytest 7 compat package in case of a high number of broken packages before Beta Freeze. We should have roughly 2 months between the end of python 3.13 mass rebuild and Beta Freeze to decide on how to proceed.
-- Sandro
devel mailing list -- devel@lists.fedoraproject.org To unsubscribe send an email to devel-leave@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue