Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conditional dependencies/markers are ignored when locking #1303

Closed
hynek opened this issue Jan 15, 2018 · 19 comments
Closed

Conditional dependencies/markers are ignored when locking #1303

hynek opened this issue Jan 15, 2018 · 19 comments

Comments

@hynek
Copy link
Contributor

hynek commented Jan 15, 2018

While installing packages that have conditions or markers on them (like “CFFI not on PyPy” for cryptography, or “funcsigs on Python before 3.3” on mock), those conditions are ignored.


I suspect this has something to do with another bug I keep running into but which I was not able to trigger reproducibly: sometimes after a pipenv update my Pipfile.lock (and on pipenv lock --requirements the requirements.txt) gets markers added and after another pipenv update they get removed.

Describe your environment
  1. OS Type: macOS High Sierra
  2. Python version: $ python -V: for Pipenv Python 3.6.3
  3. Pipenv version: $ pipenv --version: 9.0.1 and latest master as of 2018-01-15
Expected result

Conditions are respected.

Actual result

Conditions are ignored.

Steps to replicate

The easiest way to test this: go to an empty directory and type pipenv install --two mock:

Creating a virtualenv for this project…
Using /Users/hynek/.pyenv/versions/2.7.14/bin/python2 to create virtualenv…
⠋Running virtualenv with interpreter /Users/hynek/.pyenv/versions/2.7.14/bin/python2
New python executable in /Users/hynek/.local/share/virtualenvs/pipenv-test-RKl-GKWb/bin/python2
Also creating executable in /Users/hynek/.local/share/virtualenvs/pipenv-test-RKl-GKWb/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: /Users/hynek/.local/share/virtualenvs/pipenv-test-RKl-GKWb
Creating a Pipfile for this project…
Installing mock…
⠙Installing 'mock'
$ "/Users/hynek/.local/share/virtualenvs/pipenv-test-RKl-GKWb/bin/pip" install   --verbose   "mock" -i https://pypi.python.org/simple --exists-action w
Collecting mock
  1 location(s) to search for versions of mock:
  * https://pypi.python.org/simple/mock/
  Getting page https://pypi.python.org/simple/mock/
  Looking up "https://pypi.python.org/simple/mock/" in the cache
  Current age based on date: 661
  Freshness lifetime from max-age: 600
  Freshness lifetime from request max-age: 600
  The cached response is "stale" with no etag, purging
  Starting new HTTPS connection (1): pypi.python.org
  "GET /simple/mock/ HTTP/1.1" 200 3360
  Updating cache with response from "https://pypi.python.org/simple/mock/"
  Caching b/c date exists and max-age > 0
  Analyzing links from page https://pypi.python.org/simple/mock/
    Skipping link https://pypi.python.org/packages/0b/6a/5e3ead38ff3f10031f16f3c834037a1f6c454f54a63b54b56843cd98a7cc/mock-0.4.0-py2.6.egg#md5=7e7ca9c58532bd5807c4a071336f28d0 (from https://pypi.python.org/simple/mock/); unsupported archive format: .egg
    Found link https://pypi.python.org/packages/0c/53/014354fc93c591ccc4abff12c473ad565a2eb24dcd82490fae33dbf2539f/mock-2.0.0.tar.gz#md5=0febfafd14330c9dcaa40de2d82d40ad (from https://pypi.python.org/simple/mock/), version: 2.0.0
    Found link https://pypi.python.org/packages/12/46/4761fcacd8e31ebe59d49c40aa41cc23f70e01702235153093cc1f8874ca/mock-1.1.0-py2.py3-none-any.whl#md5=d6fbc8f13f9c1126cfa473bb26b6e605 (from https://pypi.python.org/simple/mock/), version: 1.1.0
    Found link https://pypi.python.org/packages/15/45/30273ee91feb60dabb8fbb2da7868520525f02cf910279b3047182feed80/mock-1.0.1.zip#md5=869f08d003c289a97c1a6610faf5e913 (from https://pypi.python.org/simple/mock/), version: 1.0.1
    Found link https://pypi.python.org/packages/1c/a0/dfa5f97ce4d4fedd63c4d8021b7b0b2ddd7747b818a15f93699c97ff8439/mock-0.6.0.zip#md5=9d283cce6bd3c65f18ca617955298238 (from https://pypi.python.org/simple/mock/), version: 0.6.0
    Found link https://pypi.python.org/packages/2b/78/2b8bb89e311c3e11ea87bd29ab05a94c68ce2c9137f679e5cf275f1a73e5/mock-1.1.1.tar.gz#md5=8cb5eb66d88f09b13edc6aae80271f1c (from https://pypi.python.org/simple/mock/), version: 1.1.1
    Found link https://pypi.python.org/packages/2d/54/d64774f9b78629fe249e0fcc81378c6f3b00c542aafa1018a2b777a84e43/mock-0.7.1.zip#md5=31382f58aa4f064c366a620d70a8b2a0 (from https://pypi.python.org/simple/mock/), version: 0.7.1
    Found link https://pypi.python.org/packages/32/f2/065f51e5e99081b6ce893cd99d9cd58111e0d41f6b51c9336974ee936625/mock-0.8.0.zip#md5=7dba423ce7994c433f6b84b101f1f4ba (from https://pypi.python.org/simple/mock/), version: 0.8.0
    Skipping link https://pypi.python.org/packages/33/7f/031bd64d3acbf5447c107f55f592619eccdef6b30e87570592d413d6c9cc/mock-0.4.0-py2.4.egg#md5=e948e25b46f75d343a7fcdf24a36005c (from https://pypi.python.org/simple/mock/); unsupported archive format: .egg
    Found link https://pypi.python.org/packages/3a/38/887679f1e350c1a28e4a37193caad9329f9af0e83eefabe82f0c23326c7c/mock-0.7.0b3.zip#md5=af4a1053a9ad7e935ff86d1de9d1042c (from https://pypi.python.org/simple/mock/), version: 0.7.0b3
    Found link https://pypi.python.org/packages/49/35/dd8987d2f4b755a95c0e1650d70fa11cd61b30d6cdf71a793d9e1e3ec9cf/mock-1.0b1.zip#md5=93495a8376e8fc9a3f6cb36524ebe15b (from https://pypi.python.org/simple/mock/), version: 1.0b1
    Found link https://pypi.python.org/packages/4f/67/aae2df6a422936234be6f4bea3d9a52501f6a88a5a451d59adeb620e7179/mock-0.7.2.zip#md5=8a22e3748bc50667ef27536ff1a5cf8d (from https://pypi.python.org/simple/mock/), version: 0.7.2
    Found link https://pypi.python.org/packages/52/22/05f0fb67c51e86b485914b1da519b2df6afd36c41f81a21328bc69a2e3b1/mock-0.8.0.tar.gz#md5=b1ac87a1ceab295aef11dcfc104a7a4a (from https://pypi.python.org/simple/mock/), version: 0.8.0
    Found link https://pypi.python.org/packages/6c/44/2b50aa4a4146e27642fded9baf81a49d430c8b134d31e694e2d78c33aeed/mock-0.5.0.tar.gz#md5=329fafdc91c83eab608ca80c8bb490f9 (from https://pypi.python.org/simple/mock/), version: 0.5.0
    Found link https://pypi.python.org/packages/6d/7f/3dff8eb00b040fd25235c5aec76d24d17553b36b817662140c50ca63e94f/mock-0.7.2.tar.gz#md5=0e63747b20e67f7d3e563bc6fd5b88d3 (from https://pypi.python.org/simple/mock/), version: 0.7.2
    Found link https://pypi.python.org/packages/7f/5e/1719c47d53f4bc93689cd2c72c6051e54e7801453d19c6695106a17cf2d9/mock-1.1.3.tar.gz#md5=6da0cb632ed5ba0201c922a3de8f86ab (from https://pypi.python.org/simple/mock/), version: 1.1.3
    Found link https://pypi.python.org/packages/85/60/ec8c1af81337bab0caba188b218b6758bc94f125f49062f7c5f0647749d2/mock-1.0.0.tar.gz#md5=52642ad23c7a5202b33cb0234837676e (from https://pypi.python.org/simple/mock/), version: 1.0.0
    Found link https://pypi.python.org/packages/85/a4/9c8f854991f458a038f56333bb57abc2b7721429b76f0f76770391ffbd39/mock-1.2.0-py2.py3-none-any.whl#md5=498e779073d532ca5527e58856aa59cd (from https://pypi.python.org/simple/mock/), version: 1.2.0
    Found link https://pypi.python.org/packages/8d/71/62f92fac972750254e31060ebe0802ad02cce2755a7844a94b3cf19b58a6/mock-1.0.0.zip#md5=4d2affbef8d628c27ea952bba5c556de (from https://pypi.python.org/simple/mock/), version: 1.0.0
    Found link https://pypi.python.org/packages/8e/86/78ebbe4e432c2404817525fd94e43d4af2fe4ced026338a509989cf007ee/mock-0.7.0b3.tar.gz#md5=2799e896f528f5cecec8cc55a5d5da21 (from https://pypi.python.org/simple/mock/), version: 0.7.0b3
    Found link https://pypi.python.org/packages/98/05/dd44a19f1dd9f274baae2018b843d31fbeff99399114b16ac965b4f99269/mock-1.3.0.tar.gz#md5=73ee8a4afb3ff4da1b4afa287f39fdeb (from https://pypi.python.org/simple/mock/), version: 1.3.0
    Found link https://pypi.python.org/packages/9e/58/53ec7654a08549ee5191653e35776eeff5f98f13e38b43bdc491d8ddf53a/mock-1.1.4-py2.py3-none-any.whl#md5=15bc5de126d963895c47311cdbca8e81 (from https://pypi.python.org/simple/mock/), version: 1.1.4
    Found link https://pypi.python.org/packages/a2/52/7edcd94f0afb721a2d559a5b9aae8af4f8f2c79bc63fdbe8a8a6c9b23bbe/mock-1.0.1.tar.gz#md5=c3971991738caa55ec7c356bbc154ee2 (from https://pypi.python.org/simple/mock/), version: 1.0.1
    Found link https://pypi.python.org/packages/a3/eb/4f80a838be8a14e668c5efa2ed7638a54817c71c35b086b7d74753db0065/mock-1.1.4.tar.gz#md5=84afbeb2415bf3d6608dac4423a56325 (from https://pypi.python.org/simple/mock/), version: 1.1.4
    Found link https://pypi.python.org/packages/a9/c3/f205ab82a23ddfbd115020730fec77faffe17b9d47cdbfb9a70f4ed57eb4/mock-0.7.0b1.tar.gz#md5=a21ba6804db7e30c7b5dc7025f72abac (from https://pypi.python.org/simple/mock/), version: 0.7.0b1
    Found link https://pypi.python.org/packages/ab/95/1d25cd0a0f5164aca0882d8fa35d76b4c6cb466c4ac30c08519684e17661/mock-0.7.0b1.zip#md5=ba5124c632e0394a6e9ec25d681fd374 (from https://pypi.python.org/simple/mock/), version: 0.7.0b1
    Found link https://pypi.python.org/packages/b1/09/7525c0ea5051a9615c71bcb73623ea94dea1d7e01c2520392cb3490c1099/mock-0.7.0b4.tar.gz#md5=12af216898f08f85963139efe5d9582b (from https://pypi.python.org/simple/mock/), version: 0.7.0b4
    Found link https://pypi.python.org/packages/b2/50/664a70b87408bb6c14c1af2337efa64eb8d1af80c933531758b8fb41ec25/mock-1.3.0-py2.py3-none-any.whl#md5=4e5dae615e14f9e3b34aea4771b50e1a (from https://pypi.python.org/simple/mock/), version: 1.3.0
    Found link https://pypi.python.org/packages/b3/5a/548cebaebb634fcfab5033486eddbc4aed63ba33967fc64e616da7b3cf7b/mock-0.7.1.tar.gz#md5=fe6a72d963b740ffa959b4746cf96be0 (from https://pypi.python.org/simple/mock/), version: 0.7.1
    Found link https://pypi.python.org/packages/b8/ca/01d3cd94b3510e5adaac47484bca3317636e9fc5d1eef5814fe632032c12/mock-0.7.0rc1.tar.gz#md5=cb4f34459e45607b75a304bde6353ac3 (from https://pypi.python.org/simple/mock/), version: 0.7.0rc1
    Found link https://pypi.python.org/packages/bd/c2/68ba303ccb4e4f7ea6ec70155707287eeaa70b9983e4e6ede68d75311d96/mock-1.1.2-py2.py3-none-any.whl#md5=be5bb226566cb467564cab023fd6e82d (from https://pypi.python.org/simple/mock/), version: 1.1.2
    Found link https://pypi.python.org/packages/c1/75/8deb813d87d409f691825accb1305f4444982f27c37337a63fd7aa8893dc/mock-1.0b1.tar.gz#md5=bf7e9acc7215eeb805bef1d77864e5f2 (from https://pypi.python.org/simple/mock/), version: 1.0b1
    Found link https://pypi.python.org/packages/c5/a9/14894518e15d84e4cf820f8f47e046b9feaf5af041718ba8900e58b455e9/mock-0.7.0.tar.gz#md5=be029f8c963c55250a452c400e10cf42 (from https://pypi.python.org/simple/mock/), version: 0.7.0
    Found link https://pypi.python.org/packages/d3/60/7a4f1942a79547f08e49b366890a6a4ceeccfbd5e1d830a596c85d0395dc/mock-0.7.0b4.zip#md5=0d85979ef556456aaf5a0766a2152831 (from https://pypi.python.org/simple/mock/), version: 0.7.0b4
    Skipping link https://pypi.python.org/packages/d3/ce/3691e7e85b1d48178d2379227fbfe448a788a816ee8e883f71a5526ba1e4/mock-0.4.0-py2.5.egg#md5=147f343ce516b6429883416cc5ffa7cd (from https://pypi.python.org/simple/mock/); unsupported archive format: .egg
    Found link https://pypi.python.org/packages/d3/f0/308e5dd1a04922affc3fc8f14ccc386977a73d812983b96ca55bee3f0b9c/mock-1.2.0.tar.gz#md5=94ec3b0bea7486018196d59c05ff8645 (from https://pypi.python.org/simple/mock/), version: 1.2.0
    Found link https://pypi.python.org/packages/db/f3/1e83c840e5397cefc204bb29649ede7c20c8a1403e533955520afeb57405/mock-1.1.0.tar.gz#md5=9350792aa747cb044c6576cf9f1568b9 (from https://pypi.python.org/simple/mock/), version: 1.1.0
    Found link https://pypi.python.org/packages/e0/7e/bb08dcb2e78e73e02717bccac087b4bd65927bde3470ca8c9f4a2ce491e0/mock-0.7.0rc1.zip#md5=84b71a6ce1e328e27fc4bdc37afd8029 (from https://pypi.python.org/simple/mock/), version: 0.7.0rc1
    Found link https://pypi.python.org/packages/e6/35/f187bdf23be87092bd0f1200d43d23076cee4d0dec109f195173fd3ebc79/mock-2.0.0-py2.py3-none-any.whl#md5=dd5ca80a263f2a9e55832bfc63f01335 (from https://pypi.python.org/simple/mock/), version: 2.0.0
    Found link https://pypi.python.org/packages/f0/4c/8adc2d53c476ddd7f2d30d1fd506d7545cfc747b5a4c55b5ba5bbcbf38b9/mock-0.7.0.zip#md5=d1431fb57c557707039db1f59083acfc (from https://pypi.python.org/simple/mock/), version: 0.7.0
    Found link https://pypi.python.org/packages/f4/c0/ff5bb8efbffb00167163ed0b667b9be27042a61657db3d7d839c1b798054/mock-1.1.2.tar.gz#md5=4f3f256655ab8f39a1d364ab868e1677 (from https://pypi.python.org/simple/mock/), version: 1.1.2
    Found link https://pypi.python.org/packages/f5/69/b9846e620a8300a739c7229b6c5d88ed6bd808c53e947c6f97bf2980f309/mock-0.6.0.tar.gz#md5=a52c791ebd454a196e1e57b43b493191 (from https://pypi.python.org/simple/mock/), version: 0.6.0
    Found link https://pypi.python.org/packages/f5/b8/f3b341aed1402a866e8853a9e03a2be9db4435d1c241e804e79c68fb1e8e/mock-1.1.3-py2.py3-none-any.whl#md5=d4ffaa94c141830976407663087180a9 (from https://pypi.python.org/simple/mock/), version: 1.1.3
    Found link https://pypi.python.org/packages/fd/2e/486c13326b3aac5aecb04149516361f67656a5490865c20518954b88db92/mock-0.7.0b2.tar.gz#md5=a411b39ef90120a4992a5d5dfdd0a52d (from https://pypi.python.org/simple/mock/), version: 0.7.0b2
    Found link https://pypi.python.org/packages/ff/79/42b20e8a2310353465790abcf5c1c10725141d037baaf52fa14840a81699/mock-0.7.0b2.zip#md5=e83f8af34d80e0491c19789aa9925267 (from https://pypi.python.org/simple/mock/), version: 0.7.0b2
  Using version 2.0.0 (newest of versions: 0.5.0, 0.6.0, 0.7.0, 0.7.1, 0.7.2, 0.8.0, 1.0.0, 1.0.1, 1.1.0, 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.2.0, 1.3.0, 2.0.0)
  Looking up "https://pypi.python.org/packages/e6/35/f187bdf23be87092bd0f1200d43d23076cee4d0dec109f195173fd3ebc79/mock-2.0.0-py2.py3-none-any.whl" in the cache
  Current age based on date: 661
  Freshness lifetime from max-age: 31557600
  The response is "fresh", returning cached response
  31557600 > 661
  Using cached mock-2.0.0-py2.py3-none-any.whl
  Downloading from URL https://pypi.python.org/packages/e6/35/f187bdf23be87092bd0f1200d43d23076cee4d0dec109f195173fd3ebc79/mock-2.0.0-py2.py3-none-any.whl#md5=dd5ca80a263f2a9e55832bfc63f01335 (from https://pypi.python.org/simple/mock/)
