diff options
author | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2014-12-04 20:08:53 +0000 |
---|---|---|
committer | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2014-12-04 20:08:53 +0000 |
commit | 740f2699730c5f76af9200be703686681946418f (patch) | |
tree | ac33a50bd739635c5b142fb942f23554294fca97 | |
parent | afaef757218ddf68f6753585181043657daa9607 (diff) | |
download | import-740f2699730c5f76af9200be703686681946418f.tar.gz |
Add hack to pip.to_lorry
-rwxr-xr-x | exts/pip.to_lorry | 23 |
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() |