[Distutils] Local version identifiers from PEP 440 in practice

Maurits van Rees m.van.rees at zestsoftware.nl
Wed Dec 17 10:45:46 CET 2014

Donald Stufft schreef op 17-12-14 04:59:
>> On Dec 16, 2014, at 10:25 PM, Ethan Furman <ethan at stoneleaf.us> wrote:
>> To continue with Maurits' use-case, in order to get /exactly/ 1.3, '===' is the operator to use?  Or are we still
>> discussing that?  Personally, I think
>>   pip install yourthing is 1.3
> Currently the === operator will give you that, but it’s not really designed for that. It’s designed as an escape hatch for versions we can’t parse. An example of where this matters is that ==1.3 will match version 1.3.0, but ===1.3 will not. So if we want something better than that for “give me exactly 1.3 without any patches” then that’s under discussion.

Current pip 1.5.6 does not recognize the === operator and gives a 
ValueError.  That is expected.

pip dev does recognize it, but I do not see the behaviour you say.  Let 
me try from scratch:

$ virtualenv-2.7 venv-newest
$ cd venv-newest
$ . bin/activate
$ pip install -U setuptools  # gets 8.0.4
$ pip install https://github.com/pypa/pip/tarball/develop#egg=pip-dev
$ 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
   Requested myproject===1.1, but installing version 1.1+maurits.3
Installing collected packages: myproject
   Running setup.py install for myproject
Successfully installed myproject
$ ls -1 lib/python2.7/site-packages
$ pip list
myproject (1.1+maurits.3)
pip (6.0.dev1)
setuptools (8.0.4)

Maurits van Rees: http://maurits.vanrees.org/
Zest Software: http://zestsoftware.nl

More information about the Distutils-SIG mailing list