From e2b15983872123cdd190a54093dd5b8e9bd920d8 Mon Sep 17 00:00:00 2001 From: Marc Garcia Date: Wed, 15 Jan 2020 17:13:40 +0000 Subject: [PATCH] Moving download_wheels.py script from pandas --- Makefile | 2 +- scripts/download_wheels.py | 47 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100755 scripts/download_wheels.py diff --git a/Makefile b/Makefile index 0d79fa0..acd7cc7 100644 --- a/Makefile +++ b/Makefile @@ -153,7 +153,7 @@ wheels: download-wheels: - cd pandas && python scripts/download_wheels.py $(PANDAS_VERSION) + ./scripts/download_wheels.py $(PANDAS_VERSION) # TODO: Fetch from https://www.lfd.uci.edu/~gohlke/pythonlibs/ diff --git a/scripts/download_wheels.py b/scripts/download_wheels.py new file mode 100755 index 0000000..3d36eed --- /dev/null +++ b/scripts/download_wheels.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +"""Fetch wheels from wheels.scipy.org for a pandas version.""" +import argparse +import pathlib +import sys +import urllib.parse +import urllib.request + +from lxml import html + + +def parse_args(args=None): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("version", type=str, help="Pandas version (0.23.0)") + return parser.parse_args(args) + + +def fetch(version): + base = "http://wheels.scipy.org" + tree = html.parse(base) + root = tree.getroot() + + dest = pathlib.Path("dist") + dest.mkdir(exist_ok=True) + + files = [ + x + for x in root.xpath("//a/text()") + if x.startswith(f"pandas-{version}") and not dest.joinpath(x).exists() + ] + + N = len(files) + + for i, filename in enumerate(files, 1): + out = str(dest.joinpath(filename)) + link = urllib.request.urljoin(base, filename) + urllib.request.urlretrieve(link, out) + print(f"Downloaded {link} to {out} [{i}/{N}]") + + +def main(args=None): + args = parse_args(args) + fetch(args.version) + + +if __name__ == "__main__": + sys.exit(main())