From Fedora Project Wiki
Line 124: Line 124:


== Scope ==
== Scope ==
* Proposal owners:
* Proposal owners: Deprecate {{package|python3-mock}} and update the package description. Provide help migrating to `unittest.mock` to other packagers who ask for it.
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->


* Other developers: N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Other developers: No action needed. Don't add new dependencies on {{package|python3-mock}}. If interested, migrate existing packages to `unittest.mock` (feel free to ask for help). <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- What work do other developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
<!-- What work do other developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->


* Release engineering: [https://pagure.io/releng/issues #Releng issue number] (a check of an impact with Release Engineering is needed) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Release engineering: no impact on Release Engineering is anticipated <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- Does this feature require coordination with release engineering (e.g. changes to installer image generation or update package delivery)?  Is a mass rebuild required?  include a link to the releng issue.  
<!-- Does this feature require coordination with release engineering (e.g. changes to installer image generation or update package delivery)?  Is a mass rebuild required?  include a link to the releng issue.  
The issue is required to be filed prior to feature submission, to ensure that someone is on board to do any process development work and testing and that all changes make it into the pipeline; a bullet point in a change is not sufficient communication -->
The issue is required to be filed prior to feature submission, to ensure that someone is on board to do any process development work and testing and that all changes make it into the pipeline; a bullet point in a change is not sufficient communication -->
Line 140: Line 140:
<!-- If your Change may require trademark approval (for example, if it is a new Spin), file a ticket ( https://pagure.io/Fedora-Council/tickets/issues ) requesting trademark approval from the Fedora Council. This approval will be done via the Council's consensus-based process. -->
<!-- If your Change may require trademark approval (for example, if it is a new Spin), file a ticket ( https://pagure.io/Fedora-Council/tickets/issues ) requesting trademark approval from the Fedora Council. This approval will be done via the Council's consensus-based process. -->


* Alignment with Objectives:  
* Alignment with Objectives: N/A (not needed for this Change)
<!-- Does your proposal align with the current Fedora Objectives: https://docs.fedoraproject.org/en-US/project/objectives/ ? It's okay if it doesn't, but it's something to consider -->
<!-- Does your proposal align with the current Fedora Objectives: https://docs.fedoraproject.org/en-US/project/objectives/ ? It's okay if it doesn't, but it's something to consider -->



Revision as of 16:42, 18 January 2021


Deprecate python-mock

Summary

The python-mock (python3-mock) package will be deprecated in Fedora 34. The package is a standard library backport for older Pythons, Fedora packages should use unittest.mock instead. Many still depend on mock, so we cannot remove it yet. Packagers are encouraged to work with upstream to switch to unittest.mock when available. A simple sed can be applied in %prep as a temporary (or even permanent) downstream solution.

Owner

Current status

  • Targeted release: Fedora 34
  • Last updated: 2021-01-18
  • 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

The python-mock package is the 3rd party backport of the standard library unittest.mock module.

> mock is now part of the Python standard library, available as unittest.mock in Python 3.3 onwards. > > This package contains a rolling backport of the standard library mock code compatible with Python 3.6 and up.

Fedora has recent enough versions of Python, hence using a library backport is redundant. Many packages only use it out of habit. We'd like to encourage both downstream packages and upstreams to switch to unittest.mock instead. Eventually, we'd like to drop python-mock from Fedora entirely, if possible. Before we attempt to remove the package, we need to stop new packages to (Build)Require python3-mock, hence we want to have it deprecated.

Note hat the change owner does not currently maintain python-mock but the Python Maintenance team maintains the package in RHEL. The Fedora package maintainers have been contacted without response.

How to migrate to unittest.mock

In most cases, performing the following replacement should be enough:

s/^(\s*)import mock/\1from unittest import mock/
s/^(\s*)from mock import /\1from unittest.mock import /

If upstream really needs to support Python versions without unittest.mock, we recommend using a try-import mechanism, such as:

try:
    from unittest import mock
except ImportError:
    import mock

If dual support for unittest.mock and mock is required, and the mock package is required in the metadata (such as in the testing extras), conditionalize it, with:

mock;python_version<"3.3"

Feedback

In the past, we've managed to migrate some packages away from python-mock, without push back:

Benefit to Fedora

Eventually, we might be able to no longer maintain a standard library backport in a separate package.

Scope

  • Proposal owners: Deprecate python3-mock and update the package description. Provide help migrating to unittest.mock to other packagers who ask for it.
  • Other developers: No action needed. Don't add new dependencies on python3-mock. If interested, migrate existing packages to unittest.mock (feel free to ask for help).
  • Release engineering: no impact on Release Engineering is anticipated
  • Policies and guidelines: N/A (not a System Wide Change)
  • Trademark approval: N/A (not needed for this Change)
  • Alignment with Objectives: N/A (not needed for this Change)

Upgrade/compatibility impact

N/A (not a System Wide Change)

How To Test

N/A (not a System Wide Change)

User Experience

Dependencies

N/A (not a System Wide Change)

Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?) 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), Yes/No
  • Blocks product? product

Documentation

N/A (not a System Wide Change)

Release Notes