Collecting pbr>=0.11 (from mock)
  1 location(s) to search for versions of pbr:
  * https://pypi.python.org/simple/pbr/
  Getting page https://pypi.python.org/simple/pbr/
  Looking up "https://pypi.python.org/simple/pbr/" in the cache
  Current age based on date: 661
  Freshness lifetime from max-age: 600
  Freshness lifetime from request max-age: 600
  The cached response is "stale" with no etag, purging
  "GET /simple/pbr/ HTTP/1.1" 200 6751
  Updating cache with response from "https://pypi.python.org/simple/pbr/"
  Caching b/c date exists and max-age > 0
  Analyzing links from page https://pypi.python.org/simple/pbr/
    Found link https://pypi.python.org/packages/06/9f/087191de13300fbc2675821857d0fdf4d5efe254f651fe9e349af97385e1/pbr-0.6.tar.gz#md5=74ed7d0a9d93c1ab3eb7000e2c0482c7 (from https://pypi.python.org/simple/pbr/), version: 0.6
    Found link https://pypi.python.org/packages/0a/b5/c50b7dda55052cba3362ae73baa8ef7daa81e6ba0080999aec5c712a0aae/pbr-3.0.1-py2.py3-none-any.whl#md5=ab384ed0e275a086988492d856effa04 (from https://pypi.python.org/simple/pbr/), version: 3.0.1
    Found link https://pypi.python.org/packages/0b/9a/698e7bea31bbfa79a64380fff0dde28c0f1f6aa7bcfabf0f3efa5857d178/pbr-3.0.0-py2.py3-none-any.whl#md5=e1dd9cf48467da01d5d27bfb5dccd9b2 (from https://pypi.python.org/simple/pbr/), version: 3.0.0
    Found link https://pypi.python.org/packages/0c/5d/b077dbf309993d52c1d71e6bf6fe443a8029ea215135ebbe0b1b10e7aefc/pbr-3.1.1-py2.py3-none-any.whl#md5=75a0f55856bfc9220af0d01244afec43 (from https://pypi.python.org/simple/pbr/), version: 3.1.1
    Found link https://pypi.python.org/packages/0c/5d/d52d6dd3ccf868f6239b10953e1bd977f01099769649ab639a9f118fd1c7/pbr-0.5.12.tar.gz#md5=bc976fce6d07845eb69a2d9fcc3d176e (from https://pypi.python.org/simple/pbr/), version: 0.5.12
    Found link https://pypi.python.org/packages/13/68/1bea12c1593970bb917f50fba54bd5d74574c29079dc57653d9ca1a3da36/pbr-1.9.1-py2.py3-none-any.whl#md5=1ce49b71e2238e156111fe535b527014 (from https://pypi.python.org/simple/pbr/), version: 1.9.1
    Found link https://pypi.python.org/packages/17/0d/76f93f00a05ff92b6515fee63db17e1e8eb1e07d8986abc248c227795f49/pbr-0.5.20.tar.gz#md5=bbfd338b8971084e6ef999f0b3b5a73a (from https://pypi.python.org/simple/pbr/), version: 0.5.20
    Found link https://pypi.python.org/packages/18/2e/28a7d361a568b1a6c86946674e8ac35a609573c3a3d12bb20f6aaf1c39bf/pbr-3.0.1.tar.gz#md5=c537dbb9756e319be25772b1fe1c05fa (from https://pypi.python.org/simple/pbr/), version: 3.0.1
    Found link https://pypi.python.org/packages/19/28/e19b33264b4bb812fc9eb88de84c4c77774cbdf2c31a30672378f1db08af/pbr-1.0.0-py2.py3-none-any.whl#md5=7f24be794ceb844cc7a2055829ad0c1c (from https://pypi.python.org/simple/pbr/), version: 1.0.0
    Found link https://pypi.python.org/packages/19/43/7ad0151ebf46a92e12a71497acf427b17c28b0d3f45592ca3415c2463952/pbr-1.1.1-py2.py3-none-any.whl#md5=514f405c44fcab8ff99830d18122b6bd (from https://pypi.python.org/simple/pbr/), version: 1.1.1
    Found link https://pypi.python.org/packages/1e/3d/51cf7f899cdc10b3867ab9359bdb0843d44576220cebf347a9022924e1b2/pbr-0.10.5.tar.gz#md5=b08361a29d02598016ab5de5fe88ce90 (from https://pypi.python.org/simple/pbr/), version: 0.10.5
    Found link https://pypi.python.org/packages/1e/f0/9963f6ff9fb3861384be272c07522a9e85441ea5524f7fe15d07cadcae2a/pbr-3.0.0.tar.gz#md5=b9ef99a98350a57bbe55b1142807f224 (from https://pypi.python.org/simple/pbr/), version: 3.0.0
    Found link https://pypi.python.org/packages/1f/29/c5ed626759ab3d1636974d30f48e474f4122de2376225aa068e6733e6b7a/pbr-0.8.1.tar.gz#md5=7f87d32188359a823f84c88faf1b8ea0 (from https://pypi.python.org/simple/pbr/), version: 0.8.1
    Found link https://pypi.python.org/packages/20/0a/4c26cec481094d2b880d4c122804f3c07534a0622ba4f19b5995e69c8885/pbr-1.4.0-py2.py3-none-any.whl#md5=914e6cc4f83a3c8b56faa725fbdce0e2 (from https://pypi.python.org/simple/pbr/), version: 1.4.0
    Found link https://pypi.python.org/packages/22/56/9c4ed97ea99aab9358a8a15e216ed3ad424732062fd86229074568e83c76/pbr-0.5.15.tar.gz#md5=f2ee400cc0f46bd074d16d7f6b1d63da (from https://pypi.python.org/simple/pbr/), version: 0.5.15
    Found link https://pypi.python.org/packages/22/eb/8d8a7e6f2aaf11d36c3e8c6562cc6f80c5cb071460265b611071c57ccf7b/pbr-1.7.0-py2.py3-none-any.whl#md5=5a2249f3808bab91b58974c179987e09 (from https://pypi.python.org/simple/pbr/), version: 1.7.0
    Found link https://pypi.python.org/packages/25/83/a41e99d7cec85162a996fd3d1f1a35307c1fb43b04b5e6eba7c85ce74bda/pbr-0.10.6.tar.gz#md5=018ea54b1e70b218047e3ce3e50099d3 (from https://pypi.python.org/simple/pbr/), version: 0.10.6
    Found link https://pypi.python.org/packages/25/f6/bb56954d86bdb13949849da87db1b01b5e1120c0d2df9af76f2bb63ba154/pbr-1.9.0-py2.py3-none-any.whl#md5=8838efaa9d8470a1b4995bab59a8a6c2 (from https://pypi.python.org/simple/pbr/), version: 1.9.0
    Found link https://pypi.python.org/packages/2b/56/fd3015212c8f546c632a65b1018e8f065eff1b173d11739bb73c64cc5683/pbr-3.1.0.tar.gz#md5=2ebad465f51393759710d2ed3b356004 (from https://pypi.python.org/simple/pbr/), version: 3.1.0
    Found link https://pypi.python.org/packages/2c/cd/0c6bf3648359b0be7a48ef24b12070a9384121651ebf907ff8d289fc1760/pbr-0.5.18.tar.gz#md5=fd14abc6600fc63a87dd33268f2f6d19 (from https://pypi.python.org/simple/pbr/), version: 0.5.18
    Found link https://pypi.python.org/packages/2d/52/ea19b878ed286aa47183d87317a52fb2c1bc23fcea2fcc358d8ab8d9191c/pbr-1.1.0-py2.py3-none-any.whl#md5=77dc871fa086c0148306cb53f644241e (from https://pypi.python.org/simple/pbr/), version: 1.1.0
    Found link https://pypi.python.org/packages/2d/5d/85559fcd563b1567502d45d6a193839e22661cbea0c1663636cf10e3b4ce/pbr-0.10.2.tar.gz#md5=3f57d706d96b8790b5f2998fd71f2273 (from https://pypi.python.org/simple/pbr/), version: 0.10.2
    Found link https://pypi.python.org/packages/2d/89/8b99cffdd0d1874448bd479ea5979a5f702699e4a1f0d3230864518b0832/pbr-1.4.0.tar.gz#md5=21f847dd9d3f9bd37db402067024be98 (from https://pypi.python.org/simple/pbr/), version: 1.4.0
    Found link https://pypi.python.org/packages/2e/34/cd633b4d83fd691ec32171506979e076a5762c5f7063be61e41495cb6006/pbr-1.0.0.tar.gz#md5=8075d0922db081d3ae1aa3c4f372ecf8 (from https://pypi.python.org/simple/pbr/), version: 1.0.0
    Found link https://pypi.python.org/packages/33/e0/b950dc6f07f174b70be856f1666236b60902c340e042d0a04dbd2529c086/pbr-0.10.6-py2.py3-none-any.whl#md5=72ed5a5dfba41d5cca1b0fa990913e32 (from https://pypi.python.org/simple/pbr/), version: 0.10.6
    Found link https://pypi.python.org/packages/33/e2/b070023aece01ba1e9899b67ff93d770e4be71dd0233150d353b0f8bd976/pbr-0.10.7.tar.gz#md5=3f523231e709ad028497d7af557bf2fb (from https://pypi.python.org/simple/pbr/), version: 0.10.7
    Found link https://pypi.python.org/packages/35/a5/3d1beff9fc149b3da814419369a8c24ecf0d1410637fc91002989f433a1a/pbr-2.0.0.tar.gz#md5=dfc1c3788eff06acfaade6f1655fa490 (from https://pypi.python.org/simple/pbr/), version: 2.0.0
    Found link https://pypi.python.org/packages/39/e9/937d7777eca2670c6d04279c243359c4a97652e728e1d19021890193ea58/pbr-0.11.0.tar.gz#md5=e69466b4206e350f4f1e1db2e11ab73b (from https://pypi.python.org/simple/pbr/), version: 0.11.0
    Found link https://pypi.python.org/packages/3f/fd/1ac92034e81906ff10d261f4d72141e75710188a25b7b958c5f7a23bbd30/pbr-2.1.0-py2.py3-none-any.whl#md5=2c7670f4272531da6790499efc8231f5 (from https://pypi.python.org/simple/pbr/), version: 2.1.0
    Found link https://pypi.python.org/packages/40/e3/24f5f78af5a52ff62b2e0d4fe8cc459acd19c4f2b09963608df203e169e1/pbr-1.7.0.tar.gz#md5=8a039757ad7fdc15d6ffcae151c6b427 (from https://pypi.python.org/simple/pbr/), version: 1.7.0
    Found link https://pypi.python.org/packages/50/ab/963142856158acf5887fa69e707b12903886a3069714b70d4e97eead774d/pbr-0.10.4.tar.gz#md5=a6da7171daf28dc3bae59960bd1b4e11 (from https://pypi.python.org/simple/pbr/), version: 0.10.4
    Found link https://pypi.python.org/packages/52/d6/643ce069bc2aab0565d0fed087314ce065b8b39f3691bb12ddf8a442a14b/pbr-0.5.16.tar.gz#md5=31c851aa6c16ba397e3b722234a8654d (from https://pypi.python.org/simple/pbr/), version: 0.5.16
    Found link https://pypi.python.org/packages/53/4a/31a753a4eeb5ce5b4a4818482c0133cf4e3600b739656b36f35decf28e68/pbr-1.5.0-py2.py3-none-any.whl#md5=010ce85abb3c2bcb4034bfc9ad318913 (from https://pypi.python.org/simple/pbr/), version: 1.5.0
    Found link https://pypi.python.org/packages/55/93/92c38d86ad190cf3ab9903614869ef6649e660e5f01622a3b111ff0f8bf4/pbr-0.10.4-py2.py3-none-any.whl#md5=844b592c09afb696758192c41e4487b4 (from https://pypi.python.org/simple/pbr/), version: 0.10.4
    Found link https://pypi.python.org/packages/56/f2/7195b36b39b7a207643e44c9b4a00eb8045174dfd10e0709b42496a65417/pbr-1.9.0.tar.gz#md5=ed8854f725e1c4d7e94d1b2c9ab61304 (from https://pypi.python.org/simple/pbr/), version: 1.9.0
    Found link https://pypi.python.org/packages/5b/1f/c0bb2ab7add8cdda622cf99a2427520e744d08a2ae6c9d8474800c66efd2/pbr-0.5.11.tar.gz#md5=56717ac59c8d4528742ab3f61a35fe6b (from https://pypi.python.org/simple/pbr/), version: 0.5.11
    Found link https://pypi.python.org/packages/5d/c0/71d70764464dc049f2bb417c497751b1f16ebfb3c3146051c614156be54c/pbr-0.5.4.tar.gz#md5=93c1a18af7d91c2bf470558dfa75a736 (from https://pypi.python.org/simple/pbr/), version: 0.5.4
    Found link https://pypi.python.org/packages/68/71/515cf4d6272a30a5203514a86dcf6a7fd563e8c58de7f81a0c0cace0a362/pbr-0.5.21.tar.gz#md5=1dafd1ef666b9bce4d880170ddc39387 (from https://pypi.python.org/simple/pbr/), version: 0.5.21
    Found link https://pypi.python.org/packages/6c/5e/455c63ef5c4c7f3dc6a8639302c01cfa97da689ecef771dc27f4f593e2d8/pbr-1.0.1-py2.py3-none-any.whl#md5=dbba7064b44ee3e1a89f0b9804c2010b (from https://pypi.python.org/simple/pbr/), version: 1.0.1
    Found link https://pypi.python.org/packages/6f/0f/f7e94cf4d10355dbb5142a052ffd593501feb7dea4a553beb78cbc4a1a8d/pbr-1.1.1.tar.gz#md5=e54ee276bf64589d74f123b28c7c8a73 (from https://pypi.python.org/simple/pbr/), version: 1.1.1
    Found link https://pypi.python.org/packages/71/66/0fe2927f8f1d13fcf9a6005db995ebce4b0f86712f0946c7ff84d27cd9ea/pbr-0.5.2.tar.gz#md5=5f6e1870a2db8e35412acef33415c218 (from https://pypi.python.org/simple/pbr/), version: 0.5.2
    Found link https://pypi.python.org/packages/73/29/ce7ad655da1d45715a2043c2223b7f4923a69f4a3695c6162e872b157d1e/pbr-1.6.0.tar.gz#md5=a9a0fc1c8ecabdf057eef5ff98d1ea71 (from https://pypi.python.org/simple/pbr/), version: 1.6.0
    Found link https://pypi.python.org/packages/77/9f/a9b24fcab52e7fd7ad054a1abe88020bbeb66db87ad9859bc2093249a12f/pbr-0.5.17.tar.gz#md5=ca5e8a790e230bc132cab98b31b8e39b (from https://pypi.python.org/simple/pbr/), version: 0.5.17
    Found link https://pypi.python.org/packages/7a/69/52a53c3efadb243f14c4f0aeb31d3e3094f91a0c58e1b21c1058e6717af3/pbr-0.5.6.tar.gz#md5=c34fad829c66a1cd0e55ab74908f5ce9 (from https://pypi.python.org/simple/pbr/), version: 0.5.6
    Found link https://pypi.python.org/packages/7c/13/1a676016b726ca3f6a38772bc013670affc52ab5a304ed3eb4bd79cde70a/pbr-0.8.0.tar.gz#md5=7d85dc6aa47809d97d29901bf0244f6f (from https://pypi.python.org/simple/pbr/), version: 0.8.0
    Found link https://pypi.python.org/packages/80/4f/4cb186de73b8e496215f3bd449c3be47afd7aee0b55a5f497bcb351afae0/pbr-0.9.0-py2.py3-none-any.whl#md5=3c0fa68e6f0dc92958647f6e19ef0f6e (from https://pypi.python.org/simple/pbr/), version: 0.9.0
    Found link https://pypi.python.org/packages/81/1c/8a5b2d2075b63cd74567ecfc41496842dcf38ab75bc9379c608e6c05d2bc/pbr-0.5.14.tar.gz#md5=b1462a461437b51286115bd5ab02b22b (from https://pypi.python.org/simple/pbr/), version: 0.5.14
    Found link https://pypi.python.org/packages/85/54/388bfc35753c380c2868c0570fa53eebc53818ae3c25b3c19c0c3818775b/pbr-1.2.0.tar.gz#md5=b5b93565a5c6fd514889d5f5d83a485b (from https://pypi.python.org/simple/pbr/), version: 1.2.0
    Found link https://pypi.python.org/packages/89/d0/d4db92ef43e9b21a7034f6dc041fa9c3b0310599c131c9fb07273b6ca1c4/pbr-1.9.1.tar.gz#md5=d70073a39a28da64ac968139b49cec8f (from https://pypi.python.org/simple/pbr/), version: 1.9.1
    Found link https://pypi.python.org/packages/8d/35/9c224b1f62566ec810851b0ff32eaf6ee6ce9acf82ff972e61d66abe9a4f/pbr-0.11.1.tar.gz#md5=dc476e5ffe4e15dfecbdf5586fadc8db (from https://pypi.python.org/simple/pbr/), version: 0.11.1
    Found link https://pypi.python.org/packages/8d/da/5a5f40dce8b0b814f0fcb8cb290f20e7d90b8218fb51ac7dca6a6797a194/pbr-0.5.2.5.g5b3e942.tar.gz#md5=276a1c4590ac231004a2d64a6887dc44 (from https://pypi.python.org/simple/pbr/), version: 0.5.2.5.g5b3e942
    Found link https://pypi.python.org/packages/8e/a7/f185db31a06ffe51d7a957b90dd0cc12dca29e9be218fb430d999c5ab980/pbr-1.5.0.tar.gz#md5=e2d24853397c1c6c9b20db212ff2084b (from https://pypi.python.org/simple/pbr/), version: 1.5.0
    Found link https://pypi.python.org/packages/93/40/4820e8bea62d5d48365b4bb009a5d1c55713e3823ac9e2ee80b92ad7fce7/pbr-0.10.8.tar.gz#md5=ccef0c0fa2ad7ee2c9997322a83d7e45 (from https://pypi.python.org/simple/pbr/), version: 0.10.8
    Found link https://pypi.python.org/packages/94/27/2d371af70766f2d1dc0cf1c42ea3319a057d0ebc0d71ab05c824be48e9df/pbr-1.8.1.tar.gz#md5=c8f9285e1a4ca6f9654c529b158baa3a (from https://pypi.python.org/simple/pbr/), version: 1.8.1
    Found link https://pypi.python.org/packages/94/d2/13ff71d810b53500774e874c188213c7e9d7d0746d2ef37262b308392b76/pbr-0.5.13.tar.gz#md5=4c3a36aaa4c711728ab15186ddd2dc5a (from https://pypi.python.org/simple/pbr/), version: 0.5.13
    Found link https://pypi.python.org/packages/96/1b/036f5e2d7b96785547d9d7965866832990aee4f47bcc8bb3e426ffc73808/pbr-0.5.19.tar.gz#md5=5e441e595b294e343ea3261aba6b7f76 (from https://pypi.python.org/simple/pbr/), version: 0.5.19
    Found link https://pypi.python.org/packages/98/18/15857380350b35b33a7ef52099cc68632434be0b1babcbaeb10910b1f5f2/pbr-0.10.1.tar.gz#md5=078783b789dc7885dc85b7ee52bbc9a1 (from https://pypi.python.org/simple/pbr/), version: 0.10.1
    Found link https://pypi.python.org/packages/99/d3/1941d4ad237bb9e3d92b386d852c2c6049135db5ea8000dd47c10f992083/pbr-0.8.2.tar.gz#md5=e634d42285755724ad3d75ebbc68173a (from https://pypi.python.org/simple/pbr/), version: 0.8.2
    Found link https://pypi.python.org/packages/9b/cf/6c6f843ffc13aee42c5412c49e7aff7e860d006261dcafb5a5512fa27cd6/pbr-2.1.0.tar.gz#md5=6decaa3bd7529d591e40b0a64d6c4cfb (from https://pypi.python.org/simple/pbr/), version: 2.1.0
    Found link https://pypi.python.org/packages/9c/b1/ca2d79e0d7a8745a3e4fbe396be26aa7ce6d02891af689474be93c25dcc1/pbr-0.10.8-py2.py3-none-any.whl#md5=169389d23737ff44e3cfe6492d750b8c (from https://pypi.python.org/simple/pbr/), version: 0.10.8
    Found link https://pypi.python.org/packages/9d/60/0e0c8d181fead2a46cff2a0769c72216803de8e6f0aa2eb7764e818e5349/pbr-0.9.0.tar.gz#md5=eabd5606f7e3db56c3cd70e44c377706 (from https://pypi.python.org/simple/pbr/), version: 0.9.0
    Found link https://pypi.python.org/packages/a2/7a/a5c5c87a9afe45e1e2efea5262bd68c68611dd23c106d675e4b4ec64a766/pbr-1.2.0-py2.py3-none-any.whl#md5=065cee17aab68a54b32a8b5d5fd19726 (from https://pypi.python.org/simple/pbr/), version: 1.2.0
    Found link https://pypi.python.org/packages/a7/7b/d66521f2f6bf7e5bf772cbf0ccd77c93d763840a2081ee0c8a94c3ac70bd/pbr-0.7.0.tar.gz#md5=33e71021ae6a35487325f4c4c16d467d (from https://pypi.python.org/simple/pbr/), version: 0.7.0
    Found link https://pypi.python.org/packages/a8/0a/6ad9f0d1e5f10c6523bb1c52d97643938194693e28083d0112a511c94b9f/pbr-0.5.0.tar.gz#md5=957c5474720bd044b859d24c6fb5b1ca (from https://pypi.python.org/simple/pbr/), version: 0.5.0
    Found link https://pypi.python.org/packages/a8/87/23e26858c1a45ff7ed352261e34fb99b33a97bfac0a6e5ece8df7c983d02/pbr-0.11.1-py2.py3-none-any.whl#md5=0b7852a0a626f06c4468a3ffa4187af8 (from https://pypi.python.org/simple/pbr/), version: 0.11.1
    Found link https://pypi.python.org/packages/a9/27/fd662ee763cb4348c412452aa3a92cd0d61dfe72a4ababc529ea6409911a/pbr-0.5.1.tar.gz#md5=ea4b32b03f606e4548adbdedd91b1bf2 (from https://pypi.python.org/simple/pbr/), version: 0.5.1
    Found link https://pypi.python.org/packages/ab/ed/f93a88e436c7f6a5d190f4e156e37276aebb08d1ca44bf3f32a0d03c620e/pbr-1.8.0-py2.py3-none-any.whl#md5=7cda2b9a2ad3134fe8c29e5ff0216468 (from https://pypi.python.org/simple/pbr/), version: 1.8.0
    Found link https://pypi.python.org/packages/ae/7b/a40fbf06e6d73a19428fd6e3c38244cfd01d218958253bd594f8fc10a203/pbr-1.0.1.tar.gz#md5=37b112f4962735faebf618811d4c1797 (from https://pypi.python.org/simple/pbr/), version: 1.0.1
    Found link https://pypi.python.org/packages/af/60/8e4469f8a1f8570701a5ec781fa5e71db256a17f47f5d16dc924bc905d4f/pbr-0.5.7.tar.gz#md5=d10fa77e985000f0f00c6af6a28acdb7 (from https://pypi.python.org/simple/pbr/), version: 0.5.7
    Found link https://pypi.python.org/packages/b8/2d/b8a38176b243617b1e36144a905c1892325b0b0079f142e3ae3f0b14cfe4/pbr-1.3.0.tar.gz#md5=5e54c9e7f083b5259a6e619dfd6525f8 (from https://pypi.python.org/simple/pbr/), version: 1.3.0
    Found link https://pypi.python.org/packages/b8/a1/7abb01fd93d66fc71e24e5df9ca6d7d9acfb4b715937d2a38fd739f266e6/pbr-1.10.0-py2.py3-none-any.whl#md5=7941615147c725d1800ee86f91d5df3e (from https://pypi.python.org/simple/pbr/), version: 1.10.0
    Found link https://pypi.python.org/packages/bc/f8/4f5315aabe064e75b6cf5ea00e89753aad17370b6bedc87959013e4e5d5b/pbr-1.6.0-py2.py3-none-any.whl#md5=40d83daa9fa67cb215c44ad27c248624 (from https://pypi.python.org/simple/pbr/), version: 1.6.0
    Found link https://pypi.python.org/packages/bf/4d/6c52208dcbd56bb27921b631bcb689143bf4177700f06ee5c02281581788/pbr-0.10.5-py2.py3-none-any.whl#md5=9dac093685bd403a7b44c595e670201e (from https://pypi.python.org/simple/pbr/), version: 0.10.5
    Found link https://pypi.python.org/packages/c1/0e/131710b2f7dd178de3446d41be6333dbea66727d5736f83950a881dce6d5/pbr-0.5.10.tar.gz#md5=849a522f3b64b5a1c9c640d2fded4aa6 (from https://pypi.python.org/simple/pbr/), version: 0.5.10
    Found link https://pypi.python.org/packages/c1/ce/f8a51cbccd7e4bccb972464463a8bb139a35cf0c9d4998f4548292abc59d/pbr-0.10.7-py2.py3-none-any.whl#md5=63b3de0f31e0543930c7524129b53ea8 (from https://pypi.python.org/simple/pbr/), version: 0.10.7
    Found link https://pypi.python.org/packages/c2/39/653746d50ebd66a8784c5469e439e73b717f48fa463165d7c734d25a2de6/pbr-0.10.2-py2.py3-none-any.whl#md5=ad53e06117b823fd1614acc6f5e43335 (from https://pypi.python.org/simple/pbr/), version: 0.10.2
    Found link https://pypi.python.org/packages/c2/c4/baea9cc86502ee89c91ac9ec2d09d77d816f3f266d7653a6ab27e6b2b171/pbr-0.10.0.tar.gz#md5=9e02dbfb5e49210c381fd4eea00cf7b7 (from https://pypi.python.org/simple/pbr/), version: 0.10.0
    Found link https://pypi.python.org/packages/c2/fb/e4cbd19cffb126d2172e0d76c4a15c807bb9ca90f65e3270d3f69e7e641f/pbr-0.10.0-py2.py3-none-any.whl#md5=102a0e69a7335f7cbbfcfa746caf7897 (from https://pypi.python.org/simple/pbr/), version: 0.10.0
    Found link https://pypi.python.org/packages/c3/2c/63275fab26a0fd8cadafca71a3623e4d0f0ee8ed7124a5bb128853d178a7/pbr-1.10.0.tar.gz#md5=8e4968c587268f030e38329feb9c8f17 (from https://pypi.python.org/simple/pbr/), version: 1.10.0
    Found link https://pypi.python.org/packages/c8/44/ef516bef9b79383aa396efe873c8298fef3d99ffbb07aac1d14f121f1237/pbr-0.5.23.tar.gz#md5=dde40a1c2fefcd901c7c9ee9223ef955 (from https://pypi.python.org/simple/pbr/), version: 0.5.23
    Found link https://pypi.python.org/packages/d2/00/aaaaea2b4d6eb1566953ae607f38170801ba1f31eac22984d801d6821bcf/pbr-0.5.22.tar.gz#md5=3bb4f92e970dab5807d3f8189d6cfa10 (from https://pypi.python.org/simple/pbr/), version: 0.5.22
    Found link https://pypi.python.org/packages/d2/78/c6824d6fec5169cca21295093b42d1c609a54d21a18c953cf7f16dfaf1f5/pbr-0.10.3-py2.py3-none-any.whl#md5=b16e070c1fb56755b20ed3610508db64 (from https://pypi.python.org/simple/pbr/), version: 0.10.3
    Found link https://pypi.python.org/packages/d3/0a/e7e41f00d4e479baa627f4146eb40cb422758500459a5ed012cf4c599a72/pbr-1.8.0.tar.gz#md5=bc7173f5ccec8e6125e3b68f0285eb8a (from https://pypi.python.org/simple/pbr/), version: 1.8.0
    Found link https://pypi.python.org/packages/d4/26/8777b9e756b22295375946cb83ee588e8c10e6e2bed73e5f29c218c141c8/pbr-0.11.0-py2.py3-none-any.whl#md5=4896f66ab0d24bfd24dced1bf40cda7a (from https://pypi.python.org/simple/pbr/), version: 0.11.0
    Found link https://pypi.python.org/packages/d4/60/956bf3025f5b8bb655b72968f8993becec4563ce125fca9e33b5f72f497e/pbr-1.1.0.tar.gz#md5=d730c18e11adf7712255f327908fcbac (from https://pypi.python.org/simple/pbr/), version: 1.1.0
    Found link https://pypi.python.org/packages/d5/d6/f2bf137d71e4f213b575faa9eb426a8775732432edb67588a8ee836ecb80/pbr-3.1.1.tar.gz#md5=4e82c2e07af544c56a5b71c801525b00 (from https://pypi.python.org/simple/pbr/), version: 3.1.1
    Found link https://pypi.python.org/packages/d8/d5/66183c56f77e77baea356d596d86e8b2b5a29c61571aca5760682fef68af/pbr-0.5.8.tar.gz#md5=fa6a9330dc608ea53ae3ac1997fc9648 (from https://pypi.python.org/simple/pbr/), version: 0.5.8
    Found link https://pypi.python.org/packages/db/20/4b2c63698053d5a03e2f1d5cf39735a890901a97fff513adfc7e7bd0729a/pbr-0.10.1-py2.py3-none-any.whl#md5=c876b26978806d8bf490aa7510cd1f74 (from https://pypi.python.org/simple/pbr/), version: 0.10.1
    Found link https://pypi.python.org/packages/dc/1c/963dff2c51137a57539d1bf86e651366a34ee83b3658b8406c463b83b7da/pbr-1.3.0-py2.py3-none-any.whl#md5=b54311390cb31abacfc6c48f4fb8a72d (from https://pypi.python.org/simple/pbr/), version: 1.3.0
    Found link https://pypi.python.org/packages/e7/e3/e86fc1e78fa42a8c39630fd37bf730ecbbe78925d0a9b51bef2489668752/pbr-0.5.5.tar.gz#md5=8e5d90e3aa87cfd9b484f68283691376 (from https://pypi.python.org/simple/pbr/), version: 0.5.5
    Found link https://pypi.python.org/packages/e9/c0/8f7f54d7b9b8ceb73ac30d769fdd722431e95ad0d2cd689def382e8b9eec/pbr-2.0.0-py2.py3-none-any.whl#md5=5c7c3692b69649b55a8a793319712f62 (from https://pypi.python.org/simple/pbr/), version: 2.0.0
    Found link https://pypi.python.org/packages/ee/dc/d120fa8c01ef6e19e0272e39295f95a56ad434e0069717b18bc3514f155f/pbr-0.10.3.tar.gz#md5=df43c99f2c1decacebd506247fa1d691 (from https://pypi.python.org/simple/pbr/), version: 0.10.3
    Found link https://pypi.python.org/packages/f4/7b/f724d20f4474c50f28603e42ba2cd1491b823068ebabaf4c941febd4b3e7/pbr-3.1.0-py2.py3-none-any.whl#md5=8f32817607cce84ab36c62325e64f844 (from https://pypi.python.org/simple/pbr/), version: 3.1.0
    Found link https://pypi.python.org/packages/fc/37/94af8387babb09796d306b18cf94ee5c70388c875a16d8a88e471500452c/pbr-1.8.1-py2.py3-none-any.whl#md5=88d4ed81ec269cc1094ba7e3c41d85e5 (from https://pypi.python.org/simple/pbr/), version: 1.8.1
  Using version 3.1.1 (newest of versions: 0.11.0, 0.11.1, 1.0.0, 1.0.1, 1.1.0, 1.1.1, 1.2.0, 1.3.0, 1.4.0, 1.5.0, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.9.0, 1.9.1, 1.10.0, 2.0.0, 2.1.0, 3.0.0, 3.0.1, 3.1.0, 3.1.1)
  Looking up "https://pypi.python.org/packages/0c/5d/b077dbf309993d52c1d71e6bf6fe443a8029ea215135ebbe0b1b10e7aefc/pbr-3.1.1-py2.py3-none-any.whl" in the cache
  Current age based on date: 661
  Freshness lifetime from max-age: 31557600
  The response is "fresh", returning cached response
  31557600 > 661
  Using cached pbr-3.1.1-py2.py3-none-any.whl
  Downloading from URL https://pypi.python.org/packages/0c/5d/b077dbf309993d52c1d71e6bf6fe443a8029ea215135ebbe0b1b10e7aefc/pbr-3.1.1-py2.py3-none-any.whl#md5=75a0f55856bfc9220af0d01244afec43 (from https://pypi.python.org/simple/pbr/)
Collecting funcsigs>=1; python_version < "3.3" (from mock)
  1 location(s) to search for versions of funcsigs:
  * https://pypi.python.org/simple/funcsigs/
  Getting page https://pypi.python.org/simple/funcsigs/
  Looking up "https://pypi.python.org/simple/funcsigs/" in the cache
  Current age based on date: 615
  Freshness lifetime from max-age: 600
  Freshness lifetime from request max-age: 600
  The cached response is "stale" with no etag, purging
  "GET /simple/funcsigs/ HTTP/1.1" 200 952
  Updating cache with response from "https://pypi.python.org/simple/funcsigs/"
  Caching b/c date exists and max-age > 0
  Analyzing links from page https://pypi.python.org/simple/funcsigs/
    Found link https://pypi.python.org/packages/09/8d/17528625d12ca90651dd1f7958fd0d32b23b15f2197023372669fd683321/funcsigs-1.0.0-py2.py3-none-any.whl#md5=1229a5af8401069351c7e61035982f35 (from https://pypi.python.org/simple/funcsigs/), version: 1.0.0
    Found link https://pypi.python.org/packages/3c/60/4bb1cbb64a46e98b8063013d271fd3e9e20832827a4d59e343889c6a7a95/funcsigs-1.0.1-py2.py3-none-any.whl#md5=b5df37432c5d468cab69c1cc93f31ff9 (from https://pypi.python.org/simple/funcsigs/), version: 1.0.1
    Found link https://pypi.python.org/packages/5e/9f/025d4c92c6a1a94313cdf0813cd76f5700f8e5434fa15165090a6446ae22/funcsigs-0.4-py2.py3-none-any.whl#md5=0df93bdb54034b9f0263785c7d6b84f4 (from https://pypi.python.org/simple/funcsigs/), version: 0.4
    Found link https://pypi.python.org/packages/69/cb/f5be453359271714c01b9bd06126eaf2e368f1fddfff30818754b5ac2328/funcsigs-1.0.2-py2.py3-none-any.whl#md5=701d58358171f34b6d1197de2923a35a (from https://pypi.python.org/simple/funcsigs/), version: 1.0.2
    Found link https://pypi.python.org/packages/78/d2/1c8d781e957a667de45199cc9fa69cc95eedc589ceb2f180d7f40af7625f/funcsigs-0.1.tar.gz#md5=4b45f3cd06b9973e590ad714676a5c3d (from https://pypi.python.org/simple/funcsigs/), version: 0.1
    Found link https://pypi.python.org/packages/87/5e/44bc85c41e5b33b6bf1fcb2f6ccbc4ee74337af079438d2a28c5c45137e1/funcsigs-0.4.tar.gz#md5=fb1d031f284233e09701f6db1281c2a5 (from https://pypi.python.org/simple/funcsigs/), version: 0.4
    Found link https://pypi.python.org/packages/94/4a/db842e7a0545de1cdb0439bb80e6e42dfe82aaeaadd4072f2263a4fbed23/funcsigs-1.0.2.tar.gz#md5=7e583285b1fb8a76305d6d68f4ccc14e (from https://pypi.python.org/simple/funcsigs/), version: 1.0.2
    Found link https://pypi.python.org/packages/ab/5b/a6dff630fe5b68a4d2a049b6d95b51ad1510fb72e9606d656feb2c34efd8/funcsigs-1.0.1.tar.gz#md5=c2d84de116ce1aba0dc844a359cd20dd (from https://pypi.python.org/simple/funcsigs/), version: 1.0.1
    Found link https://pypi.python.org/packages/b2/c3/1842bc45f0549d34379e3ea73ce584ba30573e26dd93a0fef03cfed8156c/funcsigs-0.3.tar.gz#md5=a877ec113482165d6f19b49cbec4b8ba (from https://pypi.python.org/simple/funcsigs/), version: 0.3
    Found link https://pypi.python.org/packages/b7/56/1def30b73d76ef0a6c68c8a14b3fc31d361c53b02ff2ffb1c91d2b465698/funcsigs-0.2.tar.gz#md5=1f56853306a9aa69b58051854d70f904 (from https://pypi.python.org/simple/funcsigs/), version: 0.2
    Found link https://pypi.python.org/packages/b9/5e/55612c62d35959b5b9767f020f95cb0830f340733f5c2626c7d1e9056729/funcsigs-1.0.0.tar.gz#md5=669d0f34e94cb36a3948e8f592bc6f25 (from https://pypi.python.org/simple/funcsigs/), version: 1.0.0
  Using version 1.0.2 (newest of versions: 1.0.0, 1.0.1, 1.0.2)
  Looking up "https://pypi.python.org/packages/69/cb/f5be453359271714c01b9bd06126eaf2e368f1fddfff30818754b5ac2328/funcsigs-1.0.2-py2.py3-none-any.whl" in the cache
  Current age based on date: 615
  Freshness lifetime from max-age: 31557600
  The response is "fresh", returning cached response
  31557600 > 615
  Using cached funcsigs-1.0.2-py2.py3-none-any.whl
  Downloading from URL https://pypi.python.org/packages/69/cb/f5be453359271714c01b9bd06126eaf2e368f1fddfff30818754b5ac2328/funcsigs-1.0.2-py2.py3-none-any.whl#md5=701d58358171f34b6d1197de2923a35a (from https://pypi.python.org/simple/funcsigs/)
