Commit cf213245 by Randy Döring Committed by Bjorn Neergaard

refactor(solver/provider): move progress() from Provider to Solver

parent 90c34887
...@@ -134,7 +134,6 @@ class Provider: ...@@ -134,7 +134,6 @@ class Provider:
self._env: Env | None = None self._env: Env | None = None
self._python_constraint = package.python_constraint self._python_constraint = package.python_constraint
self._is_debugging: bool = self._io.is_debug() or self._io.is_very_verbose() self._is_debugging: bool = self._io.is_debug() or self._io.is_very_verbose()
self._in_progress = False
self._overrides: dict[DependencyPackage, dict[str, Dependency]] = {} self._overrides: dict[DependencyPackage, dict[str, Dependency]] = {}
self._deferred_cache: dict[Dependency, Package] = {} self._deferred_cache: dict[Dependency, Package] = {}
self._load_deferred = True self._load_deferred = True
...@@ -888,24 +887,6 @@ class Provider: ...@@ -888,24 +887,6 @@ class Provider:
self._io.write(debug_info) self._io.write(debug_info)
@contextmanager
def progress(self) -> Iterator[None]:
if not self._io.output.is_decorated() or self.is_debugging():
self._io.write_line("Resolving dependencies...")
yield
else:
indicator = Indicator(
self._io, "{message}{context}<debug>({elapsed:2s})</debug>"
)
with indicator.auto(
"<info>Resolving dependencies...</info>",
"<info>Resolving dependencies...</info>",
):
yield
self._in_progress = False
def _merge_dependencies_by_constraint( def _merge_dependencies_by_constraint(
self, dependencies: Iterable[Dependency] self, dependencies: Iterable[Dependency]
) -> list[Dependency]: ) -> list[Dependency]:
......
...@@ -16,6 +16,7 @@ from poetry.mixology.failure import SolveFailure ...@@ -16,6 +16,7 @@ from poetry.mixology.failure import SolveFailure
from poetry.packages import DependencyPackage from poetry.packages import DependencyPackage
from poetry.puzzle.exceptions import OverrideNeeded from poetry.puzzle.exceptions import OverrideNeeded
from poetry.puzzle.exceptions import SolverProblemError from poetry.puzzle.exceptions import SolverProblemError
from poetry.puzzle.provider import Indicator
from poetry.puzzle.provider import Provider from poetry.puzzle.provider import Provider
...@@ -64,7 +65,7 @@ class Solver: ...@@ -64,7 +65,7 @@ class Solver:
def solve(self, use_latest: list[str] | None = None) -> Transaction: def solve(self, use_latest: list[str] | None = None) -> Transaction:
from poetry.puzzle.transaction import Transaction from poetry.puzzle.transaction import Transaction
with self._provider.progress(): with self._progress():
start = time.time() start = time.time()
packages, depths = self._solve(use_latest=use_latest) packages, depths = self._solve(use_latest=use_latest)
end = time.time() end = time.time()
...@@ -96,7 +97,23 @@ class Solver: ...@@ -96,7 +97,23 @@ class Solver:
root_package=self._package, root_package=self._package,
) )
def solve_in_compatibility_mode( @contextmanager
def _progress(self) -> Iterator[None]:
if not self._io.output.is_decorated() or self._provider.is_debugging():
self._io.write_line("Resolving dependencies...")
yield
else:
indicator = Indicator(
self._io, "{message}{context}<debug>({elapsed:2s})</debug>"
)
with indicator.auto(
"<info>Resolving dependencies...</info>",
"<info>Resolving dependencies...</info>",
):
yield
def _solve_in_compatibility_mode(
self, self,
overrides: tuple[dict[DependencyPackage, dict[str, Dependency]], ...], overrides: tuple[dict[DependencyPackage, dict[str, Dependency]], ...],
use_latest: list[str] | None = None, use_latest: list[str] | None = None,
...@@ -150,7 +167,7 @@ class Solver: ...@@ -150,7 +167,7 @@ class Solver:
packages = result.packages packages = result.packages
except OverrideNeeded as e: except OverrideNeeded as e:
return self.solve_in_compatibility_mode(e.overrides, use_latest=use_latest) return self._solve_in_compatibility_mode(e.overrides, use_latest=use_latest)
except SolveFailure as e: except SolveFailure as e:
raise SolverProblemError(e) raise SolverProblemError(e)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment