-
Notifications
You must be signed in to change notification settings - Fork 3.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Moving off of egg_info #4713
Comments
I disagree here.
In this pre-PEP 517 world, Everything else you've mentioned is really not directly related to the topic you've set for the issue. I'll respond now though since I don't think there's much discussion to be had on those fronts anyway. I suggest you make new issues for them if you think it makes sense to have a discussion on those.
IIRC, pip does not need
This is actually on my roadmap -- I'm thinking of calling them "Distributions" -- like |
I'm assuming this is in a PEP 517 world. So I'd say yes, we should (initially) rename Secondly, we introduce a new I'd suggest that I would imagine this as 2 separate PRs:
The first PR is a refactoring, and so should be covered by the existing test suite. The second PR is wholly new code, and will require a new set of unit and functional tests. It may be hard to write functional tests in the absence of a backend, but the PEP includes a sample implementation of a complete, if basic, backend, which we should be able to use for tests. Also, I'd strongly recommend that the second PR use @takluyver's PEP 517 helper library, if he has it ready in time. The correct implementation of hook calling code is tricky, and I don't think we should implement or maintain our own code for this if there's a library we can use. |
That sounds exactly like what I was thinking of with my "first PR" above. I hadn't thought of the wheel-only case so that's a good point too. As you're currently very involved with this are of the code, I'm happy to wait for this to be done the way you're proposing - and then we can look at implementing |
If you look at the PR that's going into setuptools, I used a ProcessPoolExecutor to call the backend functions. It's currently 40 lines that I think can be shrunk down to ~30 and side-steps all of the issues that come with even looking at the command line. |
Interesting approach. |
@njsmith Do you have a response to this? I actually agree with @pradyunsg here which is why I was attempting to implement |
Not trying to speak for @njsmith but I think you're confusing two things here. Code for legacy sdists should not change - specifically it will continue to call My understanding is that @pradyunsg and myself have been telling you we can't remove |
Great. The router is acting up. I'd typed a nice long message and now I've
lost it.
It was basically what @pfmoore is saying - I think you're confusing between
how legacy packages and PEP 517 packages would be handled - just much
longer and touching upon the vagueness of that comment by @xoviat.
…On Fri, Sep 8, 2017, 00:40 Paul Moore ***@***.***> wrote:
Not trying to speak for @njsmith <https://github.com/njsmith> but I think
you're confusing two things here.
Code for legacy sdists *should not change* - specifically it will
continue to call egg_info. There's absolutely no point trying to make any
sort of major change (such as removing egg_info calls) to that code, as
it'll eventually be removed anyway. New code for PEP 517 *has no need for*
egg_info. The new hooks replace all of that interface with a unified one
that all backends will provide.
My understanding is that @pradyunsg <https://github.com/pradyunsg> and
myself have been telling you we can't remove egg_info from the existing
code, whereas @njsmith <https://github.com/njsmith> was trying to tell
you that there's no need for egg_info in the new code. Both statements
are true.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#4713 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/ADH7SY6ub71HeK57VlWb8vnP7f4iiYNqks5sgD-cgaJpZM4PQJ06>
.
|
The point I was making is that right now, Historically, the reason pip's legacy build path calls So one possible way forward would be:
I'm not, like, committed to this in any way -- I'm not a pip dev and I'm not volunteering to do the work :-). And I can see why you might prefer to keep the legacy code the way it is. But that constraint does seem like it makes things much more complicated. You can't just hide the I know this looks like a stereotypical "let's blow up the world and make it better!" proposal. I'm mentioning it because it seems like despite the appearances, it might actually be easier, faster, simpler, and produce a better result in the end, so I think it's worth thinking through carefully instead of rejecting out of hand. |
Just to be clear, I would support dropping |
I'm not a decision maker here. That said, I'm not in favour of this approach. I had considered this for the resolver (that I'd rewrite the stuff completely). I decided against it. This codebase is mostly maintained on volunteer time and there's a lot of... interesting... relationships between the various parts. It's very possible that midway through the rewrite you leave the codebase in a non working state - that's exactly what I won't want to see happening and I don't think anyone would want that with the PEP 517/518 work either. I personally know that the incremental refactor and improve approach works here. That is what I used when implementing the config command. It's slower but almost equally effective.
I won't hold my breath on it but we will soon. :) |
Closed by mistake. Sorry! |
Let's go ahead with what @njsmith is saying. Ref: #4589 (comment) |
Since I think it's pretty clear that we're going to have to remove egg_info, I wanted to discuss the high-level approach to this here.
First, we need to agree that this is needed. Second, we need to resolve the issue of what happens when there is no "wheel" installed: should we install it so that
WheelBuilder
can run? I think it would be a good idea to splitInstallRequirement
into two classes:LegacyInstallRequirement
andNewInstallRequirement
, representing egg_info/setup.py install and bdist_wheel. What do others think of this idea?The text was updated successfully, but these errors were encountered: