From 4b930dce95659f59605069b66acac9efd778ed1a Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Wed, 22 Jan 2025 16:21:28 +0100 Subject: [PATCH 1/3] Handle 'git+https' pip urls --- libmamba/src/specs/package_info.cpp | 14 + .../tests/src/specs/test_package_info.cpp | 9 + .../tests/test-env-lock-pip-git-https.yaml | 581 ++++++++++++++++++ micromamba/tests/test_create.py | 32 + 4 files changed, 636 insertions(+) create mode 100644 micromamba/tests/test-env-lock-pip-git-https.yaml diff --git a/libmamba/src/specs/package_info.cpp b/libmamba/src/specs/package_info.cpp index d4e722d607..0784058b5e 100644 --- a/libmamba/src/specs/package_info.cpp +++ b/libmamba/src/specs/package_info.cpp @@ -225,6 +225,20 @@ namespace mamba::specs } } + // A git repository URL over https and used by `pip` + // git+https://@#egg= + if (util::starts_with(str, "git+https")) + { + auto pkg = PackageInfo(); + pkg.package_url = str; + const std::string pkg_name_marker = "#egg="; + if (const auto idx = str.rfind(pkg_name_marker); idx != std::string_view::npos) + { + pkg.name = str.substr(idx + pkg_name_marker.length()); + } + return pkg; + } + return make_unexpected_parse(fmt::format(R"(Fail to parse PackageInfo URL "{}")", str)); } diff --git a/libmamba/tests/src/specs/test_package_info.cpp b/libmamba/tests/src/specs/test_package_info.cpp index 5a899f7223..9557ce4ef2 100644 --- a/libmamba/tests/src/specs/test_package_info.cpp +++ b/libmamba/tests/src/specs/test_package_info.cpp @@ -78,6 +78,15 @@ namespace static constexpr std::string_view url = "https://conda.anaconda.org/conda-forge/linux-64/pkg.conda"; REQUIRE_FALSE(PackageInfo::from_url(url).has_value()); } + + SECTION("git+https://github.com/urllib3/urllib3.git@1.19.1#egg=urllib3") + { + static constexpr std::string_view url = "git+https://github.com/urllib3/urllib3.git@1.19.1#egg=urllib3"; + auto pkg = PackageInfo::from_url(url).value(); + + REQUIRE(pkg.name == "urllib3"); + REQUIRE(pkg.package_url == url); + } } TEST_CASE("PackageInfo serialization") diff --git a/micromamba/tests/test-env-lock-pip-git-https.yaml b/micromamba/tests/test-env-lock-pip-git-https.yaml new file mode 100644 index 0000000000..d5ebd474ca --- /dev/null +++ b/micromamba/tests/test-env-lock-pip-git-https.yaml @@ -0,0 +1,581 @@ +# 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 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: 5a6f94f734bb146f7cfd55a6f2f84aef1b4979e8923d088786bf61e643c3a8f6 + osx-arm64: cc42ecf3b897c1ff75a5f7bf9ba59f62052fe72e53d160e951d952463b24a5bb + channels: + - url: conda-forge + used_env_vars: [] + platforms: + - linux-64 + - osx-arm64 + 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: bzip2 + version: 1.0.8 + manager: conda + platform: linux-64 + dependencies: + __glibc: ">=2.17,<3.0.a0" + libgcc-ng: ">=12" + url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + hash: + md5: 62ee74e96c5ebb0af99386de58cf9553 + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + category: main + optional: false + - name: bzip2 + version: 1.0.8 + manager: conda + platform: osx-arm64 + dependencies: + __osx: ">=11.0" + url: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + hash: + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + category: main + optional: false + - name: ca-certificates + version: 2024.12.14 + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + hash: + md5: 720523eb0d6a9b0f6120c16b2aa4e7de + sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd + category: main + optional: false + - name: ca-certificates + version: 2024.12.14 + manager: conda + platform: osx-arm64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + hash: + md5: 7cb381a6783d91902638e4ed1ebd478e + sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 + category: main + optional: false + - name: ld_impl_linux-64 + version: "2.43" + manager: conda + platform: linux-64 + dependencies: + __glibc: ">=2.17,<3.0.a0" + url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + hash: + md5: 048b02e3962f066da18efe3a21b77672 + sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe + category: main + optional: false + - name: libexpat + version: 2.6.4 + manager: conda + platform: linux-64 + dependencies: + __glibc: ">=2.17,<3.0.a0" + libgcc: ">=13" + url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + hash: + md5: db833e03127376d461e1e13e76f09b6c + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + category: main + optional: false + - name: libexpat + version: 2.6.4 + manager: conda + platform: osx-arm64 + dependencies: + __osx: ">=11.0" + url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + hash: + md5: 38d2656dd914feb0cab8c629370768bf + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + 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: osx-arm64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + hash: + md5: 086914b672be056eb70fd4285b6783b6 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + category: main + optional: false + - name: libgcc + version: 14.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-14.2.0-h77fa898_1.conda + hash: + md5: 3cb76c3f10d3bc7f1105b2fc9db984df + sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 + category: main + optional: false + - name: libgcc-ng + version: 14.2.0 + manager: conda + platform: linux-64 + dependencies: + libgcc: 14.2.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + hash: + md5: e39480b9ca41323497b05492a63bc35b + sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 + category: main + optional: false + - name: libgomp + version: 14.2.0 + manager: conda + platform: linux-64 + dependencies: + _libgcc_mutex: "0.1" + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + hash: + md5: cc3573974587f12dda90d96e3e55a702 + sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 + category: main + optional: false + - name: liblzma + version: 5.6.3 + manager: conda + platform: linux-64 + dependencies: + __glibc: ">=2.17,<3.0.a0" + libgcc: ">=13" + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + hash: + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + category: main + optional: false + - name: liblzma + version: 5.6.3 + manager: conda + platform: osx-arm64 + dependencies: + __osx: ">=11.0" + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + hash: + md5: b2553114a7f5e20ccd02378a77d836aa + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + category: main + optional: false + - name: libmpdec + version: 4.0.0 + manager: conda + platform: linux-64 + dependencies: + __glibc: ">=2.17,<3.0.a0" + libgcc-ng: ">=12" + url: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda + hash: + md5: aeb98fdeb2e8f25d43ef71fbacbeec80 + sha256: d02d1d3304ecaf5c728e515eb7416517a0b118200cd5eacbe829c432d1664070 + category: main + optional: false + - name: libmpdec + version: 4.0.0 + manager: conda + platform: osx-arm64 + dependencies: + __osx: ">=11.0" + url: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda + hash: + md5: 7476305c35dd9acef48da8f754eedb40 + sha256: f7917de9117d3a5fe12a39e185c7ce424f8d5010a6f97b4333e8a1dcb2889d16 + category: main + optional: false + - name: libsqlite + version: 3.47.2 + manager: conda + platform: linux-64 + dependencies: + __glibc: ">=2.17,<3.0.a0" + libgcc: ">=13" + libzlib: ">=1.3.1,<2.0a0" + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + hash: + md5: b58da17db24b6e08bcbf8fed2fb8c915 + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + category: main + optional: false + - name: libsqlite + version: 3.47.2 + manager: conda + platform: osx-arm64 + dependencies: + __osx: ">=11.0" + libzlib: ">=1.3.1,<2.0a0" + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + hash: + md5: 122d6f29470f1a991e85608e77e56a8a + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + 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: libzlib + version: 1.3.1 + manager: conda + platform: linux-64 + dependencies: + __glibc: ">=2.17,<3.0.a0" + libgcc: ">=13" + url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + hash: + md5: edb0dca6bc32e4f4789199455a1dbeb8 + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + category: main + optional: false + - name: libzlib + version: 1.3.1 + manager: conda + platform: osx-arm64 + dependencies: + __osx: ">=11.0" + url: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + hash: + md5: 369964e85dc26bfe78f41399b366c435 + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + category: main + optional: false + - name: ncurses + version: "6.5" + manager: conda + platform: linux-64 + dependencies: + __glibc: ">=2.17,<3.0.a0" + libgcc: ">=13" + url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda + hash: + md5: 04b34b9a40cdc48cfdab261ab176ff74 + sha256: 17fe6afd8a00446010220d52256bd222b1e4fcb93bd587e7784b03219f3dc358 + category: main + optional: false + - name: ncurses + version: "6.5" + manager: conda + platform: osx-arm64 + dependencies: + __osx: ">=11.0" + url: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + hash: + md5: f6f7c5b7d0983be186c46c4f6f8f9af8 + sha256: b45c73348ec9841d5c893acc2e97adff24127548fe8c786109d03c41ed564e91 + category: main + optional: false + - name: openssl + version: 3.4.0 + manager: conda + platform: linux-64 + dependencies: + __glibc: ">=2.17,<3.0.a0" + ca-certificates: "" + libgcc: ">=13" + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + hash: + md5: 4ce6875f75469b2757a65e10a5d05e31 + sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f + category: main + optional: false + - name: openssl + version: 3.4.0 + manager: conda + platform: osx-arm64 + dependencies: + __osx: ">=11.0" + ca-certificates: "" + url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + hash: + md5: 22f971393637480bda8c679f374d8861 + sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 + category: main + optional: false + - name: pip + version: 24.3.1 + manager: conda + platform: linux-64 + dependencies: + python: ">=3.13.0a0" + url: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh145f28c_2.conda + hash: + md5: 76601b0ccfe1fe13a21a5f8813cb38de + sha256: 7a300e856215180d292f85d40708164cd19dfcdb521ecacb894daa81f13994d7 + category: main + optional: false + - name: pip + version: 24.3.1 + manager: conda + platform: osx-arm64 + dependencies: + python: ">=3.13.0a0" + url: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh145f28c_2.conda + hash: + md5: 76601b0ccfe1fe13a21a5f8813cb38de + sha256: 7a300e856215180d292f85d40708164cd19dfcdb521ecacb894daa81f13994d7 + category: main + optional: false + - name: python + version: 3.13.1 + manager: conda + platform: linux-64 + dependencies: + __glibc: ">=2.17,<3.0.a0" + bzip2: ">=1.0.8,<2.0a0" + ld_impl_linux-64: ">=2.36.1" + libexpat: ">=2.6.4,<3.0a0" + libffi: ">=3.4,<4.0a0" + libgcc: ">=13" + liblzma: ">=5.6.3,<6.0a0" + libmpdec: ">=4.0.0,<5.0a0" + libsqlite: ">=3.47.2,<4.0a0" + libuuid: ">=2.38.1,<3.0a0" + libzlib: ">=1.3.1,<2.0a0" + ncurses: ">=6.5,<7.0a0" + openssl: ">=3.4.0,<4.0a0" + python_abi: 3.13.* + readline: ">=8.2,<9.0a0" + tk: ">=8.6.13,<8.7.0a0" + tzdata: "" + pip: "" + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.1-ha99a958_105_cp313.conda + hash: + md5: 34945787453ee52a8f8271c1d19af1e8 + sha256: d3eb7d0820cf0189103bba1e60e242ffc15fd2f727640ac3a10394b27adf3cca + category: main + optional: false + - name: python + version: 3.13.1 + manager: conda + platform: osx-arm64 + dependencies: + __osx: ">=11.0" + bzip2: ">=1.0.8,<2.0a0" + libexpat: ">=2.6.4,<3.0a0" + libffi: ">=3.4,<4.0a0" + liblzma: ">=5.6.3,<6.0a0" + libmpdec: ">=4.0.0,<5.0a0" + libsqlite: ">=3.47.2,<4.0a0" + libzlib: ">=1.3.1,<2.0a0" + ncurses: ">=6.5,<7.0a0" + openssl: ">=3.4.0,<4.0a0" + python_abi: 3.13.* + readline: ">=8.2,<9.0a0" + tk: ">=8.6.13,<8.7.0a0" + tzdata: "" + pip: "" + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.1-h4f43103_105_cp313.conda + hash: + md5: 11d916b508764b7d881dd5c75d222d6e + sha256: 7d27cc8ef214abbdf7dd8a5d473e744f4bd9beb7293214a73c58e4895c2830b8 + category: main + optional: false + - name: python_abi + version: "3.13" + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda + hash: + md5: 381bbd2a92c863f640a55b6ff3c35161 + sha256: 438225b241c5f9bddae6f0178a97f5870a89ecf927dfca54753e689907331442 + category: main + optional: false + - name: python_abi + version: "3.13" + manager: conda + platform: osx-arm64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda + hash: + md5: b8e82d0a5c1664638f87f63cc5d241fb + sha256: 4437198eae80310f40b23ae2f8a9e0a7e5c2b9ae411a8621eb03d87273666199 + 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: osx-arm64 + dependencies: + ncurses: ">=6.3,<7.0a0" + url: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + hash: + md5: 8cbb776a2f641b943d413b3e19df71f4 + sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 + category: main + optional: false + - name: tk + version: 8.6.13 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: ">=12" + libzlib: ">=1.2.13,<2.0.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: osx-arm64 + dependencies: + libzlib: ">=1.2.13,<2.0.0a0" + url: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + hash: + md5: b50a57ba89c32b62428b71a875291c9b + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + category: main + optional: false + - name: tzdata + version: 2024b + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + hash: + md5: 8ac3367aafb1cc0a068483c580af8015 + sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf + category: main + optional: false + - name: tzdata + version: 2024b + manager: conda + platform: osx-arm64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + hash: + md5: 8ac3367aafb1cc0a068483c580af8015 + sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf + category: main + optional: false + - name: python-dateutil + version: 2.9.0.post1.dev3+g9eaa5de + manager: pip + platform: linux-64 + dependencies: + six: ">=1.5" + url: git+https://github.com/dateutil/dateutil@9eaa5de584f9f374c6e4943069925cc53522ad61 + hash: + sha256: 9eaa5de584f9f374c6e4943069925cc53522ad61 + category: main + source: + type: url + url: git+https://github.com/dateutil/dateutil@9eaa5de584f9f374c6e4943069925cc53522ad61 + optional: false + - name: python-dateutil + version: 2.9.0.post1.dev3+g9eaa5de + manager: pip + platform: osx-arm64 + dependencies: + six: ">=1.5" + url: git+https://github.com/dateutil/dateutil@9eaa5de584f9f374c6e4943069925cc53522ad61 + hash: + sha256: 9eaa5de584f9f374c6e4943069925cc53522ad61 + category: main + source: + type: url + url: git+https://github.com/dateutil/dateutil@9eaa5de584f9f374c6e4943069925cc53522ad61 + optional: false + - name: six + version: 1.17.0 + manager: pip + platform: linux-64 + dependencies: {} + url: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + hash: + sha256: 4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 + category: main + optional: false + - name: six + version: 1.17.0 + manager: pip + platform: osx-arm64 + dependencies: {} + url: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + hash: + sha256: 4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 + category: main + optional: false diff --git a/micromamba/tests/test_create.py b/micromamba/tests/test_create.py index e560891459..4d505ef4de 100644 --- a/micromamba/tests/test_create.py +++ b/micromamba/tests/test_create.py @@ -27,6 +27,7 @@ lockfile_path: Path = __this_dir__ / "test_env-lock.yaml" pip_lockfile_path: Path = __this_dir__ / "test-env-pip-lock.yaml" +pip_git_https_lockfile_path: Path = __this_dir__ / "test-env-lock-pip-git-https.yaml" def check_create_result(res, root_prefix, target_prefix): @@ -161,6 +162,37 @@ def test_lockfile_with_pip(tmp_home, tmp_root_prefix, tmp_path): ) +@pytest.mark.skipif( + platform.system() not in ["Darwin", "Linux"], + reason="Used lockfile only handles macOS and Linux.", +) +@pytest.mark.parametrize("shared_pkgs_dirs", [True], indirect=True) +def test_pip_git_https_lockfile(tmp_home, tmp_root_prefix, tmp_path): + env_prefix = tmp_path / "myenv" + spec_file = tmp_path / "env-lock.yaml" + + shutil.copyfile(pip_git_https_lockfile_path, spec_file) + + res = helpers.create("-p", env_prefix, "-f", spec_file, "--json") + assert res["success"] + + packages = helpers.umamba_list("-p", env_prefix, "--json") + assert any( + package["name"] == "python-dateutil" + and package["version"] == "2.9.0.post1.dev3+g9eaa5de" + and package["channel"] == "pypi" + and package["base_url"] == "https://pypi.org/" + for package in packages + ) + assert any( + package["name"] == "six" + and package["version"] == "1.17.0" + and package["channel"] == "pypi" + and package["base_url"] == "https://pypi.org/" + for package in packages + ) + + @pytest.mark.parametrize("shared_pkgs_dirs", [True], indirect=True) def test_lockfile_online(tmp_home, tmp_root_prefix, tmp_path): env_prefix = tmp_path / "myenv" From 7b93703eea33189a5d931db660a26ed1638c0333 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Wed, 22 Jan 2025 17:52:07 +0100 Subject: [PATCH 2/3] Rename to test-env-lock.yaml for consistency --- micromamba/tests/{test_env-lock.yaml => test-env-lock.yaml} | 0 micromamba/tests/test_create.py | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) rename micromamba/tests/{test_env-lock.yaml => test-env-lock.yaml} (100%) diff --git a/micromamba/tests/test_env-lock.yaml b/micromamba/tests/test-env-lock.yaml similarity index 100% rename from micromamba/tests/test_env-lock.yaml rename to micromamba/tests/test-env-lock.yaml diff --git a/micromamba/tests/test_create.py b/micromamba/tests/test_create.py index 4d505ef4de..b17b361848 100644 --- a/micromamba/tests/test_create.py +++ b/micromamba/tests/test_create.py @@ -25,7 +25,7 @@ env_file_requires_pip_install_path_with_whitespaces, ] -lockfile_path: Path = __this_dir__ / "test_env-lock.yaml" +lockfile_path: Path = __this_dir__ / "test-env-lock.yaml" pip_lockfile_path: Path = __this_dir__ / "test-env-pip-lock.yaml" pip_git_https_lockfile_path: Path = __this_dir__ / "test-env-lock-pip-git-https.yaml" @@ -197,7 +197,7 @@ def test_pip_git_https_lockfile(tmp_home, tmp_root_prefix, tmp_path): def test_lockfile_online(tmp_home, tmp_root_prefix, tmp_path): env_prefix = tmp_path / "myenv" spec_file = ( - "https://raw.githubusercontent.com/mamba-org/mamba/main/micromamba/tests/test_env-lock.yaml" + "https://raw.githubusercontent.com/mamba-org/mamba/main/micromamba/tests/test-env-lock.yaml" ) res = helpers.create("-p", env_prefix, "-f", spec_file, "--json") From ec8243469540c0f802e3c86d9906c29a10fb68f8 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Thu, 23 Jan 2025 10:12:48 +0100 Subject: [PATCH 3/3] Comment online test temporarily --- micromamba/tests/test_create.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/micromamba/tests/test_create.py b/micromamba/tests/test_create.py index b17b361848..6da8a61917 100644 --- a/micromamba/tests/test_create.py +++ b/micromamba/tests/test_create.py @@ -193,18 +193,19 @@ def test_pip_git_https_lockfile(tmp_home, tmp_root_prefix, tmp_path): ) -@pytest.mark.parametrize("shared_pkgs_dirs", [True], indirect=True) -def test_lockfile_online(tmp_home, tmp_root_prefix, tmp_path): - env_prefix = tmp_path / "myenv" - spec_file = ( - "https://raw.githubusercontent.com/mamba-org/mamba/main/micromamba/tests/test-env-lock.yaml" - ) - - res = helpers.create("-p", env_prefix, "-f", spec_file, "--json") - assert res["success"] - - packages = helpers.umamba_list("-p", env_prefix, "--json") - assert any(package["name"] == "zlib" and package["version"] == "1.2.11" for package in packages) +# TODO Uncomment this after merging https://github.com/mamba-org/mamba/pull/3764 +# @pytest.mark.parametrize("shared_pkgs_dirs", [True], indirect=True) +# def test_lockfile_online(tmp_home, tmp_root_prefix, tmp_path): +# env_prefix = tmp_path / "myenv" +# spec_file = ( +# "https://raw.githubusercontent.com/mamba-org/mamba/main/micromamba/tests/test-env-lock.yaml" +# ) + +# res = helpers.create("-p", env_prefix, "-f", spec_file, "--json") +# assert res["success"] + +# packages = helpers.umamba_list("-p", env_prefix, "--json") +# assert any(package["name"] == "zlib" and package["version"] == "1.2.11" for package in packages) @pytest.mark.parametrize("shared_pkgs_dirs", [True], indirect=True)