I suppose I could use my experience to give some #PEP517 build system recommendations.

For pure #Python packages:

1. #flit_core (https://pypi.org/project/flit-core/) β€” it's lightweight and simple, and has no dependencies (in modern Python versions, for older Pythons it vendors tomli).

2. #hatchling (https://pypi.org/project/hatchling/) β€” it's popular and quite powerful, but has many vendored dependencies and no stand-alone test suite (which makes it painful to maintain in #Gentoo).

For Python packages with C extensions: #meson-python (https://pypi.org/project/meson-python/) β€” which combines the power and correctness of meson build system with good very Python integration.

For Python packages with Rust extensions: #maturin (https://pypi.org/project/maturin/) β€” which is simply a good builder for precisely that kind of packages.

Now, I strongly discourage:

A. #setuptools β€” lots of vendored NIH dependencies (that can alternatively be unvendored for cyclic deps), lots of deprecations over time (we're still seeing tons of deprecation warnings all over the place), many unsolved bugs (e.g. parallel C extension builds are broken in a few ways), a lot of technical debt, and if all that wasn't enough, it's slow.

B. #poetry-core β€” a very tricky build system with lots of pitfalls (I've reported a lot of mistakes done when migrating to it).

C. Practically any other build system β€” writing new backends is trivial, so everyone and their grandmother must have one. And then, they often carry a lot of NIH dependencies (if you're reinventing a build system, you may reinvent everything else), lack experience and reintroduce the same bugs. And if that wasn't enough, packaging them in distributions is a lot of work for no real benefit to anyone.

flit-core

Distribution-building parts of Flit. See flit package for more information

PyPI
@mgorny lots of matches with my "choosing a pep517 backend" block diagram, maybe because it's also based on your advice  
https://wetdry.world/@cybertailor/112358933306122998
:neocat__w: kbity... (@[email protected])

Attached: 1 image My take on choosing a #PEP517 build backend for your project #Python

Wet-Dry World
@cybertailor, except for the setuptools part xP.
@mgorny yes, since Meson got support for Cython