From Fedora Project Wiki

Pytest 8

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


Current status

  • Targeted release: Fedora Linux 41
  • Last updated: 2024-03-27
  • FESCo issue:
  • Tracker bug:
  • Release notes tracker:

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

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:

  • awscli2 davdunc nforro
  • cffconvert iztokf
  • clamav gnat mstevens nb orion pwouters robert sergiomb steve
  • cloud-init dustymabe gholms larsks mhayden otubo
  • conda-build orion
  • container-workflow-tool orphan
  • copr-backend 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
  • micropipenv lbalhar
  • mu churchyard kushal
  • pg_activity mikelo2
  • pyinstrument zbyszek
  • pyp2rpm gordonmessmer kevin
  • python-aiohttp-cors kwizart
  • python-alembic frantisekz
  • python-ansible-compat chedi gotmax23 kevin
  • python-ase besser82 marcindulak
  • python-astroML sergiopr
  • python-astropy orion sergiopr
  • python-atpublic abompard jonathanspw
  • python-attrs churchyard lbalhar
  • python-aws-sam-translator music
  • python-bluepyopt ankursinha
  • python-cssutils kevin
  • python-curio carlwgeorge
  • python-dbus-next alebastr
  • python-dirhash cottsay
  • python-django-extensions aekoroglu ngompa salimma
  • python-ecdsa brouhaha jonathanspw orion
  • python-efel ankursinha
  • python-fastjsonschema thrnciar
  • python-flaky churchyard
  • python-flask-whooshee msuchy
  • python-fslpy ankursinha
  • python-glob2 jujens
  • python-graphviz eclipseo mairacanal
  • python-hid-parser rathann
  • python-ipykernel churchyard pcpa
  • python-ipywidgets lbalhar
  • python-jupyter-client churchyard tomspur
  • python-jupyter-console qulogic
  • python-jupyter-server lbalhar
  • python-kombu fab frantisekz mrunge ngompa pingou pjp
  • python-lexicon mhayden pghmcfc
  • python-lsp-server gui1ty jonathanspw
  • python-marshmallow-enum fab
  • python-mathics-pygments dcavalca
  • python-mirrors-countme asaleh nphilipp
  • python-mne ankursinha ignatenkobrain
  • python-mplcairo qulogic
  • python-mplcursors qulogic
  • python-nbconvert churchyard jonathanspw lbalhar
  • python-nibabel ankursinha ignatenkobrain
  • python-nikola jamatos maxamillion
  • python-notebook churchyard ksurma lbalhar
  • python-openapi-core mattia music
  • python-opentelemetry mhayden music pwouters rominf
  • python-pandas jonathanspw orion sergiopr
  • python-papermill ankursinha
  • python-paramiko ignatenkobrain limb orion pghmcfc sgallagh
  • python-parsel jonathanspw
  • python-photutils sergiopr
  • python-pint jcapitao lzachar mrunge
  • python-prettytable apevec clalance
  • python-primecountpy jjames
  • python-pycurl jamacku kdudka lzaoral msekleta svashisht
  • python-pydantic gotmax23 music nikromen
  • python-pyerfa sergiopr
  • python-pymeeus fab
  • python-pynetdicom alciregi
  • python-pytest-bdd music
  • python-pytest-cases zbyszek
  • python-pytest-cython jjames
  • python-pytest-forked swt2c
  • python-pytest-lazy-fixture ankursinha mikelo2
  • python-pytest-mpi orion
  • python-pytest-postgresql mikelo2
  • python-pytest-relaxed jkucera
  • python-pyvo sergiopr
  • python-qtsass jonathanspw music
  • python-remoto branto fsimonce jcaratzas ktdreyer
  • python-requests abompard cstratak jcline sagarun
  • python-responses athoscr fschwarz salimma
  • python-sentry-sdk edward-evans-aiven elisre italomga nickfarrell pwouters rominf rommell
  • python-snakemake-executor-plugin-cluster-generic music
  • python-snakemake-executor-plugin-cluster-sync music
  • python-sybil fab
  • python-textual jonathanspw
  • python-tox cathay4t churchyard mrunge
  • python-uranium churchyard gferon
  • python-uvicorn carlwgeorge
  • python-vine frantisekz mrunge ngompa pingou
  • python-virtualenv churchyard cstratak lbalhar mhayden mrunge orion
  • python-watchfiles carlwgeorge
  • python-werkzeug abompard codeblock frantisekz hguemar tdawson
  • rpy alexlan jamatos
  • scipy cstratak mmuzila nforro orion psimovec tomspur ttomecek
  • thefuck principis

