Commit ac73c538 by Sébastien Eustace

Improve dependency resolution speed

parent 6223d061
......@@ -5,6 +5,7 @@
### Changed
- Improved dependency resolution to avoid unnecessary operations.
- Improved dependency resolution speed.
## [0.6.5] - 2018-03-22
......
......@@ -43,6 +43,7 @@ class DebugResolveCommand(Command):
self.poetry.package,
self.poetry.pool,
Repository(),
Repository(),
self.output
)
......
......@@ -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
......
......@@ -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))
......
from cleo.styles import CleoStyle
from cleo.helpers import ProgressIndicator
from poetry.mixology.contracts import UI as BaseUI
......
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