hdx.utilities.retriever
module hdx.utilities.retriever
Classes
-
Retrieve — Retrieve class which takes in a Download object and can either download, download and save or use previously downloaded and saved data. It also allows the use of a static fallback when downloading fails.
class Retrieve(downloader: Download, fallback_dir: Path | str, saved_dir: Path | str, temp_dir: Path | str, save: bool = False, use_saved: bool = False, prefix: str = '', delete: bool = True, log_level: int = logging.INFO)
Bases : BaseDownload
Retrieve class which takes in a Download object and can either download, download and save or use previously downloaded and saved data. It also allows the use of a static fallback when downloading fails.
Parameters
-
downloader : Download — Download object
-
fallback_dir : Path | str — Directory containing static fallback data
-
saved_dir : Path | str — Directory to save or load downloaded data
-
temp_dir : Path | str — Temporary directory for when data is not needed after downloading
-
save : bool — Whether to save downloaded data. Defaults to False.
-
use_saved : bool — Whether to use saved data. Defaults to False.
-
prefix : str — Prefix to add to filenames. Defaults to "".
-
delete : bool — Whether to delete saved_dir if save is True. Defaults to True.
-
log_level : int — Level at which to log messages. Defaults to logging.INFO.
Methods
-
check_flags — Check flags. Also delete saved_dir if save and delete are True.
-
get_url_logstr — Url string that will be logged. It is limited to 100 characters if necessary.
-
clone — Clone a given retriever but use the given downloader.
-
get_filename — Get filename from url and given parameters.
-
set_bearer_token — Set bearer token in downloader
-
download_file — Retrieve file.
-
download_text — Download text.
-
download_yaml — Retrieve YAML.
-
download_json — Retrieve JSON.
-
get_tabular_rows — Returns header of tabular file(s) pointed to by url and an iterator where each row is returned as a list or dictionary depending on the dict_rows argument.
-
generate_retrievers — Generate retrievers. Retrievers are generated from downloaders so Download.generate_downloaders() needs to have been called first. Each retriever can either download, download and save or use previously downloaded and saved data. It also allows the use of a static fallback when downloading fails.
-
get_retriever — Get a generated retriever given a name. If name is not supplied, the default one will be returned.
staticmethod Retrieve.check_flags(saved_dir: Path | str, save: bool, use_saved: bool, delete: bool) → None
Check flags. Also delete saved_dir if save and delete are True.
Parameters
-
saved_dir : Path | str — Directory to save or load downloaded data
-
save : bool — Whether to save downloaded data
-
use_saved : bool — Whether to use saved data
-
delete : bool — Whether to delete saved_dir if save is True
Returns
-
None — None
Raises
-
ValueError
staticmethod Retrieve.get_url_logstr(url: Path | str) → str
Url string that will be logged. It is limited to 100 characters if necessary.
Parameters
-
url : Path | str — URL to download
Returns
-
str — Url string to use in logs
method Retrieve.clone(downloader: Download) → Retrieve
Clone a given retriever but use the given downloader.
Parameters
-
downloader : Download — Downloader to use
Returns
-
Retrieve — Cloned retriever
method Retrieve.get_filename(url: Path | str, filename: str | None = None, possible_extensions: tuple[str, ...] = tuple(), **kwargs: Any) → tuple[str, Any]
Get filename from url and given parameters.
Parameters
-
url : Path | str — Url from which to get filename
-
filename : str | None — Filename to use. Defaults to None (infer from url).
-
possible_extensions : tuple[str, ...] — Possible extensions to look for in url
-
**kwargs : Any — See below
-
format : str — Given extension to look for in url
-
file_type : str — Given extension to look for in url
Returns
-
tuple[str, Any] — Tuple of (filename, kwargs)
method Retrieve.set_bearer_token(bearer_token: str) → None
Set bearer token in downloader
Parameters
-
bearer_token : str — Bearer token
Returns
-
None — None
method Retrieve.download_file(url: Path | str, filename: str | None = None, logstr: str | None = None, fallback: bool = False, resume: bool = False, retries: int = 0, log_level: int = None, **kwargs: Any) → Path
Retrieve file.
Parameters
-
url : Path | str — URL to download
-
filename : str | None — Filename of saved file. Defaults to getting from url.
-
logstr : str | None — Text to use in log string to describe download. Defaults to filename.
-
fallback : bool — Whether to use static fallback if download fails. Defaults to False.
-
resume : bool — Whether to resume a partial download using Range requests where the server supports it. Defaults to False.
-
retries : int — Number of times to retry a mid-stream failure. Only effective when resume=True. Defaults to 0.
-
log_level : int — Level at which to log messages. Overrides level from constructor.
-
**kwargs : Any — Parameters to pass to download_file call
Returns
-
Path — Path to downloaded file
method Retrieve.download_text(url: Path | str, filename: str | None = None, logstr: str | None = None, fallback: bool = False, log_level: int = None, **kwargs: Any) → str
Download text.
Parameters
-
url : Path | str — URL to download
-
filename : str | None — Filename of saved file. Defaults to getting from url.
-
logstr : str | None — Text to use in log string to describe download. Defaults to filename.
-
fallback : bool — Whether to use static fallback if download fails. Defaults to False.
-
log_level : int — Level at which to log messages. Overrides level from constructor.
-
**kwargs : Any — Parameters to pass to download_text call
Returns
-
str — The text from the file
method Retrieve.download_yaml(url: Path | str, filename: str | None = None, logstr: str | None = None, fallback: bool = False, log_level: int = None, **kwargs: Any) → Any
Retrieve YAML.
Parameters
-
url : Path | str — URL to download
-
filename : str | None — Filename of saved file. Defaults to getting from url.
-
logstr : str | None — Text to use in log string to describe download. Defaults to filename.
-
fallback : bool — Whether to use static fallback if download fails. Defaults to False.
-
log_level : int — Level at which to log messages. Overrides level from constructor.
-
**kwargs : Any — Parameters to pass to download_yaml call
Returns
-
Any — The data from the YAML file
method Retrieve.download_json(url: Path | str, filename: str | None = None, logstr: str | None = None, fallback: bool = False, log_level: int = None, **kwargs: Any) → Any
Retrieve JSON.
Parameters
-
url : Path | str — URL to download
-
filename : str | None — Filename of saved file. Defaults to getting from url.
-
logstr : str | None — Text to use in log string to describe download. Defaults to filename.
-
fallback : bool — Whether to use static fallback if download fails. Defaults to False.
-
log_level : int — Level at which to log messages. Overrides level from constructor.
-
**kwargs : Any — Parameters to pass to download_json call
Returns
-
Any — The data from the JSON file
method Retrieve.get_tabular_rows(url: Path | str | Sequence[str], headers: int | Sequence[int] | Sequence[str] = 1, dict_form: bool = False, filename: str | None = None, logstr: str | None = None, fallback: bool = False, **kwargs: Any) → tuple[list[str], Iterator[list | dict]]
Returns header of tabular file(s) pointed to by url and an iterator where each row is returned as a list or dictionary depending on the dict_rows argument.
The headers argument is either a row number or list of row numbers (in case of multi-line headers) to be considered as headers (rows start counting at 1), or the actual headers defined as a list of strings. It defaults to 1. The dict_form arguments specifies if each row should be returned as a dictionary or a list, defaulting to a list.
Parameters
-
url : Path | str | Sequence[str] — A single or list of URLs or paths to read from
-
headers : int | Sequence[int] | Sequence[str] — Number of row(s) containing headers or list of headers. Defaults to 1.
-
dict_form : bool — Return dict or list for each row. Defaults to False (list)
-
filename : str | None — Filename of saved file. Defaults to getting from url.
-
logstr : str | None — Text to use in log string to describe download. Defaults to filename.
-
fallback : bool — Whether to use static fallback if download fails. Defaults to False.
-
**kwargs : Any — Parameters to pass to download_file and get_tabular_rows calls
Returns
-
tuple[list[str], Iterator[list | dict]] — Tuple (headers, iterator where each row is a list or dictionary)
classmethod Retrieve.generate_retrievers(fallback_dir: Path | str, saved_dir: Path | str, temp_dir: Path | str, save: bool = False, use_saved: bool = False, ignore: Sequence[str] = tuple(), delete: bool = True, **kwargs: Any) → None
Generate retrievers. Retrievers are generated from downloaders so Download.generate_downloaders() needs to have been called first. Each retriever can either download, download and save or use previously downloaded and saved data. It also allows the use of a static fallback when downloading fails.
Parameters
-
fallback_dir : Path | str — Directory containing static fallback data
-
saved_dir : Path | str — Directory to save or load downloaded data
-
temp_dir : Path | str — Temporary directory for when data is not needed after downloading
-
save : bool — Whether to save downloaded data. Defaults to False.
-
use_saved : bool — Whether to use saved data. Defaults to False.
-
ignore : Sequence[str] — Don't generate retrievers for these downloaders
-
delete : bool — Whether to delete saved_dir if save is True. Defaults to True.
-
**kwargs : Any — Any other arguments to pass.
Returns
-
None — None
classmethod Retrieve.get_retriever(name: str | None = None) → Retrieve
Get a generated retriever given a name. If name is not supplied, the default one will be returned.
Parameters
-
name : str | None — Name of retriever. Defaults to None (get default).
Returns
-
Retrieve — Retriever object