diff options
author | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2014-12-03 16:16:39 +0000 |
---|---|---|
committer | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2014-12-03 16:16:39 +0000 |
commit | d411d2bd2a4c9fe5251d60ee10b865b958b30864 (patch) | |
tree | a38b19d295fe19df77445acd0c97593178189f41 | |
parent | 21f1418692a69b747c83b209ea98c8b85aa721d8 (diff) | |
download | import-d411d2bd2a4c9fe5251d60ee10b865b958b30864.tar.gz |
Fix case-sensitivity issue
packages on pypi are case insensitive but the xml rpc calls aren't
-rw-r--r-- | exts/importer_pip_common.py | 12 | ||||
-rwxr-xr-x | exts/pip.find_deps | 2 | ||||
-rwxr-xr-x | exts/pip.to_lorry | 2 |
3 files changed, 13 insertions, 3 deletions
diff --git a/exts/importer_pip_common.py b/exts/importer_pip_common.py index 1f342a1..6bb7181 100644 --- a/exts/importer_pip_common.py +++ b/exts/importer_pip_common.py @@ -30,6 +30,16 @@ def specs_satisfied(version, specs): return all([get_op_func(op)(version, sv) for (op, sv) in specs]) +def find_releases(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''' + + results = client.search({'name': package_name}) + return (client.package_releases(results[0]['name']) + if len(results) > 0 else []) + # We subclass the ImportExtension to setup the logger, # so that we can send logs to the import tool's log (morph's log in fact) class PythonExtension(ImportExtension): @@ -38,4 +48,4 @@ class PythonExtension(ImportExtension): def process_args(self, _): import __main__ - __main__.main()
\ No newline at end of file + __main__.main() diff --git a/exts/pip.find_deps b/exts/pip.find_deps index 918cf7f..0a2f24d 100755 --- a/exts/pip.find_deps +++ b/exts/pip.find_deps @@ -179,7 +179,7 @@ def resolve_versions(specsets): for (proj_name, specset) in specsets.iteritems(): client = xmlrpclib.ServerProxy(PYPI_URL) - releases = client.package_releases(proj_name) + releases = find_releases(client, proj_name) logging.debug('Found %d releases of %s: %s' % (len(releases), proj_name, releases)) diff --git a/exts/pip.to_lorry b/exts/pip.to_lorry index da7df9b..205d4e3 100755 --- a/exts/pip.to_lorry +++ b/exts/pip.to_lorry @@ -115,7 +115,7 @@ def filter_urls(urls): def get_releases(client, requirement): try: - releases = client.package_releases(requirement.project_name) + releases = find_releases(requirement.project_name) except Exception as e: error("Couldn't fetch release data:", e) |