pex-tool / pex

A tool for generating .pex (Python EXecutable) files, lock files and venvs.
https://docs.pex-tool.org/
Apache License 2.0
2.54k stars 258 forks source link

`pex3 lock create --style universal` does not fully patch ambient interpreter properties. #1681

Closed jsirois closed 2 years ago

jsirois commented 2 years ago

Using an interpreter out of the requested range to create the lock should work, but fails.

For example:

$ python3.6 -mpex.cli lock create --style universal --resolver-version pip-2020-resolver --interpreter-constraint "CPython<3.10,>=3.7" selenium==4.1.3 -olock.json
ERROR: Package 'selenium' requires a different Python: 3.6.15 not in '~=3.7'
pid 112705 -> /home/jsirois/.pex/venvs/aa19c5a6da11bee58dfa0f6c684d648c7268ac9f/dddf6e1dc52f14c0b8a18330edfe1cc6242e8123/pex --disable-pip-version-check --no-python-version-warning --exists-action a --isolated -q --cache-dir /home/jsirois/.pex --log /tmp/tmp2lmi8btd/pip.log download --dest /tmp/tmpcr4kk58u/home.jsirois..pyenv.versions.3.6.15.bin.python3.6 selenium==4.1.3 --index-url https://pypi.org/simple --retries 5 --timeout 15 exited with 1 and STDERR:
None

This does work though for the legacy resolver:

$ python3.6 -mpex.cli lock create --style universal --resolver-version pip-legacy-resolver --interpreter-constraint "CPython<3.10,>=3.7" selenium==4.1.3 -olock.json

Which nets:

