Skip to content

Commit

Permalink
Set dependency.version for VCS, etc dependencies
Browse files Browse the repository at this point in the history
This synchronizes code with master, and also adds more typings.
  • Loading branch information
maksbotan committed Aug 7, 2022
1 parent f58970c commit e430f73
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 13 deletions.
38 changes: 29 additions & 9 deletions poetry/puzzle/provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,15 +151,32 @@ def search_for(self, dependency): # type: (Dependency) -> List[DependencyPackag

return PackageCollection(dependency, packages)

def _get_from_deferred_cache(self, dependency): # type (Dependency) -> Optional[Package]
if dependency not in self._deferred_cache:
return None

package = self._deferred_cache[dependency]
dependency._constraint = package.version
dependency._pretty_constraint = package.version.text

if not dependency._source_reference:
dependency._source_reference = package.source_reference
if not dependency._source_resolved_reference:
dependency._source_resolved_reference = package.source_resolved_reference

return package

def search_for_vcs(self, dependency): # type: (VCSDependency) -> List[Package]
"""
Search for the specifications that match the given VCS dependency.
Basically, we clone the repository in a temporary directory
and get the information we need by checking out the specified reference.
"""
if dependency in self._deferred_cache:
return [self._deferred_cache[dependency]]
cached = self._get_from_deferred_cache(dependency)
if cached is not None:
print("!!!! get from deferred_cache", dependency, "::", self._deferred_cache[dependency])
return [cached]

package = self.get_package_from_vcs(
dependency.vcs,
Expand All @@ -181,7 +198,7 @@ def search_for_vcs(self, dependency): # type: (VCSDependency) -> List[Package]
@classmethod
def get_package_from_vcs(
cls, vcs, url, branch=None, tag=None, rev=None, name=None
): # type: (str, str, Optional[str], Optional[str]) -> Package
): # type: (str, str, Optional[str], Optional[str], Optional[str], Optional[str]) -> Package
if vcs != "git":
raise ValueError("Unsupported VCS dependency {}".format(vcs))

Expand Down Expand Up @@ -213,8 +230,9 @@ def get_package_from_vcs(
return package

def search_for_file(self, dependency): # type: (FileDependency) -> List[Package]
if dependency in self._deferred_cache:
dependency, _package = self._deferred_cache[dependency]
cached = self._get_from_deferred_cache(dependency)
if cached is not None:
dependency, _package = cached

package = _package.clone()
else:
Expand Down Expand Up @@ -258,8 +276,9 @@ def get_package_from_file(cls, file_path): # type: (Path) -> Package
def search_for_directory(
self, dependency
): # type: (DirectoryDependency) -> List[Package]
if dependency in self._deferred_cache:
dependency, _package = self._deferred_cache[dependency]
cached = self._get_from_deferred_cache(dependency)
if cached is not None:
dependency, _package = cached

package = _package.clone()
else:
Expand Down Expand Up @@ -298,8 +317,9 @@ def get_package_from_directory(
return package

def search_for_url(self, dependency): # type: (URLDependency) -> List[Package]
if dependency in self._deferred_cache:
return [self._deferred_cache[dependency]]
cached = self._get_from_deferred_cache(dependency)
if cached is not None:
return [cached]

package = self.get_package_from_url(dependency.url)

Expand Down
11 changes: 8 additions & 3 deletions poetry/repositories/base_repository.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
from typing import List
from typing import Optional

from poetry.core.packages.package import Package

class BaseRepository(object):
def __init__(self):
self._packages = []
self._packages = [] # type: List[Package]

@property
def packages(self):
def packages(self): # type: () -> List[Package]
return self._packages

def has_package(self, package):
raise NotImplementedError()

def package(self, name, version, extras=None):
def package(self, name, version, extras=None): # type: (str, str, Optional[List[str]]) -> Package
raise NotImplementedError()

def find_packages(self, dependency):
Expand Down
6 changes: 5 additions & 1 deletion poetry/repositories/repository.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
from typing import List
from typing import Optional

from poetry.core.semver import VersionConstraint
from poetry.core.semver import VersionRange
from poetry.core.semver import parse_constraint
from poetry.core.packages.package import Package

from .base_repository import BaseRepository

Expand All @@ -21,7 +25,7 @@ def __init__(self, packages=None, name=None):
def name(self):
return self._name

def package(self, name, version, extras=None):
def package(self, name, version, extras=None): # type: (str, str, Optional[List[str]]) -> Package
name = name.lower()

for package in self.packages:
Expand Down

0 comments on commit e430f73

Please sign in to comment.