summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Ipsum <richard.ipsum@codethink.co.uk>2014-12-04 20:07:16 +0000
committerRichard Ipsum <richard.ipsum@codethink.co.uk>2014-12-04 20:07:16 +0000
commitafaef757218ddf68f6753585181043657daa9607 (patch)
treec9042440096c6bd5106277cf71113c1a2a6e9a00
parente69115ff3bf050dccb442e395022ff1494ba4e22 (diff)
downloadimport-afaef757218ddf68f6753585181043657daa9607.tar.gz
Add name_or_closest
-rw-r--r--exts/importer_pip_common.py30
1 files changed, 28 insertions, 2 deletions
diff --git a/exts/importer_pip_common.py b/exts/importer_pip_common.py
index af19bda..ac003b5 100644
--- a/exts/importer_pip_common.py
+++ b/exts/importer_pip_common.py
@@ -31,14 +31,40 @@ def specs_satisfied(version, specs):
return all([get_op_func(op)(version, sv) for (op, sv) in specs])
-def find_releases(client, package_name):
+def name_or_closest(client, package_name):
'''Obtain a list of releases for a given package,
packages on pypi are case insensitive, so we need this hack
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)
+ # TODO: update above comment
+
+ results = client.package_releases(package_name)
+
+ if len(results) > 0:
+ logging.debug('Found package %s' % package_name)
+ return package_name
+
+ 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 results[0]['name']
+
+def find_releases(client, package_name):
+
+ logging.debug('Finding releases for %s' % package_name)
results = client.package_releases(package_name)
if len(results) > 0: