pip_upgrader/packages_status_detector.py
def _parse_pypi_json_package_info(self, package_name, current_version, response):
        """
        :type package_name: str
        :type current_version: version.Version
        :type response: requests.models.Response
        """

        data = response.json()
        all_versions = [version.parse(vers) for vers in data['releases'].keys()]
        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)
        try:
            try:
                latest_version_info = data['releases'][str(latest_version)][0]
            except KeyError:  # pragma: nocover
                # non-RFC versions, get the latest from pypi response
                latest_version = version.parse(data['info']['version'])
                latest_version_info = data['releases'][str(latest_version)][0]
        except Exception:  # pragma: nocover
            return False, 'error while parsing version'

        upload_time = latest_version_info['upload_time'].replace('T', ' ')

        return {
            'name': package_name,
            'current_version': current_version,
            'latest_version': latest_version,
            'upgrade_available': current_version < latest_version,
            'upload_time': upload_time
        }, 'success'
def _parse_pypi_json_package_info(self, package_name, current_version, response):
        """
        :type package_name: str
        :type current_version: version.Version
        :type response: requests.models.Response
        """

        data = response.json()
        all_versions = [version.parse(vers) for vers in data['releases'].keys()]
        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)
        try:
            try:
                latest_version_info = data['releases'][str(latest_version)][0]
            except KeyError:  # pragma: nocover
                # non-RFC versions, get the latest from pypi response
                latest_version = version.parse(data['info']['version'])
                latest_version_info = data['releases'][str(latest_version)][0]
        except Exception:  # pragma: nocover
            return False, 'error while parsing version'

        upload_time = latest_version_info['upload_time'].replace('T', ' ')

        return {
            'name': package_name,
            'current_version': current_version,
            'latest_version': latest_version,
            'upgrade_available': current_version < latest_version,
            'upload_time': upload_time
        }, 'success'
def _parse_pypi_json_package_info ( self , package_name , current_version , response ) : data = response . json ( ) all_versions = [ version . parse ( vers ) for vers in data [ 'releases' ] . keys ( ) ] 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 ) try : try : latest_version_info = data [ 'releases' ] [ str ( latest_version ) ] [ 0 ] except KeyError : # pragma: nocover # non-RFC versions, get the latest from pypi response latest_version = version . parse ( data [ 'info' ] [ 'version' ] ) latest_version_info = data [ 'releases' ] [ str ( latest_version ) ] [ 0 ] except Exception : # pragma: nocover return False , 'error while parsing version' upload_time = latest_version_info [ 'upload_time' ] . replace ( 'T' , ' ' ) return { 'name' : package_name , 'current_version' : current_version , 'latest_version' : latest_version , 'upgrade_available' : current_version < latest_version , 'upload_time' : 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