Exemplo n.º 1
0
    def search_for(self, dependency: Dependency) -> list[DependencyPackage]:
        """
        Search for the specifications that match the given dependency.

        The specifications in the returned list will be considered in reverse
        order, so the latest version ought to be last.
        """
        if dependency.is_root:
            return PackageCollection(dependency, [self._package])

        if dependency.is_direct_origin():
            packages = [self.search_for_direct_origin_dependency(dependency)]

        else:
            packages = self._pool.find_packages(dependency)

            packages.sort(
                key=lambda p: (
                    not p.is_prerelease() and not dependency.
                    allows_prereleases(),
                    p.version,
                ),
                reverse=True,
            )

        if not packages:
            packages = self.search_for_installed_packages(dependency)

        return PackageCollection(dependency, packages)
Exemplo n.º 2
0
 def _compatible_dependency(self, other: Dependency) -> bool:
     return (
         self.dependency.is_root
         or other.is_root
         or other.is_same_package_as(self.dependency)
         or (
             # we do this here to indicate direct origin dependencies are
             # compatible with NVR dependencies
             self.dependency.complete_name == other.complete_name
             and self.dependency.is_direct_origin() != other.is_direct_origin()
         )
     )