def accepts(self, package: Package) -> bool: """ Determines if the given package matches this dependency. """ return (self._name == package.name and self._constraint.allows(package.version) and (not package.is_prerelease() or self.allows_prereleases()))
def find_packages(self, dependency: Dependency) -> list[Package]: """ Find packages on the remote server. """ constraint, allow_prereleases = self._get_constraints_from_dependency( dependency ) try: info = self.get_package_info(dependency.name) except PackageNotFound: self._log( f"No packages found for {dependency.name} {constraint!s}", level="debug", ) return [] packages = [] ignored_pre_release_packages = [] for version, release in info["releases"].items(): if not release: # Bad release self._log( f"No release information found for {dependency.name}-{version}," " skipping", level="debug", ) continue try: package = Package(info["info"]["name"], version) except InvalidVersion: self._log( f'Unable to parse version "{version}" for the' f" {dependency.name} package, skipping", level="debug", ) continue if package.is_prerelease() and not allow_prereleases: if constraint.is_any(): # we need this when all versions of the package are pre-releases ignored_pre_release_packages.append(package) continue if constraint.allows(package.version): packages.append(package) self._log( f"{len(packages)} packages found for {dependency.name} {constraint!s}", level="debug", ) return packages or ignored_pre_release_packages
def find_packages(self, dependency: Dependency) -> List[Package]: """ Find packages on the remote server. """ constraint = dependency.constraint if constraint is None: constraint = "*" if not isinstance(constraint, VersionConstraint): constraint = parse_constraint(constraint) allow_prereleases = dependency.allows_prereleases() if isinstance(constraint, VersionRange) and ( constraint.max is not None and constraint.max.is_unstable() or constraint.min is not None and constraint.min.is_unstable()): allow_prereleases = True try: info = self.get_package_info(dependency.name) except PackageNotFound: self._log( f"No packages found for {dependency.name} {constraint!s}", level="debug", ) return [] packages = [] ignored_pre_release_packages = [] for version, release in info["releases"].items(): if not release: # Bad release self._log( f"No release information found for {dependency.name}-{version}, skipping", level="debug", ) continue try: package = Package(info["info"]["name"], version) except InvalidVersion: self._log( f'Unable to parse version "{version}" for the {dependency.name} package, skipping', level="debug", ) continue if package.is_prerelease() and not allow_prereleases: if constraint.is_any(): # we need this when all versions of the package are pre-releases ignored_pre_release_packages.append(package) continue if not constraint or (constraint and constraint.allows(package.version)): packages.append(package) self._log( f"{len(packages)} packages found for {dependency.name} {constraint!s}", level="debug", ) return packages or ignored_pre_release_packages