A Python framework that translates Python code into ClickHouse operations for big data computing
Project description
aaiclick
A Python framework that translates Python code into ClickHouse operations for big data computing.
Overview
aaiclick is a data orchestration framework built to make distributed computing easy, with three principles in mind:
- Simplicity — Python-native syntax and dynamic task execution.
- Performance — Utilizes ClickHouse's powerful distributed engine. Data lives in ClickHouse as columnar tables; Python code orchestrates operations — arithmetic, filtering, aggregation, joins — that execute as ClickHouse queries.
- AI Lineage Superpower — Query your data flow. How did this value get here? Why don't we see that value there? Trace lineage across operations and debug pipelines with AI-powered agents.
Local (in-process, zero setup) and distributed (Docker Compose provided) deployments. Runs locally with embedded chdb + SQLite, or scales out with remote ClickHouse + PostgreSQL.
Early stage — looking for early adopters to join the ride and provide feedback.
Installation
The base install includes embedded chdb and SQLite — no external servers needed:
pip install aaiclick
python -m aaiclick setup
For a distributed deployment (remote ClickHouse server + PostgreSQL):
pip install "aaiclick[distributed]"
For AI features (lineage tracing, debug agents):
pip install "aaiclick[ai]"
# or all extras:
pip install "aaiclick[all]"
Orchestration
Define tasks and jobs with decorators — all data operations execute as ClickHouse queries:
from aaiclick import create_object_from_value
from aaiclick.orchestration import job, task
@task
async def load_sales():
return await create_object_from_value({
"region": ["US", "EU", "US", "EU", "US"],
"amount": [500, 300, 150, 200, 80],
})
@task
async def analyze(sales):
# GROUP BY + SUM — runs as a single ClickHouse query
by_region = await sales.group_by("region").sum("amount")
print(await by_region.data()) # → {'region': ['EU', 'US'], 'amount': [500, 730]}
# append rows without leaving ClickHouse
await sales.insert({"region": ["JP"], "amount": [400]})
@job("sales_pipeline")
def sales_pipeline():
sales = load_sales()
# dependencies resolved from arguments
result = analyze(sales=sales)
return result
if __name__ == "__main__":
from aaiclick.orchestration import job_test
job_test(sales_pipeline) # runs all tasks locally for debugging
python sales_pipeline.py
Data Operation Only Mode
Use data_context() directly for interactive work without orchestration:
import asyncio
from aaiclick import create_object_from_value
from aaiclick.data.data_context import data_context
async def main():
async with data_context():
prices = await create_object_from_value([10.0, 20.0, 30.0])
total = await (prices + prices * 0.1) # scalars broadcast automatically
print(await total.data()) # → [11.0, 22.0, 33.0]
print(await (await total.mean()).data()) # → 22.0
asyncio.run(main())
Documentation
License
MIT License - see LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aaiclick-0.0.14.tar.gz.
File metadata
- Download URL: aaiclick-0.0.14.tar.gz
- Upload date:
- Size: 1.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bac4c7fe1df386ea0a17873acd861e6d15444d6de41c1639546e802df087cf20
|
|
| MD5 |
181ccc0eea7c97b0f3d6923aca3bb0ef
|
|
| BLAKE2b-256 |
373982fc71547c480bf2ff60fcf2e31efc7aa51759093c6567ed618b5cda7fc7
|
Provenance
The following attestation bundles were made for aaiclick-0.0.14.tar.gz:
Publisher:
publish.yaml on kolodkin/aaiclick
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aaiclick-0.0.14.tar.gz -
Subject digest:
bac4c7fe1df386ea0a17873acd861e6d15444d6de41c1639546e802df087cf20 - Sigstore transparency entry: 1391791641
- Sigstore integration time:
-
Permalink:
kolodkin/aaiclick@40d2c6e32e0187e30644a33ed70e7e99bb8fbcb8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/kolodkin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@40d2c6e32e0187e30644a33ed70e7e99bb8fbcb8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file aaiclick-0.0.14-py3-none-any.whl.
File metadata
- Download URL: aaiclick-0.0.14-py3-none-any.whl
- Upload date:
- Size: 1.2 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5edfd820a367a58c627136d03638df83016dbf08b4e71fbc5fb1b12e29594106
|
|
| MD5 |
a62264b46973d6d115585376546c6c58
|
|
| BLAKE2b-256 |
b0612e4df9fd5c35fe81bcc77b68c57ad4a784ddff0d925641ed1736a0d8c6b2
|
Provenance
The following attestation bundles were made for aaiclick-0.0.14-py3-none-any.whl:
Publisher:
publish.yaml on kolodkin/aaiclick
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aaiclick-0.0.14-py3-none-any.whl -
Subject digest:
5edfd820a367a58c627136d03638df83016dbf08b4e71fbc5fb1b12e29594106 - Sigstore transparency entry: 1391791646
- Sigstore integration time:
-
Permalink:
kolodkin/aaiclick@40d2c6e32e0187e30644a33ed70e7e99bb8fbcb8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/kolodkin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@40d2c6e32e0187e30644a33ed70e7e99bb8fbcb8 -
Trigger Event:
workflow_dispatch
-
Statement type: