So I got galaxy-brained by a feature request on pip’s issue tracker, and tried to fill that gap between Setuptools and PEP 518. The end result:
Some summaries and random thoughts:
- Build commands uses an isolated environment, like how pip implements PEP 517, but instead of being one-off, the environment is persisted in
build/.isoenvsand reused for each call.
setl developis a proxy call to
setup.py developagainst the build env, and with run-time requirements installed with
pip(instead of easy install). This ties back to the discussions in Specification of editable installation.
setl buildis a proxy call to
setup.py build(and other various
build_*calls). This might be a good place to get an understanding for Drawing a line to the scope of Python packaging, where we want to get an idea what a PEP 518 backend needs for incremental builds.
setl distuses PEP 517 hooks to build the sdist and wheel (but again reusing the persisted isolated environments).
setl publishis a proxy to Twine.
I tested it on some internal packages (including extension ones), and everything seems to work okay (with many rough edges in UI). I’m sure there are a lot of edge cases I failed to cover though, any feedback would be awesome.