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.16.0.tar.gz (6.4 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.16.0-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: kiarina_lib_falkordb-1.16.0.tar.gz
  • Upload date:
  • Size: 6.4 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.16.0.tar.gz
Algorithm Hash digest
SHA256 b094c639953062b01002d7b55fced69ecc448bd02d6b3024f300f4f447226449
MD5 1e82191b44df61f771b399a5e73b754d
BLAKE2b-256 cefa892219f60c027d1d592d60f5899888270755e6863428e923393b0bfad70c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kiarina_lib_falkordb-1.16.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9b4c3f4ac9f9b5ff5b75250d7a8fb603f2635dd1320f2cf5e2fccc21cd9ca985
MD5 185ce0730ccb18626287a5ab2e2869b1
BLAKE2b-256 8a041fcf124f09767b025becbd5ecd0fd99c2076009578edf0345a8c540da46b

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