Unverified Commit ac73c538 authored by Sébastien Eustace's avatar Sébastien Eustace
Browse files

Improve dependency resolution speed

parent 6223d061
Loading
Loading
Loading
Loading
+1 −0
Changes for CHANGELOG.md: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@
### Changed

- Improved dependency resolution to avoid unnecessary operations.
- Improved dependency resolution speed.


## [0.6.5] - 2018-03-22
+1 −0
Changes for poetry/console/commands/debug/resolve.py: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ class DebugResolveCommand(Command):
            self.poetry.package,
            self.poetry.pool,
            Repository(),
            Repository(),
            self.output
        )

+0 −1
Changes for poetry/mixology/resolution.py: 0 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@ from .dependency_graph import DependencyGraph
from .helpers import flat_map
from .possibility_set import PossibilitySet
from .state import DependencyState
from .state import ResolutionState
from .unwind_details import UnwindDetails
from .utils import unique

+9 −1
Changes for poetry/puzzle/provider.py: 9 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ class Provider(SpecificationProvider):
        self._package = package
        self._pool = pool
        self._python_constraint = package.python_constraint
        self._base_dg = DependencyGraph()
        self._search_for = {}

    @property
    def pool(self) -> Pool:
@@ -59,6 +61,9 @@ class Provider(SpecificationProvider):
        The specifications in the returned list will be considered in reverse
        order, so the latest version ought to be last.
        """
        if dependency in self._search_for:
            return self._search_for[dependency]

        if dependency.is_vcs():
            return self.search_for_vcs(dependency)

@@ -76,7 +81,9 @@ class Provider(SpecificationProvider):
            )
        )

        return packages
        self._search_for[dependency] = packages

        return self._search_for[dependency]

    def search_for_vcs(self, dependency: VCSDependency) -> List[Package]:
        """
@@ -190,6 +197,7 @@ class Provider(SpecificationProvider):
                          conflicts: Dict[str, List[Conflict]]):
        return sorted(dependencies, key=lambda d: [
            0 if activated.vertex_named(d.name).payload else 1,
            0 if activated.vertex_named(d.name).root else 1,
            0 if d.allows_prereleases() else 1,
            0 if d.name in conflicts else 1,
            0 if activated.vertex_named(d.name).payload else len(self.search_for(d))
+0 −1
Changes for poetry/puzzle/ui.py: 0 added lines, 1 removed line.
Original line number Diff line number Diff line
from cleo.styles import CleoStyle
from cleo.helpers import ProgressIndicator
from poetry.mixology.contracts import UI as BaseUI