Collecting six>=1.9 (from mock)
  1 location(s) to search for versions of six:
  * https://pypi.python.org/simple/six/
  Getting page https://pypi.python.org/simple/six/
  Looking up "https://pypi.python.org/simple/six/" in the cache
  Current age based on date: 661
  Freshness lifetime from max-age: 600
  Freshness lifetime from request max-age: 600
  The cached response is "stale" with no etag, purging
  "GET /simple/six/ HTTP/1.1" 200 2699
  Updating cache with response from "https://pypi.python.org/simple/six/"
  Caching b/c date exists and max-age > 0
  Analyzing links from page https://pypi.python.org/simple/six/
    Found link https://pypi.python.org/packages/02/c3/8e2a38edaac777ee2bbe479b3a65b020ade549efd6a224c2f4e95c818799/six-1.6.0.tar.gz#md5=eb22a24e8be9497dd71930bf2321b6ec (from https://pypi.python.org/simple/six/), version: 1.6.0
    Found link https://pypi.python.org/packages/02/f8/d16f06e49b0d2ef40548bf42826f926c8964ad3b1d00f8098dcc6ef15aea/six-1.3.0.tar.gz#md5=ec47fe6070a8a64c802363d2c2b1e2ee (from https://pypi.python.org/simple/six/), version: 1.3.0
    Found link https://pypi.python.org/packages/0b/5e/4b3f417a85d9cd30b172a1512a2d3cdd0ffb05a5deacb8adf2ef30db100d/six-1.5.1.tar.gz#md5=bb00c982fc0ec0dd6a760500b0941fa9 (from https://pypi.python.org/simple/six/), version: 1.5.1
    Found link https://pypi.python.org/packages/0e/f9/66471f9b7e9291cca697b2e61a10645a537f389a9d5c0679d50dd86b20f7/six-0.9.0.tar.gz#md5=5ce2947347101b9f54674c19ef88233d (from https://pypi.python.org/simple/six/), version: 0.9.0
    Found link https://pypi.python.org/packages/0f/dd/379fa572b72da0b482545116139529af8da92e686ea136271beecddd4e81/six-1.5.0.tar.gz#md5=72b33ff89f3b2f21dd2cb28fb94f7031 (from https://pypi.python.org/simple/six/), version: 1.5.0
    Found link https://pypi.python.org/packages/10/e3/a7f8eea80a9fa8358c1cd89ef489bc03675e69e54ed2982cd6f2a28d8295/six-1.9.0-py2.py3-none-any.whl#md5=9ac7e129a80f72d6fc1f0216f6e9627b (from https://pypi.python.org/simple/six/), version: 1.9.0
    Found link https://pypi.python.org/packages/11/3f/2b3c217c5427cdd12619024b1ee1b04d49e27fde5c29df2a0b92c26677c2/six-1.8.0.tar.gz#md5=1626eb24cc889110c38f7e786ec69885 (from https://pypi.python.org/simple/six/), version: 1.8.0
    Found link https://pypi.python.org/packages/16/64/1dc5e5976b17466fd7d712e59cbe9fb1e18bec153109e5ba3ed6c9102f1a/six-1.9.0.tar.gz#md5=476881ef4012262dfc8adc645ee786c4 (from https://pypi.python.org/simple/six/), version: 1.9.0
    Found link https://pypi.python.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz#md5=d12789f9baf7e9fb2524c0c64f1773f8 (from https://pypi.python.org/simple/six/), version: 1.11.0
    Found link https://pypi.python.org/packages/1b/2a/ad686ae156581a70a7be28e7762f7d956bec30d62dafe9295b78dc019692/six-1.7.1.tar.gz#md5=f9fbad970c6e855cabde7ec1144b9058 (from https://pypi.python.org/simple/six/), version: 1.7.1
    Found link https://pypi.python.org/packages/1d/8e/220ce5a36dac3aabccee871a34561ceba82ce14b53760143cf5e01bb4d2c/six-1.5.2.tar.gz#md5=322b86d0c50a7d165c05600154cecc0a (from https://pypi.python.org/simple/six/), version: 1.5.2
    Found link https://pypi.python.org/packages/20/0a/617bf23511160454995bf1cbe6789f22beeb8b49c1f3b1bbf4b5cd6a55ca/six-1.7.0-py2.py3-none-any.whl#md5=e5ca7e89cc79d755ea128fc7e2cb136e (from https://pypi.python.org/simple/six/), version: 1.7.0
    Found link https://pypi.python.org/packages/2b/4a/233721f6c6afeed5a2034f617f120fa646da935039f08e67ab8dc008a3e6/six-1.7.3.tar.gz#md5=784c6e5541c3c4952de9c0a966a0a80b (from https://pypi.python.org/simple/six/), version: 1.7.3
    Found link https://pypi.python.org/packages/2e/a4/6dcb84af409b7bc0c258a0d6bd7e14231724d9a46b750c048f09d74d870c/six-1.7.3-py2.py3-none-any.whl#md5=5f34fe522765d398b21decdce62ebd1d (from https://pypi.python.org/simple/six/), version: 1.7.3
    Found link https://pypi.python.org/packages/4e/02/f08545a99829a04e841b6443267f216629c723c23fb9cfd17c99c068e33a/six-0.9.1.tar.gz#md5=1b249e0011355722f569406135a8ac93 (from https://pypi.python.org/simple/six/), version: 0.9.1
    Found link https://pypi.python.org/packages/4e/aa/73683ca0c4237891e33562e3f55bcaab972869959b97b397637519d92035/six-1.4.1.tar.gz#md5=bdbb9e12d3336c198695aa4cf3a61d62 (from https://pypi.python.org/simple/six/), version: 1.4.1
    Found link https://pypi.python.org/packages/54/45/8b5eef1ba0b79acbdab01435359f37ae13dc6c4aafaa444b805e3867386d/six-1.6.0-py2.py3-none-any.whl#md5=e2755cf8a1d8e4eda44a8e3436c458ca (from https://pypi.python.org/simple/six/), version: 1.6.0
    Found link https://pypi.python.org/packages/54/d4/8f7d631f1c3defa2ff4bd7c3daddcc5ed6eb9df7631f3cf24cc376aa3231/six-1.1.0.tar.gz#md5=9e8099b57cd27493a6988e9c9b313e23 (from https://pypi.python.org/simple/six/), version: 1.1.0
    Found link https://pypi.python.org/packages/60/84/72c628d5a4efffb23e2fb46cdbf8ee669046d8208ba5dab08f989b7bfe9c/six-1.5.1-py2.py3-none-any.whl#md5=2064b715201fa76a55dea75675ee19f2 (from https://pypi.python.org/simple/six/), version: 1.5.1
    Found link https://pypi.python.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl#md5=866ab722be6bdfed6830f3179af65468 (from https://pypi.python.org/simple/six/), version: 1.11.0
    Found link https://pypi.python.org/packages/6b/30/839b8059d1225dbd3a0dd97c3c370bbb978cde505e160b30515fb7be17d8/six-1.7.2-py2.py3-none-any.whl#md5=0e10f8d8e65257408e4428632859dad9 (from https://pypi.python.org/simple/six/), version: 1.7.2
    Found link https://pypi.python.org/packages/7e/16/792311d76b8e23da84e1b177fb973679de1c963391d0dcd7e963634bed4b/six-1.7.0.tar.gz#md5=92f7210da3db1e988979fa394aa41d7a (from https://pypi.python.org/simple/six/), version: 1.7.0
    Found link https://pypi.python.org/packages/8b/08/8f569ab2c81c1443ce43e29df2e7eec1ab7f005455f6c193793728b00f04/six-1.0b1.tar.gz#md5=cbfcc64af1f27162a6a6b5510e262c9d (from https://pypi.python.org/simple/six/), version: 1.0b1
    Found link https://pypi.python.org/packages/99/25/2df8760d6902620cfca85e36f07de491d14f2c325ecc01c1a5590d8af22d/six-1.4.0.tar.gz#md5=5fcab6a067b5ebf68ede2f4d02fe7547 (from https://pypi.python.org/simple/six/), version: 1.4.0
    Found link https://pypi.python.org/packages/a2/4b/2b4532b4eba116a02fc0b5e0b3540a073a61c003b7b6293b7b884afa8ff1/six-1.8.0-py2.py3-none-any.whl#md5=2f5f96148c68f3c1611f489678a8b445 (from https://pypi.python.org/simple/six/), version: 1.8.0
    Found link https://pypi.python.org/packages/a4/ed/a1410f4a3ae1492d87cbc7acdeea819db3caf6e526ef7032dd6fe50d2083/six-1.7.2.tar.gz#md5=4c26276583b01dfc73474cb32327af91 (from https://pypi.python.org/simple/six/), version: 1.7.2
    Found link https://pypi.python.org/packages/a6/af/4506a069312018665b8936e5d51b3aa013971ef65eab5231ef151a482dcd/six-1.0.0.tar.gz#md5=37c7ff036fdff2b1bb8d55e49ccb3b44 (from https://pypi.python.org/simple/six/), version: 1.0.0
    Found link https://pypi.python.org/packages/aa/ec/e6954e19e617c1b9860325f0995d456d8416c84a6cb9bce1c10998280b59/six-1.7.1-py2.py3-none-any.whl#md5=c3c1e251733acc9db947e75c9a02cf06 (from https://pypi.python.org/simple/six/), version: 1.7.1
    Found link https://pypi.python.org/packages/af/33/fa2097ac4bc7a9672517fdcb982bc7454fdd113f49f7ab353025b906a119/six-0.9.2.tar.gz#md5=92ea7c870396dd9222029a188c6bbd7f (from https://pypi.python.org/simple/six/), version: 0.9.2
    Found link https://pypi.python.org/packages/b3/b2/238e2590826bfdd113244a40d9d3eb26918bd798fc187e2360a8367068db/six-1.10.0.tar.gz#md5=34eed507548117b2ab523ab14b2f8b55 (from https://pypi.python.org/simple/six/), version: 1.10.0
    Found link https://pypi.python.org/packages/ba/19/aa48edcff9d0c396a4d009d362d0a0a1ac3db6f9d7d5736e0175b94d7ef8/six-1.6.1-py2.py3-none-any.whl#md5=ca195cc2271b03ae1c8750a88081c7f1 (from https://pypi.python.org/simple/six/), version: 1.6.1
    Found link https://pypi.python.org/packages/c7/a4/35520d20a8e4b3c28c9db705fffd4c7053e0236928951da32167e5078faa/six-1.5.2-py2.py3-none-any.whl#md5=ba32222ad0c5c7057a7c42e66e81289d (from https://pypi.python.org/simple/six/), version: 1.5.2
    Found link https://pypi.python.org/packages/c8/0a/b6723e1bc4c516cb687841499455a8505b44607ab535be01091c0f24f079/six-1.10.0-py2.py3-none-any.whl#md5=3ab558cf5d4f7a72611d59a81a315dc8 (from https://pypi.python.org/simple/six/), version: 1.10.0
    Found link https://pypi.python.org/packages/ca/15/e62a66024dded9640f8d39112330e6b108e7ab21a1b8618c2d1e2eea7e1d/six-1.5.0-py2.py3-none-any.whl#md5=3307efe2bc4ca8556befc9afe297c530 (from https://pypi.python.org/simple/six/), version: 1.5.0
    Found link https://pypi.python.org/packages/e8/70/b9c441d8c02b70eb3bf923c49944b8fc656f78a43c084d2a98534d7404e2/six-1.6.1.tar.gz#md5=07d606ac08595d795bf926cc9985674f (from https://pypi.python.org/simple/six/), version: 1.6.1
    Found link https://pypi.python.org/packages/e9/b4/0ccbc17cd49a812ab8363058bb12f0134cf2d3ba752391f309ddf567ae97/six-1.2.0.tar.gz#md5=2a5d1afc79912832ac78fd38e3d75d7e (from https://pypi.python.org/simple/six/), version: 1.2.0
  Using version 1.11.0 (newest of versions: 1.9.0, 1.10.0, 1.11.0)
  Looking up "https://pypi.python.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl" in the cache
  Current age based on date: 4245500
  Freshness lifetime from max-age: 31557600
  The response is "fresh", returning cached response
  31557600 > 4245500
  Using cached six-1.11.0-py2.py3-none-any.whl
  Downloading from URL https://pypi.python.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl#md5=866ab722be6bdfed6830f3179af65468 (from https://pypi.python.org/simple/six/)
