[Distutils] distlib locator compares reasonably well with pip's PackageFinder

PJ Eby pje at telecommunity.com
Sun Oct 28 17:46:01 CET 2012

On Sat, Oct 27, 2012 at 7:08 PM, Vinay Sajip <vinay_sajip at yahoo.co.uk> wrote:
> N.B. with the #egg=name-version scheme, as the fragment portion is not sent
> to the server, there's no way to expect that the server will always return
> a specific version (as no version is specified in the URL which goes to the
> server).

That's just my point: version control sites (even ViewSVN) let you
specify the version in the URL, just not in the filename portion.  So
it's quite valid to create a link to download a specifically
designated version by specifying a revision control version, and then
indicate the project name and version in the fragment identifier.

IOW, the whole point of the fragment tag is to let you label a link
that you know is to a specific version of a package, despite the
filename portion not being explicit or unambiguous as to project name
and version.

> What are not picked up are links which may contain the version
> number, but not necessarily using strictly defined conventions. In such cases,
> I would prefer not to add too many regex-style checks for various schemes which
> might be in use, but just provide a minimal way for users who need it to slot
> in these schemes via subclassing.

What I'm pointing out is that the existing #egg system provides a way
to make links' project/version info unambiguous, so that you don't
*need* lots of regex-based schemes, and people can just explicitly
label their packages, even if due to hosting requirements they can't
actually name their distributions according to the official scheme.
(And this means that people won't need to be constantly writing
plugins and subclasses to handle ever-more obscure hosting

In the future, of course, it might make sense to replace #egg with
something like #pydist as the blessed syntax, while still processing
#egg for backward-compatibility.

More information about the Distutils-SIG mailing list