apache / apache/paimon

[Feature] Migrate PyPaimon packaging to pyproject.toml

Open
#8,049 0 comments 0 reactions 0 assignees View on GitHub
enhancement
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.