[Distutils] Handling Case/Normalization Differences

Paul Moore p.f.moore at gmail.com
Tue Sep 30 16:25:47 CEST 2014


On 28 August 2014 19:58, Donald Stufft <donald at stufft.io> wrote:
> To fix this I'm going to modify PyPI so that it uses the normalized name in
> the /simple/ URL and redirects everything else to the non-normalized name.
> I'm  also going to submit a PR to bandersnatch so that it will use normalized
> names for it's directories and such as well. These two changes will make it so
> that the client side will know ahead of time exactly what form the server expects
> any given name to be in. This will allow a change in pip to happen which
> will pre-normalize all names which will make the interaction with mirrors
> better and will reduce the number of HTTP requests that a single ``pip install``
> needs to make.

Just to clarify, this means that if I want to find the simple index
page for a distribution, without hitting redirects, I should first
normalise the project name (so "Django" becomes "django") and then
request https://pypi.python.org/simple/<normalised_name>/ (with a
slash on the end). Is that correct? It seems to match what I see in
practice (in particular, the version without a terminating slash
redirects to the version with a terminating slash).

The JSON API has the opposite behaviour -
https://pypi.python.org/pypi/Django/json redirects to
https://pypi.python.org/pypi/django/json. Should that not be changed
to match? Will it be?

Paul


More information about the Distutils-SIG mailing list