Example #1
0
def main(package_name=''):
    try:
        package_data = get_package_data(package_name)
    except ValueError as e:
        error_text = colored('No such package "%s"' % package_name, 'red')
        print(error_text)
        return

    releases = package_data['releases']
    show_package_info(package_data)
    most_popular_count = 0
    most_popular_release = None
    most_recent_release = None
    most_recent_date = EPOCH_BEGIN

    try:
        versions = sorted(releases.keys(), reverse=True, key=parse_version)
    except ValueError as e:
        logger.debug('Trying to sort versions as strings')
        splitter = functools.partial(versions_split, type_applyer=str)
        versions = sorted(releases.keys(), reverse=True, key=splitter)

    for release_num, release_data in releases.items():
        downloads_count = get_max_downloads_for_release(release_data)
        if downloads_count > most_popular_count:
            most_popular_count = downloads_count
            most_popular_release = release_num

        upload_date = get_latest_time_for_release(release_data)
        if upload_date > most_recent_date:
            most_recent_date = upload_date
            most_recent_release = release_num

    for version in versions:
        if version == most_popular_release == most_recent_release:
            text = colored('(%s) Most popular and recent. Use it' % version,
                           'green')
            print(text)
        elif version == most_popular_release:
            text = colored(
                '(%s) Most popular. %s downloads' %
                (version, most_popular_count), 'yellow')
            print(text)
        elif version == most_recent_release:
            text = colored(
                '(%s) Most recent. %s release date' %
                (version, most_recent_date.strftime(DATE_FORMAT)), 'blue')
            print(text)
        else:
            text = '(%s)' % version
            print(text)
Example #2
0
def versions_split(version_str, type_applyer=int):
    dots_count = version_str.count('.')
    if dots_count == 0:
        major, minor, patch = version_str, 0, 0
    elif dots_count == 1:
        major, minor = version_str.split('.')
        patch = 0
    elif dots_count == 2:
        major, minor, patch = version_str.split('.')
    else:
        logger.debug('Incorrect version "%s". Move to bottom when sorting' % version_str)
        major, minor, patch = 0, 0, 0

    return map(type_applyer, (major, minor, patch))
Example #3
0
def versions_split(version_str, type_applyer=int):
    dots_count = version_str.count('.')
    if dots_count == 0:
        major, minor, patch = version_str, 0, 0
    elif dots_count == 1:
        major, minor = version_str.split('.')
        patch = 0
    elif dots_count == 2:
        major, minor, patch = version_str.split('.')
    else:
        logger.debug('Incorrect version "%s". Move to bottom when sorting' %
                     version_str)
        major, minor, patch = 0, 0, 0

    return map(type_applyer, (major, minor, patch))
Example #4
0
def main(package_name=''):
    try:
        package_data = get_package_data(package_name)
    except ValueError as e:
        error_text = colored('No such package "%s"' % package_name, 'red')
        print(error_text)
        return

    releases = package_data['releases']
    show_package_info(package_data)
    most_popular_count = 0
    most_popular_release = None
    most_recent_release = None
    most_recent_date = EPOCH_BEGIN

    try:
        versions = sorted(releases.keys(), reverse=True, key=parse_version)
    except ValueError as e:
        logger.debug('Trying to sort versions as strings')
        splitter = functools.partial(versions_split, type_applyer=str)
        versions = sorted(releases.keys(), reverse=True, key=splitter)

    for release_num, release_data in releases.items():
        downloads_count = get_max_downloads_for_release(release_data)
        if downloads_count > most_popular_count:
            most_popular_count = downloads_count
            most_popular_release = release_num

        upload_date = get_latest_time_for_release(release_data)
        if upload_date > most_recent_date:
            most_recent_date = upload_date
            most_recent_release = release_num

    for version in versions:
        if version == most_popular_release == most_recent_release:
            text = colored('(%s) Most popular and recent. Use it' % version, 'green')
            print(text)
        elif version == most_popular_release:
            text = colored('(%s) Most popular. %s downloads' % (version, most_popular_count), 'yellow')
            print(text)
        elif version == most_recent_release:
            text = colored('(%s) Most recent. %s release date' % (version, most_recent_date.strftime(DATE_FORMAT)), 'blue')
            print(text)
        else:
            text = '(%s)' % version
            print(text)