Re: Trying to outline the steps taken to go from "I want this package" to it being installed

2018-12-24 Thread Brett Cannon
On Sat, 22 Dec 2018 at 12:22, Brett Cannon  wrote:

>
>
> On Fri, 21 Dec 2018 at 12:08, Sumana Harihareswara 
> wrote:
>
>> Brett, did you end up making progress on this? If not, would you be open
>> to someone else picking it up?
>>
>
> The complete outline can be found in an email I sent to pypa-dev and I
> have started work by trying to add PEP 425 support to 'packaging':
> https://github.com/pypa/packaging/pull/156 .
>

I realized I should have clarified by saying, "and if anyone else wants to
take on something from that outline that needs doing then feel free!" :)

-Brett


>
> -Brett
>
>
>>
>> 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  wrote:
>> >
>> >> On 3 March 2018 at 06:55, Brett Cannon  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
>> >>
>> >
>>
>


Re: Trying to outline the steps taken to go from "I want this package" to it being installed

2018-12-22 Thread Brett Cannon
On Fri, 21 Dec 2018 at 12:08, Sumana Harihareswara  wrote:

> Brett, did you end up making progress on this? If not, would you be open
> to someone else picking it up?
>

The complete outline can be found in an email I sent to pypa-dev and I have
started work by trying to add PEP 425 support to 'packaging':
https://github.com/pypa/packaging/pull/156 .

-Brett


>
> 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  wrote:
> >
> >> On 3 March 2018 at 06:55, Brett Cannon  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
> >>
> >
>


Re: Trying to outline the steps taken to go from "I want this package" to it being installed

2018-12-21 Thread Sumana Harihareswara
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  wrote:
> 
>> On 3 March 2018 at 06:55, Brett Cannon  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
>>
>