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