diff --git a/pytools/__init__.py b/pytools/__init__.py index 5752e53f72465a1206408f3dc2e048e756969d71..87e7c1cda0dbc3ca6096d2196d8b3619ac583972 100644 --- a/pytools/__init__.py +++ b/pytools/__init__.py @@ -124,6 +124,11 @@ Name generation .. autofunction:: generate_unique_names .. autofunction:: generate_numbered_unique_names .. autofunction:: UniqueNameGenerator + +Auxiliary files +--------------- + +.. autofunction:: download_from_web_if_not_present """ @@ -1940,6 +1945,28 @@ class MinRecursionLimit(object): # }}} +# {{{ download from web if not present + +def download_from_web_if_not_present(url, local_name=None): + """ + .. versionadded:: 2017.5 + """ + + from os.path import basename, exists + if local_name is None: + local_name = basename(url) + + if not exists(local_name): + from six.moves.urllib.request import urlopen + with urlopen(url) as inf: + contents = inf.read() + + with open(local_name, "wb") as outf: + outf.write(contents) + +# }}} + + def _test(): import doctest doctest.testmod()