[Feature] Migrate PyPaimon packaging to pyproject.toml
- Dominant language
- Java
- Stars
- 3.4k
- Forks
- 1.4k
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 396
Description
### Search before asking
- [x] I searched in the [issues](https://github.com/apache/paimon/issues) and found nothing similar.
### Motivation
PyPaimon still keeps most packaging metadata in `setup.py`. Moving the static metadata to `pyproject.toml` would make the packaging configuration easier to maintain, and it also follows the recommended Python packaging standard.
### Solution
Use `setuptools` as the build backend with `pyproject.toml`.
Although `uv` is very popular, it is still a third-party tool. Keeping `setuptools` as the backend gives us more flexibility, and users or developers can still use `uv` to install PyPaimon.
One thing to decide is the Python version requirement. PyPaimon currently declares `python_requires=">=3.6"`, but Python 3.6 reached EOL on 2021-12-23. If we still need to support Python 3.6, the last compatible `setuptools` versions have limited `pyproject.toml` metadata support, so we may only be able to move part of the metadata and keep the rest in `setup.py`.
I think we can raise the minimum Python version to 3.7 and migrate the packaging metadata to `pyproject.toml` more cleanly.
### Anything else?
_No response_
### Are you willing to submit a PR?
- [x] I'm willing to submit a PR!
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with PyPaimon's existing setup.py and identify the static metadata and current Python version requirement. Then review the proposed setuptools configuration in pyproject.toml, resolve whether Python 3.6 or 3.7 is supported, and verify that packaging and installation still work with the chosen metadata layout.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- build-system
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100