Skip to main content

dataenginex

CI PyPI Python 3.13+ License: MIT

The Python library that powers DataEngineX Studio — an open-source, self-hosted, local-first Data + ML + AI workbench for individuals and small teams. Use the library directly when you want code; install DataEngineX Studio when you want a UI.


Install

pip install dataenginex                  # lean base — DuckDB, structlog, Pydantic, Click, pyarrow
from dataenginex.engine import DexEngine

engine = DexEngine("dex.yaml")           # loads config, inits SQLite store, wires backends
engine.run_pipeline("clean_users")       # execute a pipeline
models = engine.model_registry.list_models()
response = engine.agents["assistant"].chat("summarise the latest run")

Optional integrations install only what you need:

Extra What you get Example use case
[postgres] asyncpg Persist lineage events to Postgres
[qdrant] qdrant-client Production vector store (falls back to in-memory)
[queue] arq (+ redis transitively) Async background jobs
[cloud] boto3, google-cloud-storage, google-cloud-bigquery S3 / GCS / BigQuery sources & sinks
[ml] scikit-learn, sentence-transformers Train classical ML models, generate embeddings
[tracking] mlflow Experiment tracking via MLflow
[data] pyspark PySpark connector + dbt CLI connector (run dbt models as pipeline steps)
[delta] deltalake Delta Lake connector
[pytorch] torch PyTorch ML models

LiteLLM must be installed separately due to a python-dotenv pin conflict:

pip install 'litellm>=1.83.3' --no-deps

What it does

dex.yaml describes a project. DexEngine reads it and wires the pieces:

Subsystem Built-in default Optional backend
Data engine DuckDB PySpark ([data])
Storage Local parquet + DuckDB S3, GCS, BigQuery ([cloud])
Lineage JSON / SQLite Postgres ([postgres])
Scheduler croniter
ML training scikit-learn wrapper ([ml])
ML tracking JSON-based MLflow ([tracking])
LLM providers Ollama, OpenAI, Anthropic Any OpenAI-compatible URL
Vector store in-memory Qdrant ([qdrant])
Retrieval BM25 + dense + hybrid + graph
Persistence SQLite, WAL mode (.dex/store.duckdb)
Logging structlog
Privacy PrivacyGuard — PII detection, masking strategies, outbound call audit
Connectors CSV, Parquet, DuckDB, REST, HTTP, Kafka PySpark ([data]), dbt CLI ([data]), Delta ([delta]), PostgreSQL ([postgres])

Local-first by default. A fresh pip install dataenginex requires no external services — DuckDB is embedded; nothing reaches the network unless you explicitly configure it (or call a hosted LLM).


Project structure

src/dataenginex/
├── ai/                 # LLM providers, routing, agents, retrieval, tools, memory, workflows
├── api/                # Pydantic response models, GraphQL schema (no HTTP server)
├── application/        # Domain services (governance, projects, runs, resources)
├── bootstrap/          # Engine wiring and startup
├── cli/                # `dex` CLI: validate, version, init
├── config/             # dex.yaml schema, loader, env-var resolution
├── core/               # Core abstractions and shared utilities
├── data/               # Connectors (CSV, Parquet, DuckDB, REST, HTTP, Kafka), transforms
├── domains/            # Domain logic (ai, analytics, data, execution, governance, ml, plugins, security)
├── duckdb/             # DuckDB connection and helpers
├── engine.py           # DexEngine — entry point
├── engines/            # Engine implementations and registry (DuckDB, Spark, base)
├── foundation/         # Base ABCs, plugin contracts, errors, events, resources
├── interfaces/         # Gateway, embedded, external service interfaces
├── lakehouse/          # Bronze/Silver/Gold lakehouse storage and catalog
├── middleware/         # structlog, Prometheus metrics
├── ml/                 # ML training, registry, serving, drift, features
├── orchestration/      # Scheduler, background workers, queue backends
├── orm/                # SQLAlchemy ORM models
├── plugins/            # Entry-point plugin discovery
├── providers/          # Backend implementations (connectors, vector, tracking)
├── runtime/            # Compiler, registry, ML runtime, sandbox
├── secops/             # PII detection, masking, audit
├── spark/              # PySpark connector (SQL, streaming, ML, catalog, lineage)
├── store.py            # DexStore — DuckDB (WAL) persistence
└── warehouse/          # Warehouse operations

Development

git clone https://github.com/TheDataEngineX/dataenginex && cd dataenginex
uv sync
uv run poe check-all          # lint + typecheck + tests
uv run poe test-cov           # tests + coverage
uv run poe lint-fix           # auto-fix lint issues
dex validate dex.yaml         # validate a config file
dex version                   # show version + environment

Want the full workbench?

dataenginex is the library. The web UI is dex-studio — it imports dataenginex directly, no HTTP hop.


Ecosystem

Repo Purpose
dataenginex This library (PyPI)
dex-studio Web UI — FastAPI + Jinja2 + HTMX
infradex Kubernetes deployment via ArgoCD

Documentation

Guide Description
CHANGELOG Release history
Release Notes Package release details

License: MIT • Python: 3.13+ • Status: Pre-1.0 • Version: 0.7.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dataenginex-0.7.0.tar.gz (887.4 kB view details)

Uploaded Source

Built Distribution

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

dataenginex-0.7.0-py3-none-any.whl (504.0 kB view details)

Uploaded Python 3

File details

Details for the file dataenginex-0.7.0.tar.gz.

File metadata

  • Download URL: dataenginex-0.7.0.tar.gz
  • Upload date:
  • Size: 887.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for dataenginex-0.7.0.tar.gz
Algorithm Hash digest
SHA256 ac92d2b86e2e79db540d8a79909dbf20b7c403a27f9eee49ad8f6e951644e200
MD5 b2921bf2d05f87cd84a43a181155d831
BLAKE2b-256 f15b4ba14f1b5b423f9ff23a847072d524a4a64ee7f25e6112e026a4fda667ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for dataenginex-0.7.0.tar.gz:

Publisher: release.yml on TheDataEngineX/dataenginex

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

File details

Details for the file dataenginex-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: dataenginex-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 504.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for dataenginex-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 38678da9522f72a95eb27a0eee6651ce75dc22cd8ca5f95e80b6013676ed450b
MD5 de06289cf7d008d31dc440bde84eda5f
BLAKE2b-256 d09a7d1759e191c31026ba7b5c5e5b2e9e389661a92f8c828a9390960f9e23de

See more details on using hashes here.

Provenance

The following attestation bundles were made for dataenginex-0.7.0-py3-none-any.whl:

Publisher: release.yml on TheDataEngineX/dataenginex

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

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 files

0.5.1

2 files

0.4.6

2 files

0.4.5

2 files

0.4.4

2 files

0.4.3

2 files

0.4.1

2 files

0.4.0

2 files

0.3.5

2 files

0.3.4

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page