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)
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))
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)