Skip to main content

A Python framework that translates Python code into ClickHouse operations for big data computing

Project description

aaiclick logo

aaiclick

aaiclick is a data orchestration framework built to make distributed computing easy, with three principles in mind:

  1. Simplicity — Python-native syntax and dynamic task execution.
  2. 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.
  3. 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) -> dict:
    # GROUP BY + SUM runs as a single ClickHouse query; return a plain dict
    by_region = await sales.group_by("region").sum("amount")
    return await by_region.data()  # → {'region': ['US', 'EU'], 'amount': [730, 500]}

@task
async def report(summary: dict):
    # receives the plain Python dict returned by analyze()
    print(f"Regions: {summary['region']}")  # → Regions: ['US', 'EU']
    print(f"Amounts: {summary['amount']}")  # → Amounts: [730, 500]
    print(f"Total:   {sum(summary['amount'])}")  # → Total: 1230

@job("sales_pipeline")
def sales_pipeline():
    sales = load_sales()
    # dependencies resolved from arguments
    summary = analyze(sales=sales)      # returns a Python dict
    return report(summary=summary)      # the dict flows to report()

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. Decorate an async function to wrap its whole body in a context:

import asyncio
from aaiclick import create_object_from_value
from aaiclick.data.data_context import data_context

@data_context()
async def main():
    prices = await create_object_from_value([10.0, 20.0, 30.0])

    total = prices * 1.1                         # LazyOperator — no DB call yet
    print(await total.data())                    # → [11.0, 22.0, 33.0]
    print(await total.mean().data())             # → 22.0

asyncio.run(main())

data_context() also works as an async with block when you only need part of a function inside the context.

Documentation

aaiclick.readthedocs.io

License

MIT License - see LICENSE for details.

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

aaiclick-0.0.19.tar.gz (1.6 MB view details)

Uploaded Source

Built Distribution

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

aaiclick-0.0.19-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

File details

Details for the file aaiclick-0.0.19.tar.gz.

File metadata

  • Download URL: aaiclick-0.0.19.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

Hashes for aaiclick-0.0.19.tar.gz
Algorithm Hash digest
SHA256 324bee1a14349c8f64144187342be06876b4a5f6866942324ba79d4c977ee924
MD5 e2ba7fa791280fcc0e502b9e7ac98c6d
BLAKE2b-256 78dc5fe9c5c5648944569898d10de3afee7ef22d3ee33c1ac3a327ce0f32e5d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for aaiclick-0.0.19.tar.gz:

Publisher: publish.yaml on kolodkin/aaiclick

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aaiclick-0.0.19-py3-none-any.whl.

File metadata

  • Download URL: aaiclick-0.0.19-py3-none-any.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aaiclick-0.0.19-py3-none-any.whl
Algorithm Hash digest
SHA256 aa098c9f3ff4c249a9efc739dc59b30dc884ec083b3abb21b44c4fe43546ae92
MD5 8e69888ec26e2a3532be6f0193545293
BLAKE2b-256 3f4488e770b653a9631dc678949ea63d234a74cac30689108ace2f61cbf1266c

See more details on using hashes here.

Provenance

The following attestation bundles were made for aaiclick-0.0.19-py3-none-any.whl:

Publisher: publish.yaml on kolodkin/aaiclick

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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