Skip to main content

Packaging tool for PEP 518 projects with Setuptools backend.

Project description

Travis CI Status Documentation Status

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.

Install

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. An empty file is good enough.

Command comparisons to Setuptools:

Setl

Setuptools approximation

setl develop

setup.py develop

setl build

setup.py egg_info build

setl dist

setup.py egg_info build sdist bdist_wheel

setl publish

setup.py egg_info build sdist bdist_wheel
twine upload

But Why?

The main difference is how build and runtime dependencies are installed.

Traditionally Setuptools projects use setup_requires, but that has various problems (e.g. fetch the dependencies as eggs) so pip discourages its usage, and advices 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 re-building 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 it. Nothing rocket science.

Next Steps

  • Read the documentation for detailed command descriptions and inner workings.

  • View the source and help contribute to the project.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

setl-0.8.5.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

setl-0.8.5-py2.py3-none-any.whl (18.6 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file setl-0.8.5.tar.gz.

File metadata

  • Download URL: setl-0.8.5.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.8.0

File hashes

Hashes for setl-0.8.5.tar.gz
Algorithm Hash digest
SHA256 a305a77ecedb5affc1f49bbb4f0a3d3a382399f2227444920caf809af89848d7
MD5 6a9c1dccbc0c3a379e49963c475b2dc0
BLAKE2b-256 df7accb4e8cdeac111d91dfa251dc881c3386f33225bc7fc27918d7829d0fd16

See more details on using hashes here.

Provenance

File details

Details for the file setl-0.8.5-py2.py3-none-any.whl.

File metadata

  • Download URL: setl-0.8.5-py2.py3-none-any.whl
  • Upload date:
  • Size: 18.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.8.0

File hashes

Hashes for setl-0.8.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 45c7ef74b5df6e143801cbe716344b504cde3da6a0f51cfe30e799e9d16047c4
MD5 48af5d44980fb6d2ff5eb4b44ebf3cce
BLAKE2b-256 0985c6aa4227b6d48afca0b6667d9f32a2d40bffdf220de4777be0ccf6471d2d

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page