The feldera Python package is the Python client for the Feldera HTTP API.
The Python SDK documentation is available at: https://docs.feldera.com/python
uv pip install felderaThe Python client interacts with the API server of the Feldera instance.
# File: example.py
from feldera import FelderaClient, PipelineBuilder, Pipeline
# Instantiate client
client = FelderaClient() # Default: http://localhost:8080 without authentication
# client = FelderaClient(url="iframe.php?url=https%3A%2F%2Flocalhost%3A8080", api_key="apikey:...", requests_verify="/path/to/tls.crt")
# (Re)create pipeline
name = "example"
sql = """
CREATE TABLE t1 (i1 INT) WITH ('materialized' = 'true');
CREATE MATERIALIZED VIEW v1 AS SELECT * FROM t1;
"""
print("(Re)creating pipeline...")
pipeline = PipelineBuilder(client, name, sql).create_or_replace()
pipeline.start()
print(f"Pipeline status: {pipeline.status()}")
pipeline.pause()
print(f"Pipeline status: {pipeline.status()}")
pipeline.stop(force=True)
# Find existing pipeline
pipeline = Pipeline.get(name, client)
pipeline.start()
print(f"Pipeline status: {pipeline.status()}")
pipeline.stop(force=True)
pipeline.clear_storage()Run using:
uv run python example.pySome default parameter values in the Python SDK can be overridden via environment variables.
Environment variables for FelderaClient(...)
export FELDERA_HOST="https://localhost:8080" # Overrides default for `url`
export FELDERA_API_KEY="apikey:..." # Overrides default for `api_key`
# The following together override default for `requests_verify`
# export FELDERA_TLS_INSECURE="false" # If set to "1", "true" or "yes" (all case-insensitive), disables TLS certificate verification
# export FELDERA_HTTPS_TLS_CERT="/path/to/tls.crt" # Custom TLS certificateEnvironment variables for PipelineBuilder(...)
export FELDERA_RUNTIME_VERSION="..." # Overrides default for `runtime_version`Development assumes you have cloned the Feldera code repository.
cd python
# Optional: create and activate virtual environment if you don't have one
uv venv
source .venv/bin/activate
# Install in editable mode
uv pip install -e .Formatting requires the ruff package: uv pip install ruff
cd python
ruff check
ruff formatRunning the test requires the pytest package: uv pip install pytest
# All tests
cd python
uv run python -m pytest tests/
# Specific tests directory
uv run python -m pytest tests/platform/
# Specific test file
uv run python -m pytest tests/platform/test_pipeline_crud.py
# Specific test
uv run python -m pytest tests/platform/test_pipeline_crud.py::test_pipeline_post
# Tip: add argument -x at the end for it to fail fast
# Tip: add argument -s at the end to show stdout/stderrFor further information about the tests, please see tests/README.md.
Building documentation requires the sphinx package: uv pip install sphinx
cd python/docs
sphinx-apidoc -o . ../feldera
make html
make clean # Cleanup afterwardsLatest main branch:
uv pip install git+https://github.com/feldera/feldera#subdirectory=pythonDifferent branch (replace BRANCH_NAME):
uv pip install git+https://github.com/feldera/feldera@BRANCH_NAME#subdirectory=python