F41 Change Proposal: Replace Nose With Pynose (self-contained)

:link: Provide pynose as a drop-in replacement for nose

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.


:link: 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.

:link: Owner

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

:link: Detailed Description

:link: 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.

:link: 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.

:link: 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:

:link: 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.

:link: 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.

:link: 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

:link: 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)

:link: Documentation

pynose README and above

:link: Release Notes

nose metadata hack

Last edited by @amoloney 2024-06-16T16:36:50Z

How do you feel about the proposal as written?

  • Strongly in favor
  • In favor, with reservations
  • Neutral
  • Opposed, but could be convinced
  • Strongly opposed
0 voters

If you are in favor but have reservations, or are opposed but something could change your mind, please explain in a reply.

We want everyone to be heard, but many posts repeating the same thing actually makes that harder. If you have something new to say, please say it. If, instead, you find someone has already covered what you’d like to express, please simply giving that post a :heart: instead of reiterating. You can even do this by email, by replying with the heart emoji or just “+1”. This will make long topics easier to follow.

Please note that this is an advisory “straw poll” meant to gauge sentiment. It isn’t a vote or a scientific survey. See About the Change Proposals category for more about the Change Process and moderation policy.

Removed f32

I am all in favor of packaging this into Fedora, but I don’t think we should pretend it is nose (with the metadata hack and/or RPM provides).

Upstream that wants to can use this explicitly.

Downstream packagers can modify their packages to use this explicitly.

If we pretend this is nose, we keep kicking dead packages around.

My biggest concern with this package is that it has no tests. The only problem with nose over the last couple of years was its own tests failing with newer Pythons. We can delete the tests of nose and carry it until it breaks completely instead with less effort.

Another problem with pynose is that it has questionably relicensed the nose code form LGPL to MIT.

This change proposal has now been submitted to FESCo with ticket #3234 for voting.

To find out more, please visit our Changes Policy documentation.

1 Like

This change has been rejected by FESCo and will not be included in Fedora Linux 41.

To find out more about how our changes policy works, please visit our docs site.

1 Like