def download()

in geneve/utils/resource.py [0:0]


def download(uri, destdir, *, basedir=None, cachedir=None, cachefile=None, validate=None):
    uri_parts = urlparse(str(uri))
    if uri_parts.scheme.startswith("http"):
        if cachedir and cachefile:
            local_file = cachedir / cachefile
        else:
            local_file = Path(cachedir or destdir) / Path(uri_parts.path).name
        if local_file.exists() and validate and not validate(local_file):
            local_file.unlink()
        if not local_file.exists():
            local_file.parent.mkdir(parents=True, exist_ok=True, mode=0o700)
            with open(local_file, "wb") as f:
                import requests

                f.write(requests.get(uri).content)
    elif uri_parts.scheme == "file":
        local_file = Path(basedir or ".") / (uri_parts.netloc + uri_parts.path)
    elif uri_parts.scheme == "":
        local_file = Path(basedir or ".") / uri_parts.path
    else:
        raise ValueError(f"uri scheme not supported: {uri_parts.scheme}")
    return local_file