Documentation

Python

Use OpenPlait from Python with TypeScript counterparts shown side by side.

Python

OpenPlait’s Python package lives in python/ and mirrors the TypeScript workspace under typescript/.

Python moduleTypeScript package
openplait.core@openplait/core
openplait.adapter_sdk@openplait/adapter-sdk
openplait.runtime@openplait/runtime
openplait.adapters.clickhouse@openplait/adapter-clickhouse (scaffold)

Status: alpha. Query parse/validate and runtime registration work today. Full ClickHouse/Tempo/Loki/Prometheus/Jaeger execute ports track the Node reference adapters.

Install

pip install openplait

From the repo:

cd python
poetry install
poetry run pytest

Register + validate a query

Never put passwords or tokens in query documents — only in server-side config.

from openplait import OPENPLAIT_API_VERSION
from openplait.adapters import ClickHouseAdapter, ClickHouseConfig
from openplait.core import parse_query, validate_query
from openplait.runtime import DatasourceRegistry, OpenPlaitRuntime
from openplait.runtime.registry import RuntimeDatasourceRegistration

config = ClickHouseConfig(
    url="http://localhost:8123",
    username="default",
    password="OPENLIT",
    database="openlit",
)

registry = DatasourceRegistry().register(
    RuntimeDatasourceRegistration(
        name="primary",
        kind="ClickHouseDatasource",
        adapter=ClickHouseAdapter(config),
        config=config,
    )
)
runtime = OpenPlaitRuntime(registry)

query = parse_query(
    {
        "apiVersion": OPENPLAIT_API_VERSION,
        "kind": "Query",
        "metadata": {"name": "spans-sample"},
        "spec": {
            "mode": "semantic",
            "datasource": {"kind": "ClickHouseDatasource", "name": "primary"},
            "input": {"signal": "traces", "entity": "otel.spans"},
            "select": [{"field": "service.name"}],
            "limit": 25,
        },
    }
)
assert validate_query(query).valid

Release

cd python
poetry version 0.1.0a0   # bump as needed
git tag py-0.1.0a0
git push origin py-0.1.0a0

See PUBLISHING.md.

Roadmap

  1. Complete ClickHouse compile/execute parity with @openplait/adapter-clickhouse
  2. Port Tempo, Loki, Prometheus, and Jaeger adapters
  3. Frame transforms and alert evaluation parity with @openplait/runtime
  4. Keep apiVersion and JSON Schemas shared with TypeScript