diff options
author | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2014-12-04 10:41:05 +0000 |
---|---|---|
committer | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2014-12-04 10:41:05 +0000 |
commit | 6eef03292acebbc8e818535deea2d4c365fd2fab (patch) | |
tree | 9451220267f10945afca9972d5f3375c53510a15 | |
parent | 01bbadaaff2a7d10db3a72fbd382279a57cf3825 (diff) | |
download | import-6eef03292acebbc8e818535deea2d4c365fd2fab.tar.gz |
Fix find_releases
-rw-r--r-- | exts/importer_pip_common.py | 23 | ||||
-rwxr-xr-x | exts/pip.to_lorry | 2 |
2 files changed, 24 insertions, 1 deletions
diff --git a/exts/importer_pip_common.py b/exts/importer_pip_common.py index 6bb7181..af19bda 100644 --- a/exts/importer_pip_common.py +++ b/exts/importer_pip_common.py @@ -1,6 +1,7 @@ from __future__ import print_function import sys +import logging from importer_base import ImportExtension @@ -36,7 +37,29 @@ def find_releases(client, package_name): to obtain a release when our input package name doesn't case-sensitively match the package name used on pypi''' + logging.debug('Finding releases for %s' % package_name) + + results = client.package_releases(package_name) + + if len(results) > 0: + logging.debug('Found package %s' % package_name) + return results + + logging.debug("Couldn't find exact match for %s," + "searching for a similar match" % package_name) results = client.search({'name': package_name}) + + logging.debug("Got the following similarly named packages '%s': %s" + % (package_name, str([(result['name'], result['version']) + for result in results]))) + + logging.debug('Filtering for exact case-insensitive matches') + + results = [result for result in results + if result['name'].lower() == package_name.lower()] + + logging.debug('Filtered results: %s' % results) + return (client.package_releases(results[0]['name']) if len(results) > 0 else []) diff --git a/exts/pip.to_lorry b/exts/pip.to_lorry index de03271..335d40a 100755 --- a/exts/pip.to_lorry +++ b/exts/pip.to_lorry @@ -120,7 +120,7 @@ def filter_urls(urls): def get_releases(client, requirement): try: - releases = find_releases(requirement.project_name) + releases = find_releases(client, requirement.project_name) except Exception as e: error("Couldn't fetch release data:", e) |