(self, req, upgrade)
return best_candidate.link
Try to find a Link matching req

        Expects req, an InstallRequirement and upgrade, a boolean
        Returns a Link if found,
        Raises DistributionNotFound or BestVersionAlreadyInstalled otherwise
Try to find a Link matching req
Try to find a Link matching req
def find_requirement(self, req, upgrade):
        # type: (InstallRequirement, bool) -> Optional[Link]
        """Try to find a Link matching req

        Expects req, an InstallRequirement and upgrade, a boolean
        Returns a Link if found,
        Raises DistributionNotFound or BestVersionAlreadyInstalled otherwise
        """
        hashes = req.hashes(trust_internet=False)
        candidates = self.find_candidates(
            req.name, specifier=req.specifier, hashes=hashes,
        )
        best_candidate = candidates.get_best()

        installed_version = None    # type: Optional[_BaseVersion]
        if req.satisfied_by is not None:
            installed_version = parse_version(req.satisfied_by.version)

        def _format_versions(cand_iter):
            # This repeated parse_version and str() conversion is needed to
            # handle different vendoring sources from pip and pkg_resources.
            # If we stop using the pkg_resources provided specifier and start
            # using our own, we can drop the cast to str().
            return ", ".join(sorted(
                {str(c.version) for c in cand_iter},
                key=parse_version,
            )) or "none"

        if installed_version is None and best_candidate is None:
            logger.critical(
                'Could not find a version that satisfies the requirement %s '
                '(from versions: %s)',
                req,
                _format_versions(candidates.iter_all()),
            )

            raise DistributionNotFound(
                'No matching distribution found for %s' % req
            )

        best_installed = False
        if installed_version and (
                best_candidate is None or
                best_candidate.version <= installed_version):
            best_installed = True

        if not upgrade and installed_version is not None:
            if best_installed:
                logger.debug(
                    'Existing installed version (%s) is most up-to-date and '
                    'satisfies requirement',
                    installed_version,
                )
            else:
                logger.debug(
                    'Existing installed version (%s) satisfies requirement '
                    '(most up-to-date version is %s)',
                    installed_version,
                    best_candidate.version,
                )
            return None

        if best_installed:
            # We have an existing version, and its the best version
            logger.debug(
                'Installed version (%s) is most up-to-date (past versions: '
                '%s)',
                installed_version,
                _format_versions(candidates.iter_applicable()),
            )
            raise BestVersionAlreadyInstalled

        logger.debug(
            'Using version %s (newest of versions: %s)',
            best_candidate.version,
            _format_versions(candidates.iter_applicable()),
        )
        return best_candidate.link
def find_requirement ( self , req , upgrade ) : # type: (InstallRequirement, bool) -> Optional[Link] hashes = req . hashes ( trust_internet = False ) candidates = self . find_candidates ( req . name , specifier = req . specifier , hashes = hashes , ) best_candidate = candidates . get_best ( ) installed_version = None # type: Optional[_BaseVersion] if req . satisfied_by is not None : installed_version = parse_version ( req . satisfied_by . version ) def _format_versions ( cand_iter ) : # This repeated parse_version and str() conversion is needed to # handle different vendoring sources from pip and pkg_resources. # If we stop using the pkg_resources provided specifier and start # using our own, we can drop the cast to str(). return ", " . join ( sorted ( { str ( c . version ) for c in cand_iter } , key = parse_version , ) ) or "none" if installed_version is None and best_candidate is None : logger . critical ( 'Could not find a version that satisfies the requirement %s ' '(from versions: %s)' , req , _format_versions ( candidates . iter_all ( ) ) , ) raise DistributionNotFound ( 'No matching distribution found for %s' % req ) best_installed = False if installed_version and ( best_candidate is None or best_candidate . version <= installed_version ) : best_installed = True if not upgrade and installed_version is not None : if best_installed : logger . debug ( 'Existing installed version (%s) is most up-to-date and ' 'satisfies requirement' , installed_version , ) else : logger . debug ( 'Existing installed version (%s) satisfies requirement ' '(most up-to-date version is %s)' , installed_version , best_candidate . version , ) return None if best_installed : # We have an existing version, and its the best version logger . debug ( 'Installed version (%s) is most up-to-date (past versions: ' '%s)' , installed_version , _format_versions ( candidates . iter_applicable ( ) ) , ) raise BestVersionAlreadyInstalled logger . debug ( 'Using version %s (newest of versions: %s)' , best_candidate . version , _format_versions ( candidates . iter_applicable ( ) ) , ) return best_candidate . link