Skip to content

Registry API Reference

Functions

register_function(name)

Decorator to register a custom function.

Parameters:

Name Type Description Default
name str

Function name (e.g., "days_ago")

required

Returns:

Type Description
Callable[[FunctionImpl], FunctionImpl]

Decorator function

Example

from datetime import datetime, timedelta @register_function("days_ago") ... def days_ago(days: int) -> datetime: ... return datetime.now() - timedelta(days=days)

Source code in src/nlql/registry/functions.py
def register_function(name: str) -> Callable[[FunctionImpl], FunctionImpl]:
    """Decorator to register a custom function.

    Args:
        name: Function name (e.g., "days_ago")

    Returns:
        Decorator function

    Example:
        >>> from datetime import datetime, timedelta
        >>> @register_function("days_ago")
        ... def days_ago(days: int) -> datetime:
        ...     return datetime.now() - timedelta(days=days)
    """

    def decorator(func: FunctionImpl) -> FunctionImpl:
        _global_function_registry.register(name, func)
        return func

    return decorator

get_function(name)

Get a registered function by name.

Source code in src/nlql/registry/functions.py
def get_function(name: str) -> FunctionImpl | None:
    """Get a registered function by name."""
    return _global_function_registry.get(name)

Operators

register_operator(name)

Decorator to register a custom operator.

Parameters:

Name Type Description Default
name str

Operator name (e.g., "SIMILAR_TO")

required

Returns:

Type Description
Callable[[OperatorFunc], OperatorFunc]

Decorator function

Example

@register_operator("CUSTOM_OP") ... def my_operator(text: str, param: str) -> bool: ... return param in text

Source code in src/nlql/registry/operators.py
def register_operator(name: str) -> Callable[[OperatorFunc], OperatorFunc]:
    """Decorator to register a custom operator.

    Args:
        name: Operator name (e.g., "SIMILAR_TO")

    Returns:
        Decorator function

    Example:
        >>> @register_operator("CUSTOM_OP")
        ... def my_operator(text: str, param: str) -> bool:
        ...     return param in text
    """

    def decorator(func: OperatorFunc) -> OperatorFunc:
        _global_operator_registry.register(name, func)
        return func

    return decorator

get_operator(name)

Get a registered operator by name.

Source code in src/nlql/registry/operators.py
def get_operator(name: str) -> OperatorFunc | None:
    """Get a registered operator by name."""
    return _global_operator_registry.get(name)

Splitters

register_splitter(name)

Decorator to register a custom text splitter.

Parameters:

Name Type Description Default
name str

Splitter name (e.g., "SENTENCE")

required

Returns:

Type Description
Callable[[SplitterFunc], SplitterFunc]

Decorator function

Example

@register_splitter("SENTENCE") ... def german_sentence_splitter(text: str) -> list[str]: ... import nltk ... return nltk.sent_tokenize(text, language='german')

Source code in src/nlql/registry/splitters.py
def register_splitter(name: str) -> Callable[[SplitterFunc], SplitterFunc]:
    """Decorator to register a custom text splitter.

    Args:
        name: Splitter name (e.g., "SENTENCE")

    Returns:
        Decorator function

    Example:
        >>> @register_splitter("SENTENCE")
        ... def german_sentence_splitter(text: str) -> list[str]:
        ...     import nltk
        ...     return nltk.sent_tokenize(text, language='german')
    """

    def decorator(func: SplitterFunc) -> SplitterFunc:
        _global_splitter_registry.register(name, func)
        return func

    return decorator

get_splitter(name)

Get a registered splitter by name.

Source code in src/nlql/registry/splitters.py
def get_splitter(name: str) -> SplitterFunc | None:
    """Get a registered splitter by name."""
    return _global_splitter_registry.get(name)

Embedding

register_embedding_provider(provider)

Register a custom embedding provider.

This is a simple decorator/function that registers a single embedding provider. The provider should take a list of texts and return a list of embedding vectors.

Parameters:

Name Type Description Default
provider EmbeddingProvider

Embedding provider function

required

Returns:

Type Description
EmbeddingProvider

The same provider function (for decorator usage)

Example

@register_embedding_provider ... def my_embedding(texts: list[str]) -> list[list[float]]: ... # Custom embedding logic ... return [[0.1, 0.2, ...] for _ in texts]

Or direct registration:

register_embedding_provider(my_embedding_function)

Source code in src/nlql/registry/embedding.py
def register_embedding_provider(provider: EmbeddingProvider) -> EmbeddingProvider:
    """Register a custom embedding provider.

    This is a simple decorator/function that registers a single embedding provider.
    The provider should take a list of texts and return a list of embedding vectors.

    Args:
        provider: Embedding provider function

    Returns:
        The same provider function (for decorator usage)

    Example:
        >>> @register_embedding_provider
        ... def my_embedding(texts: list[str]) -> list[list[float]]:
        ...     # Custom embedding logic
        ...     return [[0.1, 0.2, ...] for _ in texts]

        Or direct registration:
        >>> register_embedding_provider(my_embedding_function)
    """
    _global_embedding_registry.register(provider)
    return provider

get_embedding_provider()

Get the current embedding provider.

Source code in src/nlql/registry/embedding.py
def get_embedding_provider() -> EmbeddingProvider:
    """Get the current embedding provider."""
    return _global_embedding_registry.get()