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)

Reply via email to