faiss_rag_enterprise/llama_index/readers/download.py

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