Reference implementation of the Data Transformation Contract Standard (DTCS)
Project description
DTCS — Data Transformation Contract Standard
Vendor-neutral contracts for data transformation semantics — describe what a transformation means without locking you to Spark, SQL, Polars, or any single runtime.
This repository contains:
- SPEC.md — normative DTCS 1.0 draft (26 chapters)
- Reference tools — parse, validate, and analyze contracts in Rust and Python
| Spec status | Draft (1.0.0-draft) |
| Reference implementation | 0.3.0 — validation + contract analysis |
Document dtcsVersion |
1.0.0 (accepted for compatible 1.0.x releases) |
| Try it now | pip install dtcs or cargo install dtcs |
What you can do today: validate YAML/JSON contracts, compare versions for compatibility, analyze evolution between revisions, and trace dataset lineage — all read-only, no execution engine required.
Quick start · User docs · Examples · Changelog · Roadmap
Install
Requirements: Python 3.9+ (PyPI package); Rust 1.75+ (cargo install or building from source).
pip install dtcs
cargo install dtcs
dtcs version
dtcs validate examples/customer_normalize.dtcs.yaml
Both packages install the dtcs CLI on PATH:
validate · inspect · diagnostics · compat · evolve · lineage · version
Develop from source (requires Rust + maturin): see CONTRIBUTING.md.
Quick start
# Validate a contract (exit 0 = valid)
dtcs validate examples/customer_normalize.dtcs.yaml
# Human-readable summary
dtcs inspect examples/customer_normalize.dtcs.yaml
# Compare two contract versions
dtcs compat examples/analysis/backward_old.yaml examples/analysis/backward_new.yaml
# Trace lineage impact
dtcs lineage examples/analysis/lineage_multi.yaml --impact customers
import dtcs
report = dtcs.parse_and_validate(
open("examples/customer_normalize.dtcs.yaml", "rb").read()
)
assert dtcs.is_valid(report)
Read docs/user/getting-started.md for a full walkthrough. For normative definitions, see SPEC.md — start with Chapter 3 (COM) and Chapter 9 (Validation).
Pipeline
The reference implementation through Phase 0.3:
DTCS Document
│
▼
Parser → Canonical Object Model
│
├──────────────────────────────┐
▼ ▼
Validator (0.1–0.2) Analyzer (0.3)
│ │
▼ ├─ compatibility::analyze
Diagnostics ├─ analyze_evolution
│ ├─ versioning::validate
│ └─ lineage::analyze
│ │
│ ▼
│ Analysis reports
▼
(valid contracts only for analysis)
Phase 0.2 adds metadata validation, extended type system checks, expression typing, and I/O interface depth. Phase 0.3 adds compatibility classification, evolution analysis, versioning validation, and dataset-level lineage analysis.
Execution, backend compilation, and runtime behavior remain out of scope. See docs/implementation/non-goals.md.
Repository layout
| Path | Purpose |
|---|---|
| SPEC.md | Full DTCS 1.0 draft specification (26 chapters) |
| docs/user/ | User guides — getting started, CLI, compatibility |
| docs/adoption/ | Adoption overview for evaluators |
| docs/implementation/ | Reference implementation design guides |
| docs/editorial/ | Specification authoring process |
| examples/ | Sample transformation contracts |
| src/ | Rust crate source (dtcs) |
| python/ | Python package source (dtcs on PyPI) |
| tests/ | Integration tests and fixtures |
| ROADMAP.md | Reference implementation milestones |
Contributing
See CONTRIBUTING.md for editorial conventions, implementation guidelines, and the review process.
When implementation guidance conflicts with the specification, SPEC.md wins. See docs/implementation/spec-usage.md.
License
Licensed under the Apache License, Version 2.0. See LICENSE.
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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dtcs-0.3.0.tar.gz.
File metadata
- Download URL: dtcs-0.3.0.tar.gz
- Upload date:
- Size: 122.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
716ffa40af423733f89c42d58b90a9fe4795d0b4667042a3fcc551d6fbf3dcdc
|
|
| MD5 |
93dc711a771b4a20bb439357a19b6d06
|
|
| BLAKE2b-256 |
10aaeef128e153ab2d87b8a2dba610e195cc61910925d47810994eb7fcdd1a4e
|
File details
Details for the file dtcs-0.3.0-cp39-abi3-win_arm64.whl.
File metadata
- Download URL: dtcs-0.3.0-cp39-abi3-win_arm64.whl
- Upload date:
- Size: 668.7 kB
- Tags: CPython 3.9+, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aeba326e05d2ad59cc55ae426054342fef09334536bf18ea6248fdfc00380f25
|
|
| MD5 |
bf7345424ecfa30824ce8fa5b169fb46
|
|
| BLAKE2b-256 |
c20f445f07ee1ee6851a221f146026e7ecdb3a84f2f28881925300f5ccc51df0
|
File details
Details for the file dtcs-0.3.0-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: dtcs-0.3.0-cp39-abi3-win_amd64.whl
- Upload date:
- Size: 718.3 kB
- Tags: CPython 3.9+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca417d0f54424fe8f8ca6888cd0f89c0a1565352d593aab0f2626cafe5090224
|
|
| MD5 |
d88b7381340350bc2cd3780339f0d7d5
|
|
| BLAKE2b-256 |
b73ff00125cdbc8bf6631c6041fce463aa3c18befc23cf955e93fd3f062ec715
|
File details
Details for the file dtcs-0.3.0-cp39-abi3-win32.whl.
File metadata
- Download URL: dtcs-0.3.0-cp39-abi3-win32.whl
- Upload date:
- Size: 658.7 kB
- Tags: CPython 3.9+, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be015418e0f6ac3d5de9d63de82ee50567433f232e001b35048f11d7a78fdb4c
|
|
| MD5 |
31256bbbf6a153905cbdb245a1631116
|
|
| BLAKE2b-256 |
8a48f452d15a2982d05ef8f852a0dcbdb9b304df0c3c54fc3b9a5fa20d7fbee9
|
File details
Details for the file dtcs-0.3.0-cp39-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: dtcs-0.3.0-cp39-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.9+, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a44128ffe41faae3e949132b3800790bdf64e9d74f2dafef07e1e85bb48de7aa
|
|
| MD5 |
7eb5f959acb70c39de49417b371e0406
|
|
| BLAKE2b-256 |
ab130f9a91aed779d5ab21c743e5e6625cd58501ce0eae2fbf1c57b790cb010c
|
File details
Details for the file dtcs-0.3.0-cp39-abi3-musllinux_1_2_i686.whl.
File metadata
- Download URL: dtcs-0.3.0-cp39-abi3-musllinux_1_2_i686.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.9+, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
12e8620eb095e5a1192b11ba0a30e9e9754540dc6b1407c7f1fc2fef4d152ab3
|
|
| MD5 |
f7a263d7a2cf64a00b51b03ae87bf4f3
|
|
| BLAKE2b-256 |
e175adfcb837b192bfbe5039ca96c0f8d72af24f048a545c61f6da2d825ef509
|
File details
Details for the file dtcs-0.3.0-cp39-abi3-musllinux_1_2_armv7l.whl.
File metadata
- Download URL: dtcs-0.3.0-cp39-abi3-musllinux_1_2_armv7l.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.9+, musllinux: musl 1.2+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
110a7672753c03a5524ca22ddfad4c9208a452724d8ec9b265e4666162587a41
|
|
| MD5 |
8c73d07e1cbb6fa5bcc2380bfab8a84b
|
|
| BLAKE2b-256 |
6d9a71427a8525079bf59afbed6421e1faadde13a31791d3dd08e5bbb3018e70
|
File details
Details for the file dtcs-0.3.0-cp39-abi3-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: dtcs-0.3.0-cp39-abi3-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.9+, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fada2d463595f4505a745bd8ba430cd4f4d62c4e76111c2c562dd2fb44d30147
|
|
| MD5 |
2b5d535860b97223d95a3d6762bc50f7
|
|
| BLAKE2b-256 |
8c9f07b593e7c04cd6185a4cf7b305393ac15186f955d46e9bd967ae67976169
|
File details
Details for the file dtcs-0.3.0-cp39-abi3-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: dtcs-0.3.0-cp39-abi3-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 849.8 kB
- Tags: CPython 3.9+, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e453d9d6a9dc3cecb80bb628fdbafa7ea51d7582476f9f387f70e750d4900e52
|
|
| MD5 |
882f330ca86b5476b04c9ef1878694ae
|
|
| BLAKE2b-256 |
06eab2cfa42f3feeb68f212c8bc29acb9cf6eaca6300e31f92ba89456798d0a7
|
File details
Details for the file dtcs-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: dtcs-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 883.9 kB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fbb4f88ae31794b4125baf84045558d51d9e18f37a5626a897a844c6ae158699
|
|
| MD5 |
c3716c995938cdc7ca36d1c514cc9022
|
|
| BLAKE2b-256 |
fe42b40835ae0df14b69c759045207dfa6e31bf374cbecde2cd70e17805fb558
|
File details
Details for the file dtcs-0.3.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.
File metadata
- Download URL: dtcs-0.3.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
- Upload date:
- Size: 941.8 kB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ s390x
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf773c63d8979607dba5e104fe46acada594a421ca7362434c95043e2ce20559
|
|
| MD5 |
6141a9fdafcb5e7ff35fefcf3086ccec
|
|
| BLAKE2b-256 |
6dd2b0b55566dbee88c305bc95bb41d5b82117963f2c8438a20726fb1b8b396c
|
File details
Details for the file dtcs-0.3.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.
File metadata
- Download URL: dtcs-0.3.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ ppc64le
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67507782864c41d47f648eabe03488e87590240176d90e4a3ad33e42d58c55c0
|
|
| MD5 |
2b052653dac4da0c9574cb19cfc3d1d6
|
|
| BLAKE2b-256 |
652ee215d2b6e4a4b779bd984292e5060ad18eebf2c5b2f673f95dd2b36a689b
|
File details
Details for the file dtcs-0.3.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.
File metadata
- Download URL: dtcs-0.3.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
- Upload date:
- Size: 866.1 kB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
483477d1f18779fcc57302864524207bd8842447ccebe0317f3ead1fd82a9df3
|
|
| MD5 |
bf9ad11c47f531ed9a114e84a3ae3c18
|
|
| BLAKE2b-256 |
88988e5ef46dfdcd83be0a4e374f2663f6ad7e1ff7e4d1b61dba67099468f370
|
File details
Details for the file dtcs-0.3.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl.
File metadata
- Download URL: dtcs-0.3.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl
- Upload date:
- Size: 939.4 kB
- Tags: CPython 3.9+, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72586fbb8ba6ea7d266620317671c1220c469fa38d907283af4a43a894a34d36
|
|
| MD5 |
ef0c85047cf3928c5ca676ac40f76b26
|
|
| BLAKE2b-256 |
d827fe8abbc66e8906c5690e2de5d726a84c97aa2276975c8a7681d5493507f8
|
File details
Details for the file dtcs-0.3.0-cp39-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: dtcs-0.3.0-cp39-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 779.6 kB
- Tags: CPython 3.9+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e582d9c02e90b349526e02c512a81a8a30143b539ffb3dfee13ee89445d46c3e
|
|
| MD5 |
88be9c99250c3554d5eaddbc7e9d3eff
|
|
| BLAKE2b-256 |
d5592bd42b61f4664c148d6c84ac916c5e3c40ab105c3f677ab6bbac727f180e
|
File details
Details for the file dtcs-0.3.0-cp39-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: dtcs-0.3.0-cp39-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 808.6 kB
- Tags: CPython 3.9+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f490183c806f090f06d3b10643ebfbfed2ad8befb89b86fd11c32ca499b3ff74
|
|
| MD5 |
ee95c806db59b0457dc7ac5d0e81e735
|
|
| BLAKE2b-256 |
6be85152f8544d0dbaa96e3c47f2bd04b1f04d66fb197772060ac7596166ca7a
|