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: |
required |
Returns:
| Type | Description |
|---|---|
TextSplitter
|
A configured :class: |
TextSplitter
|
instance. |
Raises:
| Type | Description |
|---|---|
TypeError
|
If the resolved object is not a
:class: |
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: |
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: |
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: |
required |
Example
>>> from langchain_text_splitters import CharacterTextSplitter
>>> from zenpyre.text_splitters.factory import TextSplitterFactory
>>> factory = TextSplitterFactory(CharacterTextSplitter())
>>> text_splitter = factory.make_text_splitter()