-
Notifications
You must be signed in to change notification settings - Fork 14
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
Implement VCS support #61
Comments
Hi @abitrolly, Indeed, as mentioned in the known caveats section, I haven't had time to properly implement paths and VCS links the same way pip handles them (both in reading and in resolving behaviour). It is quite tedious, and probably requires a deep dive into pip source (or lots of experimentation) to do properly. I think older versions of pip simply errored once it encountered two different VCS links for the same project name - but not sure if this is still the case with pip's new resolver. Another implementation hurdle is the fact that PubGrub only supports semver and so will need some edge casing for alpha numeric commit hashes. Same goes for other features that VCS links have in store for us, like egg names. This last one (containing hashtag) will also need some modification of pipgrip's Just to give an impression of the task, probably more hurdles on the way :) |
I thought that |
pipgrip first builds a list of requested packages, and passes them to pip one at a time recursively to get the informarion to build the dependency tree exhaustively. To be more precise, this function is the only interaction with pip: The rest is all in-house! |
The linked code calls
So I guess passing the argument as-is should do the trick. This builds a |
There is no problem with passing a link to pip, the hurdles come beforehand (adding the entry to the pipgrip depencency tree with project name as key) and afterwards (checking for conflict - easier as it needs to be unique). Beforehand requires effort because Afterwards is less tricky: edit: can't throw yet, need to keep different 'versions' in memory so that an incompatibility can be marked (which might trigger backtracking). Whether this covers all edge cases when VCS projects and/or local paths are encountered, I'm not sure. It would need to be confirmed empirically or by pip source code deep dive, to ensure identical behaviour to pip and avoid non-installable output from pipgrip. |
Is there no way to feed an URL like https://github.com/jonmatthis/freemocap to |
Not without building the wheel (running But maybe it can be parsed from early pip output and then killed prematurely... 🤔 |
For pipgrip it doesn't matter though as we'll also need the dependencies for the package sooner or later anyway :) |
Released
|
Description
$ pipgrip https://github.com/jonmatthis/freemocap Error: 'https://github.com/jonmatthis/freemocap' looks like a path, and is not supported yet by pipgrip
Use case / motivation
I am too lazy to checkout and install everything. Just want to run
pipgrip
in isolated environment.Instead I need to do this.
And remember to
cd
, becausepipgrip app
won't work and will just show dependency tree from https://pypi.org/project/app/The text was updated successfully, but these errors were encountered: