flit adapter for the current sdist format

OK, so I wanted to see what it would take to create current-format sdists, defined as anything that has a setup.py that pip can install by running said setup.py. The following script takes a flit package (in the current directory and builds a pip-installable sdist. Tested against https://github.com/pohmelie/aioftp https://gist.github.com/dholth/e17f243085dcc539813f The first script is the archiver and the second script is the setup.py embedded into the sdist by the archiver. The embedded setup.py does an isolated install of flit into the setup-requires directory, if required, and uses flit to implement bdist_wheel. The trick is that the only thing pip really needs from egg_info is the current requirements, easily generated from wheel-style .dist-info. It might need slightly more metadata to pass on pypi and the argument handling is inflexible, but it demonstrates most of what would be required for a backwards compatible shim. If our new sdist format is an even easier way to adapt new build systems than writing this trivial setup.py shim, then we might have something.

Thanks Daniel, that's interesting to see. For flit, I don't see a major benefit in generating sdists - for pure Python packages, universal wheels are simpler and install quicker. I'd really like to improve installing directly from a source tree, such as a VCS checkout. To do that, any adapter would need to be checked into every project using flit, so it's important to me that it be as small and simple as possible. This was a key feature of Nathaniel's proposal for me: it would let 'pip install .' work with just a few lines of straightforward config. Best wishes, Thomas On 29 October 2015 at 02:51, Daniel Holth <dholth@gmail.com> wrote:
OK, so I wanted to see what it would take to create current-format sdists, defined as anything that has a setup.py that pip can install by running said setup.py. The following script takes a flit package (in the current directory and builds a pip-installable sdist. Tested against https://github.com/pohmelie/aioftp
https://gist.github.com/dholth/e17f243085dcc539813f
The first script is the archiver and the second script is the setup.py embedded into the sdist by the archiver. The embedded setup.py does an isolated install of flit into the setup-requires directory, if required, and uses flit to implement bdist_wheel. The trick is that the only thing pip really needs from egg_info is the current requirements, easily generated from wheel-style .dist-info.
It might need slightly more metadata to pass on pypi and the argument handling is inflexible, but it demonstrates most of what would be required for a backwards compatible shim.
If our new sdist format is an even easier way to adapt new build systems than writing this trivial setup.py shim, then we might have something.
participants (2)
-
Daniel Holth
-
Thomas Kluyver