Remove Python Mock Usage
Summary
python-mock
has been deprecated since Fedora 34 - 6 releases ago, but is still in use in many packages. We plan to go through the remaining usages and clean them up, with the goal of retiring python-mock
from Fedora.
Owner
- Name: Michel Lind, Maxwell G
- Email: michel @ michel-slm.name, maxwell @ gtmx.me
Current status
- Targeted release: Fedora Linux 42
- Last updated: 2024-08-26
- Announced
- Discussion thread
- FESCo issue: #3140
- Tracker bug: #2258085
- Release notes tracker: <will be assigned by the Wrangler>
Detailed Description
python-mock
has been marked as deprecated since Fedora 34, but many packages are still using it
Binary packages from 16 source packages require python3-mock
$ fedrq whatrequires python3-mock -b rawhide -F source --notsrc | wc -l 16 $ repoquery -q --repo=rawhide{,-source} --whatrequires python3-mock | grep -v src$ | wc -l 16 $ repoquery -q --repo=rawhide --whatrequires python3-mock --source | wc -l 16
124 source packages require python3-mock
$ fedrq whatrequires python3-mock -b rawhide -F source --src | wc -l 124 $ repoquery -q --repo=rawhide{,-source} --whatrequires python3-mock | grep src$ | wc -l 124
For a combined 134 packages
$ fedrq whatrequires python3-mock -b rawhide -F source | wc -l 134 $ (repoquery -q --repo=rawhide{,-source} --whatrequires python3-mock | grep src$; repoquery -q --repo=rawhide --whatrequires python3-mock --source) | pkgname | sort | uniq | wc -l 134
Some of these are false positives - packages not using dynamic build requirements might still be marked as requiring python-mock
after upstream no longer does so. The rest should be easily portable as described in the previous proposal.
Some packages could be dead upstream and not used by anything else in Fedora, in which case we can consider removing them.
Feedback
Benefit to Fedora
Eventually, we might be able to no longer maintain a standard library backport in a separate package.
This will also make branching packages for EPEL easier - there have been several instances where the Fedora package needs to be modified to not use python-mock
because of a policy decision to not bring python-mock
into newer EPEL releases (where the default Python already contains unittest.mock
).
Scope
- Proposal owners:
- Set up a COPR with a stub package providing
python3-mock
and rebuild all packages that list python3-mock as a BR. The ones that successfully build don't actually need it - Put up PRs for the affected packages. In case the changes are minimal and no response is heard from the package maintainers the PRs will be merged after a sufficient time.
- Set up a second COPR to rebuild packages with the PRs applied to remove
python3-mock
. This will allow us to track progress in one place
- Set up a COPR with a stub package providing
- Other developers:
Package maintainers should review and merge any PRs filed against their packages, and if necessary forward the patches upstream (e.g. by filing upstream PRs).
- Release engineering: N/A (not needed for this Change)
- Policies and guidelines: N/A (not needed for this Change)
- Trademark approval: N/A (not needed for this Change)
- Alignment with Community Initiatives:
Not specifically, but this is in line with Fedora's "First" Foundation
Upgrade/compatibility impact
N/A
How To Test
Package owners who receive a PR should be able to verify that the CI passes on the PR, and alternatively they can check the provided COPRs
User Experience
No changes
Dependencies
N/A
Contingency Plan
- Contingency mechanism: defer retiring
python-mock
for another cycle - Contingency deadline: Final Freeze
- Blocks release? No
Documentation
The previous howto on migrating to unittest.mock still applies.
Upstream unittest.mock documentation