Skip to main content

GUI orchestrator for python-based dataframe transform pipelines.

Project description

Data Engine

Data Engine is a GUI orchestrator for Python dataframe workflows. It lets you author flows as plain Python modules, run them manually or automatically, and inspect parquet-first outputs from the desktop app.

The runtime is built around:

  • workspace-based flow discovery
  • manual, poll, and schedule execution modes
  • Polars and DuckDB-friendly flow steps
  • mirrored output paths for source-driven runs
  • saved run, log, and dataframe inspection state
  • desktop and terminal operator surfaces

Install

Use the installer for your environment:

For local development:

python -m pip install --constraint requirements/constraints.txt -e ".[dev]"

For a published package install:

python -m pip install py-data-engine

Data Engine requires Python >=3.14.

Dependency pinning, constrained installs, and hash-locked runtime installs are documented in SECURITY.md.

Start

Desktop GUI:

data-engine start gui

Terminal UI:

data-engine start tui

Headless commands:

data-engine list
data-engine show example_summary
data-engine run --once example_summary
data-engine run

Minimal Flow

from data_engine import Flow
import polars as pl


def read_docs(context):
    return pl.read_excel(context.source.path)


def keep_open(context):
    return context.current.filter(pl.col("status") == "OPEN")


def write_parquet(context):
    output = context.mirror.with_suffix(".parquet")
    context.current.write_parquet(output)
    return output


def build():
    return (
        Flow(group="Docs")
        .watch(
            mode="poll",
            source="../../../example_data/Input/docs_flat",
            interval="5s",
            extensions=[".xlsx", ".xls", ".xlsm"],
            settle=1,
        )
        .mirror(root="../../../example_data/Output/example_mirror")
        .step(read_docs, save_as="raw_df")
        .step(keep_open, use="raw_df", save_as="filtered_df")
        .step(write_parquet, use="filtered_df")
    )

Each authored flow module exports build() -> Flow. The module filename is the flow identity.

Workspaces

Data Engine discovers workspaces from a collection root. Each workspace keeps authored flows under:

workspaces/<workspace_id>/flow_modules/

Shared workspace state lives under:

workspaces/<workspace_id>/.workspace_state/

Machine-local runtime artifacts are stored outside the authored workspace.

Useful APIs

from data_engine import Flow, FlowContext, discover_flows, load_flow, run

Common Flow methods:

  • .watch(...)
  • .mirror(...)
  • .date_range_input(...)
  • .step(...)
  • .collect(...)
  • .map(...)
  • .step_each(...)
  • .preview(...)
  • .run_once()
  • .run()

Common FlowContext values:

  • context.source
  • context.mirror
  • context.current
  • context.objects
  • context.metadata
  • context.database("analytics.duckdb")
  • context.template("reports/base.xlsx")
  • context.debug

The full authoring guide and helper reference live in src/data_engine/docs/sphinx_source/guides/.

Testing

python -m pytest -q
python -m build
python -m twine check dist/*

Status

This project is pre-alpha. Internal architecture is still moving quickly, and backwards compatibility is not a current goal.

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

py_data_engine-0.3.12.tar.gz (8.6 MB view details)

Uploaded Source

Built Distribution

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

py_data_engine-0.3.12-py3-none-any.whl (8.8 MB view details)

Uploaded Python 3

File details

Details for the file py_data_engine-0.3.12.tar.gz.

File metadata

  • Download URL: py_data_engine-0.3.12.tar.gz
  • Upload date:
  • Size: 8.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for py_data_engine-0.3.12.tar.gz
Algorithm Hash digest
SHA256 b9fb0874f0dd36a103b711230be98e3764455a24d77fd80756216fa890089c83
MD5 5dbc3c756d56b15e283bd275f9638146
BLAKE2b-256 4d3f65d9bbb642a030a55537e81356c4a22d8c48c244cd8629ce0d7acac6c96d

See more details on using hashes here.

Provenance

The following attestation bundles were made for py_data_engine-0.3.12.tar.gz:

Publisher: publish-pypi.yml on bj-data-eng/data-engine

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

File details

Details for the file py_data_engine-0.3.12-py3-none-any.whl.

File metadata

File hashes

Hashes for py_data_engine-0.3.12-py3-none-any.whl
Algorithm Hash digest
SHA256 9f982316d777a233c3281aa596dd6b4964c771671046cf6809ef22f368a78e46
MD5 2e3bf7f31085c87e564037fe7bb82751
BLAKE2b-256 6d3711ed4550620bf1b70232c53d4d315ed4e8cbbc59a36bb921c98ffecbf572

See more details on using hashes here.

Provenance

The following attestation bundles were made for py_data_engine-0.3.12-py3-none-any.whl:

Publisher: publish-pypi.yml on bj-data-eng/data-engine

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