def make_df_getter(data_url: str, data_path: str, **kwargs) -> Callable[[Optional[str], bool, bool], pd.DataFrame]:
download_function = make_downloader(data_url, data_path)<EOL>def get_df(url: Optional[str] = None, cache: bool = True, force_download: bool = False) -> pd.DataFrame:<EOL><INDENT>"""<STR_LIT>"""<EOL>if url is None and cache:<EOL><INDENT>url = download_function(force_download=force_download)<EOL><DEDENT>return pd.read_csv(<EOL>url or data_url,<EOL>**kwargs<EOL>)<EOL><DEDENT>return get_df<EOL>
Build a function that handles downloading tabular data and parsing it into a pandas DataFrame.

    :param data_url: The URL of the data
    :param data_path: The path where the data should get stored
    :param kwargs: Any other arguments to pass to :func:`pandas.read_csv`