Thanks for the advices, they are really helpful. Incidentally (or maybe not? I 
wonder
if there is an underlying pattern here) the two areas I do want to work on 
first are
a) how to find a package, and b) how to choose an artifact for a given package.

I think I’m starting with the package discovery part first and work my way from
there. I’ll create an issue in pypa/pip and try to outline the intention (and 
summarise
this thread), but there’s a couple of things I wish to clarify first:

1. Should dependency link processing be included? Since it is un-deprecated 
now, I
guess the answer is yes?
2. (Maybe not an immediate issue) What formats should I include? Wheels and 
.tar.gz
sdists, of course, what others? Eggs? .zip sdists? Are there other formats?

TP


> On 20/9, 2018, at 02:40, Paul Moore <p.f.mo...@gmail.com> wrote:
> 
> On Wed, 19 Sep 2018 at 18:52, Donald Stufft <don...@stufft.io> wrote:
>> 
>> On Sep 19, 2018, at 1:14 PM, Tzu-ping Chung <uranu...@gmail.com> wrote:
>> 
>> I feel the plan is quite solid. This however leaves us (who want a Python 
>> implementation and interface to do what pip does) in an interesting place. 
>> So I can tell there are a couple of principles:
>> 
>> 1. Do not use pip internals
>> 2. pip won’t be using either distlib or setuptools, so they might not match 
>> what pip does, in the long run
>> 
>> Does this leaves us only one option left, to implement a library that 
>> matches what pip does (follows the standards), but is not pip? That feels 
>> quite counter-productive to me, but if it’s what things would be, I’d accept 
>> it.
>> 
>> The next step (for me) in that case would then be to start working on that 
>> library. Since existing behaviours in setuptools and pip (including the part 
>> it uses distlib for) are likely to be standardised, I can rely on distlib 
>> for script creation, setuptools for some miscellaneous things (editable 
>> installs?), and pull (or reimplement) parts out of pip for others. Are there 
>> caveats I should look out?
>> 
>> 
>> My general recommendation if you want a Python implementation/interface for 
>> something pip does, is:
>> 
>> - Open an issue on the pip repository to document your intent and to make 
>> sure that there is nobody there who is against having that functionality 
>> split out. This might also give a chance for people with familiarity in that 
>> API to mention pain points that you can solve in a new API. We can also 
>> probably give you a good sense if the thing you want in a library is 
>> something that probably has multiple things that are dependent on getting 
>> split out first (for instance, if you said you wanted a library for 
>> installing wheels, we’d probably tell you that there is a dependency on PEP 
>> 425 tags, pip locations, maybe other that need resolved first) and also 
>> whether this is something that should have a PEP first or not. Getting some 
>> rough agreement on the plan to split X thing out before you start is overall 
>> a good thing.
>> 
>> - Create or update a PEP if required, and get it into the provisional state.
>> 
>> - Make the library, either as a PR to packaging or as it’s own independent 
>> library. If there are questions that come up while creating that library/PR 
>> that have to do with specific pip behaviors, go back to that original issue 
>> and ask for clarification etc. Ideally at some point you’ll open a PR on pip 
>> that uses the new library (my suggestion is to not bundle the library in the 
>> initial PR, and just import it normally so that the PR diff doesn’t include 
>> the full bundled library until there’s agreement on it). If there’s another 
>> tool (pipenv, whatever) that is looking to use that same functionality, open 
>> a WIP PR there too that switches it to using that. Use feedback and what you 
>> learn from trying to integrate in those libraries to influence back the 
>> design of the API itself.
>> 
>> Creating a PEP and creating the library and the PRs can happen in parallel, 
>> but at least for pip if something deserves a PEP, we’re not going to merge a 
>> PR until that PEP is generally agreed on. However it can be supremely useful 
>> to have them all going at the same time, because you run into things that 
>> you didn’t really notice until you went to actually implement it.
>> 
>> My other big suggestion would be to e careful about how much you bite off at 
>> one time. Pip’s internal code base is not the greatest, so pulling out 
>> smaller chunks at a time rather than trying to start right off pulling out a 
>> big topic is more likely to meet with success. Be cognizant of what the 
>> dependencies are for the feature you want to implement, because if it has 
>> dependencies, you’ll need to pull them out first before you can pull it out 
>> OR you’ll need to design the API to invert those dependencies so they get 
>> passed in instead.
>> 
>> I personally would be happy to at a minimum participate on any issue where 
>> someone was trying to split out some functionality from pip into a re-usable 
>> library if not follow the develop of that library directly to help guide it 
>> more closely. My hope for pip is that it ends up being the glue around a 
>> bunch of these libraries, and that it doesn’t implement most of the stuff 
>> itself anymore.
> 
> I basically agree with everything Donald said, and I'd also be happy
> to support any work along these lines. If you're looking for a place
> to start, I'd strongly recommend some of the foundational areas -
> something like pip.locations (I know there are others who have
> expressed an interest in this PI being exposed), or pep425tags which
> has the advantage of already having a standard, or something at that
> level. Starting with something at the level of the finder or the
> installer is likely to be way too much to start with, even if it feels
> like it would be more directly useful to you.
> 
> Paul
--
Distutils-SIG mailing list -- distutils-sig@python.org
To unsubscribe send an email to distutils-sig-le...@python.org
https://mail.python.org/mm3/mailman3/lists/distutils-sig.python.org/
Message archived at 
https://mail.python.org/mm3/archives/list/distutils-sig@python.org/message/J4FHFMHLIKNPMOWLFTEIGRR4H5XGWPRD/

Reply via email to