Skip to main content

FalkorDB client library for kiarina namespace

Project description

kiarina-lib-falkordb

A Python client library for FalkorDB with configuration management and connection pooling.

Features

  • Configuration Management: Flexible settings with pydantic-settings-manager
  • Connection Pooling: Automatic caching and reuse
  • Retry Support: Built-in retry mechanism for connection failures
  • Sync & Async: Support for both synchronous and asynchronous operations
  • Type Safety: Full type hints and Pydantic validation

Installation

pip install kiarina-lib-falkordb

Quick Start

Basic Usage

from kiarina.lib.falkordb import get_falkordb

# Get a FalkorDB client
db = get_falkordb()

# Run a query
graph = db.select_graph("social")
result = graph.query("CREATE (p:Person {name: 'Alice', age: 30}) RETURN p")
print(result.result_set)

# Connections are cached by default
db2 = get_falkordb()
assert db is db2

# Use different cache keys for separate connections
db3 = get_falkordb(cache_key="secondary")
assert db is not db3

Async Usage

from kiarina.lib.falkordb.asyncio import get_falkordb

async def main():
    db = get_falkordb()
    graph = db.select_graph("social")
    result = await graph.query("CREATE (p:Person {name: 'Bob', age: 25}) RETURN p")
    print(result.result_set)

Runtime Overrides

# Override settings at runtime
db = get_falkordb(
    url="falkor://custom-server:6379",
    use_retry=True
)

API Reference

get_falkordb()

Get a FalkorDB client with configuration management.

def get_falkordb(
    settings_key: str | None = None,
    *,
    cache_key: str | None = None,
    use_retry: bool | None = None,
    url: str | None = None,
    **kwargs: Any,
) -> FalkorDB

Parameters:

  • settings_key: Configuration key to use (for multi-config setups)
  • cache_key: Cache key for connection pooling (defaults to URL)
  • use_retry: Override retry setting
  • url: Override connection URL
  • **kwargs: Additional parameters for FalkorDB client

Returns: FalkorDB client instance (cached)

Configuration

This library uses pydantic-settings-manager for configuration management.

YAML Configuration (Recommended)

# config.yaml
kiarina.lib.falkordb:
  development:
    url: "falkor://localhost:6379"
    use_retry: true
    retry_attempts: 3

  production:
    url: "falkor://prod-server:6379"
    use_retry: true
    retry_attempts: 5
    socket_timeout: 10.0
import yaml
from kiarina.lib.falkordb import settings_manager, get_falkordb

# Load configuration
with open("config.yaml") as f:
    config = yaml.safe_load(f)

settings_manager.user_config = config["kiarina.lib.falkordb"]

# Use specific configuration
settings_manager.active_key = "production"
db = get_falkordb()

Configuration Reference

Setting Default Description
url "falkor://localhost:6379" FalkorDB connection URL (supports falkor://, falkors:// with optional auth)
use_retry false Enable automatic retries on connection errors
socket_timeout 6.0 Socket timeout in seconds
socket_connect_timeout 3.0 Connection timeout in seconds
health_check_interval 60 Health check interval in seconds
retry_attempts 3 Number of retry attempts
retry_delay 1.0 Delay between retries in seconds

All settings can be configured via environment variables with the KIARINA_LIB_FALKORDB_ prefix.

Testing

# Start FalkorDB
docker compose up -d falkordb

# Run tests
mise run package:test kiarina-lib-falkordb

# With coverage
mise run package:test kiarina-lib-falkordb --coverage

Dependencies

Note: This library uses a fork of the official FalkorDB client that supports redis-py 6.x and includes async bug fixes. Once these improvements are merged upstream, we'll migrate back to the official client.

License

MIT License - see the LICENSE file for details.

Related Projects

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kiarina_lib_falkordb-1.36.0.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kiarina_lib_falkordb-1.36.0-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file kiarina_lib_falkordb-1.36.0.tar.gz.

File metadata

  • Download URL: kiarina_lib_falkordb-1.36.0.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kiarina_lib_falkordb-1.36.0.tar.gz
Algorithm Hash digest
SHA256 0855b6c4b629774242e79ecaa14ad388f934804fc87d7236d69ba6c2f8234997
MD5 e299284356564ecb2a60c7169a1ca15a
BLAKE2b-256 8ab1e967fe8f1126e705af7d633474b33116c96aa48f58af809f85af2c79fa5f

See more details on using hashes here.

File details

Details for the file kiarina_lib_falkordb-1.36.0-py3-none-any.whl.

File metadata

File hashes

Hashes for kiarina_lib_falkordb-1.36.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cfd218b10ee5e5b1324740e61725c1727c0d0084a69c415ad8434dbd1425f23a
MD5 e44f47e370744e01c01969106de9b592
BLAKE2b-256 dc2a8c59212c162383e721b0c9299ace94c311df4375d55474e288bc2bac8ac1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page