From Fedora Project Wiki


Rejected/Withdrawn: Provide pynose as a drop-in replacement for nose

This is a rejected Change proposal for Fedora Linux.
This document represents a proposed Change that has been rejected or withdrawn as part of the Changes process. This page is preserved for historical record.

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

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.x.y, 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[1], 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 simply 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: N/A
  • 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