What about non-symlink implementations? Error or ignore? Is it even acceptable for a frontend to refuse to install a valid response from a backend? The point is that every type of implementation has to decide what to do when faced with a headers key in the returned data.
Actually, I just re-read the proposal again. There’s nothing in there that states that the front end is required to do anything with the SchemaPaths
data that the hook returns. So it’s completely valid for a frontend to install metadata, dependencies, entry points, RECORD
and direct_url.json
, and nothing else.
Please tell me I missed something, or the proposal will get amended, because if that is intended to be a valid front end then IMO the proposal is just broken. The user asks for an editable install of foo
, the backend reports exactly the needed files to expose to get such an install, and the front end does nothing, and yet is compliant with the spec?
I know we’re trying to leave the definition of what it means for an install to be “editable” as somewhat vague, but we have to have something here. If the backend says “this file must be exposed for the install to count as editable”, surely the frontend can’t be allowed to ignore that?
I’m not interested in this as a question of “which proposal is better”. I’m asking from the POV of “if I had to implement this PEP, what would I do?” So I don’t care about what PEP 660 does. What I’m asking is, if this proposal got accepted, does it tell me enough to let me implement the frontend side of the protocol? And I’m feeling like the answer is “no, there are too many unanswered questions”.
OK, if you want to look at it like that. The library is the key piece here, much like editables
was one of the key pieces of the PEP 660 PoC (the other being integrating it into pip so people could use it).
I disagree, the library is the bridge here. A backend implementation for PEP 660 is “line up the information, call editables
, assemble a wheel from the data and pass it back through the hook”. A frontend implementation for virtual wheels is “call the hook, collect user preferences somehow, pass the data returned from the hook and the preferences to the library, handle any response from the library”. There’s very little in common between a PEP 660 backend implementation and a “virtual wheel” frontend implementation beyond “they call the library to do the heavy lifting”.
I have no intention of making editables
into a library for this proposal, so while someone is perfectly welcome to steal ideas from editables
, I won’t be writing any sort of front end implementation/library for the virtual wheel proposal. Someone else can do that.