Installing collected packages: pbr, funcsigs, six, mock

  changing mode of /Users/hynek/.local/share/virtualenvs/pipenv-test-RKl-GKWb/bin/pbr to 755



Successfully installed funcsigs-1.0.2 mock-2.0.0 pbr-3.1.1 six-1.11.0
Cleaning up...

Adding mock to Pipfile's [packages]…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (a69885)!

As you can see, funcsigs gets installed (“Successfully installed funcsigs-1.0.2 mock-2.0.0 pbr-3.1.1 six-1.11.0”).

However it’s not present in Pipfile.lock:

{
    "_meta": {
        "hash": {
            "sha256": "e3db12f7fd14f8b6216c97b58fcf0f9927bb85cfb3c4aa4b7b6a8bcf79a69885"
        },
        "host-environment-markers": {
            "implementation_name": "cpython",
            "implementation_version": "0",
            "os_name": "posix",
            "platform_machine": "x86_64",
            "platform_python_implementation": "CPython",
            "platform_release": "17.3.0",
            "platform_system": "Darwin",
            "platform_version": "Darwin Kernel Version 17.3.0: Thu Nov  9 18:09:22 PST 2017; root:xnu-4570.31.3~1/RELEASE_X86_64",
            "python_full_version": "2.7.14",
            "python_version": "2.7",
            "sys_platform": "darwin"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "2.7"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.python.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "mock": {
            "hashes": [],
            "version": "==2.0.0"
        },
        "pbr": {
            "hashes": [],
            "version": "==3.1.1"
        },
        "six": {
            "hashes": [],
            "version": "==1.11.0"
        }
    },
    "develop": {}
}

That means:

  1. it’s not pinned on deployments
  2. after the next pipenv update, it's gonna be gone in development.

Curiously, pipenv graph knows it should depend on funcsigs just fine and seems flabbergasted (?) by its absence:

pipenv graph
mock==2.0.0
  - funcsigs [required: >=1, installed: ?]
  - pbr [required: >=0.11, installed: 3.1.1]
  - six [required: >=1.9, installed: 1.11.0]
@kennethreitz
Copy link
Contributor

What version of Python did you install pipenv with?

@kennethreitz
Copy link
Contributor

We’re doing a lot to attempt to support this — and it works well in most scenarios. Looks like you found a good corner case, potentially.

@techalchemy
Copy link
Member

looks like a depenedency resolution issue to me, and I dug into it a bit and mock actually doesn't include this information in its setup.py, but instead in its requirement.txt which it expects to be parsed using pbr. Our resolver most likely doesn't do this, because of reasons, so that's probably the issue.

@kennethreitz
Copy link
Contributor

so would this be a path issue? we might be able to patch, if so.

otherwise, this might be a wontfix

@hynek
Copy link
Contributor Author

hynek commented Jan 16, 2018

What version of Python did you install pipenv with?

3.6.3 but I’ve re-checked with 3.6.4 and it’s the same behaviour.

@hynek
Copy link
Contributor Author

hynek commented Jan 16, 2018

OK another example that doesn’t use pbr: pipenv install --two cryptography

It has multiple markers:

https://github.com/pyca/cryptography/blob/2beccafe22c87a7b3feb6672aaa88d7b7f3a9fb1/setup.py#L295-L296

If you look into the Pipfile.lock, there is neither ipaddress nor enum34.


Also as a side-note, the "markers": "platform_python_implementation != 'PyPy'", marker on CFFI vanishes for me after a few installs/updates. And then re-appears. But I really don’t know how to reproduce that. It might also be related to using a private index or god knows what.

@kennethreitz
Copy link
Contributor

I’ve put significant effort into preserving these, but it’s difficult at best — packages all communicate this information differently.

Do you get the same error when doing $ pipenv install —three crytography ?

@hynek
Copy link
Contributor Author

hynek commented Jan 16, 2018

The reproducible problem (sorry for bringing up the PyPy thing; I will open a new issue one day) only can happen on --two because it literally says :python_version < '3'. :)

