Skip to content

Commit

Permalink
run ruff formatter
Browse files Browse the repository at this point in the history
  • Loading branch information
reesehyde committed Jul 15, 2024
1 parent de6e032 commit ec5592f
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 23 deletions.
41 changes: 28 additions & 13 deletions src/poetry/puzzle/provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@

from collections import defaultdict
from contextlib import contextmanager
from typing import TYPE_CHECKING, Any
from typing import TYPE_CHECKING
from typing import Any
from typing import ClassVar
from typing import cast

Expand Down Expand Up @@ -134,7 +135,9 @@ def __init__(
self._direct_origin_packages: dict[str, Package] = {}
self._locked: dict[NormalizedName, list[DependencyPackage]] = defaultdict(list)
self._use_latest: Collection[NormalizedName] = []
self._active_root_extras = frozenset(active_root_extras) if active_root_extras is not None else None
self._active_root_extras = (
frozenset(active_root_extras) if active_root_extras is not None else None
)

self._explicit_sources: dict[str, str] = {}
for package in locked or []:
Expand Down Expand Up @@ -459,10 +462,14 @@ def incompatibilities_for(
for dep in dependencies
if dep.name not in self.UNSAFE_PACKAGES
and self._python_constraint.allows_any(dep.python_constraint)
and (not self._env or dep.marker.validate(
self._marker_values(
self._active_root_extras if dependency_package.package.is_root()
else dependency_package.dependency.extras)
and (
not self._env
or dep.marker.validate(
self._marker_values(
self._active_root_extras
if dependency_package.package.is_root()
else dependency_package.dependency.extras
)
)
)
]
Expand Down Expand Up @@ -548,8 +555,12 @@ def complete_package(
if dep.name in self.UNSAFE_PACKAGES:
continue

active_extras = self._active_root_extras if package.is_root() else dependency.extras
if self._env and not dep.marker.validate(self._marker_values(active_extras)):
active_extras = (
self._active_root_extras if package.is_root() else dependency.extras
)
if self._env and not dep.marker.validate(
self._marker_values(active_extras)
):
continue

if not package.is_root() and (
Expand Down Expand Up @@ -609,7 +620,9 @@ def complete_package(

# For dependency resolution, markers of duplicate dependencies must be
# mutually exclusive.
active_extras = self._active_root_extras if package.is_root() else dependency.extras
active_extras = (
self._active_root_extras if package.is_root() else dependency.extras
)
deps = self._resolve_overlapping_markers(package, deps, active_extras)

if len(deps) == 1:
Expand Down Expand Up @@ -962,16 +975,18 @@ def _resolve_overlapping_markers(
# resolved, there might be new dependencies with the same constraint.
return self._merge_dependencies_by_constraint(new_dependencies)

def _marker_values(self, extras: Collection[NormalizedName] | None = None) -> dict[str, Any]:
def _marker_values(
self, extras: Collection[NormalizedName] | None = None
) -> dict[str, Any]:
"""
Marker values, per:
1. marker_env of `self._env`
2. 'extras' will be added to the 'extra' marker if not already present
"""
result = self._env.marker_env.copy() if self._env is not None else {}
if extras is not None:
if 'extra' not in result.keys():
result['extra'] = set(extras)
if "extra" not in result.keys():
result["extra"] = set(extras)
else:
result['extra'] = set(result['extra']).union(extras)
result["extra"] = set(result["extra"]).union(extras)
return result
2 changes: 1 addition & 1 deletion src/poetry/puzzle/solver.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def __init__(
installed: list[Package],
locked: list[Package],
io: IO,
active_root_extras: Collection[NormalizedName] | None = None
active_root_extras: Collection[NormalizedName] | None = None,
) -> None:
self._package = package
self._pool = pool
Expand Down
25 changes: 16 additions & 9 deletions tests/installation/test_installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import shutil

from pathlib import Path
from typing import TYPE_CHECKING, IO
from typing import TYPE_CHECKING
from typing import Any

import pytest
Expand Down Expand Up @@ -1049,7 +1049,7 @@ def test_run_with_exclusive_extras_different_sources(
pool = RepositoryPool()
pool.add_repository(cpu_repo)
pool.add_repository(cuda_repo)
config.config['repositories'] = {
config.config["repositories"] = {
"pytorch-cpu": {"url": "https://download.pytorch.org/whl/cpu"},
"pytorch-cuda": {"url": "https://download.pytorch.org/whl/cuda"},
}
Expand All @@ -1073,14 +1073,16 @@ def test_run_with_exclusive_extras_different_sources(
"version": "1.11.0+cpu",
"markers": "extra == 'cpu' and extra != 'cuda'",
"source": "pytorch-cpu",
})
},
)
torch_cuda_dep = Factory.create_dependency(
"torch",
{
"version": "1.11.0+cuda",
"markers": "extra != 'cpu' and extra == 'cuda'",
"source": "pytorch-cuda",
})
},
)
package.add_dependency(torch_cpu_dep)
package.add_dependency(torch_cuda_dep)
# We don't want to cheat by only including the correct dependency in the 'extra' mapping
Expand Down Expand Up @@ -1147,7 +1149,7 @@ def test_run_with_different_dependency_extras(
config: Config,
package: ProjectPackage,
extra: str | None,
locked: bool
locked: bool,
) -> None:
"""https://github.com/python-poetry/poetry/issues/834"""
# Demo package with two optional transitive dependencies, one for each extra
Expand All @@ -1159,10 +1161,14 @@ def test_run_with_different_dependency_extras(
canonicalize_name("demo-extra-two"): [get_dependency("transitive-dep-two")],
}
demo_pkg.add_dependency(
Factory.create_dependency("transitive-dep-one", {"version": "1.1.0", "optional": True})
Factory.create_dependency(
"transitive-dep-one", {"version": "1.1.0", "optional": True}
)
)
demo_pkg.add_dependency(
Factory.create_dependency("transitive-dep-two", {"version": "1.2.0", "optional": True})
Factory.create_dependency(
"transitive-dep-two", {"version": "1.2.0", "optional": True}
)
)
repo.add_package(demo_pkg)
repo.add_package(transitive_dep_one)
Expand All @@ -1174,15 +1180,15 @@ def test_run_with_different_dependency_extras(
{
"version": "1.0.0",
"markers": "extra == 'extra-one' and extra != 'extra-two'",
"extras": ["demo-extra-one"]
"extras": ["demo-extra-one"],
},
)
extra_two_dep = Factory.create_dependency(
"demo",
{
"version": "1.0.0",
"markers": "extra != 'extra-one' and extra == 'extra-two'",
"extras": ["demo-extra-two"]
"extras": ["demo-extra-two"],
},
)
package.add_dependency(extra_one_dep)
Expand Down Expand Up @@ -1228,6 +1234,7 @@ def test_run_with_different_dependency_extras(
else:
assert len(installer.executor.installations) == 2


@pytest.mark.parametrize("is_locked", [False, True])
@pytest.mark.parametrize("is_installed", [False, True])
@pytest.mark.parametrize("with_extras", [False, True])
Expand Down

0 comments on commit ec5592f

Please sign in to comment.