[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