Haonan Hou created THRIFT-6070:
----------------------------------
Summary: Publish Python wheel distributions to PyPI
Key: THRIFT-6070
URL: https://issues.apache.org/jira/browse/THRIFT-6070
Project: Thrift
Issue Type: Improvement
Components: Python - Library
Reporter: Haonan Hou
Apache Thrift currently publishes the Python `thrift` package to PyPI as a
source distribution only. The existing PyPI workflow builds `sdist` under
`lib/py`, but does not produce wheel artifacts.
The Python package includes the optional `thrift.protocol.fastbinary` C++
extension, so simply adding `bdist_wheel` on a generic Linux runner may produce
non-portable platform wheels. The release workflow should build portable wheel
distributions for supported platforms and Python versions, while continuing to
publish the source distribution.
Related history:
- THRIFT-4911 requested publishing wheels to PyPI, but was closed as Won't Fix.
- THRIFT-5688 added PyPI publishing automation, but the workflow currently
publishes only source distributions.
- THRIFT-5955 requests manylinux aarch64 wheels specifically.
Proposed approach:
- Update `.github/workflows/pypi.yml` to build both `sdist` and wheel artifacts.
- Use `cibuildwheel` for platform wheels so Linux artifacts are built with
supported manylinux/musllinux tags.
- Keep build and publish steps separated, with PyPI publishing remaining
restricted to release publication.
- Test built wheels by importing `thrift` and `thrift.protocol.fastbinary`.
- Run package metadata validation before upload.
- Update release documentation for the Python PyPI publishing step.
Acceptance criteria:
- PyPI release artifacts include the existing source distribution and wheel
distributions.
- Linux wheels use PyPI-compatible portable platform tags.
- Wheel builds cover the Python versions currently supported by Thrift CI.
- The release workflow still publishes only from the intended release event.
- Release documentation describes the Python package publishing flow.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)