Packaging tool for PEP 518 projects with Setuptools backend.
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 --python option.
Quickstart for Setuptools Veterans
Aside from the usual Setuptools configurations, you need to create a file pyproject.toml beside setup.py, with the following content:
[build-system] requires = ["setuptools>=43", "wheel"]
Command comparisons to Setuptools:
|setl develop||setup.py develop|
|setl build||setup.py egg_info build|
setup.py egg_info build sdist bdist_wheel
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 before using setup.py. Setl commands mimic pip’s build setup before calling their setup.py counterparts, so the build environment stays up-to-date.
Similarly, 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 before calling 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 to re-build 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 setup.py upload, so Setl bundles Twine for uploading instead. Nothing rocket science.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size setl-0.10.0-py2.py3-none-any.whl (18.9 kB)||File type Wheel||Python version py2.py3||Upload date||Hashes View|
|Filename, size setl-0.10.0.tar.gz (15.4 kB)||File type Source||Python version None||Upload date||Hashes View|
Hashes for setl-0.10.0-py2.py3-none-any.whl