summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Ipsum <richard.ipsum@codethink.co.uk>2014-12-03 16:16:39 +0000
committerRichard Ipsum <richard.ipsum@codethink.co.uk>2014-12-03 16:16:39 +0000
commitd411d2bd2a4c9fe5251d60ee10b865b958b30864 (patch)
treea38b19d295fe19df77445acd0c97593178189f41
parent21f1418692a69b747c83b209ea98c8b85aa721d8 (diff)
downloadimport-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.py12
-rwxr-xr-xexts/pip.find_deps2
-rwxr-xr-xexts/pip.to_lorry2
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)