pypa / pipenv

Python Development Workflow for Humans.
https://pipenv.pypa.io
MIT License
24.87k stars 1.87k forks source link

Pipenv looking in wrong index for subdependencies #5543

Closed CNDW closed 1 year ago

CNDW commented 1 year ago

Issue description

When installing a package from a private registry, sub-dependencies coming from pypi are being looked for in the private package registry and as a result fail to install. This issue was not present in v2022.11.30 and was introduced with v2022.12.17

Expected result

Dependencies to be resolved correctly

Actual result

pipfile lock completes without issue, although it does not apply a index to the dependencies coming from pypi. As an aside, in the past we have had to define private subdependencies with the index, pipenv has been having trouble identifying the expected index ever since pip made the change to expect explicit indexes.

The minimal example I produced has a pipfile that looks like

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[[source]]
name = "fury"
url = "https://pypi.fury.io/${GEMFURY_TOKEN}/gain-bot/"
verify_ssl = true

[packages]
# This is the main dependency
pygain-lib = {version = "==20.0.2", extras = ["pubsub", "gcs", "graph", "server"], index = "fury"}
# The following are all subdependencies on our private index, if they are not spelled out in the pipfile with the
# correct indes, pipenv cannot find them
pygain-flask-hal = {version = "==1.0.7",index = "fury"}
gain-marshmallow = {version = "~=1.0.1", index = "fury"}
pygain-iso8601utils = {version="==0.1.3", index = "fury"}

[requires]
python_version = "3.7"

When I run pipenv sync -vv the output provides an error that looks like this


Collecting pygain-lib[gcs,graph,pubsub,server]==20.0.2

  Downloading https://pypi.fury.io/${GEMFURY_TOKEN}/gain-bot/-/ver_12237y/pygain-lib-20.0.2.tar.gz (584 kB)

     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 584.1/584.1 kB 2.4 MB/s eta 0:00:00

  Installing build dependencies: started

  Installing build dependencies: finished with status 'error'

error: subprocess-exited-with-error

  × pip subprocess to install build dependencies did not run successfully.
  │ exit code: 1
  ╰─> [3 lines of output]
      Looking in indexes: https://pypi.fury.io/${GEMFURY_TOKEN}/gain-bot/
      ERROR: Could not find a version that satisfies the requirement setuptools>=41 (from versions: none)
      ERROR: No matching distribution found for setuptools>=41
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

pipenv is looking for setuptools in our fury index

  × pip subprocess to install build dependencies did not run successfully.
  │ exit code: 1
  ╰─> [3 lines of output]
      Looking in indexes: https://pypi.fury.io/${GEMFURY_TOKEN}/gain-bot/
      ERROR: Could not find a version that satisfies the requirement setuptools>=41 (from versions: none)
      ERROR: No matching distribution found for setuptools>=41
      [end of output]

even though there is no index defined in the Pipfile.lock

        "setuptools": {
            "hashes": [
                "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54",
                "sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"
            ],
            "version": "==65.6.3"
        },

Steps to replicate

Create a pipfile that contains 2 registries, pypi and a 2nd with a package coming from the 2nd registry and itself having a mix of dependencies coming from pypi and the 2nd registry.

For obvious reasons, I can't share my isolated example here, but if you want my help trying to set up an example or working on this issue I am willing to spend time on it. Dependency management with out private registry has been the source of a lot of dev pain over the years and I am very motivated to help make it more consistent for all involved.


$ pipenv --support Pipenv version: `'2022.11.30'` Pipenv location: `'/Users/travis/.local/pipx/venvs/pipenv/lib/python3.7/site-packages/pipenv'` Python location: `'/Users/travis/.local/pipx/venvs/pipenv/bin/python'` OS Name: `'posix'` User pip version: `'22.3'` user Python installations found: - `3.9.6`: `/usr/bin/python3` - `3.9.0`: `/Users/travis/.pyenv/versions/3.9.0/bin/python3` - `3.7.4`: `/Users/travis/.pyenv/versions/3.7.4/bin/python3` - `2.7.16`: `/Users/travis/.pyenv/versions/2.7.16/bin/python` PEP 508 Information: ``` {'implementation_name': 'cpython', 'implementation_version': '3.7.4', 'os_name': 'posix', 'platform_machine': 'x86_64', 'platform_python_implementation': 'CPython', 'platform_release': '21.6.0', 'platform_system': 'Darwin', 'platform_version': 'Darwin Kernel Version 21.6.0: Thu Sep 29 20:13:56 PDT ' '2022; root:xnu-8020.240.7~1/RELEASE_ARM64_T6000', 'python_full_version': '3.7.4', 'python_version': '3.7', 'sys_platform': 'darwin'} ``` System environment variables: - `TERM_PROGRAM` - `SHELL` - `TERM` - `TMPDIR` - `TERM_PROGRAM_VERSION` - `TERM_SESSION_ID` - `USER` - `SSH_AUTH_SOCK` - `PATH` - `LaunchInstanceID` - `__CFBundleIdentifier` - `PWD` - `XPC_FLAGS` - `XPC_SERVICE_NAME` - `SHLVL` - `HOME` - `LOGNAME` - `SECURITYSESSIONID` - `OLDPWD` - `GCLOUD_PROJECT` - `GAIN_ENV` - `GEMFURY_TOKEN` - `NPM_TOKEN` - `GH_TOKEN` - `CR_PAT` - `SLACK_API_TOKEN` - `GOOGLE_APPLICATION_CREDENTIALS` - `NVM_DIR` - `NVM_CD_FLAGS` - `NVM_BIN` - `NVM_INC` - `PYENV_SHELL` - `GAE_LIB_ROOT` - `GAE_PYTHONPATH` - `BUN_INSTALL` - `LANG` - `_` - `__CF_USER_TEXT_ENCODING` - `PIP_DISABLE_PIP_VERSION_CHECK` - `PIP_PYTHON_PATH` - `PYTHONDONTWRITEBYTECODE` - `PYTHONFINDER_IGNORE_UNSUPPORTED` Pipenv–specific environment variables: Debug–specific environment variables: - `PATH`: `/Users/travis/.bun/bin:/Users/travis/.poetry/bin:/usr/local/opt/mysql@5.7/bin:/Users/travis/.pyenv/shims:/Users/travis/google-cloud-sdk/bin:/Users/travis/.nvm/versions/node/v16.18.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Users/travis/.pyenv/bin:/usr/local/opt/openssl/bin:/usr/local/opt/sqlite/bin:/Users/travis/.local/bin:/Users/travis/Projects/GainCompliance/pygain-cli/bin:/Users/travis/Projects/pygain-lib/bin` - `SHELL`: `/bin/zsh` - `LANG`: `en_US.UTF-8` - `PWD`: `/Users/travis/Projects/tmp/pipenv-test` --------------------------- Contents of `Pipfile` ('/Users/travis/Projects/tmp/pipenv-test/Pipfile'): ```toml [[source]] name = "pypi" url = "https://pypi.org/simple" verify_ssl = true [[source]] name = "fury" url = "https://pypi.fury.io/${GEMFURY_TOKEN}/gain-bot/" verify_ssl = true [packages] pygain-lib = {version = "==20.0.2", extras = ["pubsub", "gcs", "graph", "server"], index = "fury"} pygain-flask-hal = {version = "==1.0.7",index = "fury"} gain-marshmallow = {version = "~=1.0.1", index = "fury"} pygain-iso8601utils = {version="==0.1.3", index = "fury"} [requires] python_version = "3.7" ``` Contents of `Pipfile.lock` ('/Users/travis/Projects/tmp/pipenv-test/Pipfile.lock'): ```json { "_meta": { "hash": { "sha256": "5b1f624308677613e98fce5de357276327f19705cd0698cc27cc9c41ab65503c" }, "pipfile-spec": 6, "requires": { "python_version": "3.7" }, "sources": [ { "name": "pypi", "url": "https://pypi.org/simple", "verify_ssl": true }, { "name": "fury", "url": "https://pypi.fury.io/${GEMFURY_TOKEN}/gain-bot/", "verify_ssl": true } ] }, "default": { "async-timeout": { "hashes": [ "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15", "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c" ], "markers": "python_version >= '3.6'", "version": "==4.0.2" }, "attrs": { "hashes": [ "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6", "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c" ], "markers": "python_version >= '3.5'", "version": "==22.1.0" }, "cachetools": { "hashes": [ "sha256:513d4ff98dd27f85743a8dc0e92f55ddb1b49e060c2d5961512855cda2c01a98", "sha256:bbaa39c3dede00175df2dc2b03d0cf18dd2d32a7de7beb68072d13043c9edb20" ], "markers": "python_version ~= '3.5'", "version": "==4.1.1" }, "camel-snake-kebab": { "hashes": [ "sha256:eaf0689903df11dbc04f4e9e3b8c6979e2196198cd4566d2364ef33aee9dc0de", "sha256:fc21bfdaa969f1e5c6a0ec87125cc162de7801dd526bb2ec2bd26fd37f3b005e" ], "version": "==0.3.2" }, "certifi": { "hashes": [ "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18" ], "markers": "python_version >= '3.6'", "version": "==2022.12.7" }, "charset-normalizer": { "hashes": [ "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" ], "markers": "python_full_version >= '3.6.0'", "version": "==2.1.1" }, "click": { "hashes": [ "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" ], "markers": "python_version >= '3.7'", "version": "==8.1.3" }, "cython": { "hashes": [ "sha256:061e25151c38f2361bc790d3bcf7f9d9828a0b6a4d5afa56fbed3bd33fb2373a", "sha256:06be83490c906b6429b4389e13487a26254ccaad2eef6f3d4ee21d8d3a4aaa2b", "sha256:07d173d3289415bb496e72cb0ddd609961be08fe2968c39094d5712ffb78672b", "sha256:0bbc27abdf6aebfa1bce34cd92bd403070356f28b0ecb3198ff8a182791d58b9", "sha256:0ea8267fc373a2c5064ad77d8ff7bf0ea8b88f7407098ff51829381f8ec1d5d9", "sha256:3875c2b2ea752816a4d7ae59d45bb546e7c4c79093c83e3ba7f4d9051dd02928", "sha256:39afb4679b8c6bf7ccb15b24025568f4f9b4d7f9bf3cbd981021f542acecd75b", "sha256:3f85eb2343d20d91a4ea9cf14e5748092b376a64b7e07fc224e85b2753e9070b", "sha256:40eff7aa26e91cf108fd740ffd4daf49f39b2fdffadabc7292b4b7dc5df879f0", "sha256:479690d2892ca56d34812fe6ab8f58e4b2e0129140f3d94518f15993c40553da", "sha256:4a4b03ab483271f69221c3210f7cde0dcc456749ecf8243b95bc7a701e5677e0", "sha256:513e9707407608ac0d306c8b09d55a28be23ea4152cbd356ceaec0f32ef08d65", "sha256:5514f3b4122cb22317122a48e175a7194e18e1803ca555c4c959d7dfe68eaf98", "sha256:5ba622326f2862f9c1f99ca8d47ade49871241920a352c917e16861e25b0e5c3", "sha256:63b79d9e1f7c4d1f498ab1322156a0d7dc1b6004bf981a8abda3f66800e140cd", "sha256:656dc5ff1d269de4d11ee8542f2ffd15ab466c447c1f10e5b8aba6f561967276", "sha256:67fdd2f652f8d4840042e2d2d91e15636ba2bcdcd92e7e5ffbc68e6ef633a754", "sha256:79e3bab19cf1b021b613567c22eb18b76c0c547b9bc3903881a07bfd9e7e64cf", "sha256:856d2fec682b3f31583719cb6925c6cdbb9aa30f03122bcc45c65c8b6f515754", "sha256:8669cadeb26d9a58a5e6b8ce34d2c8986cc3b5c0bfa77eda6ceb471596cb2ec3", "sha256:8733cf4758b79304f2a4e39ebfac5e92341bce47bcceb26c1254398b2f8c1af7", "sha256:97335b2cd4acebf30d14e2855d882de83ad838491a09be2011745579ac975833", "sha256:afbce249133a830f121b917f8c9404a44f2950e0e4f5d1e68f043da4c2e9f457", "sha256:b0595aee62809ba353cebc5c7978e0e443760c3e882e2c7672c73ffe46383673", "sha256:b6da3063c5c476f5311fd76854abae6c315f1513ef7d7904deed2e774623bbb9", "sha256:c8e8025f496b5acb6ba95da2fb3e9dacffc97d9a92711aacfdd42f9c5927e094", "sha256:cddc47ec746a08603037731f5d10aebf770ced08666100bd2cdcaf06a85d4d1b", "sha256:cdf10af3e2e3279dc09fdc5f95deaa624850a53913f30350ceee824dc14fc1a6", "sha256:d968ffc403d92addf20b68924d95428d523436adfd25cf505d427ed7ba3bee8b", "sha256:dbee03b8d42dca924e6aa057b836a064c769ddfd2a4c2919e65da2c8a362d528", "sha256:e1958e0227a4a6a2c06fd6e35b7469de50adf174102454db397cec6e1403cce3", "sha256:e6ffa08aa1c111a1ebcbd1cf4afaaec120bc0bbdec3f2545f8bb7d3e8e77a1cd", "sha256:e83228e0994497900af954adcac27f64c9a57cd70a9ec768ab0cb2c01fd15cf1", "sha256:ea1dcc07bfb37367b639415333cfbfe4a93c3be340edf1db10964bc27d42ed64", "sha256:eca3065a1279456e81c615211d025ea11bfe4e19f0c5650b859868ca04b3fcbd", "sha256:ed087eeb88a8cf96c60fb76c5c3b5fb87188adee5e179f89ec9ad9a43c0c54b3", "sha256:eeb475eb6f0ccf6c039035eb4f0f928eb53ead88777e0a760eccb140ad90930b", "sha256:eefd2b9a5f38ded8d859fe96cc28d7d06e098dc3f677e7adbafda4dcdd4a461c", "sha256:f3fd44cc362eee8ae569025f070d56208908916794b6ab21e139cea56470a2b3", "sha256:f9944013588a3543fca795fffb0a070a31a243aa4f2d212f118aa95e69485831" ], "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.29.32" }, "expiringdict": { "hashes": [ "sha256:09a5d20bc361163e6432a874edd3179676e935eb81b925eccef48d409a8a45e8", "sha256:300fb92a7e98f15b05cf9a856c1415b3bc4f2e132be07daa326da6414c23ee09" ], "version": "==1.2.2" }, "first": { "hashes": [ "sha256:8d8e46e115ea8ac652c76123c0865e3ff18372aef6f03c22809ceefcea9dec86", "sha256:ff285b08c55f8c97ce4ea7012743af2495c9f1291785f163722bd36f6af6d3bf" ], "version": "==2.0.2" }, "flask": { "hashes": [ "sha256:15972e5017df0575c3d6c090ba168b6db90259e620ac8d7ea813a396bad5b6cb", "sha256:9013281a7402ad527f8fd56375164f3aa021ecfaff89bfe3825346c24f87e04c" ], "markers": "python_version >= '3.7'", "version": "==2.1.3" }, "freezegun": { "hashes": [ "sha256:cd22d1ba06941384410cd967d8a99d5ae2442f57dfafeff2fda5de8dc5c05446", "sha256:ea1b963b993cb9ea195adbd893a48d573fda951b0da64f60883d7e988b606c9f" ], "markers": "python_version >= '3.6'", "version": "==1.2.2" }, "gain-marshmallow": { "hashes": [ "sha256:ff589ab02550c6f2860ea5b5d1958d73a8c5ac6dde392cb7e03613c9183155e4" ], "index": "fury", "version": "==1.0.1" }, "gain-requests-futures": { "hashes": [ "sha256:0e1b42f01967affa960da792200ba248dce5712e3656fc121b387dc3743c794d", "sha256:848377c2f829c933fcdb40e7f1f07ac2c13a4f6ce1c1ab724d77658049f5b312", "sha256:8c4e4ec67866479eb99fd931396e5de34714ec9b05c68889a79516c400e2f8e6" ], "version": "==0.9.7" }, "google-api-core": { "extras": [ "grpc" ], "hashes": [ "sha256:6fb380f49d19ee1d09a9722d0379042b7edb06c0112e4796c7a395078a043e71", "sha256:7421474c39d396a74dfa317dddbc69188f2336835f526087c7648f91105e32ff" ], "markers": "python_version >= '3.7'", "version": "==1.34.0" }, "google-api-python-client": { "hashes": [ "sha256:05583a386e323f428552419253765314a4b29828c3cee15be735f9ebfa5aebf2", "sha256:1838f66ea239647887eef7c58a9c70de25914bcb82ff093d69c64817ac74a9b3" ], "version": "==1.6.7" }, "google-auth": { "hashes": [ "sha256:997516b42ecb5b63e8d80f5632c1a61dddf41d2a4c2748057837e06e00014258", "sha256:b7033be9028c188ee30200b204ea00ed82ea1162e8ac1df4aa6ded19a191d88e" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", "version": "==1.35.0" }, "google-cloud-core": { "hashes": [ "sha256:d5af737c60a73b9588a0511332ac0cdc6294ad8e477c7b82be03a1afc7c3f7b6", "sha256:dfa40e9d75a825632103326cc52617e3652658c17c6f7360448388d6c9d009fe" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", "version": "==1.7.3" }, "google-cloud-pubsub": { "hashes": [ "sha256:12ff565ef00e4ca19d2ae26ae4515070094ba857d7c7024370dbed81fc7d58ab", "sha256:afb08eb558f3e4d836e6f77443f81555d6921ffc888c7c3085acd1205fba6e8c" ], "version": "==1.0.2" }, "google-cloud-secret-manager": { "hashes": [ "sha256:d3041bee17c6765194672147e57538a72f7e9637d5f8bb04450972ddce5fa512", "sha256:dfe561c11904adc5692bde12c6da5e82b07f096e7863baf795381042689588e6" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.0.2" }, "google-cloud-storage": { "hashes": [ "sha256:02ac63059c798d4b8ba9057921be745707dc2d3316f5f366de91c24cc23cd77e", "sha256:0634addb7576d48861d9963312fc82a0436042b8f282414ed58ca76d73edee54" ], "version": "==1.30.0" }, "google-crc32c": { "hashes": [ "sha256:024894d9d3cfbc5943f8f230e23950cd4906b2fe004c72e29b209420a1e6b05a", "sha256:02c65b9817512edc6a4ae7c7e987fea799d2e0ee40c53ec573a692bee24de876", "sha256:02ebb8bf46c13e36998aeaad1de9b48f4caf545e91d14041270d9dca767b780c", "sha256:07eb3c611ce363c51a933bf6bd7f8e3878a51d124acfc89452a75120bc436289", "sha256:1034d91442ead5a95b5aaef90dbfaca8633b0247d1e41621d1e9f9db88c36298", "sha256:116a7c3c616dd14a3de8c64a965828b197e5f2d121fedd2f8c5585c547e87b02", "sha256:19e0a019d2c4dcc5e598cd4a4bc7b008546b0358bd322537c74ad47a5386884f", "sha256:1c7abdac90433b09bad6c43a43af253e688c9cfc1c86d332aed13f9a7c7f65e2", "sha256:1e986b206dae4476f41bcec1faa057851f3889503a70e1bdb2378d406223994a", "sha256:272d3892a1e1a2dbc39cc5cde96834c236d5327e2122d3aaa19f6614531bb6eb", "sha256:278d2ed7c16cfc075c91378c4f47924c0625f5fc84b2d50d921b18b7975bd210", "sha256:2ad40e31093a4af319dadf503b2467ccdc8f67c72e4bcba97f8c10cb078207b5", "sha256:2e920d506ec85eb4ba50cd4228c2bec05642894d4c73c59b3a2fe20346bd00ee", "sha256:3359fc442a743e870f4588fcf5dcbc1bf929df1fad8fb9905cd94e5edb02e84c", "sha256:37933ec6e693e51a5b07505bd05de57eee12f3e8c32b07da7e73669398e6630a", "sha256:398af5e3ba9cf768787eef45c803ff9614cc3e22a5b2f7d7ae116df8b11e3314", "sha256:3b747a674c20a67343cb61d43fdd9207ce5da6a99f629c6e2541aa0e89215bcd", "sha256:461665ff58895f508e2866824a47bdee72497b091c730071f2b7575d5762ab65", "sha256:4c6fdd4fccbec90cc8a01fc00773fcd5fa28db683c116ee3cb35cd5da9ef6c37", "sha256:5829b792bf5822fd0a6f6eb34c5f81dd074f01d570ed7f36aa101d6fc7a0a6e4", "sha256:596d1f98fc70232fcb6590c439f43b350cb762fb5d61ce7b0e9db4539654cc13", "sha256:5ae44e10a8e3407dbe138984f21e536583f2bba1be9491239f942c2464ac0894", "sha256:635f5d4dd18758a1fbd1049a8e8d2fee4ffed124462d837d1a02a0e009c3ab31", "sha256:64e52e2b3970bd891309c113b54cf0e4384762c934d5ae56e283f9a0afcd953e", "sha256:66741ef4ee08ea0b2cc3c86916ab66b6aef03768525627fd6a1b34968b4e3709", "sha256:67b741654b851abafb7bc625b6d1cdd520a379074e64b6a128e3b688c3c04740", "sha256:6ac08d24c1f16bd2bf5eca8eaf8304812f44af5cfe5062006ec676e7e1d50afc", "sha256:6f998db4e71b645350b9ac28a2167e6632c239963ca9da411523bb439c5c514d", "sha256:72218785ce41b9cfd2fc1d6a017dc1ff7acfc4c17d01053265c41a2c0cc39b8c", "sha256:74dea7751d98034887dbd821b7aae3e1d36eda111d6ca36c206c44478035709c", "sha256:759ce4851a4bb15ecabae28f4d2e18983c244eddd767f560165563bf9aefbc8d", "sha256:77e2fd3057c9d78e225fa0a2160f96b64a824de17840351b26825b0848022906", "sha256:7c074fece789b5034b9b1404a1f8208fc2d4c6ce9decdd16e8220c5a793e6f61", "sha256:7c42c70cd1d362284289c6273adda4c6af8039a8ae12dc451dcd61cdabb8ab57", "sha256:7f57f14606cd1dd0f0de396e1e53824c371e9544a822648cd76c034d209b559c", "sha256:83c681c526a3439b5cf94f7420471705bbf96262f49a6fe546a6db5f687a3d4a", "sha256:8485b340a6a9e76c62a7dce3c98e5f102c9219f4cfbf896a00cf48caf078d438", "sha256:84e6e8cd997930fc66d5bb4fde61e2b62ba19d62b7abd7a69920406f9ecca946", "sha256:89284716bc6a5a415d4eaa11b1726d2d60a0cd12aadf5439828353662ede9dd7", "sha256:8b87e1a59c38f275c0e3676fc2ab6d59eccecfd460be267ac360cc31f7bcde96", "sha256:8f24ed114432de109aa9fd317278518a5af2d31ac2ea6b952b2f7782b43da091", "sha256:98cb4d057f285bd80d8778ebc4fde6b4d509ac3f331758fb1528b733215443ae", "sha256:998679bf62b7fb599d2878aa3ed06b9ce688b8974893e7223c60db155f26bd8d", "sha256:9ba053c5f50430a3fcfd36f75aff9caeba0440b2d076afdb79a318d6ca245f88", "sha256:9c99616c853bb585301df6de07ca2cadad344fd1ada6d62bb30aec05219c45d2", "sha256:a1fd716e7a01f8e717490fbe2e431d2905ab8aa598b9b12f8d10abebb36b04dd", "sha256:a2355cba1f4ad8b6988a4ca3feed5bff33f6af2d7f134852cf279c2aebfde541", "sha256:b1f8133c9a275df5613a451e73f36c2aea4fe13c5c8997e22cf355ebd7bd0728", "sha256:b8667b48e7a7ef66afba2c81e1094ef526388d35b873966d8a9a447974ed9178", "sha256:ba1eb1843304b1e5537e1fca632fa894d6f6deca8d6389636ee5b4797affb968", "sha256:be82c3c8cfb15b30f36768797a640e800513793d6ae1724aaaafe5bf86f8f346", "sha256:c02ec1c5856179f171e032a31d6f8bf84e5a75c45c33b2e20a3de353b266ebd8", "sha256:c672d99a345849301784604bfeaeba4db0c7aae50b95be04dd651fd2a7310b93", "sha256:c6c777a480337ac14f38564ac88ae82d4cd238bf293f0a22295b66eb89ffced7", "sha256:cae0274952c079886567f3f4f685bcaf5708f0a23a5f5216fdab71f81a6c0273", "sha256:cd67cf24a553339d5062eff51013780a00d6f97a39ca062781d06b3a73b15462", "sha256:d3515f198eaa2f0ed49f8819d5732d70698c3fa37384146079b3799b97667a94", "sha256:d5280312b9af0976231f9e317c20e4a61cd2f9629b7bfea6a693d1878a264ebd", "sha256:de06adc872bcd8c2a4e0dc51250e9e65ef2ca91be023b9d13ebd67c2ba552e1e", "sha256:e1674e4307fa3024fc897ca774e9c7562c957af85df55efe2988ed9056dc4e57", "sha256:e2096eddb4e7c7bdae4bd69ad364e55e07b8316653234a56552d9c988bd2d61b", "sha256:e560628513ed34759456a416bf86b54b2476c59144a9138165c9a1575801d0d9", "sha256:edfedb64740750e1a3b16152620220f51d58ff1b4abceb339ca92e934775c27a", "sha256:f13cae8cc389a440def0c8c52057f37359014ccbc9dc1f0827936bcd367c6100", "sha256:f314013e7dcd5cf45ab1945d92e713eec788166262ae8deb2cfacd53def27325", "sha256:f583edb943cf2e09c60441b910d6a20b4d9d626c75a36c8fcac01a6c96c01183", "sha256:fd8536e902db7e365f49e7d9029283403974ccf29b13fc7028b97e2295b33556", "sha256:fe70e325aa68fa4b5edf7d1a4b6f691eb04bbccac0ace68e34820d283b5f80d4" ], "markers": "python_version >= '3.5'", "version": "==1.5.0" }, "google-resumable-media": { "hashes": [ "sha256:092f39153cd67a4e409924edf08129f43cc72e630a1eb22abec93e80155df4ba", "sha256:ce38555d250bd70b0c2598bf61e99003cb8c569b0176ec0e3f38b86f9ffff581" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", "version": "==1.3.3" }, "googleapis-common-protos": { "hashes": [ "sha256:27a849d6205838fb6cc3c1c21cb9800707a661bb21c6ce7fb13e99eb1f8a0c46", "sha256:a9f4a1d7f6d9809657b7f1316a1aa527f6664891531bcfcc13b6696e685f443c" ], "markers": "python_version >= '3.7'", "version": "==1.57.0" }, "grpc-google-iam-v1": { "hashes": [ "sha256:312801ae848aeb8408c099ea372b96d253077e7851aae1a9e745df984f81f20c", "sha256:3f0ac2c940b9a855d7ce7e31fde28bddb0d9ac362d32d07c67148306931a0e30" ], "markers": "python_version >= '3.6'", "version": "==0.12.4" }, "grpcio": { "hashes": [ "sha256:094e64236253590d9d4075665c77b329d707b6fca864dd62b144255e199b4f87", "sha256:0dc5354e38e5adf2498312f7241b14c7ce3484eefa0082db4297189dcbe272e6", "sha256:0e1a9e1b4a23808f1132aa35f968cd8e659f60af3ffd6fb00bcf9a65e7db279f", "sha256:0fb93051331acbb75b49a2a0fd9239c6ba9528f6bdc1dd400ad1cb66cf864292", "sha256:16c71740640ba3a882f50b01bf58154681d44b51f09a5728180a8fdc66c67bd5", "sha256:172405ca6bdfedd6054c74c62085946e45ad4d9cec9f3c42b4c9a02546c4c7e9", "sha256:17ec9b13cec4a286b9e606b48191e560ca2f3bbdf3986f91e480a95d1582e1a7", "sha256:22b011674090594f1f3245960ced7386f6af35485a38901f8afee8ad01541dbd", "sha256:24ac1154c4b2ab4a0c5326a76161547e70664cd2c39ba75f00fc8a2170964ea2", "sha256:257478300735ce3c98d65a930bbda3db172bd4e00968ba743e6a1154ea6edf10", "sha256:29cb97d41a4ead83b7bcad23bdb25bdd170b1e2cba16db6d3acbb090bc2de43c", "sha256:2b170eaf51518275c9b6b22ccb59450537c5a8555326fd96ff7391b5dd75303c", "sha256:31bb6bc7ff145e2771c9baf612f4b9ebbc9605ccdc5f3ff3d5553de7fc0e0d79", "sha256:3c2b3842dcf870912da31a503454a33a697392f60c5e2697c91d133130c2c85d", "sha256:3f9b0023c2c92bebd1be72cdfca23004ea748be1813a66d684d49d67d836adde", "sha256:471d39d3370ca923a316d49c8aac66356cea708a11e647e3bdc3d0b5de4f0a40", "sha256:49d680356a975d9c66a678eb2dde192d5dc427a7994fb977363634e781614f7c", "sha256:4c4423ea38a7825b8fed8934d6d9aeebdf646c97e3c608c3b0bcf23616f33877", "sha256:506b9b7a4cede87d7219bfb31014d7b471cfc77157da9e820a737ec1ea4b0663", "sha256:538d981818e49b6ed1e9c8d5e5adf29f71c4e334e7d459bf47e9b7abb3c30e09", "sha256:59dffade859f157bcc55243714d57b286da6ae16469bf1ac0614d281b5f49b67", "sha256:5a6ebcdef0ef12005d56d38be30f5156d1cb3373b52e96f147f4a24b0ddb3a9d", "sha256:5dca372268c6ab6372d37d6b9f9343e7e5b4bc09779f819f9470cd88b2ece3c3", "sha256:6df3b63538c362312bc5fa95fb965069c65c3ea91d7ce78ad9c47cab57226f54", "sha256:6f0b89967ee11f2b654c23b27086d88ad7bf08c0b3c2a280362f28c3698b2896", "sha256:75e29a90dc319f0ad4d87ba6d20083615a00d8276b51512e04ad7452b5c23b04", "sha256:7942b32a291421460d6a07883033e392167d30724aa84987e6956cd15f1a21b9", "sha256:9235dcd5144a83f9ca6f431bd0eccc46b90e2c22fe27b7f7d77cabb2fb515595", "sha256:97d67983189e2e45550eac194d6234fc38b8c3b5396c153821f2d906ed46e0ce", "sha256:9ff42c5620b4e4530609e11afefa4a62ca91fa0abb045a8957e509ef84e54d30", "sha256:a8a0b77e992c64880e6efbe0086fe54dfc0bbd56f72a92d9e48264dcd2a3db98", "sha256:aacb54f7789ede5cbf1d007637f792d3e87f1c9841f57dd51abf89337d1b8472", "sha256:bc59f7ba87972ab236f8669d8ca7400f02a0eadf273ca00e02af64d588046f02", "sha256:cc2bece1737b44d878cc1510ea04469a8073dbbcdd762175168937ae4742dfb3", "sha256:cd3baccea2bc5c38aeb14e5b00167bd4e2373a373a5e4d8d850bd193edad150c", "sha256:dad6533411d033b77f5369eafe87af8583178efd4039c41d7515d3336c53b4f1", "sha256:e223a9793522680beae44671b9ed8f6d25bbe5ddf8887e66aebad5e0686049ef", "sha256:e473525c28251558337b5c1ad3fa969511e42304524a4e404065e165b084c9e4", "sha256:e4ef09f8997c4be5f3504cefa6b5c6cc3cf648274ce3cede84d4342a35d76db6", "sha256:e6dfc2b6567b1c261739b43d9c59d201c1b89e017afd9e684d85aa7a186c9f7a", "sha256:eacad297ea60c72dd280d3353d93fb1dcca952ec11de6bb3c49d12a572ba31dd", "sha256:f1158bccbb919da42544a4d3af5d9296a3358539ffa01018307337365a9a0c64", "sha256:f1fec3abaf274cdb85bf3878167cfde5ad4a4d97c68421afda95174de85ba813", "sha256:f96ace1540223f26fbe7c4ebbf8a98e3929a6aa0290c8033d12526847b291c0f", "sha256:fbdbe9a849854fe484c00823f45b7baab159bdd4a46075302281998cb8719df5" ], "version": "==1.51.1" }, "grpcio-status": { "hashes": [ "sha256:2c33bbdbe20188b2953f46f31af669263b6ee2a9b2d38fa0d36ee091532e21bf", "sha256:53695f45da07437b7c344ee4ef60d370fd2850179f5a28bb26d8e2aa1102ec11" ], "version": "==1.48.2" }, "httplib2": { "hashes": [ "sha256:0b12617eeca7433d4c396a100eaecfa4b08ee99aa881e6df6e257a7aad5d533d", "sha256:2ad195faf9faf079723f6714926e9a9061f694d07724b846658ce08d40f522b4" ], "version": "==0.19.1" }, "idna": { "hashes": [ "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" ], "markers": "python_version >= '3.5'", "version": "==3.4" }, "importlib-metadata": { "hashes": [ "sha256:d5059f9f1e8e41f80e9c56c2ee58811450c31984dfa625329ffd7c0dad88a73b", "sha256:d84d17e21670ec07990e1044a99efe8d615d860fd176fc29ef5c306068fda313" ], "markers": "python_version < '3.10'", "version": "==5.1.0" }, "itsdangerous": { "hashes": [ "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44", "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a" ], "markers": "python_version >= '3.7'", "version": "==2.1.2" }, "jinja2": { "hashes": [ "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" ], "markers": "python_version >= '3.7'", "version": "==3.1.2" }, "jsonpointer": { "hashes": [ "sha256:51801e558539b4e9cd268638c078c6c5746c9ac96bc38152d443400e4f3793e9", "sha256:97cba51526c829282218feb99dab1b1e6bdf8efd1c43dc9d57be093c0d69c99a" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.3" }, "jsonschema": { "hashes": [ "sha256:5f9c0a719ca2ce14c5de2fd350a64fd2d13e8539db29836a86adc990bb1a068f", "sha256:8d4a2b7b6c2237e0199c8ea1a6d3e05bf118e289ae2b9d7ba444182a2959560d" ], "version": "==3.0.2" }, "launchdarkly-server-sdk": { "hashes": [ "sha256:983415ef58e42e8e02a98123f7231e5896d69d1cbdadea2bd42ecba097d724db", "sha256:e7c6b74c275ca3664ac0fcfd0c11901fb2c9975b76b1d03735e513a5f087a83c" ], "version": "==7.5.1" }, "markupsafe": { "hashes": [ "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003", "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88", "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5", "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7", "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a", "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603", "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1", "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135", "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247", "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6", "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601", "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77", "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02", "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e", "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63", "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f", "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980", "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b", "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812", "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff", "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96", "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1", "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925", "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a", "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6", "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e", "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f", "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4", "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f", "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3", "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c", "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a", "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417", "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a", "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a", "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37", "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452", "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933", "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a", "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7" ], "markers": "python_version >= '3.7'", "version": "==2.1.1" }, "monthdelta": { "hashes": [ "sha256:a7b80ca49b6900a09749f72c8d1ec8f71f0c12fe01115e452923ff70a0dc0dce", "sha256:ab93015bea3a10dee0e6b386a2ab8ff14b7d40766b9b14257a1381473c885c11", "sha256:db376cdafea66bb767eb8829cbe55c52138b579754ae2020c1001b4587722eae" ], "version": "==1.0b0" }, "munch": { "hashes": [ "sha256:6ae3d26b837feacf732fb8aa5b842130da1daf221f5af9f9d4b2a0a6414b0d51" ], "version": "==2.3.2" }, "networkx": { "hashes": [ "sha256:80b6b89c77d1dfb64a4c7854981b60aeea6360ac02c6d4e4913319e0a313abef", "sha256:c0946ed31d71f1b732b5aaa6da5a0388a345019af232ce2f49c766e2d6795c51" ], "version": "==2.6.3" }, "oauth2client": { "hashes": [ "sha256:b8a81cc5d60e2d364f0b1b98f958dbd472887acaf1a5b05e21c28c31a2d6d3ac", "sha256:d486741e451287f69568a4d26d70d9acd73a2bbfa275746c535b4209891cccc6" ], "version": "==4.1.3" }, "orjson": { "hashes": [ "sha256:028ee84182af09b68f9d4bc7d9f9b98a3e28d19472af93f4377510e11d3c431b", "sha256:0bc4dfad7d4f38775e85095fee29a484f1c8c9a37f44fa8868e70d8f1635dfd0", "sha256:0c0eeaa91e7107158d50fbc949c89c04a5952d236670f56ced08edd146015b97", "sha256:0d74c7dd08f189863263bbf05d6a8a452c2d0a29becf936cf05caf03429e59ad", "sha256:0ee64c378ae2c0677999e891a8a06d4772d76ae741c436edfb7209ebab80da8b", "sha256:1ae10f2dadbafefce59afaeba146bead5d1853cd744e2ac055796be72456aeb6", "sha256:29e90a3af4cabf65c73e34b06550a3ee02ce1e3daccf79d68ffa930d2db02559", "sha256:37b5bbcc1d5e804be5fd52c15737e7addd08475917ab6dd3de6b791dfb2d7d85", "sha256:3a3cbfa84a9e382a22ae462100c512404e186c62b2189d161e4f440a617ed890", "sha256:3c2e30e483d1d4d0b4feb820ee7eff94a86e42882f5e77dc67758c2b648dd236", "sha256:48e23ebde87c3c53fe8c34f3e92f25d8827089f5bc71db1399c105d128efec8d", "sha256:5051218f4ca88fab241dc198244cb20a9aa1cf18a2b5be41edead07bb7debccb", "sha256:5558f474acb68fa8f13f6c6fca4cc431f1e8496638a505961d91efe820818c8f", "sha256:581827f666d56e6b2e2bf2bb24f0f0f759e6eaf8ec83e7b8e42a8b9ac47c9fbc", "sha256:61b798c055ea1b3b6fe8a4f4bb452adec0a0dc04fb9be489e9881c996212bdc6", "sha256:77fa18c7806ced4f5e659e7ffd2404e974dea546f4baa0b9525f687ddf48bc17", "sha256:81e23bb5aa767dfa46eeca76ac6bbe148aa8c184a5d08b4d0e4947d42b278246", "sha256:8d4d62558f0d8ffafa04b1303b8c94e4c84ab78f5d43e4b76a8fa0cbe6b8ba6e", "sha256:906d15fe1d97668727e9e5c401ddf02d41277b0a5ebf16ce577a53f189eeeab8", "sha256:9624afef062b701ae8cb3486842b9363cf0cf083fc6294a824d109546272a3c3", "sha256:9888ea0e063cb79fb384f2800530d86e3b1b9e43084e7dc58fb1bb0165567a5f", "sha256:a057dfaf72754bdbc40de7c6cea5dcaca2198ff5accf3333df228bfe6ff4a0d8", "sha256:a6d8cd9066df441b06297846fc9fb69654dffe2c5b7c389f40a40f2320f1cac5", "sha256:b51fb3e938abaa12bd2209643b0a00e89d2a1ee325fd3c0f39e419e07439df46", "sha256:c6028e0dfe3f1210e5560852a9f706360c71b3c07051f99e44e9ecb232e6414b", "sha256:c6c364f17b8b6d799cc86d60f8409500bfc1d64538ef5178deb2b744b55264a3", "sha256:cd3592726d13deb3dcda3e142cb1ffaa6ddabc287a838d9d1effbb08d19e5a68", "sha256:d0ecd233f248d4de97af790175f0a76543c130151aef0c813b9b94c5b34027b5", "sha256:d4fef84272ec68339d18fec68a3cfa12c7e7f1b304606f6485f3637779e48a13", "sha256:eea2d722a41588e1b5a3fa6d331335d5f757eed8b82418c5185d85fbdbf402df", "sha256:fa71b5da3583423e450c6ded3cf13f7daaf264a734a86a5dbc6031bbe72017e7", "sha256:fc5ce183ceda177beb9559bbf0e11f88926322a13a337d0902e4f1059dcf5b36" ], "markers": "python_version >= '3.7'", "version": "==3.6.9" }, "protobuf": { "hashes": [ "sha256:03038ac1cfbc41aa21f6afcbcd357281d7521b4157926f30ebecc8d4ea59dcb7", "sha256:28545383d61f55b57cf4df63eebd9827754fd2dc25f80c5253f9184235db242c", "sha256:2e3427429c9cffebf259491be0af70189607f365c2f41c7c3764af6f337105f2", "sha256:398a9e0c3eaceb34ec1aee71894ca3299605fa8e761544934378bbc6c97de23b", "sha256:44246bab5dd4b7fbd3c0c80b6f16686808fab0e4aca819ade6e8d294a29c7050", "sha256:447d43819997825d4e71bf5769d869b968ce96848b6479397e29fc24c4a5dfe9", "sha256:67a3598f0a2dcbc58d02dd1928544e7d88f764b47d4a286202913f0b2801c2e7", "sha256:74480f79a023f90dc6e18febbf7b8bac7508420f2006fabd512013c0c238f454", "sha256:819559cafa1a373b7096a482b504ae8a857c89593cf3a25af743ac9ecbd23480", "sha256:899dc660cd599d7352d6f10d83c95df430a38b410c1b66b407a6b29265d66469", "sha256:8c0c984a1b8fef4086329ff8dd19ac77576b384079247c770f29cc8ce3afa06c", "sha256:9aae4406ea63d825636cc11ffb34ad3379335803216ee3a856787bcf5ccc751e", "sha256:a7ca6d488aa8ff7f329d4c545b2dbad8ac31464f1d8b1c87ad1346717731e4db", "sha256:b6cc7ba72a8850621bfec987cb72623e703b7fe2b9127a161ce61e61558ad905", "sha256:bf01b5720be110540be4286e791db73f84a2b721072a3711efff6c324cdf074b", "sha256:c02ce36ec760252242a33967d51c289fd0e1c0e6e5cc9397e2279177716add86", "sha256:d9e4432ff660d67d775c66ac42a67cf2453c27cb4d738fc22cb53b5d84c135d4", "sha256:daa564862dd0d39c00f8086f88700fdbe8bc717e993a21e90711acfed02f2402", "sha256:de78575669dddf6099a8a0f46a27e82a1783c557ccc38ee620ed8cc96d3be7d7", "sha256:e64857f395505ebf3d2569935506ae0dfc4a15cb80dc25261176c784662cdcc4", "sha256:f4bd856d702e5b0d96a00ec6b307b0f51c1982c2bf9c0052cf9019e9a544ba99", "sha256:f4c42102bc82a51108e449cbb32b19b180022941c727bac0cfd50170341f16ee" ], "markers": "python_version >= '3.7'", "version": "==3.20.3" }, "pyasn1": { "hashes": [ "sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359", "sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576", "sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf", "sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7", "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d", "sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00", "sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8", "sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86", "sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12", "sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776", "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba", "sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2", "sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3" ], "version": "==0.4.8" }, "pyasn1-modules": { "hashes": [ "sha256:0845a5582f6a02bb3e1bde9ecfc4bfcae6ec3210dd270522fee602365430c3f8", "sha256:0fe1b68d1e486a1ed5473f1302bd991c1611d319bba158e98b106ff86e1d7199", "sha256:15b7c67fabc7fc240d87fb9aabf999cf82311a6d6fb2c70d00d3d0604878c811", "sha256:426edb7a5e8879f1ec54a1864f16b882c2837bfd06eee62f2c982315ee2473ed", "sha256:65cebbaffc913f4fe9e4808735c95ea22d7a7775646ab690518c056784bc21b4", "sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e", "sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74", "sha256:a99324196732f53093a84c4369c996713eb8c89d360a496b599fb1a9c47fc3eb", "sha256:b80486a6c77252ea3a3e9b1e360bc9cf28eaac41263d173c032581ad2f20fe45", "sha256:c29a5e5cc7a3f05926aff34e097e84f8589cd790ce0ed41b67aed6857b26aafd", "sha256:cbac4bc38d117f2a49aeedec4407d23e8866ea4ac27ff2cf7fb3e5b570df19e0", "sha256:f39edd8c4ecaa4556e989147ebf219227e2cd2e8a43c7e7fcb1f1c18c5fd6a3d", "sha256:fe0644d9ab041506b62782e92b06b8c68cca799e1a9636ec398675459e031405" ], "version": "==0.2.8" }, "pydantic": { "hashes": [ "sha256:021ea0e4133e8c824775a0cfe098677acf6fa5a3cbf9206a376eed3fc09302cd", "sha256:05ddfd37c1720c392f4e0d43c484217b7521558302e7069ce8d318438d297739", "sha256:05ef5246a7ffd2ce12a619cbb29f3307b7c4509307b1b49f456657b43529dc6f", "sha256:10e5622224245941efc193ad1d159887872776df7a8fd592ed746aa25d071840", "sha256:18b5ea242dd3e62dbf89b2b0ec9ba6c7b5abaf6af85b95a97b00279f65845a23", "sha256:234a6c19f1c14e25e362cb05c68afb7f183eb931dd3cd4605eafff055ebbf287", "sha256:244ad78eeb388a43b0c927e74d3af78008e944074b7d0f4f696ddd5b2af43c62", "sha256:26464e57ccaafe72b7ad156fdaa4e9b9ef051f69e175dbbb463283000c05ab7b", "sha256:41b542c0b3c42dc17da70554bc6f38cbc30d7066d2c2815a94499b5684582ecb", "sha256:4a03cbbe743e9c7247ceae6f0d8898f7a64bb65800a45cbdc52d65e370570820", "sha256:4be75bebf676a5f0f87937c6ddb061fa39cbea067240d98e298508c1bda6f3f3", "sha256:54cd5121383f4a461ff7644c7ca20c0419d58052db70d8791eacbbe31528916b", "sha256:589eb6cd6361e8ac341db97602eb7f354551482368a37f4fd086c0733548308e", "sha256:8621559dcf5afacf0069ed194278f35c255dc1a1385c28b32dd6c110fd6531b3", "sha256:8b223557f9510cf0bfd8b01316bf6dd281cf41826607eada99662f5e4963f316", "sha256:99a9fc39470010c45c161a1dc584997f1feb13f689ecf645f59bb4ba623e586b", "sha256:a7c6002203fe2c5a1b5cbb141bb85060cbff88c2d78eccbc72d97eb7022c43e4", "sha256:a83db7205f60c6a86f2c44a61791d993dff4b73135df1973ecd9eed5ea0bda20", "sha256:ac8eed4ca3bd3aadc58a13c2aa93cd8a884bcf21cb019f8cfecaae3b6ce3746e", "sha256:e710876437bc07bd414ff453ac8ec63d219e7690128d925c6e82889d674bb505", "sha256:ea5cb40a3b23b3265f6325727ddfc45141b08ed665458be8c6285e7b85bd73a1", "sha256:fec866a0b59f372b7e776f2d7308511784dace622e0992a0b59ea3ccee0ae833" ], "markers": "python_full_version >= '3.6.1'", "version": "==1.8.2" }, "pygain-flask-hal": { "hashes": [ "sha256:cfe03cd2396a9ad01dbfff60d9c164a7ecc62d7326c3a2eeb2468da27bb3fb70" ], "index": "fury", "version": "==1.0.7" }, "pygain-iso8601utils": { "hashes": [ "sha256:a22d7e15768876ac2a84f21fdd60d754337c992ca5c40275d6c293e45febf0c4" ], "index": "fury", "version": "==0.1.3" }, "pygain-lib": { "extras": [ "gcs", "graph", "pubsub", "server" ], "hashes": [ "sha256:c64149c00d84d490801eaf7cdc6f44c802b5298625f8ecf1e1be482af6142c47" ], "index": "fury", "version": "==20.0.2" }, "pyjwt": { "hashes": [ "sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e", "sha256:8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96" ], "version": "==1.7.1" }, "pyparsing": { "hashes": [ "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" ], "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.4.7" }, "pyrfc3339": { "hashes": [ "sha256:67196cb83b470709c580bb4738b83165e67c6cc60e1f2e4f286cfcb402a926f4", "sha256:81b8cbe1519cdb79bed04910dd6fa4e181faf8c88dff1e1b987b5f7ab23a5b1a" ], "version": "==1.1" }, "pyrsistent": { "hashes": [ "sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed", "sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb", "sha256:187d5730b0507d9285a96fca9716310d572e5464cadd19f22b63a6976254d77a", "sha256:21455e2b16000440e896ab99e8304617151981ed40c29e9507ef1c2e4314ee95", "sha256:2aede922a488861de0ad00c7630a6e2d57e8023e4be72d9d7147a9fcd2d30712", "sha256:3ba4134a3ff0fc7ad225b6b457d1309f4698108fb6b35532d015dca8f5abed73", "sha256:456cb30ca8bff00596519f2c53e42c245c09e1a4543945703acd4312949bfd41", "sha256:71d332b0320642b3261e9fee47ab9e65872c2bd90260e5d225dabeed93cbd42b", "sha256:879b4c2f4d41585c42df4d7654ddffff1239dc4065bc88b745f0341828b83e78", "sha256:9cd3e9978d12b5d99cbdc727a3022da0430ad007dacf33d0bf554b96427f33ab", "sha256:a178209e2df710e3f142cbd05313ba0c5ebed0a55d78d9945ac7a4e09d923308", "sha256:b39725209e06759217d1ac5fcdb510e98670af9e37223985f330b611f62e7425", "sha256:bfa0351be89c9fcbcb8c9879b826f4353be10f58f8a677efab0c017bf7137ec2", "sha256:bfd880614c6237243ff53a0539f1cb26987a6dc8ac6e66e0c5a40617296a045e", "sha256:c43bec251bbd10e3cb58ced80609c5c1eb238da9ca78b964aea410fb820d00d6", "sha256:d690b18ac4b3e3cab73b0b7aa7dbe65978a172ff94970ff98d82f2031f8971c2", "sha256:d6982b5a0237e1b7d876b60265564648a69b14017f3b5f908c5be2de3f9abb7a", "sha256:dec3eac7549869365fe263831f576c8457f6c833937c68542d08fde73457d291", "sha256:e371b844cec09d8dc424d940e54bba8f67a03ebea20ff7b7b0d56f526c71d584", "sha256:e5d8f84d81e3729c3b506657dddfe46e8ba9c330bf1858ee33108f8bb2adb38a", "sha256:ea6b79a02a28550c98b6ca9c35b9f492beaa54d7c5c9e9949555893c8a9234d0", "sha256:f1258f4e6c42ad0b20f9cfcc3ada5bd6b83374516cd01c0960e3cb75fdca6770" ], "markers": "python_version >= '3.7'", "version": "==0.19.2" }, "python-dateutil": { "hashes": [ "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.8.2" }, "pytz": { "hashes": [ "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427", "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2" ], "version": "==2022.6" }, "pyyaml": { "hashes": [ "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf", "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696", "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393", "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77", "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922", "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5", "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8", "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10", "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc", "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018", "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e", "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253", "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347", "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183", "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541", "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb", "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185", "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc", "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db", "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa", "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46", "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122", "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b", "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63", "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df", "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc", "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247", "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6", "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", "version": "==5.4.1" }, "redis": { "hashes": [ "sha256:7b8c87d19c45d3f1271b124858d2a5c13160c4e74d4835e28273400fa34d5228", "sha256:cae3ee5d1f57d8caf534cd8764edf3163c77e073bdd74b6f54a87ffafdc5e7d9" ], "version": "==4.4.0" }, "requests": { "hashes": [ "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983", "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349" ], "markers": "python_version >= '3.7' and python_version < '4'", "version": "==2.28.1" }, "rsa": { "hashes": [ "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7", "sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21" ], "markers": "python_version >= '3.6' and python_version < '4'", "version": "==4.9" }, "semver": { "hashes": [ "sha256:ced8b23dceb22134307c1b8abfa523da14198793d9787ac838e70e29e77458d4", "sha256:fa0fe2722ee1c3f57eac478820c3a5ae2f624af8264cbdf9000c980ff7f75e3f" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.13.0" }, "setuptools": { "hashes": [ "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54", "sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75" ], "version": "==65.6.3" }, "singleton-decorator": { "hashes": [ "sha256:1a90ad8a8a738be591c9c167fdd677c5d4a43d1bc6b1c128227be1c5e03bee07" ], "version": "==1.0.0" }, "six": { "hashes": [ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.16.0" }, "typing-extensions": { "hashes": [ "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa", "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e" ], "markers": "python_version >= '3.7'", "version": "==4.4.0" }, "uritemplate": { "hashes": [ "sha256:07620c3f3f8eed1f12600845892b0e036a2420acf513c53f7de0abd911a5894f", "sha256:5af8ad10cec94f215e3f48112de2022e1d5a37ed427fbd88652fa908f2ab7cae" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==3.0.1" }, "urllib3": { "hashes": [ "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc", "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", "version": "==1.26.13" }, "werkzeug": { "hashes": [ "sha256:7ea2d48322cc7c0f8b3a215ed73eabd7b5d75d0b50e31ab006286ccff9e00b8f", "sha256:f979ab81f58d7318e064e99c4506445d60135ac5cd2e177a2de0089bfd4c9bd5" ], "markers": "python_version >= '3.7'", "version": "==2.2.2" }, "zipp": { "hashes": [ "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa", "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766" ], "markers": "python_version >= '3.7'", "version": "==3.11.0" } }, "develop": {} } ```
matteius commented 1 year ago

