'Ensure that if a link can be found for this, that it is found.
Note that self.link may still be None - if Upgrade is False and the
requirement is already installed.
If require_hashes is True, don\'t use the wheel cache, because cached
wheels, always built locally, have different hashes than the files
downloaded from the index server and thus throw false hash mismatches.
Furthermore, cached wheels at present have undeterministic contents due
to file modification times.'

def populate_link(self, finder, upgrade, require_hashes):

    if (self.link is None):
        self.link = finder.find_requirement(self, upgrade)
    if ((self._wheel_cache is not None) and (not require_hashes)):
        old_link = self.link
        self.link = self._wheel_cache.cached_wheel(self.link, self.name)
        if (old_link != self.link):
            logger.debug('Using    cached    wheel    link:    %s', self.link)
