diff --git a/src/conda_devenv/devenv.py b/src/conda_devenv/devenv.py index 2f6e18d..496ba49 100644 --- a/src/conda_devenv/devenv.py +++ b/src/conda_devenv/devenv.py @@ -348,7 +348,7 @@ def process_constraints_into_dependencies(yaml_dict: YAMLData) -> None: return dependency_names = { - PackageSpecifier.parse(dep).name for dep in yaml_dict["dependencies"] + PackageSpecifier.parse(dep).name for dep in yaml_dict["dependencies"] if isinstance(dep, str) } added_dependencies = [ diff --git a/tests/test_load_yaml_dict.py b/tests/test_load_yaml_dict.py index 044ac32..6bd5f97 100644 --- a/tests/test_load_yaml_dict.py +++ b/tests/test_load_yaml_dict.py @@ -16,6 +16,12 @@ def test_load_yaml_dict(datadir) -> None: assert set(environment["PATH"]) == {"b_path", "a_path"} +def test_load_yaml_dict_with_pip(datadir) -> None: + conda_yaml_dict = load_yaml_dict(datadir / "d.yml") + dependencies = conda_yaml_dict["dependencies"] + assert dependencies == ['a_dependency', {'pip': ['d_dependency']}] + + def test_load_yaml_dict_with_wrong_definition_at_environment_key(datadir) -> None: filename = datadir / "a_wrong_definition_at_environment.yml" with pytest.raises(ValueError) as e: @@ -250,6 +256,24 @@ def test_constraints_respected(self) -> None: "attrs >=20", ] + def test_constraints_respected_with_pip(self) -> None: + """ + Constraints are declared as dependency if they are explicitly declared. + """ + data = { + "dependencies": ["attrs >19", "boltons", "pytest>=6", {"pip": ["lupa >= 1.14"]}], + "constraints": ["pytest >7", "attrs >=20", "requests <2"], + } + process_constraints_into_dependencies(data) + assert data["dependencies"] == [ + "attrs >19", + "boltons", + "pytest>=6", + {'pip': ['lupa >= 1.14']}, + "pytest >7", + "attrs >=20", + ] + def test_integration(self, tmp_path: Path) -> None: utils_fn = tmp_path / "common-utils.devenv.yml" utils_fn.write_text( diff --git a/tests/test_load_yaml_dict/d.yml b/tests/test_load_yaml_dict/d.yml new file mode 100644 index 0000000..ae614f9 --- /dev/null +++ b/tests/test_load_yaml_dict/d.yml @@ -0,0 +1,8 @@ +name: d +dependencies: + - a_dependency + - pip: + - d_dependency +environment: + PATH: + - a_path diff --git a/tests/test_locking.py b/tests/test_locking.py index f83255f..6f6f02a 100644 --- a/tests/test_locking.py +++ b/tests/test_locking.py @@ -32,6 +32,8 @@ def test_create_and_update_lock_files( - pytest - wincom # [win] - shmem # [unix] + - pip: + - lupa """ ) ) diff --git a/tests/test_locking/expected.linux-64.lock_environment.yml b/tests/test_locking/expected.linux-64.lock_environment.yml index dc2c9b2..fbaf9d4 100644 --- a/tests/test_locking/expected.linux-64.lock_environment.yml +++ b/tests/test_locking/expected.linux-64.lock_environment.yml @@ -6,6 +6,8 @@ dependencies: - flock - pytest - shmem +- pip: + - lupa environment: {} name: foo-py310 platforms: diff --git a/tests/test_locking/expected.win-64.lock_environment.yml b/tests/test_locking/expected.win-64.lock_environment.yml index ad90bf4..ee247ad 100644 --- a/tests/test_locking/expected.win-64.lock_environment.yml +++ b/tests/test_locking/expected.win-64.lock_environment.yml @@ -6,6 +6,8 @@ dependencies: - pytest - pywin32 - wincom +- pip: + - lupa environment: {} name: foo-py310 platforms: