summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Ipsum <richard.ipsum@codethink.co.uk>2014-12-04 10:41:05 +0000
committerRichard Ipsum <richard.ipsum@codethink.co.uk>2014-12-04 10:41:05 +0000
commit6eef03292acebbc8e818535deea2d4c365fd2fab (patch)
tree9451220267f10945afca9972d5f3375c53510a15
parent01bbadaaff2a7d10db3a72fbd382279a57cf3825 (diff)
downloadimport-6eef03292acebbc8e818535deea2d4c365fd2fab.tar.gz
Fix find_releases
-rw-r--r--exts/importer_pip_common.py23
-rwxr-xr-xexts/pip.to_lorry2
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)