@CNDW Can you try add install_search_all_sources = true option to your Pipfile in the pipenv section? https://pipenv.pypa.io/en/latest/advanced/#specifying-package-indexes

I am not sure that this would have worked for you in 2022.11.30 as you say, as I suspect this became an issue when we vendor'd in the latest pip==22.3 which was before this latest release.

CNDW commented 1 year ago

ah yea, my mistake. I dug through our CI history and it looks like it was 2022.11.4 when the issue first started. I confirmed in my example that 2022.10.25 works but 2022.11.4 fails

The install does work when I add install_search_all_sources = true to the Pipfile

matteius commented 1 year ago

Well install_search_all_sources = true is the best I think we can do for this case, because it still offers the default security of pinning exactly to what indexes packages come from. Pip at one point called out that best practice is to mirror the pypi packaged you rely on to your private index, as an alternative.

CNDW commented 1 year ago

As a workaround this is 👍

It does feel like there is some inconsistency around how dependency indexes are handled. Could you shed some light on how pipenv decides what index to look in when install_search_all_sources = false?

The space has been pretty inconsistent in recent years (understandably so given how vague requirements.txt is about extra indexes) and every time something changes it's a huge timesink for myself and others to try to grok why CI mysteriously stopped working or why pipenv won't install on someone's machine while it installs fine on mine.

