Skip to content

Text splitters

zenpyre.text_splitters

Contain text splitters.

zenpyre.text_splitters.resolve_text_splitter

resolve_text_splitter(
    text_splitter: (
        TextSplitter | dict[str, Any] | BaseConfig
    ),
) -> TextSplitter

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

If text_splitter is already a :class:~langchain_text_splitters.TextSplitter 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
text_splitter TextSplitter | dict[str, Any] | BaseConfig

Either a fully configured :class:~langchain_text_splitters.TextSplitter 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
TextSplitter

A configured :class:~langchain_text_splitters.TextSplitter

TextSplitter

instance.

Raises:

Type Description
TypeError

If the resolved object is not a :class:~langchain_text_splitters.TextSplitter instance.

Example
>>> from zenpyre.text_splitters import resolve_text_splitter
>>> from langchain_text_splitters import CharacterTextSplitter
>>> # From an existing instance:
>>> text_splitter = resolve_text_splitter(CharacterTextSplitter())
>>> # From a configuration dictionary:
>>> text_splitter = resolve_text_splitter(
...     {"_target_": "langchain_text_splitters.CharacterTextSplitter"}
... )

zenpyre.text_splitters.factory

Contains factory functions for text splitters.

zenpyre.text_splitters.factory.BaseTextSplitterFactory

Bases: ABC

Abstract base class for text splitter factories.

Subclasses implement :meth:make_text_splitter to instantiate and return a configured :class:~langchain_text_splitters.TextSplitter object. This pattern decouples text splitter creation from the rest of the codebase, making it easy to swap strategies (e.g. character-based, recursive, token-based) without changing call sites.

Example
>>> from langchain_text_splitters import CharacterTextSplitter
>>> from zenpyre.text_splitters.factory import BaseTextSplitterFactory
>>> class CharacterTextSplitterFactory(BaseTextSplitterFactory):
...     def make_text_splitter(self) -> CharacterTextSplitter:
...         return CharacterTextSplitter()
...

zenpyre.text_splitters.factory.BaseTextSplitterFactory.make_text_splitter abstractmethod

make_text_splitter() -> TextSplitter

Create and return a configured text splitter instance.

Returns:

Name Type Description
A TextSplitter

class:~langchain_text_splitters.TextSplitter instance

TextSplitter

ready for use.

zenpyre.text_splitters.factory.ConfigurableTextSplitterFactory

Bases: BaseTextSplitterFactory, MultilineDisplayMixin

A concrete text splitter factory that accepts either a pre-built :class:~langchain_text_splitters.TextSplitter instance or a configuration dictionary.

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

Parameters:

Name Type Description Default
text_splitter TextSplitter | dict[str, Any]

A fully configured :class:~langchain_text_splitters.TextSplitter 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 langchain_text_splitters import CharacterTextSplitter
>>> from zenpyre.text_splitters.factory import ConfigurableTextSplitterFactory
>>> factory = ConfigurableTextSplitterFactory(CharacterTextSplitter())
>>> text_splitter = factory.make_text_splitter()

zenpyre.text_splitters.factory.TextSplitterFactory

Bases: BaseTextSplitterFactory, MultilineDisplayMixin

A concrete text splitter factory that wraps a pre-built :class:~langchain_text_splitters.TextSplitter instance.

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

Parameters:

Name Type Description Default
text_splitter TextSplitter

A fully configured :class:~langchain_text_splitters.TextSplitter instance to return from :meth:make_text_splitter.

required
Example
>>> from langchain_text_splitters import CharacterTextSplitter
>>> from zenpyre.text_splitters.factory import TextSplitterFactory
>>> factory = TextSplitterFactory(CharacterTextSplitter())
>>> text_splitter = factory.make_text_splitter()