pip_upgrader/packages_status_detector.py
def _parse_simple_html_package_info(self, package_name, current_version, response):
        """
        :type package_name: str
        :type current_version: version.Version
        :type response: requests.models.Response
        """
        pattern = r'<a.*>.*{name}-([A-z0-9\.-]*)(?:-py|\.tar).*<\/a>'.format(name=re.escape(package_name))
        versions_match = re.findall(pattern, response.content.decode('utf-8'), flags=re.IGNORECASE)

        all_versions = [version.parse(vers) for vers in versions_match]
        filtered_versions = [vers for vers in all_versions if not vers.is_prerelease and not vers.is_postrelease]

        if not filtered_versions:  # pragma: nocover
            return False, 'error while parsing version'

        latest_version = max(filtered_versions)

        # even if user did not choose prerelease, if the package from requirements is pre/post release, use it
        if self._prerelease or current_version.is_postrelease or current_version.is_prerelease:
            prerelease_versions = [vers for vers in all_versions if vers.is_prerelease or vers.is_postrelease]
            if prerelease_versions:
                latest_version = max(prerelease_versions)

        return {
           'name': package_name,
           'current_version': current_version,
           'latest_version': latest_version,
           'upgrade_available': current_version < latest_version,
           'upload_time': '-'
        }, 'success'
def _parse_simple_html_package_info(self, package_name, current_version, response):
        """
        :type package_name: str
        :type current_version: version.Version
        :type response: requests.models.Response
        """
        pattern = r'<a.*>.*{name}-([A-z0-9\.-]*)(?:-py|\.tar).*<\/a>'.format(name=re.escape(package_name))
        versions_match = re.findall(pattern, response.content.decode('utf-8'), flags=re.IGNORECASE)

        all_versions = [version.parse(vers) for vers in versions_match]
        filtered_versions = [vers for vers in all_versions if not vers.is_prerelease and not vers.is_postrelease]

        if not filtered_versions:  # pragma: nocover
            return False, 'error while parsing version'

        latest_version = max(filtered_versions)

        # even if user did not choose prerelease, if the package from requirements is pre/post release, use it
        if self._prerelease or current_version.is_postrelease or current_version.is_prerelease:
            prerelease_versions = [vers for vers in all_versions if vers.is_prerelease or vers.is_postrelease]
            if prerelease_versions:
                latest_version = max(prerelease_versions)

        return {
           'name': package_name,
           'current_version': current_version,
           'latest_version': latest_version,
           'upgrade_available': current_version < latest_version,
           'upload_time': '-'
        }, 'success'
def _parse_simple_html_package_info ( self , package_name , current_version , response ) : pattern = r'<a.*>.*{name}-([A-z0-9\.-]*)(?:-py|\.tar).*<\/a>' . format ( name = re . escape ( package_name ) ) versions_match = re . findall ( pattern , response . content . decode ( 'utf-8' ) , flags = re . IGNORECASE ) all_versions = [ version . parse ( vers ) for vers in versions_match ] filtered_versions = [ vers for vers in all_versions if not vers . is_prerelease and not vers . is_postrelease ] if not filtered_versions : # pragma: nocover return False , 'error while parsing version' latest_version = max ( filtered_versions ) # even if user did not choose prerelease, if the package from requirements is pre/post release, use it if self . _prerelease or current_version . is_postrelease or current_version . is_prerelease : prerelease_versions = [ vers for vers in all_versions if vers . is_prerelease or vers . is_postrelease ] if prerelease_versions : latest_version = max ( prerelease_versions ) return { 'name' : package_name , 'current_version' : current_version , 'latest_version' : latest_version , 'upgrade_available' : current_version < latest_version , 'upload_time' : '-' } , 'success'
:type package_name: str
        :type current_version: version.Version
        :type response: requests.models.Response
: type package_name : str : type current_version : version . Version : type response : requests . models . Response