Skip to main content

dtex

PyPI version Python versions License: Apache-2.0 CI

dtex ("data extraction tool") is an open-source, self-hosted Python extract-load (EL) tool. It moves data from a source (an API, a database, a file drop) into a destination (a warehouse, a database, an object store) — and nothing more. Transformation is dbt's job.

The pitch in one line: a CLI-first, dbt-shaped extract-load tool — pipelines are configs, connectors are folders, no UI blackbox. The #1 principle is to keep it as simple as possible.

Install

pip install dtex                          # every baked connector, ready
pip install 'dtex[gcs,s3]'                # add gs:// / s3:// filesystem reads
pip install 'dtex[gcp-secrets]'           # add the GCP Secret Manager resolver
pip install 'dtex[aws-secrets]'           # add the AWS Secrets Manager resolver
pip install 'dtex[vault]'                 # add the HashiCorp Vault resolver

pip install dtex ships every baked source and destination — DuckDB, BigQuery, the filesystem source's local + Parquet path, the REST / Postgres / ShipHero / Stripe sources, the engine, the CLI. Extras stay opt-in for the cloud-storage paths of the filesystem source (gs:// / s3://) and for secret managers (only relevant if your profiles.yml uses secret:// URLs).

dtex requires Python 3.11+. It installs both a CLI (dtex) and an importable library (import dtex).

Usage

dtex init my_project                      # scaffold a project
cd my_project
dtex new source my_api                    # scaffold a source connector
dtex new config my_pipeline               # scaffold a pipeline config
dtex validate                             # check everything
dtex run -p my_pipeline                   # run the pipeline
dtex runs list -p my_pipeline             # show recent run history

A pipeline is one config file binding a source + a destination + a target + params. Run it with dtex run -p <config>. The library equivalent is dtex.run(config="my_pipeline") and returns a structured RunResult.

Pre-baked connectors

Each connector ships with its own README — click through for the auth checklist, scope requirements, schema, and known limitations.

Sources:

Connector What it does
filesystem CSV / JSONL / Parquet from local, GCS, or S3
rest Paginated REST APIs — 4 pagination strategies, 4 auth modes
postgres Keyset pagination, no OFFSET
shiphero GraphQL
stripe REST resource-as-stream + opt-in Sigma SQL-as-stream
revenuecat v2 API — customers + subscriptions + daily chart metrics
chargebacks911 CBAPIv2 — prevention alerts + chargeback cases, incremental
gads Google Ads — GAQL query-as-stream + MCC account auto-discovery

Destinations:

Connector What it does
duckdb Zero-config dev default, all 5 capabilities
bigquery Production warehouse — Parquet-staged via GCS + LOAD jobs, MERGE upserts, cursor-based partitioning

Engine: per-stream commit + atomic transactions (rollback on failure), state in the destination's _dtex_state table, run records in _dtex_runs, structured JSON-lines logs per run, secret redaction, schema evolution (evolve default, strict opt-in), pipeline-level parallelism with per-destination caps.

Secret managers: GCP Secret Manager, AWS Secrets Manager, HashiCorp Vault — each as an opt-in extra.

Bundled Claude skills

dtex ships three Claude skills inside the wheel: dtex-write-config, dtex-write-connector, dtex-debug. They teach Claude (or any other agent runtime that reads .claude/skills/) the post-streams-redesign config schema, the @stream decorator pattern, and the debugging playbook. Install them into a dtex project with:

dtex skills install         # copies into ./.claude/skills/dtex/

The first dtex command run inside a project that lacks installed skills prints a one-line hint (suppressed thereafter). Run dtex skills list to see which ship with this dtex version and which are installed locally.

If you're not using Claude, just ignore the hint — the skills are inert markdown until installed.

Documentation

The full design handbook lives in docs/. Start with 00 — Vision & Naming, 02 — Architecture, 06 — Project Anatomy, 12 — Configs, and 10 — Roadmap and Scope.

Security · Contributing · Code of Conduct

License

Apache License 2.0 — see LICENSE.

Download files

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

Source Distribution

dtex-0.9.0.tar.gz (647.8 kB view details)

Uploaded Source

Built Distribution

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

dtex-0.9.0-py3-none-any.whl (441.7 kB view details)

Uploaded Python 3

File details

Details for the file dtex-0.9.0.tar.gz.

File metadata

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

File hashes

Hashes for dtex-0.9.0.tar.gz
Algorithm Hash digest
SHA256 6b821a3087754bfee5b10238051ff017d2c290bbca35349fcb5935babb10124e
MD5 8fdc7126f612c54aae8e1b38ad54aa43
BLAKE2b-256 95d7b9d27e9cf14391a6cd57625b3ffc3e3701aee6968fb60aee4820d27e6964

See more details on using hashes here.

Provenance

The following attestation bundles were made for dtex-0.9.0.tar.gz:

Publisher: publish.yml on vej-ai/dtex

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

File details

Details for the file dtex-0.9.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for dtex-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ac382d8fc9de3c3fd2f1b86f5f1726973446b6596fea07f57f81f5924f9e8b54
MD5 4ed797f93423e1577d43f0e8fceb45dc
BLAKE2b-256 00b1b7734137e83d91d46d753dcc44ce35d05dc6cb5dd28dfc51c8033ab962e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for dtex-0.9.0-py3-none-any.whl:

Publisher: publish.yml on vej-ai/dtex

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

Release history Release notifications | RSS feed

0.10.2

2 files

0.10.1

2 files

0.10.0

2 files

This release

0.9.0 This release

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.0

2 files

0.6.4

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.1

2 files

0.1.1

2 files

0.1.0

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