Rejected/Withdrawn: Provide pynose as a drop-in replacement for nose
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-07-19
- Announced
- discussion thread
- FESCo issue: #3234
- 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.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.
copr mock-config gui1ty/pynose-nose fedora-rawhide-x86_64 > ~/.config/mock/pynose-nose-rawhide.cfg
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