[Distutils] Local version identifiers from PEP 440 in practice

Donald Stufft donald at stufft.io
Wed Dec 17 01:54:40 CET 2014


> On Dec 16, 2014, at 7:46 PM, Maurits van Rees <m.van.rees at zestsoftware.nl> wrote:
> 
> Maurits van Rees schreef op 17-12-14 00:53:
>> I have created a very basic python project called 'myproject'.  It
>> does nothing.  I have released a few versions here:
>> http://pypi.zestsoftware.nl/public/packagingtest/
> 
> I have now also distributed myproject version 1.1.  (This has a
> base.jinja2 file and requires Jinja2[i18n], which I need for checking
> a corner case; I may report that later).
> 
> Installing 1.1 unexpectedly gives problems, both with pip and
> zc.buildout.
> 
> - zc.buildout 2.2.5 and setuptools 7.0: all is well.
> 
> - zc.buildout 2.3.1 and setuptools 8.0.4:
> 
>  * When I specify 'myproject = 1.1' in the buildout config, myproject
>    does not get updated.  It sticks at version 1.1+maurits.3.

This isn’t a bug, assuming that buildout is translating ``my project = 1.1``
to something like ==1.1. Local versions are used to indicate something that
is compatible with 1.1 and they sort as newer than the same version without
the local version. The reason they match for a ``==1.1`` is because you want
downstream distributors like Debian to be able to set their versions to 1.0+debian.1
without breaking things for people who do ``==1.1``.

> 
>  * In fact, when I switch back to 1.0, run bin/buildout, again switch
>    to 1.1, run bin/buildout, the result is that 1.1+maurits.3 is used.

See above.

> 
> - pip 1.5.6, setuptools 7.0:
> 
>  * pip warns about three different versions:
>    $ pip install -U -f http://pypi.zestsoftware.nl/public/packagingtest/ myproject==1.1
>    Downloading/unpacking myproject==1.1
>      Downloading myproject-1.1+maurits.3.zip
>      Running setup.py (path:/Users/mauritsvanrees/tmp/venv-older/build/myproject/setup.py) egg_info for package myproject
>      Requested myproject==1.1, but installing version 1.1-maurits.3
>  * The warning is correct: not 1.1, but 1.1-maurits.3 is installed.

That warning might actually be from a stale build directory laying around and not related to the local version at all.

> 
> - pip dev, setuptools 8.0.4:
> 
>  * With currently 1.1+maurits.3 installed, pip says:
>    $ pip install -U --trusted-host pypi.zestsoftware.nl -f http://pypi.zestsoftware.nl/public/packagingtest/ myproject==1.1
>    Requirement already up-to-date: myproject==1.1 in ./lib/python2.7/site-packages
> 
>  * With 1.0 currently installed, pip says:
>    $ pip install -U --trusted-host pypi.zestsoftware.nl -f http://pypi.zestsoftware.nl/public/packagingtest/ myproject==1.1
>    Collecting myproject==1.1
>      Downloading myproject-1.1+maurits.3.zip
> 
>   * Result is indeed that myproject 1.1+maurits.3 is installed
>     instead of 1.1.

This behavior is also correct as I mentioned above.

> 
> Given that both zc.buildout and pip have a problem, I am guessing that
> there is a bug in setuptools.  I'll report it.
> 
> 
> -- 
> Maurits van Rees: http://maurits.vanrees.org/
> Zest Software: http://zestsoftware.nl
> 
> _______________________________________________
> Distutils-SIG maillist  -  Distutils-SIG at python.org
> https://mail.python.org/mailman/listinfo/distutils-sig

---
Donald Stufft
PGP: 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA



More information about the Distutils-SIG mailing list