Fix listing dependencies pulled with `pip` (#3963)

This commit is contained in:
Hind-M 2025-06-03 10:18:15 +02:00 committed by GitHub
parent 6e4be2889c
commit 835cbe8fcc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 7 deletions

View File

@ -303,9 +303,8 @@ namespace mamba
{ {
for (const auto& package : j["installed"]) for (const auto& package : j["installed"])
{ {
// Get the package metadata, if requested and installed with `pip` // Get the package metadata, if installed with `pip`
if (package.contains("requested") && package.contains("installer") if (package.contains("installer") && package["installer"] == "pip")
&& package["requested"] == true && package["installer"] == "pip")
{ {
if (package.contains("metadata")) if (package.contains("metadata"))
{ {

View File

@ -520,4 +520,8 @@ def test_env_export_with_pip(tmp_path, json_flag):
pip_section = next( pip_section = next(
dep for dep in ret["dependencies"] if isinstance(dep, dict) and ["pip"] == [*dep] dep for dep in ret["dependencies"] if isinstance(dep, dict) and ["pip"] == [*dep]
) )
assert pip_section["pip"] == ["requests==2.32.3"] pip_section_vals = pip_section["pip"]
# Check that `requests` and `urllib3` (pulled dependency) are exported
assert "requests==2.32.3" in pip_section_vals
assert any(pkg.startswith("urllib3==") for pkg in pip_section_vals)

View File

@ -160,7 +160,7 @@ channels:
dependencies: dependencies:
- pip - pip
- pip: - pip:
- numpy==1.26.4 - pandas==2.2.3
""" """
@ -178,9 +178,18 @@ def test_list_with_pip(tmp_home, tmp_root_prefix, tmp_path, no_pip_flag):
res = helpers.umamba_list("-n", env_name, "--json", no_pip_flag) res = helpers.umamba_list("-n", env_name, "--json", no_pip_flag)
if no_pip_flag == "": if no_pip_flag == "":
assert any(
package["name"] == "pandas"
and package["version"] == "2.2.3"
and package["base_url"] == "https://pypi.org/"
and package["build_string"] == "pypi_0"
and package["channel"] == "pypi"
and package["platform"] == sys.platform + "-" + platform.machine()
for package in res
)
# Check that dependencies are listed
assert any( assert any(
package["name"] == "numpy" package["name"] == "numpy"
and package["version"] == "1.26.4"
and package["base_url"] == "https://pypi.org/" and package["base_url"] == "https://pypi.org/"
and package["build_string"] == "pypi_0" and package["build_string"] == "pypi_0"
and package["channel"] == "pypi" and package["channel"] == "pypi"
@ -188,7 +197,9 @@ def test_list_with_pip(tmp_home, tmp_root_prefix, tmp_path, no_pip_flag):
for package in res for package in res
) )
else: # --no-pip else: # --no-pip
# Check that numpy installed with pip is not listed # Check that pandas installed with pip is not listed
assert all(package["name"] != "pandas" for package in res)
# Check that dependencies are not there either
assert all(package["name"] != "numpy" for package in res) assert all(package["name"] != "numpy" for package in res)