Skip to content

Document loaders

zenpyre.document_loaders

Contain document loaders.

zenpyre.document_loaders.DocumentListLoader

Bases: BaseLoader

A loader that yields documents from a pre-built sequence.

Use this when documents are already in memory and you need to wrap them in a :class:~langchain_core.document_loaders.BaseLoader interface — for example, in tests or when constructing a pipeline that expects a factory.

Parameters:

Name Type Description Default
documents Sequence[Document]

A sequence of :class:~langchain_core.documents.Document instances to yield from :meth:lazy_load.

required
Example
>>> from langchain_core.documents import Document
>>> from zenpyre.document_loaders import DocumentListLoader
>>> loader = DocumentListLoader(
...     [Document(page_content="Hello"), Document(page_content="World")]
... )
>>> docs = loader.load()

zenpyre.document_loaders.DocumentStoreLoader

Bases: BaseLoader, MultilineDisplayMixin

A loader that yields documents from a :class:BaseDocumentStore.

Use this when documents already live in a document store and you need to wrap them in a :class:~langchain_core.document_loaders.BaseLoader interface — for example, to feed a store's contents into a pipeline (e.g. a vector store indexer) that expects a loader.

Parameters:

Name Type Description Default
store BaseDocumentStore

The :class:~zenpyre.document_stores.base .BaseDocumentStore to load documents from.

required
Example
>>> from langchain_core.documents import Document
>>> from zenpyre.document_loaders import DocumentStoreLoader
>>> from zenpyre.document_stores import InMemoryDocumentStore
>>> store = InMemoryDocumentStore()
>>> store.add_documents(
...     [Document(id="1", page_content="Hello"), Document(id="2", page_content="World")]
... )
>>> loader = DocumentStoreLoader(store)
>>> docs = loader.load()

zenpyre.document_loaders.resolve_document_loader

resolve_document_loader(
    document_loader: (
        BaseLoader | dict[str, Any] | BaseConfig
    ),
) -> BaseLoader

Resolve a LangChain :class:~langchain_core.document_loaders.BaseLoader instance from an existing object, a configuration dictionary, or a :class:~zenpyre.utils.config.BaseConfig.

If document_loader is already a :class:~langchain_core.document_loaders.BaseLoader instance it is returned as-is. If it is a :class:dict or a :class:~zenpyre.utils.config.BaseConfig, it is treated as an objectory factory configuration and instantiated via :func:objectory.factory. See :func:~zenpyre.utils.resolve.resolve_object for details.

Parameters:

Name Type Description Default
document_loader BaseLoader | dict[str, Any] | BaseConfig

Either a fully configured :class:~langchain_core.document_loaders.BaseLoader instance, a :class:dict containing an objectory factory specification (must include a "_target_" key pointing to the fully-qualified class name), or a :class:~zenpyre.utils.config.BaseConfig whose to_kwargs() includes a "_target_" key.

required

Returns:

Type Description
BaseLoader

A configured :class:~langchain_core.document_loaders.BaseLoader

BaseLoader

instance.

Raises:

Type Description
TypeError

If the resolved object is not a :class:~langchain_core.document_loaders.BaseLoader instance.

Example
>>> from langchain_core.document_loaders import BaseLoader
>>> from zenpyre.document_loaders import resolve_document_loader
>>> class MyLoader(BaseLoader):
...     def lazy_load(self):
...         return iter([])
...
>>> # From an existing instance:
>>> document_loader = resolve_document_loader(MyLoader())
>>> # From a configuration dictionary:
>>> document_loader = resolve_document_loader(  # doctest: +SKIP
...     {
...         "_target_": "langchain_core.document_loaders.LangSmithLoader",
...         "project_name": "my-project",
...     }
... )

zenpyre.document_loaders.factory

Contain factories for document loaders.

zenpyre.document_loaders.factory.BaseLoaderFactory

Bases: ABC

Abstract base class for document loader factories.

Subclasses implement :meth:make_loader to instantiate and return a configured :class:~langchain_core.document_loaders.BaseLoader object. This pattern decouples document loader creation from the rest of the codebase, making it easy to swap loaders (e.g. file, web, database) without changing call sites.

Example
>>> from typing import Iterator
>>> from langchain_core.document_loaders import BaseLoader
>>> from langchain_core.documents import Document
>>> from zenpyre.document_loaders.factory import BaseLoaderFactory
>>> class MyLoaderFactory(BaseLoaderFactory):
...     def make_loader(self) -> BaseLoader:
...         class MyLoader(BaseLoader):
...             def lazy_load(self) -> Iterator[Document]:
...                 return iter([])
...         return MyLoader()
...

zenpyre.document_loaders.factory.BaseLoaderFactory.make_loader abstractmethod

make_loader() -> BaseLoader

Create and return a configured document loader instance.

Returns:

Name Type Description
A BaseLoader

class:~langchain_core.document_loaders.BaseLoader

BaseLoader

instance ready for use.

zenpyre.document_loaders.factory.ConfigurableLoaderFactory

Bases: BaseLoaderFactory, MultilineDisplayMixin

A concrete document loader factory that accepts either a pre- built :class:~langchain_core.document_loaders.BaseLoader instance or a configuration dictionary.

When a dict is provided it is resolved at each :meth:make_loader call via :func:~resolve_document_loader, which uses objectory to instantiate the configured class. When an instance is provided it is returned as-is.

Parameters:

Name Type Description Default
loader BaseLoader | dict[str, Any]

A fully configured :class:~langchain_core.document_loaders.BaseLoader instance, or a :class:dict containing an objectory factory specification (must include a "_target_" key pointing to the fully-qualified class name).

required
Example
>>> from typing import Iterator
>>> from langchain_core.document_loaders import BaseLoader
>>> from langchain_core.documents import Document
>>> from zenpyre.document_loaders.factory import ConfigurableLoaderFactory
>>> class MyLoader(BaseLoader):
...     def lazy_load(self) -> Iterator[Document]:
...         return iter([])
...
>>> factory = ConfigurableLoaderFactory(MyLoader())
>>> loader = factory.make_loader()

zenpyre.document_loaders.factory.LoaderFactory

Bases: BaseLoaderFactory, MultilineDisplayMixin

A concrete document loader factory that wraps a pre-built :class:~langchain_core.document_loaders.BaseLoader instance.

Use this when the document loader is already instantiated and you simply want to wrap it in the :class:~BaseLoaderFactory interface — for example, when injecting a fixed loader into a component that expects a factory.

Parameters:

Name Type Description Default
loader BaseLoader

A fully configured :class:~langchain_core.document_loaders.BaseLoader instance to return from :meth:make_loader.

required
Example
>>> from typing import Iterator
>>> from langchain_core.document_loaders import BaseLoader
>>> from langchain_core.documents import Document
>>> from zenpyre.document_loaders.factory import LoaderFactory
>>> class MyLoader(BaseLoader):
...     def lazy_load(self) -> Iterator[Document]:
...         return iter([])
...
>>> factory = LoaderFactory(MyLoader())
>>> loader = factory.make_loader()