Brett, did you end up making progress on this? If not, would you be open to someone else picking it up?
Thanks! -- Sumana Harihareswara Changeset Consulting https://changeset.nyc On 3/5/18 1:01 PM, Brett Cannon wrote: > Thanks for the extra details, Nick! I have some documentation to read on > some projects now that I have a complete list, but once that's done I'll > come back here with my idea. ;) > > On Fri, 2 Mar 2018 at 21:50 Nick Coghlan <ncogh...@gmail.com> wrote: > >> On 3 March 2018 at 06:55, Brett Cannon <br...@python.org> wrote: >> >>> I have a project idea, but before I start it I need to make sure that I >>> have the high-order steps necessary to go from `pip install pip=9.0.1` to >>> it actually ending up on disk. Now I'm only considered with >>> modern/bleeding-edge, spec-based stuff, so PEP 517/518 and no setup.py, etc. >>> >>> Anyway, if people can point out any steps the below outline is missing I >>> would appreciate it. Thanks! >>> >>> >>> 1. Specify package requirement >>> 1. Translate name to PyPI-compatible name >>> 2. Tease out requirement details (e.g. version, markers, etc.) >>> 2. Check if package is already installed >>> >>> >> Depending on the installer design, a local download/build cache may be >> checked before checking PyPI (and since you include a caching step later, >> you'll presumably want to cover the caching step as well). >> >> >>> >>> 1. Check PyPI for package >>> 2. Choose appropriate file >>> 1. Get list of files >>> 2. Calculate best-fitting wheel >>> 3. Fallback to .tar.gz sdist >>> 3. Download file >>> 4. If sdist: >>> 1. Extract >>> 2. Read pyproject.toml >>> 3. Create venv >>> 4. Install build dependencies >>> >>> >> After installing the static build dependencies, you also need to query for >> any dynamic build dependencies and install them if they're requested: >> https://www.python.org/dev/peps/pep-0517/#get-requires-for-build-wheel >> >> This build dependency installation step can get arbitrarily complicated if >> you allow build dependencies to be installed from source, so the initial >> implementation in pip requires that build dependencies already be available >> as wheel files (either on the index server or in the local artifact cache). >> >> Cheers, >> Nick. >> >> -- >> Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia >> >