[01:09:25] <techalchemy> njs: I think I may not have understood the proposal
[01:11:05] <njs> techalchemy: wasn't even a proposal really, just me trying to figure out what a resolver could do with a bare uri vs a package-name+uri
[01:12:15] <techalchemy> njs: I mean the original one, i'm not totally clear on whether the best guess is derived from user input or whether that includes version info / how we are avoiding downloading anything
[01:12:28] <techalchemy> especially the last point
[01:13:38] <dstufft> The answer is roughly it depends on semantics
[01:13:57] <dstufft> when we wrote PEP 440 we weren't sure what the semantics were going to be for that part yet really
[01:14:14] <njs> techalchemy: I just meant, you have a resolver that's trying to satisfy some requirements, and (this is the main point) is trying to do this in a way where it does as much as it can before it actually starts downloading packages or building them
[01:14:43] <techalchemy> njs: in practice, we tried that and I actually don't bother anymore
[01:14:54] <techalchemy> the minute I have a url i am going to resolve against I just resolve it
[01:16:12] <techalchemy> it's probably not that great for people on slow internet where the contents aren't cached yet
[01:16:29] <njs> ...actually even if you were trying to be clever, probably it would make sense to download all the '@' urls first before starting to download sdists, and that would give the same effect anyway
[01:17:11] <njs> none of this really matters of course because even if the package name is technically redundant, no-one's going to bother going back and revising the PEP to remove it
[01:17:21] <techalchemy> njs: I've hacked up pipenv's implementation currently such that it actually does precisely that, any non-'named' requirement gets resolved first and separately
[01:17:21] <dstufft> It would save some small amount of time if you discover two @ urls for the same dependency pointing at different URLs!
[01:18:21] <dstufft> although I'd probably argue for the redudancy just for the human side of things
[01:18:25] <techalchemy> dstufft: more importantly it exposes to the rest of the dependencies the _other_ direct dependencies and their respective names so we don't try to install from pip or whatever
[01:19:26] <dstufft> it's a lot nicer to see foo @ <url> and know it's for foo, than to have to try to mentally parse that out of an URL, assuming it even exists in the URL and then human beings have to download the file and extract it to even tell
[01:19:36] <dstufft> even if it was 100% useless for the tooling
[01:21:29] <dstufft> (I'm pretty sure all of these things are largely post hoc rationalizations though, nad I think the real answer as to why EPP 440 did it that way is when I wrote it, dealing with unnamed dependencies was annoying in pip for some reason I can't recall, so I made sure it wasn't unnamed)
[01:21:29] <techalchemy> i have a full reimplementation of pip's logic + additional logic
[01:21:58] <dstufft> I'm sure curious why you rewrote version specifier parsing
[01:25:33] <techalchemy> i do use packaging extensively, even to represent the actual requirement objects internally, but packaging doesn't like representations that aren't pep508 compliant but which contain urls
[01:26:33] <techalchemy> and i needed my parser to handle vcs uris both in the shorthand syntax of git+git@host:user/repo.git#egg=name and the full syntax + all the extraneous stuff