'Return an iterable of triples (pkg_resources_version_key,
link, python_version) that can be extracted from the given
link.
Meant to be overridden by subclasses, not called by clients.'

def _link_package_versions(self, link, search_name):

    platform = get_platform()
    version = None
    if link.egg_fragment:
        egg_info = link.egg_fragment
    else:
        (egg_info, ext) = link.splitext()
        if (not ext):
            if (link not in self.logged_links):
                logger.debug(('Skipping    link    %s;    not    a    file' % link))
                self.logged_links.add(link)
            return []
        if egg_info.endswith('.tar'):
            egg_info = egg_info[:(-4)]
            ext = ('.tar' + ext)
        if (ext not in self._known_extensions()):
            if (link not in self.logged_links):
                logger.debug(('Skipping    link    %s;    unknown    archive    format:    %s' % (link, ext)))
                self.logged_links.add(link)
            return []
        if (('macosx10' in link.path) and (ext == '.zip')):
            if (link not in self.logged_links):
                logger.debug(('Skipping    link    %s;    macosx10    one' % link))
                self.logged_links.add(link)
            return []
        if (ext == wheel_ext):
            try:
                wheel = Wheel(link.filename)
            except InvalidWheelFilename:
                logger.debug(('Skipping    %s    because    the    wheel    filename    is    invalid' % link))
                return []
            if (wheel.name.lower() != search_name.lower()):
                logger.debug(('Skipping    link    %s;    wrong    project    name    (not    %s)' % (link, search_name)))
                return []
            if (not wheel.supported()):
                logger.debug(('Skipping    %s    because    it    is    not    compatible    with    this    Python' % link))
                return []
            comes_from = getattr(link, 'comes_from', None)
            if (((not platform.startswith('win')) and (not platform.startswith('macosx'))) and (comes_from is not None) and urlparse.urlparse(comes_from.url).netloc.endswith('pypi.python.org')):
                if (not wheel.supported(tags=supported_tags_noarch)):
                    logger.debug(('Skipping    %s    because    it    is    a    pypi-hosted    binary    Wheel    on    an    unsupported    platform' % link))
                    return []
            version = wheel.version
    if (not version):
        version = self._egg_info_matches(egg_info, search_name, link)
    if (version is None):
        logger.debug(('Skipping    link    %s;    wrong    project    name    (not    %s)' % (link, search_name)))
        return []
    if ((link.internal is not None) and (not link.internal) and (not (normalize_name(search_name).lower() in self.allow_external)) and (not self.allow_all_external)):
        logger.debug(('Skipping    %s    because    it    is    externally    hosted.' % link))
        self.need_warn_external = True
        return []
    if ((link.verifiable is not None) and (not link.verifiable) and (not (normalize_name(search_name).lower() in self.allow_unverified))):
        logger.debug(('Skipping    %s    because    it    is    an    insecure    and    unverifiable    file.' % link))
        self.need_warn_unverified = True
        return []
    match = self._py_version_re.search(version)
    if match:
        version = version[:match.start()]
        py_version = match.group(1)
        if (py_version != sys.version[:3]):
            logger.debug(('Skipping    %s    because    Python    version    is    incorrect' % link))
            return []
    logger.debug(('Found    link    %s,    version:    %s' % (link, version)))
    return [(pkg_resources.parse_version(version), link, version)]