Packages by maintainer:

  • abompard python-atpublic python-requests python-werkzeug
  • aekoroglu python-django-extensions
  • alciregi python-pynetdicom
  • 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
  • asaleh python-mirrors-countme
  • athoscr python-responses
  • besser82 python-ase
  • branto python-remoto
  • brouhaha python-ecdsa
  • carlwgeorge python-curio python-uvicorn python-watchfiles
  • cathay4t python-tox
  • chedi python-ansible-compat
  • churchyard httpie ipython mu python-attrs python-flaky python-ipykernel python-jupyter-client python-nbconvert python-notebook python-tox python-uranium python-virtualenv
  • clalance python-prettytable
  • codeblock httpie python-werkzeug
  • cottsay python-dirhash
  • cstratak ipython python-requests python-virtualenv scipy
  • davdunc awscli2
  • dcavalca python-mathics-pygments
  • dustymabe cloud-init
  • eclipseo python-graphviz
  • edward-evans-aiven python-sentry-sdk
  • ekohl git-up
  • elisre python-sentry-sdk
  • fab python-kombu python-marshmallow-enum python-pymeeus python-sybil
  • frantisekz python-alembic python-kombu python-vine python-werkzeug
  • frostyx copr-backend copr-rpmbuild
  • fschwarz python-responses
  • fsimonce python-remoto
  • gferon python-uranium
  • gholms cloud-init
  • gnat clamav
  • gordonmessmer pyp2rpm
  • gotmax23 python-ansible-compat python-pydantic
  • gui1ty python-lsp-server
  • hguemar python-werkzeug
  • ignatenkobrain ipython python-mne python-nibabel python-paramiko
  • italomga python-sentry-sdk
  • iztokf cffconvert
  • jamacku python-pycurl
  • jamatos python-nikola rpy
  • jcapitao python-pint
  • jcaratzas python-remoto
  • jcline python-requests
  • jjames python-primecountpy python-pytest-cython
  • jkucera python-pytest-relaxed
  • jonathanspw python-atpublic python-ecdsa python-lsp-server python-nbconvert python-pandas python-parsel python-qtsass python-textual
  • jujens python-glob2
  • kdudka python-pycurl
  • kevin fedmsg pyp2rpm python-ansible-compat python-cssutils
  • ksurma python-notebook
  • ktdreyer python-remoto
  • kushal mu
  • kwizart python-aiohttp-cors
  • larsks cloud-init
  • lbalhar ipython micropipenv python-attrs python-ipywidgets python-jupyter-server python-nbconvert python-notebook python-virtualenv
  • limb python-paramiko
  • lzachar python-pint
  • lzaoral python-pycurl
  • mairacanal python-graphviz
  • marcindulak python-ase
  • mattia python-openapi-core
  • maxamillion python-nikola
  • mhayden cloud-init python-lexicon python-opentelemetry python-virtualenv
  • mikelo2 httpie pg_activity python-pytest-lazy-fixture python-pytest-postgresql
  • mmuzila scipy
  • mrunge ipython python-kombu python-pint python-tox python-vine python-virtualenv
  • msekleta python-pycurl
  • mstevens clamav
  • msuchy copr-backend python-flask-whooshee
  • music jrnl python-aws-sam-translator python-openapi-core python-opentelemetry python-pydantic python-pytest-bdd python-qtsass python-snakemake-executor-plugin-cluster-generic python-snakemake-executor-plugin-cluster-sync
  • nb clamav
  • nforro awscli2 scipy
  • ngompa python-django-extensions python-kombu python-vine
  • nickfarrell python-sentry-sdk
  • nikromen python-pydantic
  • nphilipp python-mirrors-countme
  • orion clamav conda-build h5py python-astropy python-ecdsa python-pandas python-paramiko python-pytest-mpi python-virtualenv scipy
  • orphan container-workflow-tool
  • otubo cloud-init
  • pcpa python-ipykernel
  • pghmcfc python-lexicon python-paramiko
  • pingou python-kombu python-vine
  • pjp python-kombu
  • praiskup copr-backend copr-rpmbuild
  • principis thefuck
  • psimovec scipy
  • pwouters clamav python-opentelemetry python-sentry-sdk
  • qulogic python-jupyter-console python-mplcairo python-mplcursors
  • rathann python-hid-parser
  • robert clamav
  • rominf python-opentelemetry python-sentry-sdk
  • rommell python-sentry-sdk
  • sagarun python-requests
  • salimma ipython python-django-extensions python-responses
  • sergiomb clamav
  • sergiopr python-astroML python-astropy python-pandas python-photutils python-pyerfa python-pyvo
  • sgallagh python-paramiko
  • steve clamav
  • stevetraylen h5py
  • svashisht python-pycurl
  • swt2c python-pytest-forked
  • tdawson python-werkzeug
  • terjeros h5py
  • thrnciar python-fastjsonschema
  • tomspur ipython python-jupyter-client scipy
  • ttomecek scipy
  • zbyszek pyinstrument python-pytest-cases

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
  • 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 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?) N/A (not a System Wide Change)
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? N/A (not a System Wide Change)

Documentation

Pytest changelog

This page is the documentation.

Release Notes