From Fedora Project Wiki
m (Remove info boxes)
m (Remove Miro from owners)
 
Line 10: Line 10:
== Owner ==
== Owner ==
* Name: [https://fedoraproject.org/wiki/User:gui1ty Sandro]
* Name: [https://fedoraproject.org/wiki/User:gui1ty Sandro]
* Name: [https://fedoraproject.org/wiki/User:churchyard Miro Hrončok]
* Email: gui1ty@penguinpee.nl
* Email: gui1ty@penguinpee.nl



Latest revision as of 13:29, 25 April 2024


Provide pynose as a drop-in replacement for nose

Important.png
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

Package python-nose was deprecated in Fedora 32. It’s official successor, nose2 does not provide all the functionality of nose. However, pynose does and thus can be used as a drop-in replacement for nose allowing us to retire python-nose.

Owner

  • Name: Sandro
  • Email: gui1ty@penguinpee.nl


Current status

  • Targeted release: Fedora Linux 41
  • Last updated: 2024-04-25
  • [<will be assigned by the Wrangler> devel thread]
  • FESCo issue: <will be assigned by the Wrangler>
  • Tracker bug: <will be assigned by the Wrangler>
  • Release notes tracker: <will be assigned by the Wrangler>

Detailed Description

Feedback

There are still a few (~70) packages in Fedora depending on deprecated python3-nose for their tests. Other packages have been switched to python3-pytest when nose was deprecated or migrated to python3-pynose2. As efforts are underway to upgrade python3-pytest to version 8, it turns out this version no longer supports running nose setup/teardown functions/methods, thereby breaking packages that still rely on those functionality.

Since pynose is using the same namespace as deprecated nose, with a minor hack, the package can be modified to provide a proper replacement for python3-nose with regards to the RPM as well as the Python metadata. Pynose also provides the same set of executables. So packages still running nosetests will be able to switch seemlessly to python3-pynose in most cases.

Packagers can also decide to switch their packages manually by simple changing to python3-pynose, which is currently available in rawhide.

Benefit to Fedora

Providing pynose as a drop-in replacement for nose will allow us to retire long deprecated python-nose without forcing any packages still depending on it to go look for an alternative or be retired. It will also assist in the efforts of upgrading pytest to version 8 by allowing packages that still rely on nose setup/teardown functions/methods to switch back to nosetests provided by pynose.

Scope

  • Proposal owners:

Provide python3-pynose as a drop-in replacement for python3-nose; provide PRs for packages that need adaption; provide help

  • Other developers:

Manually switch to depending on python3-pynose if desired; switch back to nostests if adapting to pytest 8 proves difficult

  • Release engineering:
  • Policies and guidelines: N/A (not needed for this Change)
  • Trademark approval: N/A (not needed for this Change)
  • Alignment with Community Initiatives:

Upgrade/compatibility impact

Transitioning from nose to pynose will happen behind the secenes. Packages now depending on python3-nose or python3dist(nose) will have that dependency satisfied by python3-pynose instead of python3-nose. Where packages need to be adapted, PRs will be provided to make them work with pynose.


How To Test

Packagers can test their package using the Copr repo.

  1. copr mock-config gui1ty/pynose-nose fedora-rawhide-x86_64 > ~/.config/mock/pynose-nose-rawhide.cfg
  2. fedpkg --release rawhide mockbuild --root pynose-nose-rawhide

Let us know if you need help.


Dependencies

Packages currently build requiring python3-nose:

  • binwalk
  • bmap-tools
  • hgsvn
  • mod_nss
  • nova-agent
  • odcs
  • openms
  • ProDy
  • pydot
  • pytest
  • python-agate
  • python-agate-dbf
  • python-agate-excel
  • python-agate-sql
  • python-anyjson
  • python-axolotl
  • python-behave
  • python-binstruct
  • python-blessings
  • python-boto
  • python-case
  • python-colorspacious
  • python-curtsies
  • python-deap
  • python-epc
  • python-etcd
  • python-eyed3
  • python-fedmsg-meta-fedora-infrastructure
  • python-flask-xml-rpc
  • python-fluidity-sm
  • python-gensim
  • python-hglib
  • python-http-ece
  • python-httpretty
  • python-ifcfg
  • python-inflect
  • python-ipmi
  • python-iptools
  • python-ipython_genutils
  • python-jenkins
  • python-leather
  • python-mapnik
  • python-migrate
  • python-moksha-common
  • python-moksha-hub
  • python-musicbrainzngs
  • python-neurosynth
  • python-nitime
  • python-ofxparse
  • python-ordered-set
  • python-pycdio
  • python-pygatt
  • python-pygeoip
  • python-pypillowfight
  • python-pyramid-tm
  • python-pytest-mpl
  • python-pytimeparse
  • python-queuelib
  • python-rows
  • python-sievelib
  • python-simplebayes
  • python-spec
  • python-spur
  • python-statsd
  • python-stomper
  • python-supersmoother
  • python-tilestache
  • python-www-authenticate
  • python-xvfbwrapper
  • vigra


Contingency Plan

  • Contingency mechanism: 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

pynose README and above

Release Notes