On Wed, 19 Sep 2018 at 11:41 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.
>

And if you start with pep425tags I have a bunch of notes for you. ;) (CoC
stuff has sucked almost all of my volunteer time for the past two weeks so
I have not had a chance to try to write up a proposed library for PEP 425
like I had planned to.)

-Brett


>
> 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/24MLWSVM3SW5QUNPNSXAOXI3N4UOLXBX/
>
--
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/CDGEHCTSGVE7IRKBD7NJEFKML5OZ7ORC/

Reply via email to