From 4912053fa5e85fba69a38bd247c17602868c130f Mon Sep 17 00:00:00 2001 From: Ben Mares Date: Fri, 10 Nov 2023 10:37:25 +0100 Subject: [PATCH] Add tests for installing lockfile with pip deps --- .../test-install-with-pip-deps/conda-lock.yml | 712 ++++++++++++++++++ .../environment.yml | 9 + tests/test_conda_lock.py | 66 +- 3 files changed, 786 insertions(+), 1 deletion(-) create mode 100644 tests/test-install-with-pip-deps/conda-lock.yml create mode 100644 tests/test-install-with-pip-deps/environment.yml diff --git a/tests/test-install-with-pip-deps/conda-lock.yml b/tests/test-install-with-pip-deps/conda-lock.yml new file mode 100644 index 00000000..6eaf6c19 --- /dev/null +++ b/tests/test-install-with-pip-deps/conda-lock.yml @@ -0,0 +1,712 @@ +# This lock file was generated by conda-lock (https://github.com/conda/conda-lock). DO NOT EDIT! +# +# A "lock file" contains a concrete list of package versions (with checksums) to be installed. Unlike +# e.g. `conda env create`, the resulting environment will not change as new package versions become +# available, unless you explicitly update the lock file. +# +# Install this environment as "YOURENV" with: +# conda-lock install -n YOURENV --file conda-lock.yml +# To update a single package to the latest version compatible with the version constraints in the source: +# conda-lock lock --lockfile conda-lock.yml --update PACKAGE +# To re-solve the entire environment, e.g. after changing a version constraint in the source file: +# conda-lock -f environment.yml --lockfile conda-lock.yml +version: 1 +metadata: + content_hash: + linux-64: b583273e7b7b293528360517e43b8c117c8ba5cc1920c8f2493e4e285d46dd57 + linux-aarch64: 965e94868e404b14f51905d913a35c3e74daf3d9936df91026f9d0bc8e8825e1 + channels: + - url: conda-forge + used_env_vars: [] + platforms: + - linux-64 + - linux-aarch64 + sources: + - environment.yml +package: +- name: _libgcc_mutex + version: '0.1' + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + hash: + md5: d7c89558ba9fa0495403155b64376d81 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + category: main + optional: false +- name: _openmp_mutex + version: '4.5' + manager: conda + platform: linux-64 + dependencies: + _libgcc_mutex: '0.1' + libgomp: '>=7.5.0' + url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + hash: + md5: 73aaf86a425cc6e73fcf236a5a46396d + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + category: main + optional: false +- name: _openmp_mutex + version: '4.5' + manager: conda + platform: linux-aarch64 + dependencies: + libgomp: '>=7.5.0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + hash: + md5: 6168d71addc746e8f2b8d57dfd2edcea + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + category: main + optional: false +- name: bzip2 + version: 1.0.8 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hd590300_5.conda + hash: + md5: 69b8b6202a07720f448be700e300ccf4 + sha256: 242c0c324507ee172c0e0dd2045814e746bb303d1eb78870d182ceb0abc726a8 + category: main + optional: false +- name: bzip2 + version: 1.0.8 + manager: conda + platform: linux-aarch64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h31becfc_5.conda + hash: + md5: a64e35f01e0b7a2a152eca87d33b9c87 + sha256: b9f170990625cb1eeefaca02e091dc009a64264b077166d8ed7aeb7a09e923b0 + category: main + optional: false +- name: ca-certificates + version: 2023.7.22 + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.7.22-hbcca054_0.conda + hash: + md5: a73ecd2988327ad4c8f2c331482917f2 + sha256: 525b7b6b5135b952ec1808de84e5eca57c7c7ff144e29ef3e96ae4040ff432c1 + category: main + optional: false +- name: ca-certificates + version: 2023.7.22 + manager: conda + platform: linux-aarch64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2023.7.22-hcefe29a_0.conda + hash: + md5: 95d7f998087114466fa91e7c2887fa2f + sha256: 40e98cf2a105a618cae899d9e4d26c46fdd733f015f7a322ff313bd71cab8be4 + category: main + optional: false +- name: idna + version: '3.4' + manager: conda + platform: linux-64 + dependencies: + python: '>=3.6' + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2 + hash: + md5: 34272b248891bddccc64479f9a7fffed + sha256: 9887c35c374ec1847f167292d3fde023cb4c994a4ceeec283072b95440131f09 + category: main + optional: false +- name: idna + version: '3.4' + manager: conda + platform: linux-aarch64 + dependencies: + python: '>=3.6' + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2 + hash: + md5: 34272b248891bddccc64479f9a7fffed + sha256: 9887c35c374ec1847f167292d3fde023cb4c994a4ceeec283072b95440131f09 + category: main + optional: false +- name: ld_impl_linux-64 + version: '2.40' + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda + hash: + md5: 7aca3059a1729aa76c597603f10b0dd3 + sha256: f6cc89d887555912d6c61b295d398cff9ec982a3417d38025c45d5dd9b9e79cd + category: main + optional: false +- name: ld_impl_linux-aarch64 + version: '2.40' + manager: conda + platform: linux-aarch64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.40-h2d8c526_0.conda + hash: + md5: 16246d69e945d0b1969a6099e7c5d457 + sha256: 1ba06e8645094b340b4aee23603a6abb1b0383788180e65f3de34e655c5f577c + category: main + optional: false +- name: libexpat + version: 2.5.0 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.5.0-hcb278e6_1.conda + hash: + md5: 6305a3dd2752c76335295da4e581f2fd + sha256: 74c98a563777ae2ad71f1f74d458a8ab043cee4a513467c159ccf159d0e461f3 + category: main + optional: false +- name: libexpat + version: 2.5.0 + manager: conda + platform: linux-aarch64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.5.0-hd600fc2_1.conda + hash: + md5: 6cd3d0a28437b3845c260f9d71d434d7 + sha256: b4651d196d5adb0637c678d874160a318078d963caec264bda7ac07ff6a1cbc7 + category: main + optional: false +- name: libffi + version: 3.4.2 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=9.4.0' + url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + hash: + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + category: main + optional: false +- name: libffi + version: 3.4.2 + manager: conda + platform: linux-aarch64 + dependencies: + libgcc-ng: '>=9.4.0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + hash: + md5: dddd85f4d52121fab0a8b099c5e06501 + sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c + category: main + optional: false +- name: libgcc-ng + version: 13.2.0 + manager: conda + platform: linux-64 + dependencies: + _libgcc_mutex: '0.1' + _openmp_mutex: '>=4.5' + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_2.conda + hash: + md5: c28003b0be0494f9a7664389146716ff + sha256: d361d3c87c376642b99c1fc25cddec4b9905d3d9b9203c1c545b8c8c1b04539a + category: main + optional: false +- name: libgcc-ng + version: 13.2.0 + manager: conda + platform: linux-aarch64 + dependencies: + _openmp_mutex: '>=4.5' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-13.2.0-hf8544c7_2.conda + hash: + md5: f4dfb3bad7c8b38c3f8ed7f15a91a1ed + sha256: 2d7ab7264cf885c81ed2ceed9d279388cdde181aa7a0e549ee03511c7502a381 + category: main + optional: false +- name: libgomp + version: 13.2.0 + manager: conda + platform: linux-64 + dependencies: + _libgcc_mutex: '0.1' + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_2.conda + hash: + md5: e2042154faafe61969556f28bade94b9 + sha256: e1e82348f8296abfe344162b3b5f0ddc2f504759ebeb8b337ba99beaae583b15 + category: main + optional: false +- name: libgomp + version: 13.2.0 + manager: conda + platform: linux-aarch64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-13.2.0-hf8544c7_2.conda + hash: + md5: 8ce66e4e1d30f0936a525127eaaaf63d + sha256: 7d22718b7f4f0a5f219d260edbd4c2bd4e70527eff6129609e3e3faa0f373dc0 + category: main + optional: false +- name: libnsl + version: 2.0.1 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + hash: + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + category: main + optional: false +- name: libnsl + version: 2.0.1 + manager: conda + platform: linux-aarch64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + hash: + md5: c14f32510f694e3185704d89967ec422 + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + category: main + optional: false +- name: libsqlite + version: 3.44.0 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.44.0-h2797004_0.conda + hash: + md5: b58e6816d137f3aabf77d341dd5d732b + sha256: 74ef5dcb900c38bec53140036e5e2a9cc7ffcd806da479ea2305f962a358a259 + category: main + optional: false +- name: libsqlite + version: 3.44.0 + manager: conda + platform: linux-aarch64 + dependencies: + libgcc-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.44.0-h194ca79_0.conda + hash: + md5: 6d33a45e15846407c1a9a7388dda5436 + sha256: 1b41e9346eaab715c0fa3d27decfb13f234f4dd94023c617eb72ad425896ef9e + category: main + optional: false +- name: libuuid + version: 2.38.1 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + hash: + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + category: main + optional: false +- name: libuuid + version: 2.38.1 + manager: conda + platform: linux-aarch64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + hash: + md5: 000e30b09db0b7c775b21695dff30969 + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + category: main + optional: false +- name: libzlib + version: 1.2.13 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda + hash: + md5: f36c115f1ee199da648e0597ec2047ad + sha256: 370c7c5893b737596fd6ca0d9190c9715d89d888b8c88537ae1ef168c25e82e4 + category: main + optional: false +- name: libzlib + version: 1.2.13 + manager: conda + platform: linux-aarch64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.2.13-h31becfc_5.conda + hash: + md5: b213aa87eea9491ef7b129179322e955 + sha256: aeeefbb61e5e8227e53566d5e42dbb49e120eb99109996bf0dbfde8f180747a7 + category: main + optional: false +- name: ncurses + version: '6.4' + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-h59595ed_2.conda + hash: + md5: 7dbaa197d7ba6032caf7ae7f32c1efa0 + sha256: 91cc03f14caf96243cead96c76fe91ab5925a695d892e83285461fb927dece5e + category: main + optional: false +- name: ncurses + version: '6.4' + manager: conda + platform: linux-aarch64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.4-h0425590_2.conda + hash: + md5: 4ff0a396150dedad4269e16e5810f769 + sha256: d71cf2f2b1a9fae7ee2455a35a890423838e9594294beb4a002fe7c7b10bc086 + category: main + optional: false +- name: openssl + version: 3.1.4 + manager: conda + platform: linux-64 + dependencies: + ca-certificates: '' + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.4-hd590300_0.conda + hash: + md5: 412ba6938c3e2abaca8b1129ea82e238 + sha256: d15b3e83ce66c6f6fbb4707f2f5c53337124c01fb03bfda1cf25c5b41123efc7 + category: main + optional: false +- name: openssl + version: 3.1.4 + manager: conda + platform: linux-aarch64 + dependencies: + ca-certificates: '' + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.1.4-h31becfc_0.conda + hash: + md5: bc0e17d9ee24d18aa8ba435d86a2a460 + sha256: efdafcc17973512b0a4a577daf5e64414a07da362bb5110d434ecd98d913589e + category: main + optional: false +- name: pip + version: 23.3.1 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.7' + setuptools: '' + wheel: '' + url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.1-pyhd8ed1ab_0.conda + hash: + md5: 2400c0b86889f43aa52067161e1fb108 + sha256: 435829a03e1c6009f013f29bb83de8b876c388820bf8cf69a7baeec25f6a3563 + category: main + optional: false +- name: pip + version: 23.3.1 + manager: conda + platform: linux-aarch64 + dependencies: + setuptools: '' + wheel: '' + python: '>=3.7' + url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.1-pyhd8ed1ab_0.conda + hash: + md5: 2400c0b86889f43aa52067161e1fb108 + sha256: 435829a03e1c6009f013f29bb83de8b876c388820bf8cf69a7baeec25f6a3563 + category: main + optional: false +- name: python + version: 3.12.0 + manager: conda + platform: linux-64 + dependencies: + bzip2: '>=1.0.8,<2.0a0' + ld_impl_linux-64: '>=2.36.1' + libexpat: '>=2.5.0,<3.0a0' + libffi: '>=3.4,<4.0a0' + libgcc-ng: '>=12' + libnsl: '>=2.0.0,<2.1.0a0' + libsqlite: '>=3.43.0,<4.0a0' + libuuid: '>=2.38.1,<3.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + ncurses: '>=6.4,<7.0a0' + openssl: '>=3.1.3,<4.0a0' + readline: '>=8.2,<9.0a0' + tk: '>=8.6.13,<8.7.0a0' + tzdata: '' + xz: '>=5.2.6,<6.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.0-hab00c5b_0_cpython.conda + hash: + md5: 7f97faab5bebcc2580f4f299285323da + sha256: 5398ebae6a1ccbfd3f76361eac75f3ac071527a8072627c4bf9008c689034f48 + category: main + optional: false +- name: python + version: 3.12.0 + manager: conda + platform: linux-aarch64 + dependencies: + bzip2: '>=1.0.8,<2.0a0' + ld_impl_linux-aarch64: '>=2.36.1' + libexpat: '>=2.5.0,<3.0a0' + libffi: '>=3.4,<4.0a0' + libgcc-ng: '>=12' + libnsl: '>=2.0.0,<2.1.0a0' + libsqlite: '>=3.43.0,<4.0a0' + libuuid: '>=2.38.1,<3.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + ncurses: '>=6.4,<7.0a0' + openssl: '>=3.1.3,<4.0a0' + readline: '>=8.2,<9.0a0' + tk: '>=8.6.13,<8.7.0a0' + tzdata: '' + xz: '>=5.2.6,<6.0a0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.0-h43d1f9e_0_cpython.conda + hash: + md5: 2e462f114cb8a6f1b3e3e934b7f4507a + sha256: d771b2eb228cefcb622e2f1aeed1d12c91ab9a41ab21acb9214a8962c7fefa3c + category: main + optional: false +- name: readline + version: '8.2' + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + ncurses: '>=6.3,<7.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + hash: + md5: 47d31b792659ce70f470b5c82fdfb7a4 + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + category: main + optional: false +- name: readline + version: '8.2' + manager: conda + platform: linux-aarch64 + dependencies: + libgcc-ng: '>=12' + ncurses: '>=6.3,<7.0a0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + hash: + md5: 105eb1e16bf83bfb2eb380a48032b655 + sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd + category: main + optional: false +- name: setuptools + version: 68.2.2 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.7' + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda + hash: + md5: fc2166155db840c634a1291a5c35a709 + sha256: 851901b1f8f2049edb36a675f0c3f9a98e1495ef4eb214761b048c6f696a06f7 + category: main + optional: false +- name: setuptools + version: 68.2.2 + manager: conda + platform: linux-aarch64 + dependencies: + python: '>=3.7' + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda + hash: + md5: fc2166155db840c634a1291a5c35a709 + sha256: 851901b1f8f2049edb36a675f0c3f9a98e1495ef4eb214761b048c6f696a06f7 + category: main + optional: false +- name: tk + version: 8.6.13 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + hash: + md5: d453b98d9c83e71da0741bb0ff4d76bc + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + category: main + optional: false +- name: tk + version: 8.6.13 + manager: conda + platform: linux-aarch64 + dependencies: + libgcc-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + hash: + md5: f75105e0585851f818e0009dd1dde4dc + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + category: main + optional: false +- name: tzdata + version: 2023c + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda + hash: + md5: 939e3e74d8be4dac89ce83b20de2492a + sha256: 0449138224adfa125b220154408419ec37c06b0b49f63c5954724325903ecf55 + category: main + optional: false +- name: tzdata + version: 2023c + manager: conda + platform: linux-aarch64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda + hash: + md5: 939e3e74d8be4dac89ce83b20de2492a + sha256: 0449138224adfa125b220154408419ec37c06b0b49f63c5954724325903ecf55 + category: main + optional: false +- name: wheel + version: 0.41.3 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.7' + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.3-pyhd8ed1ab_0.conda + hash: + md5: 3fc026b9c87d091c4b34a6c997324ae8 + sha256: 84c3b57fba778add2bd47b7cc70e86f746d2c55549ffd2ccb6f3d6bf7c94d21d + category: main + optional: false +- name: wheel + version: 0.41.3 + manager: conda + platform: linux-aarch64 + dependencies: + python: '>=3.7' + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.3-pyhd8ed1ab_0.conda + hash: + md5: 3fc026b9c87d091c4b34a6c997324ae8 + sha256: 84c3b57fba778add2bd47b7cc70e86f746d2c55549ffd2ccb6f3d6bf7c94d21d + category: main + optional: false +- name: xz + version: 5.2.6 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + hash: + md5: 2161070d867d1b1204ea749c8eec4ef0 + sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 + category: main + optional: false +- name: xz + version: 5.2.6 + manager: conda + platform: linux-aarch64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + hash: + md5: 83baad393a31d59c20b63ba4da6592df + sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 + category: main + optional: false +- name: certifi + version: 2023.7.22 + manager: pip + platform: linux-64 + dependencies: {} + url: https://files.pythonhosted.org/packages/4c/dd/2234eab22353ffc7d94e8d13177aaa050113286e93e7b40eae01fbf7c3d9/certifi-2023.7.22-py3-none-any.whl + hash: + sha256: 92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9 + category: main + optional: false +- name: certifi + version: 2023.7.22 + manager: pip + platform: linux-aarch64 + dependencies: {} + url: https://files.pythonhosted.org/packages/4c/dd/2234eab22353ffc7d94e8d13177aaa050113286e93e7b40eae01fbf7c3d9/certifi-2023.7.22-py3-none-any.whl + hash: + sha256: 92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9 + category: main + optional: false +- name: charset-normalizer + version: 3.3.2 + manager: pip + platform: linux-64 + dependencies: {} + url: https://files.pythonhosted.org/packages/ee/fb/14d30eb4956408ee3ae09ad34299131fb383c47df355ddb428a7331cfa1e/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + hash: + sha256: 90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b + category: main + optional: false +- name: charset-normalizer + version: 3.3.2 + manager: pip + platform: linux-aarch64 + dependencies: {} + url: https://files.pythonhosted.org/packages/99/b0/9c365f6d79a9f0f3c379ddb40a256a67aa69c59609608fe7feb6235896e1/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl + hash: + sha256: 8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a + category: main + optional: false +- name: requests + version: 2.31.0 + manager: pip + platform: linux-64 + dependencies: + charset-normalizer: '>=2,<4' + idna: '>=2.5,<4' + urllib3: '>=1.21.1,<3' + certifi: '>=2017.4.17' + url: https://files.pythonhosted.org/packages/70/8e/0e2d847013cb52cd35b38c009bb167a1a26b2ce6cd6965bf26b47bc0bf44/requests-2.31.0-py3-none-any.whl + hash: + sha256: 58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f + category: main + optional: false +- name: requests + version: 2.31.0 + manager: pip + platform: linux-aarch64 + dependencies: + charset-normalizer: '>=2,<4' + idna: '>=2.5,<4' + urllib3: '>=1.21.1,<3' + certifi: '>=2017.4.17' + url: https://files.pythonhosted.org/packages/70/8e/0e2d847013cb52cd35b38c009bb167a1a26b2ce6cd6965bf26b47bc0bf44/requests-2.31.0-py3-none-any.whl + hash: + sha256: 58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f + category: main + optional: false +- name: urllib3 + version: 2.0.7 + manager: pip + platform: linux-64 + dependencies: {} + url: https://files.pythonhosted.org/packages/d2/b2/b157855192a68541a91ba7b2bbcb91f1b4faa51f8bae38d8005c034be524/urllib3-2.0.7-py3-none-any.whl + hash: + sha256: fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e + category: main + optional: false +- name: urllib3 + version: 2.0.7 + manager: pip + platform: linux-aarch64 + dependencies: {} + url: https://files.pythonhosted.org/packages/d2/b2/b157855192a68541a91ba7b2bbcb91f1b4faa51f8bae38d8005c034be524/urllib3-2.0.7-py3-none-any.whl + hash: + sha256: fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e + category: main + optional: false diff --git a/tests/test-install-with-pip-deps/environment.yml b/tests/test-install-with-pip-deps/environment.yml new file mode 100644 index 00000000..14c84bf4 --- /dev/null +++ b/tests/test-install-with-pip-deps/environment.yml @@ -0,0 +1,9 @@ +channels: +- conda-forge +dependencies: +- idna +- pip: + - requests +platforms: +- linux-64 +- linux-aarch64 diff --git a/tests/test_conda_lock.py b/tests/test_conda_lock.py index 1f076e56..3381dbc6 100644 --- a/tests/test_conda_lock.py +++ b/tests/test_conda_lock.py @@ -12,10 +12,11 @@ import tempfile import typing import uuid +import warnings from glob import glob from pathlib import Path -from typing import Any, ContextManager, Dict, List, Tuple, Union +from typing import Any, ContextManager, Dict, List, Literal, Tuple, Union from unittest.mock import MagicMock from urllib.parse import urldefrag, urlsplit @@ -40,7 +41,9 @@ create_lockfile_from_spec, default_virtual_package_repodata, determine_conda_executable, + do_render, extract_input_hash, + install, main, make_lock_spec, run_lock, @@ -1833,6 +1836,67 @@ def test_install( ), f"Package {package} does not exist in {prefix} environment" +@pytest.fixture +def install_with_pip_deps_lockfile(tmp_path: Path): + return clone_test_dir("test-install-with-pip-deps", tmp_path).joinpath( + "conda-lock.yml" + ) + + +PIP_WITH_EXPLICIT_LOCKFILE_WARNING = """installation of pip dependencies from exp""" + + +def test_install_with_pip_deps( + tmp_path: Path, + conda_exe: str, + install_with_pip_deps_lockfile: Path, + monkeypatch: "pytest.MonkeyPatch", + caplog, +): + root_prefix = tmp_path / "root_prefix" + + root_prefix.mkdir(exist_ok=True) + + package = "requests" + prefix = root_prefix / "test_env" + + context: ContextManager + if sys.platform.lower().startswith("linux"): + context = contextlib.nullcontext() + else: + # since by default we do platform validation we would expect this to fail + context = pytest.raises(PlatformValidationError) + + with context, install_lock(): + install( + conda=str(conda_exe), + prefix=str(prefix), + lock_file=install_with_pip_deps_lockfile, + ) + assert PIP_WITH_EXPLICIT_LOCKFILE_WARNING not in caplog.text + + conda_metas = list(glob(f"{prefix}/conda-meta/{package}-*.json")) + assert len(conda_metas) == 0, "pip package should not be installed by conda" + + if sys.platform.lower().startswith("linux"): + python = prefix / "bin" / "python" + subprocess.check_call([str(python), "-c", "import requests"]) + + +@pytest.mark.parametrize("kind", ["explicit", "env"]) +def test_warn_on_explicit_lock_with_pip_deps( + kind: Literal["explicit", "env"], + install_with_pip_deps_lockfile: Path, + caplog, +): + lock_content = parse_conda_lock_file(install_with_pip_deps_lockfile) + do_render(lock_content, kinds=[kind]) + if kind == "explicit": + assert PIP_WITH_EXPLICIT_LOCKFILE_WARNING in caplog.text + else: + assert PIP_WITH_EXPLICIT_LOCKFILE_WARNING not in caplog.text + + @pytest.mark.parametrize( "line,stripped", (