Setl (pronounced like settle) is a simple way to work with PEP 518 projects with Setuptools as the backend.
The interface is strongly influenced by Flit.
The recommended install method is pipx:
pipx install setl
Setl needs to be installed with Python 3.7 or later, but can be used to build
projects using older Python with the
Quickstart for Setuptools Veterans¶
Aside from the usual Setuptools configurations, you need to create a file
setup.py, with the following content:
[build-system] requires = ["setuptools>=43", "wheel"]
Command comparisons to Setuptools:
The main difference is how build and runtime dependencies are installed.
Traditionally Setuptools projects use
setup_requires, but that has
various problems and is
discouraged in favour of using PEP 518 to specify build time dependencies
instead. But Setuptools’s project management commands do not handle PEP 518
declarations, leaving the user to install those build dependencies manually
setup.py. Setl commands mimic pip’s build setup before calling
setup.py counterparts, so the build environment stays up-to-date.
setup.py develop installs runtime dependencies with
easy_install, instead of pip. It therefore does not respect PEP 518
declarations in those dependencies, and may even fail if one of the
dependencies does not support the “legacy mode” build process.
setl develop works around this by
pip install-ing runtime dependencies
setup.py develop --no-deps, so dependencies are installed
in the modern format.
The rest are more about providing more useful defaults. It is easy to forget
egg-info when you modify metadata, so Setl tries to be
helpful. Nowadays people almost always want to build both sdist and wheel, so
Setl does it by default. The PyPA recommends against using
so Setl bundles Twine for uploading instead. Nothing rocket science.