diff options
author | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2014-12-04 20:07:16 +0000 |
---|---|---|
committer | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2014-12-04 20:07:16 +0000 |
commit | afaef757218ddf68f6753585181043657daa9607 (patch) | |
tree | c9042440096c6bd5106277cf71113c1a2a6e9a00 | |
parent | e69115ff3bf050dccb442e395022ff1494ba4e22 (diff) | |
download | import-afaef757218ddf68f6753585181043657daa9607.tar.gz |
Add name_or_closest
-rw-r--r-- | exts/importer_pip_common.py | 30 |
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: |