63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
"""Download loader from Llama Hub.
|
|
|
|
NOTE: using `download_loader` is now deprecated.
|
|
Please do `pip install llama-hub` instead.
|
|
|
|
"""
|
|
|
|
from typing import Optional, Type
|
|
|
|
from llama_index.download.module import (
|
|
LLAMA_HUB_URL,
|
|
MODULE_TYPE,
|
|
download_llama_module,
|
|
track_download,
|
|
)
|
|
from llama_index.readers.base import BaseReader
|
|
|
|
|
|
def download_loader(
|
|
loader_class: str,
|
|
loader_hub_url: str = LLAMA_HUB_URL,
|
|
refresh_cache: bool = False,
|
|
use_gpt_index_import: bool = False,
|
|
custom_path: Optional[str] = None,
|
|
) -> Type[BaseReader]:
|
|
"""Download a single loader from the Loader Hub.
|
|
|
|
Args:
|
|
loader_class: The name of the loader class you want to download,
|
|
such as `SimpleWebPageReader`.
|
|
refresh_cache: If true, the local cache will be skipped and the
|
|
loader will be fetched directly from the remote repo.
|
|
use_gpt_index_import: If true, the loader files will use
|
|
llama_index as the base dependency. By default (False),
|
|
the loader files use llama_index as the base dependency.
|
|
NOTE: this is a temporary workaround while we fully migrate all usages
|
|
to llama_index.
|
|
custom_path: Custom dirpath to download loader into.
|
|
|
|
Returns:
|
|
A Loader.
|
|
"""
|
|
# Only one of the `custom_dir` or `custom_path` is supported.
|
|
if custom_path is not None:
|
|
custom_dir = None
|
|
else:
|
|
custom_dir = "llamahub_modules"
|
|
|
|
reader_cls = download_llama_module(
|
|
loader_class,
|
|
llama_hub_url=loader_hub_url,
|
|
refresh_cache=refresh_cache,
|
|
custom_dir=custom_dir,
|
|
custom_path=custom_path,
|
|
use_gpt_index_import=use_gpt_index_import,
|
|
)
|
|
if not issubclass(reader_cls, BaseReader):
|
|
raise ValueError(
|
|
f"Loader class {loader_class} must be a subclass of BaseReader."
|
|
)
|
|
track_download(loader_class, MODULE_TYPE.LOADER)
|
|
return reader_cls
|