Pipenv has been improving a lot in recent years and I'm hoping the tool can continue to bring some clarity to this space, is this something that is on the team's radar?

matteius commented 1 year ago

Could you shed some light on how pipenv decides what index to look in when install_search_all_sources = false?

When install_search_all_sources = false pipenv uses --extra-index-url arguments to the pip install to search all available sources for the packages in the lock file. This does not affect the resolver/lock phase which still uses the indexes to restrict packages based on the Pipfile specifiers. I think the problem came about that in pip==22.3.x it changed the install phase to fix a bug in how indexes were handled for install: https://github.com/pypa/pip/issues/11276 which changed the default behavior of how the indexes specified by pipenv somehow: https://github.com/pypa/pip/pull/11277

it's a huge time sink for myself and others to try to grok why CI mysteriously stopped working or why pipenv won't install on someone's machine while it installs fine on mine.

I can appreciate this frustration--I have been working on pipenv for a year now and I can say there are so many use cases that are unaccounted for by tests and adding tests is non-trivial because the test runner already takes so long to run -- for example I have some good multi-index tests involving pytorch but that package is multiple GB of data and we cannot integrate it into the test runner.

I had done work back in March /April time frame on the index restricted packages for pipenv, which is a security feature to say when we know a package is to come from a certain index we apply restrictions in the resolver to not allow to be resolved from a different source, to prevent package confusion attacks.

When pip changed how the indexes were handled in the install requirements.txt files in 22.3 it seems to have caused a few issue reports like this that have all been resolved with install_search_all_sources = true. I looked at that pip code change again and I see mention to no-index but I cannot see where we use that in pipenv other than in the test runner, so its a subtle thing to try and understand if we should be generating the requirements.txt file any differently now with this change. Maybe the test runner supplying args.append("--no-index") in some install tests is masking that this would have been a change to users, would require more investigation.

matteius commented 1 year ago

@CNDW I think this issue can be closed at this point, there is ongoing work to start making the docs more granular and improving their content, it will take some time to get to where we want to be there but progress is happening.