@hynek
Copy link
Contributor Author

hynek commented Jan 16, 2018

After consulting my own blog post: yes this kind of syntax is kind of deprecated in favour of PEP 508 however it’s still very common because it was the only thing that worked until setuptools 36.2.

@techalchemy
Copy link
Member

Right but it won’t get parsed in a resolution graph until the package is installed afaik

@kennethreitz
Copy link
Contributor

nothing we can do here at this time, i believe

@kennethreitz
Copy link
Contributor

we typically do handle this case properly

@hynek
Copy link
Contributor Author

hynek commented Jan 23, 2018

Maybe you should document it somewhere though? The behavior is subtly wrong and I just ran into it with another package.

I think I’ll do a PyCon lightning talk about PEP 508 to get people move on. :|

@ncoghlan
Copy link
Member

ncoghlan commented Feb 2, 2018

@hynek checked & pipenv does the right thing for his Py2 venvs if pipenv itself is also running under Python 2.7, so it sounds like this is another instance of #857

@techalchemy
Copy link
Member

@ncoghlan that's right:

Right but it won’t get parsed in a resolution graph until the package is installed afaik

Pip-tools handles parsing by using a pip.index.PackageFinder instance to ultimately generate a pip.req.req_set.RequirementSet from which pip.req.req_install.InstallRequirement instances are generated. Since this all runs in the host interpreter, each step needs to be fooled into believing that it is working with the 'guest' python version to do resolution properly, while not actually performing any installation operations because they will fail.

So far based on the call graph I can identify the following pieces that need to be fooled:

  • PIP_PYTHON_PATH
  • PIP_PYTHON_VERSION
  • pip.index.PackageFinder.valid_tags which comes from pip.pep425tags.get_supported
  • sys.path
  • sys.version
  • sysconfig calls are made in distlib.wheel

If at any point those resolve to the wrong interpreter (i.e. the host interpreter), resolution runs the risk of failing. So now I'm wondering if we shouldn't just 'install' a resolver script into the virtualenv and run it in that context and just dump the output to the host interpreter via a subprocess or something.

@ncoghlan
Copy link
Member

ncoghlan commented Feb 3, 2018

Aye, while I think being able to generate the lock file without creating the venv first is a nice design goal, experience has shown us that doing so is currently too fragile to rely on (at least for now).

@ncoghlan
Copy link
Member

ncoghlan commented Mar 3, 2018

As of v11, lock file generation resolves the dependencies using the venv Python, so the generated lock file should be independent of the host Python version now (it will still depend on the version of Python in the virtual environment).

@hynek
Copy link
Contributor Author

hynek commented Mar 3, 2018

Yes, I can confirm it’s fixed now. Great work!

@kennethreitz
Copy link
Contributor

p.s. that wasn't easy :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants