DTCS — Data Transformation Contract Standard
DTCS is a draft standard and toolkit for writing vendor-neutral data transformation contracts in YAML/JSON — the semantics of transforms, not a Spark, Polars, or SQL engine.
Status: Spec 3.0.0 (draft) · Tools 0.13.0 (alpha). Good for validation, compatibility analysis, portable relational profiles, and conformance research — not a production ETL runtime.
Documentation · Getting started · What DTCS is not · Adoption · Examples · Changelog · Security
Try it (no clone)
Requirements: Python 3.9+ for PyPI wheels, or Rust 1.75+ for cargo install (compile can take several minutes).
pip install dtcs
dtcs version
# → dtcs 0.13.0
# → spec 3.0.0
curl -fsSL https://raw.githubusercontent.com/eddiethedean/dtcs/main/examples/minimal.dtcs.yaml \
-o contract.dtcs.yaml
dtcs validate contract.dtcs.yaml
# → valid
# → exit 0
Or paste the same file from examples/minimal.dtcs.yaml. Prefer dtcsVersion: "3.0.0"; prior versions remain accepted for compatibility.
Bindings: Python (pip install dtcs), WASM (@eddiethedean/dtcs-wasm), Node (@eddiethedean/dtcs). See docs/api/.
What this repository contains
- SPEC.md — normative DTCS 3.0 draft (27 chapters + Appendix A, including Rich Portable Analytics)
- Reference tools — parse, validate, analyze, plan, optimize, match, compile, and run contracts (Rust CLI + Python; limited WASM/Node surface)
| Spec status | Draft (3.0.0) |
| Reference tools | 0.13.0 (alpha) — validator through reference runtime, portable profiles, and conformance |
Document dtcsVersion |
"3.0.0" preferred; prior supported versions remain accepted |
Coverage tables labeled “Covered” or “Complete” mean the reference implementation exercises that draft SPEC area, not that DTCS 3.0 is finalized or production-certified.
Next steps (after valid)
Clone for richer examples and fixtures (PyPI wheels do not include examples/ or tests/):
git clone https://github.com/eddiethedean/dtcs.git
cd dtcs
dtcs validate examples/customer_pipeline.dtcs.yaml
dtcs run examples/customer_pipeline.dtcs.yaml \
--input tests/fixtures/runtime/customer_pipeline_input.json
| Goal | Where |
|---|---|
| Concepts in two pages | docs/user/concepts.md |
| Versions | docs/user/versioning.md |
| Write contracts | docs/user/writing-contracts.md |
| CLI reference | docs/user/cli-guide.md |
| Upgrade to 0.13 / Spec 3.0 | docs/user/migration-0.13.md |
| Historical: 0.12 / Spec 2.0 | docs/user/migration-0.12.md |
| Evaluate for your org | docs/adoption/overview.md |
Develop from source
Requires Rust + maturin. See CONTRIBUTING.md.
Repository layout
| Path | Purpose |
|---|---|
| SPEC.md | Full DTCS 3.0.0 draft specification |
| docs/user/ | User guides |
| docs/adoption/ | Evaluator / security materials |
| docs/api/ | Python, Rust, WASM, Node API docs |
| docs/implementation/ | Reference implementation design guides |
| examples/ | Sample contracts |
| src/ | Rust crate (dtcs) |
| python/ | Python package |
| ROADMAP.md | Implementation milestones |
Contributing
See CONTRIBUTING.md and CODE_OF_CONDUCT.md. Security reports: SECURITY.md. When guidance conflicts with the specification, SPEC.md wins.
License
Licensed under the Apache License, Version 2.0. See LICENSE.
Metadata
Release files for dtcs 0.13.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dtcs-0.13.0.tar.gz | 440.0 kB | Details |
Built distributions (wheels)
Total release size: 44.9 MB
Release files / dtcs-0.13.0.tar.gz
| Download URL | dtcs-0.13.0.tar.gz |
|---|---|
| Size | 440.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4c84634eeedae26d01fde273ae544d6f421cde199ee34af691310a51c26125f4
|
|
BLAKE2b-256 checksum How to use checksums |
9f1f3a4d03031e503adca647a2fecf814ba3605f1b4cec4eb842ba132b82f65b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dtcs-0.13.0-cp39-abi3-win_arm64.whl
| Download URL | dtcs-0.13.0-cp39-abi3-win_arm64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.9 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
6f12463934ab9e483d52941518a0bc2216922ba45cd34692852eb970d39176e4
|
|
BLAKE2b-256 checksum How to use checksums |
372fcfb805f9476cd4dcc65e3fc9ea4abf411f36e6f4ca8047ffc7778d3348cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dtcs-0.13.0-cp39-abi3-win_amd64.whl
| Download URL | dtcs-0.13.0-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
1a2da2ea052d709e4c29c8da8d7e9ed801be3d7d79f1b76cfb905b8a35835b68
|
|
BLAKE2b-256 checksum How to use checksums |
f219c2aafdeb9cadd6d43a204d67a960dae6801dfb8eab683f798eb865ae1119
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dtcs-0.13.0-cp39-abi3-win32.whl
| Download URL | dtcs-0.13.0-cp39-abi3-win32.whl |
|---|---|
| Size | 2.5 MB |
| Tags | CPython 3.9 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
dadd937a0d5adc9f6cd9caff255b9f6148db834a6acc8ec95e34f5df34ae3ad3
|
|
BLAKE2b-256 checksum How to use checksums |
b289e765158282d7be1be9dff24ef9b767eda36190a7dad81365f7d0bd7321c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dtcs-0.13.0-cp39-abi3-musllinux_1_2_x86_64.whl
| Download URL | dtcs-0.13.0-cp39-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 3.3 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
ac3d8aec9cdf5895fca729ac1a42f82a689d065bf7daa96d8ae1a3a90bd308c3
|
|
BLAKE2b-256 checksum How to use checksums |
83cbfba844b6aabb19cf1bc24549fcec08af58d9383a4107df060cbb06484d81
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dtcs-0.13.0-cp39-abi3-musllinux_1_2_i686.whl
| Download URL | dtcs-0.13.0-cp39-abi3-musllinux_1_2_i686.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
bcf743082d321e02517ebed6eba3516d9b6509ac248621a0101737b7166460ad
|
|
BLAKE2b-256 checksum How to use checksums |
e6fb2ad36a0f08079892accbecc06aa0fa419ee88f930aad20d140e3110f5ff7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dtcs-0.13.0-cp39-abi3-musllinux_1_2_armv7l.whl
| Download URL | dtcs-0.13.0-cp39-abi3-musllinux_1_2_armv7l.whl |
|---|---|
| Size | 3.1 MB |
| Tags | CPython 3.9 Linux musl 1.2+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
5a9c98cb57e14d5be841b6cfe8c706041b668b79c9889d8cb1925a85cc37cb91
|
|
BLAKE2b-256 checksum How to use checksums |
c8a146082ae3ed0762937c03314df110cba170779e0fab82808f8a353a0a1cf9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dtcs-0.13.0-cp39-abi3-musllinux_1_2_aarch64.whl
| Download URL | dtcs-0.13.0-cp39-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 3.1 MB |
| Tags | CPython 3.9 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
458cad4c82981879da47eee21796e2a060261edebab8fb7664c6b75803478e4c
|
|
BLAKE2b-256 checksum How to use checksums |
9e7ab9ca40057077023cc6b3b4a9b87f505c242d9bc820684b105cd49dd703dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dtcs-0.13.0-cp39-abi3-manylinux_2_28_aarch64.whl
| Download URL | dtcs-0.13.0-cp39-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.9 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
62b6d88157ba52d5103a31acb42543aa49976fd2f16f324b9b43b17e07ddce5f
|
|
BLAKE2b-256 checksum How to use checksums |
84eec573dcdb367fd731d55e3304b664c16a1872be0bea5289728117b9338c4a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dtcs-0.13.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | dtcs-0.13.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
e94d546a3b1ab96a3655e3af2f4cdc7b718b7a63ab401a90316a5384997eebc7
|
|
BLAKE2b-256 checksum How to use checksums |
5a544815ea503e1b7e6a0f3a6ce014f65fda1cc0e189c333057dc72b04bfa175
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dtcs-0.13.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
| Download URL | dtcs-0.13.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ IBM System/390x abi3 |
|
SHA-256 checksum How to use checksums |
1e5d7d51a003f491c470caa74facd8adb124accaf607d61f11189f755e1feebf
|
|
BLAKE2b-256 checksum How to use checksums |
373276f91ddab31dd38a1c7619ae86e803c43247a0f4104ce0e1a492717b9bb3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dtcs-0.13.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
| Download URL | dtcs-0.13.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl |
|---|---|
| Size | 3.4 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ PowerPC 64-le abi3 |
|
SHA-256 checksum How to use checksums |
ec6eed41c179d18256c014f3084f85f42c130717f86da6a3bf9055bfef74a262
|
|
BLAKE2b-256 checksum How to use checksums |
8898537206d4c58b11d4feeaf8c1c14ffb8bf75cda0b5a68fb81b999e7986094
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dtcs-0.13.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
| Download URL | dtcs-0.13.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl |
|---|---|
| Size | 2.9 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
b991cc21fb29816fbcca837037bdf88576ab6d42a82f87fa27f82c304c81419f
|
|
BLAKE2b-256 checksum How to use checksums |
6a3fe22df3b4f0c046c105d2585f5b03a2bfc2f154d301ef04f24129b4192015
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dtcs-0.13.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl
| Download URL | dtcs-0.13.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.9 Linux glibc 2.5+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
b5b7e86ce82b2e2e7a8820a0da4f3189695aebc06ab4950ac60c9ec5ed085722
|
|
BLAKE2b-256 checksum How to use checksums |
1249e5649f4321df0434d57e853219d093711a4ad9e1b956bc00522d3b2a8b65
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dtcs-0.13.0-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | dtcs-0.13.0-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
abe9892fe7a1161183bd202de7f0f64d1f7b852f77d3f99d5ca0fa998daf4bda
|
|
BLAKE2b-256 checksum How to use checksums |
b71f9832962fc2e09e5dde5e388172f16a7b3f73e8c531d6040b56b1d5023805
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dtcs-0.13.0-cp39-abi3-macosx_10_12_x86_64.whl
| Download URL | dtcs-0.13.0-cp39-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.9 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
5c43434016d958a07e3eb16dc6f76f5b374d40a80587ec3fd5b91a5ac749d4e0
|
|
BLAKE2b-256 checksum How to use checksums |
5fe66f3b7c1717f9fa28527410cf69f2f36fd0181fd082417c1b8752a3f3750b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|