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
>>
> 

Reply via email to