From Fedora Project Wiki
(Change approved by FESCo)
 
Line 64: Line 64:
-->
-->
* FESCo issue: [https://pagure.io/fesco/issue/2427 #2427]
* FESCo issue: [https://pagure.io/fesco/issue/2427 #2427]
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1854484 #1854484]
* Release notes tracker: <will be assigned by the Wrangler>
* Release notes tracker: [https://pagure.io/fedora-docs/release-notes/issue/525 #525]


== Detailed Description ==
== Detailed Description ==

Latest revision as of 14:53, 7 July 2020


Deprecate python-pytoml

Summary

The python-pytoml (python3-pytoml) package will be deprecated in Fedora 33. Pytoml is deprecated upstream in favor of toml (python-toml), but existing Fedora packages depend on it, so we cannot remove it yet. Packagers are encouraged to work with upstream to switch to python-toml, but python-pytoml remains available until it is a leaf package, it will be removed then (possibly not yet in Fedora 33).

Owner

Current status

Detailed Description

The python-pytoml package is deprecated upstream:

> The pytoml project is no longer being actively maintained. Consider using the toml package instead.

We'd like to drop it from Fedora, but several packages still require it. Before we attempt to remove the package, we need to stop new packages to (Build)Require python3-pytoml, hence we want to have it deprecated.

Packagers are encouraged to switch to python3-toml with upstream involvement. Downstream patches to switch from pytoml to toml are not encouraged.

Note that repoquery gives many packages that BuildRequire python3-toml:

$ repoquery --repo=rawhide{,-source} --whatrequires python3-pytoml
ilua-0:0.2.1-1.fc33.src
pyproject-rpm-macros-0:0-15.fc33.noarch
pyproject-rpm-macros-0:0-15.fc33.src
python-black-0:19.10~b0-3.fc33.src
python-chaospy-0:3.2.12-1.fc33.src
python-copr-0:1.102-1.fc33.src
python-decopatch-0:1.4.6-3.fc33.src
python-elementpath-0:1.4.0-4.fc33.src
python-flit-0:2.3.0-3.fc33.src
python-latexcodec-0:2.0.1-1.fc33.src
python-makefun-0:1.6.11-3.fc33.src
python-numpoly-0:0.2.3-2.fc33.src
python-openqa_client-0:4.1.0-2.fc33.src
python-pint-0:0.13-1.fc33~bootstrap.src
python-pybtex-docutils-0:0.2.2-4.fc33.src
python-pytest-cases-0:1.11.1-3.fc33.src
python-pytest-harvest-0:1.7.2-3.fc33.src
python-pytest-steps-0:1.7.2-2.fc33.src
python-readthedocs-sphinx-ext-0:2.0.0-1.fc33.src
python-requests-download-0:0.1.2-3.fc33.src
python-sphinx-copybutton-0:0.2.12-1.fc33.src
python-sphinxcontrib-bibtex-0:1.0.0-4.fc33.src
python-wikitcms-0:2.6.3-2.fc33.src
python-xmlschema-0:1.0.18-3.fc33.src
python-xmlsec-0:1.3.8-1.fc33.src
python3-flit-0:2.3.0-3.fc33.noarch
python3-flit-core-0:2.3.0-3.fc33.noarch

But many of them are only there because the dependency was generated by pyproject-rpm-macros BuildRequires generator which was since already updated to use python3-toml. When rebuilt with updated pyproject-rpm-macros, the dependency will be replaced with python3-toml.

$ repoquery --repo=rawhide{,-source} --whatrequires pyproject-rpm-macros
ansible-lint-0:4.2.0-4.fc33.src
ilua-0:0.2.1-1.fc33.src
python-PyGithub-0:1.51-2.fc33.src
python-black-0:19.10~b0-3.fc33.src
python-chaospy-0:3.2.12-1.fc33.src
python-copr-0:1.102-1.fc33.src
python-decopatch-0:1.4.6-3.fc33.src
python-elementpath-0:1.4.0-4.fc33.src
python-latexcodec-0:2.0.1-1.fc33.src
python-makefun-0:1.6.11-3.fc33.src
python-numpoly-0:0.2.3-2.fc33.src
python-openqa_client-0:4.1.0-2.fc33.src
python-pep517-0:0.7.0-4.fc33.src
python-pint-0:0.13-1.fc33~bootstrap.src
python-pybtex-docutils-0:0.2.2-4.fc33.src
python-pytest-cases-0:1.11.1-3.fc33.src
python-pytest-harvest-0:1.7.2-3.fc33.src
python-pytest-steps-0:1.7.2-2.fc33.src
python-readthedocs-sphinx-ext-0:2.0.0-1.fc33.src
python-requests-download-0:0.1.2-3.fc33.src
python-sphinx-copybutton-0:0.2.12-1.fc33.src
python-sphinxcontrib-bibtex-0:1.0.0-4.fc33.src
python-tox-current-env-0:0.0.2-5.fc33.src
python-wikitcms-0:2.6.3-2.fc33.src
python-xmlschema-0:1.0.18-3.fc33.src
python-xmlsec-0:1.3.8-1.fc33.src

The only really affected package is python-flit. Upstream already discusses the transition: https://github.com/takluyver/flit/issues/255

Once all dependencies are removed, we plan to retire python-pytoml, whether it will be in Fedora 33 or later.

Feedback

The intent was announced at https://lists.fedoraproject.org/archives/list/python-devel@lists.fedoraproject.org/message/MOAHRKMZRFNR34WHPICHCP6MR3IWY4FW/ but there was no feedback. The primary point of contact for the python-pytoml and python-toml packages is on board.

Benefit to Fedora

An upstream deprecated package will not be depended upon by new packages.

Scope

  • Proposal owners: Deprecate python3-pytoml. Work with flit upstream to make the transition as well. Once the dependency is removed from flit, rebuild remaining packages using pyproject-rpm-macros and retire python-pytoml (possibly later than Fedora 33).
  • Other developers: No action needed. Don't add new dependencies on python3-pytoml.
  • Release engineering: N/A (not a System Wide Change)
  • Policies and guidelines: N/A (not a System Wide Change)
  • Trademark approval: N/A (not needed for this Change)

Upgrade/compatibility impact

The package will remain available. Only new packages cannot depend on it. Once retired, we don't plan to provide python3-pytoml from python3-toml, because it cannot work as drop-in replacement (the Python module has a different name). The package will eventually be obsoleted by fedora-obsolete-packages once Python is updated to 3.10 to avoid broken upgrades.

How To Test

$ repoquery --repo=rawhide --provides python3-pytoml
...
deprecated()
...

User Experience

No changes.

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