summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Ipsum <richard.ipsum@codethink.co.uk>2014-12-04 20:08:53 +0000
committerRichard Ipsum <richard.ipsum@codethink.co.uk>2014-12-04 20:08:53 +0000
commit740f2699730c5f76af9200be703686681946418f (patch)
treeac33a50bd739635c5b142fb942f23554294fca97
parentafaef757218ddf68f6753585181043657daa9607 (diff)
downloadimport-740f2699730c5f76af9200be703686681946418f.tar.gz
Add hack to pip.to_lorry
-rwxr-xr-xexts/pip.to_lorry23
1 files changed, 16 insertions, 7 deletions
diff --git a/exts/pip.to_lorry b/exts/pip.to_lorry
index b3a89ac..a92c66b 100755
--- a/exts/pip.to_lorry
+++ b/exts/pip.to_lorry
@@ -131,14 +131,14 @@ def filter_urls(urls):
def get_releases(client, requirement):
try:
- releases = find_releases(client, requirement.project_name)
+ #releases = find_releases(client, requirement.project_name)
+ releases = client.package_releases(requirement.project_name)
except Exception as e:
error("Couldn't fetch release data:", e)
return releases
-def generate_tarball_lorry(requirement):
- client = xmlrpclib.ServerProxy(PYPI_URL)
+def generate_tarball_lorry(client, requirement):
releases = get_releases(client, requirement)
if len(releases) == 0:
@@ -148,8 +148,9 @@ def generate_tarball_lorry(requirement):
releases = [v for v in releases if specs_satisfied(v, requirement.specs)]
if len(releases) == 0:
- error("Couldn't find any releases that satisfy version constraints: %s"
- % requirement.specs)
+ error("Couldn't find any releases of %s"
+ " that satisfy version constraints: %s"
+ % (requirement.project_name, requirement.specs))
release_version = releases[0]
@@ -172,7 +173,8 @@ def generate_tarball_lorry(requirement):
warn("\t%s" % url['url'])
error("Cannot proceed")
else:
- error("Couldn't find any download urls for package")
+ error("Couldn't find any download urls for package %s"
+ % requirement.project_name)
url = urls[0]['url']
@@ -193,9 +195,16 @@ def main():
print('usage: %s requirement' % sys.argv[0], file=sys.stderr)
sys.exit(1)
+ client = xmlrpclib.ServerProxy(PYPI_URL)
+
# TODO: We could take multiple reqs easily enough
req = pkg_resources.parse_requirements(sys.argv[1]).next()
+ # This is a bit of a hack to handle pypi package's case insensitivity
+ # TODO: do not overwrite the original name, create a new attribute
+ # hurray for this dynamic language! >.>
+ req.project_name = name_or_closest(client, req.project_name)
+
metadata = fetch_package_metadata(req.project_name)
info = metadata['info']
@@ -203,7 +212,7 @@ def main():
if 'home_page' in info else None)
print(str_repo_lorry(req.project_name, repo_type, info['home_page'])
- if repo_type else generate_tarball_lorry(req))
+ if repo_type else generate_tarball_lorry(client, req))
if __name__ == '__main__':
PythonExtension().run()