def _get_min(dependency: Dependency) -> tuple[bool, int]: if dependency.name in self._use_latest: # If we're forced to use the latest version of a package, it effectively # only has one version to choose from. return not dependency.marker.is_any(), 1 locked = self._get_locked(dependency) if locked: return not dependency.marker.is_any(), 1 # VCS, URL, File or Directory dependencies # represent a single version if ( dependency.is_vcs() or dependency.is_url() or dependency.is_file() or dependency.is_directory() ): return not dependency.marker.is_any(), 1 try: return ( not dependency.marker.is_any(), len(self._dependency_cache.search_for(dependency)), ) except ValueError: return not dependency.marker.is_any(), 0
def _get_min(dependency: Dependency) -> Tuple[bool, int]: if dependency.name in self._use_latest: # If we're forced to use the latest version of a package, it effectively # only has one version to choose from. return not dependency.marker.is_any(), 1 locked = self._get_locked(dependency) if locked and (dependency.constraint.allows(locked.version) or locked.is_prerelease() and dependency.constraint.allows( locked.version.next_patch())): return not dependency.marker.is_any(), 1 # VCS, URL, File or Directory dependencies # represent a single version if (dependency.is_vcs() or dependency.is_url() or dependency.is_file() or dependency.is_directory()): return not dependency.marker.is_any(), 1 try: return ( not dependency.marker.is_any(), len(self._provider.search_for(dependency)), ) except ValueError: return not dependency.marker.is_any(), 0
def dependency_to_specification(dependency: Dependency, specification: BaseSpec) -> BaseSpec: if dependency.is_vcs(): dependency = cast("VCSDependency", dependency) assert dependency.source_url is not None specification[dependency.vcs] = dependency.source_url if dependency.reference: specification["rev"] = dependency.reference elif dependency.is_file() or dependency.is_directory(): assert dependency.source_url is not None specification["path"] = dependency.source_url elif dependency.is_url(): assert dependency.source_url is not None specification["url"] = dependency.source_url elif dependency.pretty_constraint != "*" and not dependency.constraint.is_empty( ): specification["version"] = dependency.pretty_constraint if not dependency.marker.is_any(): specification["markers"] = str(dependency.marker) if dependency.extras: specification["extras"] = sorted(dependency.extras) return specification
def search_for_direct_origin_dependency(self, dependency: Dependency) -> Package: package = self._deferred_cache.get(dependency) if package is not None: pass elif dependency.is_vcs(): dependency = cast("VCSDependency", dependency) package = self._search_for_vcs(dependency) elif dependency.is_file(): dependency = cast("FileDependency", dependency) package = self._search_for_file(dependency) elif dependency.is_directory(): dependency = cast("DirectoryDependency", dependency) package = self._search_for_directory(dependency) elif dependency.is_url(): dependency = cast("URLDependency", dependency) package = self._search_for_url(dependency) else: raise RuntimeError( f"Unknown direct dependency type {dependency.source_type}") if dependency.is_vcs(): dependency._source_reference = package.source_reference dependency._source_resolved_reference = package.source_resolved_reference dependency._source_subdirectory = package.source_subdirectory dependency._constraint = package.version dependency._pretty_constraint = package.version.text self._deferred_cache[dependency] = package return package