default.lock ```js { "allow_builds": true, "allow_prereleases": false, "allow_wheels": true, "build_isolation": true, "constraints": [], "locked_resolves": [ { "locked_requirements": [ { "artifacts": [ { "algorithm": "sha256", "hash": "01c7bf666359b4967d2cda0000cc2e4af16a0ae098cbffcb8472fb9e8ad6585b", "url": "https://files.pythonhosted.org/packages/71/52/39d20e03abd0ac9159c162ec24b93fbcaa111e8400308f2465432495ca2b/async_generator-1.10-py3-none-any.whl" }, { "algorithm": "sha256", "hash": "6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144", "url": "https://files.pythonhosted.org/packages/ce/b6/6fa6b3b598a03cba5e80f829e0dadbb49d7645f523d209b2fb7ea0bbb02a/async_generator-1.10.tar.gz" } ], "project_name": "async-generator", "requires_dists": [], "requires_python": ">=3.5", "version": "1.10" }, { "artifacts": [ { "algorithm": "sha256", "hash": "2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4", "url": "https://files.pythonhosted.org/packages/be/be/7abce643bfdf8ca01c48afa2ddf8308c2308b0c3b239a44e57d020afa0ef/attrs-21.4.0-py2.py3-none-any.whl" }, { "algorithm": "sha256", "hash": "626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd", "url": "https://files.pythonhosted.org/packages/d7/77/ebb15fc26d0f815839ecd897b919ed6d85c050feeb83e100e020df9153d2/attrs-21.4.0.tar.gz" } ], "project_name": "attrs", "requires_dists": [ "cloudpickle; platform_python_implementation == \"CPython\" and extra == \"dev\"", "cloudpickle; platform_python_implementation == \"CPython\" and extra == \"tests\"", "cloudpickle; platform_python_implementation == \"CPython\" and extra == \"tests_no_zope\"", "coverage[toml]>=5.0.2; extra == \"dev\"", "coverage[toml]>=5.0.2; extra == \"tests\"", "coverage[toml]>=5.0.2; extra == \"tests_no_zope\"", "furo; extra == \"dev\"", "furo; extra == \"docs\"", "hypothesis; extra == \"dev\"", "hypothesis; extra == \"tests\"", "hypothesis; extra == \"tests_no_zope\"", "mypy; extra == \"dev\"", "mypy; extra == \"tests\"", "mypy; extra == \"tests_no_zope\"", "pre-commit; extra == \"dev\"", "pympler; extra == \"dev\"", "pympler; extra == \"tests\"", "pympler; extra == \"tests_no_zope\"", "pytest-mypy-plugins; extra == \"dev\"", "pytest-mypy-plugins; extra == \"tests\"", "pytest-mypy-plugins; extra == \"tests_no_zope\"", "pytest>=4.3.0; extra == \"dev\"", "pytest>=4.3.0; extra == \"tests\"", "pytest>=4.3.0; extra == \"tests_no_zope\"", "six; extra == \"dev\"", "six; extra == \"tests\"", "six; extra == \"tests_no_zope\"", "sphinx-notfound-page; extra == \"dev\"", "sphinx-notfound-page; extra == \"docs\"", "sphinx; extra == \"dev\"", "sphinx; extra == \"docs\"", "zope.interface; extra == \"dev\"", "zope.interface; extra == \"docs\"", "zope.interface; extra == \"tests\"" ], "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7", "version": "21.4" }, { "artifacts": [ { "algorithm": "sha256", "hash": "d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569", "url": "https://files.pythonhosted.org/packages/37/45/946c02767aabb873146011e665728b680884cd8fe70dde973c640e45b775/certifi-2021.10.8-py2.py3-none-any.whl" }, { "algorithm": "sha256", "hash": "78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872", "url": "https://files.pythonhosted.org/packages/6c/ae/d26450834f0acc9e3d1f74508da6df1551ceab6c2ce0766a593362d6d57f/certifi-2021.10.8.tar.gz" } ], "project_name": "certifi", "requires_dists": [], "requires_python": null, "version": "2021.10.8" }, { "artifacts": [ { "algorithm": "sha256", "hash": "06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636", "url": "https://files.pythonhosted.org/packages/8b/d0/da0ccff5dc535194e0d910df42a6c1a9598dd5589220f3c1a99d67249acf/cffi-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl" }, { "algorithm": "sha256", "hash": "920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954", "url": "https://files.pythonhosted.org/packages/00/9e/92de7e1217ccc3d5f352ba21e52398372525765b2e0c4530e6eb2ba9282a/cffi-1.15.0.tar.gz" }, { "algorithm": "sha256", "hash": "2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a", "url": "https://files.pythonhosted.org/packages/03/31/b714d1f35e896fa36c302e024a9ccad3c6952660bcbb1a43188ef20f3ec3/cffi-1.15.0-cp39-cp39-win32.whl" }, { "algorithm": "sha256", "hash": "0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20", "url": "https://files.pythonhosted.org/packages/25/ba/a1d3428797f25a42530adb2c8cce1655863b6a37ece63465a16b5e939a43/cffi-1.15.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl" }, { "algorithm": "sha256", "hash": "c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4", "url": "https://files.pythonhosted.org/packages/2f/81/7d03e1e223b630723ce1d1c37dc9196a000f41dc852714931970a1cadc7d/cffi-1.15.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl" }, { "algorithm": "sha256", "hash": "786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6", "url": "https://files.pythonhosted.org/packages/33/e7/afbae3b77e10929dd5ccdf9ae99c39ec4085148888ff4507000429937166/cffi-1.15.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl" }, { "algorithm": "sha256", "hash": "6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a", "url": "https://files.pythonhosted.org/packages/39/02/960252ec9b39840e20a279de29a6fda9b4e49be79e0f32f0cfdf3e61cc4f/cffi-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl" }, { "algorithm": "sha256", "hash": "31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37", "url": "https://files.pythonhosted.org/packages/3e/9b/660d6da900af1976a8b4efea713a7ce9e514bf4659eff9b17f90f00be1cf/cffi-1.15.0-cp39-cp39-macosx_11_0_arm64.whl" }, { "algorithm": "sha256", "hash": "fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997", "url": "https://files.pythonhosted.org/packages/44/6b/5edf93698ef1dc745774e47e26f5995040dd3604562dd63f5959fcd3a49e/cffi-1.15.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl" }, { "algorithm": "sha256", "hash": "da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c", "url": "https://files.pythonhosted.org/packages/46/ab/b8dbd36f793cc3492ad26148e0ee0cad38fd47105ff30295e2cd88cc62e2/cffi-1.15.0-cp38-cp38-win32.whl" }, { "algorithm": "sha256", "hash": "3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029", "url": "https://files.pythonhosted.org/packages/51/1a/d3f1a0ec3bf66deca2e63f1f66c9b1ed8c43aa38b064ba86cbfcffa9ab3a/cffi-1.15.0-cp37-cp37m-win_amd64.whl" }, { "algorithm": "sha256", "hash": "4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880", "url": "https://files.pythonhosted.org/packages/5e/f0/693b6c7fea52d1afad55d1bfa3e5991a9075d98ac66330ab404dbc69ec8d/cffi-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl" }, { "algorithm": "sha256", "hash": "45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a", "url": "https://files.pythonhosted.org/packages/61/51/cff222be618f0e060a6991ab387f9574776fd0711a63b2be80df47ec5fad/cffi-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl" }, { "algorithm": "sha256", "hash": "ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796", "url": "https://files.pythonhosted.org/packages/6a/5e/d33fdd7461fba6e3b0f8fc4141eba410be16af81cf1ed32223a40abe27ac/cffi-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", "hash": "ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8", "url": "https://files.pythonhosted.org/packages/93/bc/a6b9abd8f692278a8e63759136f47ce69e564a7bcfa7ae7e5561243c74f3/cffi-1.15.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl" }, { "algorithm": "sha256", "hash": "263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7", "url": "https://files.pythonhosted.org/packages/93/f8/f681e739fd97e99d428a518a6ec15a772e04fd10102fb2717fcdbb11943a/cffi-1.15.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl" }, { "algorithm": "sha256", "hash": "8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e", "url": "https://files.pythonhosted.org/packages/97/5b/88b6fde78749406ddd15ef89466927e688912ff9ff3248d9f41b4551362a/cffi-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", "hash": "17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66", "url": "https://files.pythonhosted.org/packages/ab/d0/4cb1bbea5a57f9284e8bc97b393197d8ac9bc4cfa9e04e16a1c23ced9f83/cffi-1.15.0-cp37-cp37m-win32.whl" }, { "algorithm": "sha256", "hash": "181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443", "url": "https://files.pythonhosted.org/packages/b6/15/a50bf922c5f025665a9671c5ef063c3f384303d422f6b1d3134510cc044e/cffi-1.15.0-cp38-cp38-win_amd64.whl" }, { "algorithm": "sha256", "hash": "91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b", "url": "https://files.pythonhosted.org/packages/b8/6b/86396c913075908c3b3b9c6e680b3634ebcd1b02a6d75451dabdc15e0197/cffi-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", "hash": "3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139", "url": "https://files.pythonhosted.org/packages/bd/92/25f744cbe55e7e54b35f256f9fdd50a590c434cf47afb78b8a6278a87c2d/cffi-1.15.0-cp39-cp39-win_amd64.whl" }, { "algorithm": "sha256", "hash": "45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2", "url": "https://files.pythonhosted.org/packages/c4/5d/c9daed4e3d2b4318926c1fc141dfa3c808219b3aa26c04302c0e93a271f5/cffi-1.15.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" }, { "algorithm": "sha256", "hash": "3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df", "url": "https://files.pythonhosted.org/packages/de/a9/ab4725702c9e5b77643136228a983194fa6e39ea387d964b3c827159d780/cffi-1.15.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" }, { "algorithm": "sha256", "hash": "74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e", "url": "https://files.pythonhosted.org/packages/e2/25/00fd291e0872d43dabe070e7b761ba37453a1a94bd6e28c31b73112d8f0c/cffi-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl" }, { "algorithm": "sha256", "hash": "57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024", "url": "https://files.pythonhosted.org/packages/e5/fe/1dac7533ddb73767df8ba26183a9375dde2ee136aec7c92c9fb3038108e3/cffi-1.15.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl" }, { "algorithm": "sha256", "hash": "10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728", "url": "https://files.pythonhosted.org/packages/f5/7b/dba03f566c1966b2f23e95fbbe1b6d8e2b98450f0b779f2b5ce38470447f/cffi-1.15.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" } ], "project_name": "cffi", "requires_dists": [ "pycparser" ], "requires_python": null, "version": "1.15" }, { "artifacts": [ { "algorithm": "sha256", "hash": "4e2dddd38a5ba733be6a025a1475a9f45e4e41139d1321f412c6b360b19070b6", "url": "https://files.pythonhosted.org/packages/5d/a9/b73a5d6f50a7b2f6ef65a2d2a14e848b62dfc79d10d29277586a94cf1f23/cryptography-36.0.2-cp36-abi3-macosx_10_10_universal2.whl" }, { "algorithm": "sha256", "hash": "8897b7b7ec077c819187a123174b645eb680c13df68354ed99f9b40a50898f77", "url": "https://files.pythonhosted.org/packages/01/49/92db82cb344fcd511b324e2922d4d9183f1e4864b39087ec1b433cc9e69a/cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl" }, { "algorithm": "sha256", "hash": "c2c5250ff0d36fd58550252f54915776940e4e866f38f3a7866d92b32a654b86", "url": "https://files.pythonhosted.org/packages/01/86/4379b5eaafa5ea4b0081fa65a72849d6bba98e35c1da66f4b7a86878714d/cryptography-36.0.2-cp36-abi3-manylinux_2_24_x86_64.whl" }, { "algorithm": "sha256", "hash": "ca9f686517ec2c4a4ce930207f75c00bf03d94e5063cbc00a1dc42531511b7eb", "url": "https://files.pythonhosted.org/packages/02/7d/dbea1d6e6398f09f232409d2afab06d6a2835e052827bc15ee1c82f68fb5/cryptography-36.0.2-cp36-abi3-musllinux_1_1_x86_64.whl" }, { "algorithm": "sha256", "hash": "70f8f4f7bb2ac9f340655cbac89d68c527af5bb4387522a8413e841e3e6628c9", "url": "https://files.pythonhosted.org/packages/10/a7/51953e73828deef2b58ba1604de9167843ee9cd4185d8aaffcb45dd1932d/cryptography-36.0.2.tar.gz" }, { "algorithm": "sha256", "hash": "7be666cc4599b415f320839e36367b273db8501127b38316f3b9f22f17a0b815", "url": "https://files.pythonhosted.org/packages/13/3c/496203aae43589696bed4334efb6db2f2f177d42ab48b293252e148634d8/cryptography-36.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl" }, { "algorithm": "sha256", "hash": "ea634401ca02367c1567f012317502ef3437522e2fc44a3ea1844de028fa4b84", "url": "https://files.pythonhosted.org/packages/13/70/e35fc8a742bfc030df62e017e9eafb103ac5c2e3cea1ff340fd9af9d365e/cryptography-36.0.2-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl" }, { "algorithm": "sha256", "hash": "da73d095f8590ad437cd5e9faf6628a218aa7c387e1fdf67b888b47ba56a17f0", "url": "https://files.pythonhosted.org/packages/16/cb/5b04bd88f421b003f5282be9d43866bd3d86adebe06a2664ff22d4bd7c8a/cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl" }, { "algorithm": "sha256", "hash": "53e0285b49fd0ab6e604f4c5d9c5ddd98de77018542e88366923f152dbeb3c29", "url": "https://files.pythonhosted.org/packages/46/cd/abfb77b8a0666f38ec321e49eef3733cbecb3caf79926ec14a7fe3b2217f/cryptography-36.0.2-cp36-abi3-win_amd64.whl" }, { "algorithm": "sha256", "hash": "82740818f2f240a5da8dfb8943b360e4f24022b093207160c77cadade47d7c85", "url": "https://files.pythonhosted.org/packages/4f/86/48f9b8ea730bedeff6c4b07d58b581f02bf3dd805da0aa941009630cae3e/cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, { "algorithm": "sha256", "hash": "ec6597aa85ce03f3e507566b8bcdf9da2227ec86c4266bd5e6ab4d9e0cc8dab2", "url": "https://files.pythonhosted.org/packages/63/3f/b82df01f30b739c8d150132b474f08ba783b8944812a2b1bfeb7e55f73a2/cryptography-36.0.2-cp36-abi3-musllinux_1_1_aarch64.whl" }, { "algorithm": "sha256", "hash": "32db5cc49c73f39aac27574522cecd0a4bb7384e71198bc65a0d23f901e89bb7", "url": "https://files.pythonhosted.org/packages/6e/e5/c9349c03fcf064da29b7250907f82ee8ea7bc0d340cf9d2f17a8d8fbb68b/cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl" }, { "algorithm": "sha256", "hash": "1f64a62b3b75e4005df19d3b5235abd43fa6358d5516cfc43d87aeba8d08dd51", "url": "https://files.pythonhosted.org/packages/7a/87/e9d75ec7b99fc7e8f0a0d8fb626264c7599591a24d1c51509cf032eeb64a/cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl" }, { "algorithm": "sha256", "hash": "7b2d54e787a884ffc6e187262823b6feb06c338084bbe80d45166a1cb1c6c5bf", "url": "https://files.pythonhosted.org/packages/80/fd/19a0f5273141a128926b3564e1ba1e9563a8e38ae9c334bc14bf2e79fc9a/cryptography-36.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, { "algorithm": "sha256", "hash": "0a3bf09bb0b7a2c93ce7b98cb107e9170a90c51a0162a20af1c61c765b90e60b", "url": "https://files.pythonhosted.org/packages/86/97/f224dc8f5f7363e994f55583cd1b424c08fa443e00f095b42cfcc7f9722d/cryptography-36.0.2-pp38-pypy38_pp73-macosx_10_10_x86_64.whl" }, { "algorithm": "sha256", "hash": "f64b232348ee82f13aac22856515ce0195837f6968aeaa94a3d0353ea2ec06a6", "url": "https://files.pythonhosted.org/packages/ab/0a/e62ad333eaacd761614c6d56c62ba5ad4ba3f36ada2760e173b712276a38/cryptography-36.0.2-cp36-abi3-win32.whl" }, { "algorithm": "sha256", "hash": "8241cac0aae90b82d6b5c443b853723bcc66963970c67e56e71a2609dc4b5eaf", "url": "https://files.pythonhosted.org/packages/b8/82/4f676d5495e5abd1b2f8621e003dc0230a2661a6332adab39b153a0ccf4c/cryptography-36.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", "hash": "e167b6b710c7f7bc54e67ef593f8731e1f45aa35f8a8a7b72d6e42ec76afd4b3", "url": "https://files.pythonhosted.org/packages/c6/aa/cf00e4cfd762260fba45ae84ce76c7a52f2e5a7f57fbab4e8aee7c443072/cryptography-36.0.2-pp38-pypy38_pp73-win_amd64.whl" }, { "algorithm": "sha256", "hash": "d2b3d199647468d410994dbeb8cec5816fb74feb9368aedf300af709ef507e3e", "url": "https://files.pythonhosted.org/packages/d3/22/baef27c1a207dc4bc5d4474e9528f20f1e9ddb79d78a9907211106375c9f/cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, { "algorithm": "sha256", "hash": "4881d09298cd0b669bb15b9cfe6166f16fc1277b4ed0d04a22f3d6430cb30f1d", "url": "https://files.pythonhosted.org/packages/fc/07/a85e674b43c9872a09e1424b7b59afdee5ee54d6c256900297a3b7ce283d/cryptography-36.0.2-cp36-abi3-macosx_10_10_x86_64.whl" } ], "project_name": "cryptography", "requires_dists": [ "bcrypt>=3.1.5; extra == \"ssh\"", "black; extra == \"pep8test\"", "cffi>=1.12", "flake8-import-order; extra == \"pep8test\"", "flake8; extra == \"pep8test\"", "hypothesis!=3.79.2,>=1.11.4; extra == \"test\"", "iso8601; extra == \"test\"", "pep8-naming; extra == \"pep8test\"", "pretend; extra == \"test\"", "pyenchant>=1.6.11; extra == \"docstest\"", "pytest-cov; extra == \"test\"", "pytest-subtests; extra == \"test\"", "pytest-xdist; extra == \"test\"", "pytest>=6.2.0; extra == \"test\"", "pytz; extra == \"test\"", "setuptools-rust>=0.11.4; extra == \"sdist\"", "sphinx!=1.8.0,!=3.1.0,!=3.1.1,>=1.6.5; extra == \"docs\"", "sphinx-rtd-theme; extra == \"docs\"", "sphinxcontrib-spelling>=4.0.1; extra == \"docstest\"", "twine>=1.12.0; extra == \"docstest\"" ], "requires_python": ">=3.6", "version": "36.0.2" }, { "artifacts": [ { "algorithm": "sha256", "hash": "8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442", "url": "https://files.pythonhosted.org/packages/19/d2/32a15a4955be1b8114a1c570999eefd31279c7f9aa2d2a43d492a79b53c5/h11-0.13.0-py3-none-any.whl" }, { "algorithm": "sha256", "hash": "70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06", "url": "https://files.pythonhosted.org/packages/fa/a6/450568b2d62dd633be53f69890332bb0ce78183ffbe1e514c2b3102efff5/h11-0.13.0.tar.gz" } ], "project_name": "h11", "requires_dists": [ "dataclasses; python_version < \"3.7\"", "typing-extensions; python_version < \"3.8\"" ], "requires_python": ">=3.6", "version": "0.13" }, { "artifacts": [ { "algorithm": "sha256", "hash": "84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", "url": "https://files.pythonhosted.org/packages/04/a2/d918dcd22354d8958fe113e1a3630137e0fc8b44859ade3063982eacd2a4/idna-3.3-py3-none-any.whl" }, { "algorithm": "sha256", "hash": "9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d", "url": "https://files.pythonhosted.org/packages/62/08/e3fc7c8161090f742f504f40b1bccbfc544d4a4e09eb774bf40aafce5436/idna-3.3.tar.gz" } ], "project_name": "idna", "requires_dists": [], "requires_python": ">=3.5", "version": "3.3" }, { "artifacts": [ { "algorithm": "sha256", "hash": "c7dd9375cfd3c12db9801d080a3b63d4b0a261aa996c4c13152380587288d958", "url": "https://files.pythonhosted.org/packages/0d/bb/f60ce97b304b1979d1fef96b6517af47b9bb026770b1f198b6e921b5edf5/outcome-1.1.0-py2.py3-none-any.whl" }, { "algorithm": "sha256", "hash": "e862f01d4e626e63e8f92c38d1f8d5546d3f9cce989263c521b2e7990d186967", "url": "https://files.pythonhosted.org/packages/88/b5/9ccedd89d641dcfa5771f636a8a2e99f9d98b09f511f4f870d382ef2b007/outcome-1.1.0.tar.gz" } ], "project_name": "outcome", "requires_dists": [ "attrs>=19.2.0" ], "requires_python": ">=3.6", "version": "1.1" }, { "artifacts": [ { "algorithm": "sha256", "hash": "8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9", "url": "https://files.pythonhosted.org/packages/62/d5/5f610ebe421e85889f2e55e33b7f9a6795bd982198517d912eb1c76e1a53/pycparser-2.21-py2.py3-none-any.whl" }, { "algorithm": "sha256", "hash": "e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206", "url": "https://files.pythonhosted.org/packages/5e/0b/95d387f5f4433cb0f53ff7ad859bd2c6051051cebbb564f139a999ab46de/pycparser-2.21.tar.gz" } ], "project_name": "pycparser", "requires_dists": [], "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7", "version": "2.21" }, { "artifacts": [ { "algorithm": "sha256", "hash": "ea252b38c87425b64116f808355e8da644ef9b07e429398bfece610f893ee2e0", "url": "https://files.pythonhosted.org/packages/d5/9f/9c0e3288b85f907a008f9d31318b0e4de31b2f67724a8745e633741f609c/pyOpenSSL-22.0.0-py2.py3-none-any.whl" }, { "algorithm": "sha256", "hash": "660b1b1425aac4a1bea1d94168a85d99f0b3144c869dd4390d27629d0087f1bf", "url": "https://files.pythonhosted.org/packages/35/d3/d6a9610f19d943e198df502ae660c6b5acf84cc3bc421a2aa3c0fb6b21d1/pyOpenSSL-22.0.0.tar.gz" } ], "project_name": "pyopenssl", "requires_dists": [ "cryptography>=35.0", "flaky; extra == \"test\"", "pretend; extra == \"test\"", "pytest>=3.0.1; extra == \"test\"", "sphinx-rtd-theme; extra == \"docs\"", "sphinx; extra == \"docs\"" ], "requires_python": ">=3.6", "version": "22" }, { "artifacts": [ { "algorithm": "sha256", "hash": "2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5", "url": "https://files.pythonhosted.org/packages/8d/59/b4572118e098ac8e46e399a1dd0f2d85403ce8bbaad9ec79373ed6badaf9/PySocks-1.7.1-py3-none-any.whl" }, { "algorithm": "sha256", "hash": "3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0", "url": "https://files.pythonhosted.org/packages/bd/11/293dd436aea955d45fc4e8a35b6ae7270f5b8e00b53cf6c024c83b657a11/PySocks-1.7.1.tar.gz" } ], "project_name": "pysocks", "requires_dists": [], "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7", "version": "1.7.1" }, { "artifacts": [ { "algorithm": "sha256", "hash": "14d28a628c831c105d38305c881c9c7847199bfd728ec84240c5e86fa1c9bd5a", "url": "https://files.pythonhosted.org/packages/88/f2/6f584262771d383ad2d21c8b01f8f4af784884f4e25c1f6450265a558a45/selenium-4.1.3-py3-none-any.whl" } ], "project_name": "selenium", "requires_dists": [ "trio-websocket~=0.9", "trio~=0.17", "urllib3[secure,socks]~=1.26" ], "requires_python": "~=3.7", "version": "4.1.3" }, { "artifacts": [ { "algorithm": "sha256", "hash": "471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663", "url": "https://files.pythonhosted.org/packages/52/b0/7b2e028b63d092804b6794595871f936aafa5e9322dcaaad50ebf67445b3/sniffio-1.2.0-py3-none-any.whl" }, { "algorithm": "sha256", "hash": "c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de", "url": "https://files.pythonhosted.org/packages/a6/ae/44ed7978bcb1f6337a3e2bef19c941de750d73243fc9389140d62853b686/sniffio-1.2.0.tar.gz" } ], "project_name": "sniffio", "requires_dists": [ "contextvars>=2.1; python_version < \"3.7\"" ], "requires_python": ">=3.5", "version": "1.2" }, { "artifacts": [ { "algorithm": "sha256", "hash": "a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", "url": "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl" }, { "algorithm": "sha256", "hash": "25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", "url": "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz" } ], "project_name": "sortedcontainers", "requires_dists": [], "requires_python": null, "version": "2.4" }, { "artifacts": [ { "algorithm": "sha256", "hash": "fb2d48e4eab0dfb786a472cd514aaadc71e3445b203bc300bad93daa75d77c1a", "url": "https://files.pythonhosted.org/packages/39/b3/c6fc163c9343e95432d60a2b681bc14d78fda70dff50210687314d94143d/trio-0.20.0-py3-none-any.whl" }, { "algorithm": "sha256", "hash": "670a52d3115d0e879e1ac838a4eb999af32f858163e3a704fe4839de2a676070", "url": "https://files.pythonhosted.org/packages/0a/0f/e9c02a866e32d85fdead0f1c9425b31ba57b69dd08714770232089cc7839/trio-0.20.0.tar.gz" } ], "project_name": "trio", "requires_dists": [ "async-generator>=1.9", "attrs>=19.2.0", "cffi>=1.14; os_name == \"nt\" and implementation_name != \"pypy\"", "idna", "outcome", "sniffio", "sortedcontainers" ], "requires_python": ">=3.7", "version": "0.20" }, { "artifacts": [ { "algorithm": "sha256", "hash": "5b558f6e83cc20a37c3b61202476c5295d1addf57bd65543364e0337e37ed2bc", "url": "https://files.pythonhosted.org/packages/db/c5/b5e8bc1f40568a354f2a9cc296b8892605a9d2f22e725290fc33836dd2a3/trio_websocket-0.9.2-py3-none-any.whl" }, { "algorithm": "sha256", "hash": "a3d34de8fac26023eee701ed1e7bf4da9a8326b61a62934ec9e53b64970fd8fe", "url": "https://files.pythonhosted.org/packages/75/91/44a0a016025794ba9fef530a6fbe59987153e2cbea7e11fe2f3d8c618740/trio-websocket-0.9.2.tar.gz" } ], "project_name": "trio-websocket", "requires_dists": [ "async-generator>=1.10", "trio>=0.11", "wsproto>=0.14" ], "requires_python": ">=3.5", "version": "0.9.2" }, { "artifacts": [ { "algorithm": "sha256", "hash": "21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2", "url": "https://files.pythonhosted.org/packages/45/6b/44f7f8f1e110027cf88956b59f2fad776cca7e1704396d043f89effd3a0e/typing_extensions-4.1.1-py3-none-any.whl" }, { "algorithm": "sha256", "hash": "1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42", "url": "https://files.pythonhosted.org/packages/b1/5a/8b5fbb891ef3f81fc923bf3cb4a578c0abf9471eb50ce0f51c74212182ab/typing_extensions-4.1.1.tar.gz" } ], "project_name": "typing-extensions", "requires_dists": [], "requires_python": ">=3.6", "version": "4.1.1" }, { "artifacts": [ { "algorithm": "sha256", "hash": "44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14", "url": "https://files.pythonhosted.org/packages/ec/03/062e6444ce4baf1eac17a6a0ebfe36bb1ad05e1df0e20b110de59c278498/urllib3-1.26.9-py2.py3-none-any.whl" }, { "algorithm": "sha256", "hash": "aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e", "url": "https://files.pythonhosted.org/packages/1b/a5/4eab74853625505725cefdf168f48661b2cd04e7843ab836f3f63abf81da/urllib3-1.26.9.tar.gz" } ], "project_name": "urllib3", "requires_dists": [ "PySocks!=1.5.7,<2.0,>=1.5.6; extra == \"socks\"", "brotli>=1.0.9; ((os_name != \"nt\" or python_version >= \"3\") and platform_python_implementation == \"CPython\") and extra == \"brotli\"", "brotlicffi>=0.8.0; ((os_name != \"nt\" or python_version >= \"3\") and platform_python_implementation != \"CPython\") and extra == \"brotli\"", "brotlipy>=0.6.0; (os_name == \"nt\" and python_version < \"3\") and extra == \"brotli\"", "certifi; extra == \"secure\"", "cryptography>=1.3.4; extra == \"secure\"", "idna>=2.0.0; extra == \"secure\"", "ipaddress; python_version == \"2.7\" and extra == \"secure\"", "pyOpenSSL>=0.14; extra == \"secure\"" ], "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,<4,>=2.7", "version": "1.26.9" }, { "artifacts": [ { "algorithm": "sha256", "hash": "2218cb57952d90b9fca325c0dcfb08c3bda93e8fd8070b0a17f048e2e47a521b", "url": "https://files.pythonhosted.org/packages/4b/6e/5f8c3e8418966f50d028e336f0c2c568f8522577183678923609d4d24924/wsproto-1.1.0-py3-none-any.whl" }, { "algorithm": "sha256", "hash": "a2e56bfd5c7cd83c1369d83b5feccd6d37798b74872866e62616e0ecf111bda8", "url": "https://files.pythonhosted.org/packages/f5/58/575e416cd024d23c52de9e17d02f4c5ef4a9c8a7258c6fc8f2b3f96f73cf/wsproto-1.1.0.tar.gz" } ], "project_name": "wsproto", "requires_dists": [ "h11<1,>=0.9.0" ], "requires_python": ">=3.7.0", "version": "1.1" } ], "platform_tag": [ "cp36", "cp36m", "manylinux_2_35_x86_64" ] } ], "pex_version": "2.1.73", "prefer_older_binary": false, "requirements": [ "selenium==4.1.3" ], "requires_python": [ "<3.10,>=3.7" ], "resolver_version": "pip-legacy-resolver", "style": "universal", "transitive": true, "use_pep517": null } ```
jsirois commented 2 years ago

Ok, this is easy enough to patch up. The 2020 resolver encapsulates this in a single class and does not use the packaging utility function that the legacy resolver uses. It looks like the other two forms of patching (compatible wheel tag selection and environment marker evaluation) are, in fact, shared in common between both resolvers; so this should be the only divergent patch needed: https://github.com/pantsbuild/pex/blob/099fd9955c3a0696526d148027f070504dfb0da7/pex/vendor/_vendored/pip/pip/_internal/resolution/resolvelib/requirements.py#L115-L160