Based on no one speaking up, I'm assuming I wasn't wrong with my outline. 
;) That looks like there may be one PEP to write and a few things to add to 
'packaging' (or other projects as appropriate).

On Monday, 19 March 2018 19:39:43 UTC-7, Brett Cannon wrote:
>
> With the big push we are all working towards standards, I thought it would 
> be interesting to outline the steps it takes to go from requesting a 
> package to be installed to it ending up on disk (see my first email on 
> such an outline 
> <https://groups.google.com/forum/#!msg/pypa-dev/P_UbPhETvjg/adFwjujjCwAJ;context-place=forum/pypa-dev>).
>  
> After getting feedback on that outline, I then decided to try and pair each 
> complicated step of that outline with the PEP and a library that 
> essentially implements that step. I'm doing this to see where there might 
> be a missing PEP and where that are missing library implementations of a 
> specific PEP.
>
> I've ended up with some holes on both the PEP and library side, so I'm 
> hoping that either I'm overlooking something or that I've at least 
> identified a place where some help might be appreciated by people.
>
>
>    1. Specify package requirement (PEP 508 
>    <https://www.python.org/dev/peps/pep-0508/>/packaging 
>    <https://packaging.pypa.io/>)
>       1. Translate name to PyPI-compatible name
>       2. Tease out requirement details (e.g. version, markers, etc.)
>    2. Check if package is already installed (PEP 376 
>    <https://www.python.org/dev/peps/pep-0376/>/XXX)
>    3. Check wheel cache (XXX/XXX)
>    4. Check PyPI for package
>    5. Choose appropriate file
>       1. Get list of files (PEP 503 
>       <https://www.python.org/dev/peps/pep-0503/>/_)
>       2. Calculate best-fitting wheel (PEPs 425 
>       <https://www.python.org/dev/peps/pep-0425/> & 427 
>       <https://www.python.org/dev/peps/pep-0427/>/XXX)
>       3. Fallback to .tar.gz sdist if necessary & available
>    6. Download file
>    7. If sdist:
>       1. Extract
>       2. Read pyproject.toml (PEP 518/XXX)
>       3. Create venv
>       4. Install build dependencies
>          1. Static (PEP 518 <https://www.python.org/dev/peps/pep-0518/>/_)
>          2. Dynamic (PEP 517 <https://www.python.org/dev/peps/pep-0517/>
>          /XXX)
>       5. Build wheel (PEP 517 <https://www.python.org/dev/peps/pep-0517/>
>       /XXX)
>    8. Cache wheel (XXX/XXX)
>    9. Get dependency requirements of the wheel (PEP 566 
>    <https://packaging.python.org/specifications/core-metadata/>/XXX)
>    10. Check if dependencies are already installed (like step 2)
>    11. Install missing dependencies (like step 12 below)
>    12. Install wheel (PEP 427 <https://www.python.org/dev/peps/pep-0427/>
>    /XXX)
>       1. To appropriate location (e.g. user, venv, etc.)
>       2. Library, scripts, etc. to appropriate locations
>    13. Record the installation (PEP 427 
>    <https://www.python.org/dev/peps/pep-0427/>/XXX)
>
>

Reply via email to