Reference implementation of the Data Transformation Contract Standard (DTCS)
Project description
DTCS — Data Transformation Contract Standard
Vendor-neutral specification and reference implementation for expressing the semantics of data transformations.
Status: Draft
Specification version: 1.0.0-draft
Reference implementation: 0.2.0 (Phase 0.2 — Contract Model)
Document dtcsVersion: 1.0.0 (accepted by the reference validator for compatible 1.0.x releases)
See ROADMAP.md for milestone status and CHANGELOG.md for release notes.
Overview
SPEC.md is the authoritative normative specification for DTCS. It defines transformation contracts, the canonical object model, validation, diagnostics, conformance, and governance — without prescribing execution engines, storage, or orchestration.
This repository contains:
| Path | Purpose |
|---|---|
| SPEC.md | Full DTCS 1.0 draft specification (26 chapters) |
| docs/ | Documentation index |
| docs/editorial/ | Authoring standards, style guide, and review process |
| docs/implementation/ | Rust reference implementation design and build guides |
| src/ | Rust crate source (dtcs) |
| python/ | Python package source (dtcs on PyPI) |
| examples/ | Sample DTCS transformation contracts |
| tests/ | Integration tests and fixtures |
| ROADMAP.md | Reference implementation milestones |
| .github/workflows/ | CI pipeline |
Install
Published packages (after tagging v0.2.0):
cargo install dtcs --version 0.2.0
pip install dtcs==0.2.0
Both installs provide a dtcs CLI on PATH (validate, inspect, diagnostics, version).
The current PyPI/crates.io release is 0.1.2 until v0.2.0 is tagged. See CONTRIBUTING.md for the release workflow.
Quick start
Read the specification
less SPEC.md
Build the Rust crate
cargo build
cargo test
cargo run -- validate examples/customer_normalize.dtcs.yaml
cargo run -- inspect examples/customer_normalize.dtcs.yaml
Use the Python package
pip install maturin
maturin develop --features python
python -m dtcs validate examples/customer_normalize.dtcs.yaml
python -m dtcs inspect examples/customer_normalize.dtcs.yaml
pytest python/tests -v
import dtcs
report = dtcs.parse_and_validate(open("examples/customer_normalize.dtcs.yaml", "rb").read())
assert dtcs.is_valid(report)
The reference implementation through Phase 0.2 implements:
DTCS Document → Parser → Canonical Object Model → Validator → Diagnostics
Phase 0.2 adds metadata validation, extended type system checks (conversions, collections, extension types), expression typing, and I/O interface depth (optional inputs, streaming, pre/postconditions).
Execution, backend compilation, and runtime behavior remain out of scope. See docs/implementation/non-goals.md.
Repository layout
dtcs/
├── SPEC.md # Normative specification (source of truth)
├── Cargo.toml # Rust crate manifest
├── pyproject.toml # Python package manifest (maturin)
├── Cargo.lock # Pinned dependencies (binary crate)
├── CHANGELOG.md # Release notes
├── README.md
├── CONTRIBUTING.md
├── LICENSE
├── .github/workflows/ # CI
├── docs/
│ ├── README.md # Documentation index
│ ├── editorial/ # Specification authoring process
│ └── implementation/ # Reference implementation guides
├── examples/ # Example transformation contracts
├── python/ # Python package source
├── src/ # Rust library, CLI binary, validation
├── tests/ # Integration tests and fixtures
└── .cursor/prompts/ # Cursor build prompt
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.2.0.tar.gz.
File metadata
- Download URL: dtcs-0.2.0.tar.gz
- Upload date:
- Size: 94.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3db3f825d3ffb98b7d3fe2697c3530649a1c80414bfe510e89b5a9eae28d0857
|
|
| MD5 |
2d765809e80eb4d3796412ffe1a8d23a
|
|
| BLAKE2b-256 |
6a43b5a0fcf314a3800a23f9c3e6fa7c0e3f74247cf11d363ff19509fe930897
|
File details
Details for the file dtcs-0.2.0-cp39-abi3-win_arm64.whl.
File metadata
- Download URL: dtcs-0.2.0-cp39-abi3-win_arm64.whl
- Upload date:
- Size: 618.0 kB
- Tags: CPython 3.9+, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ce29e293d2109aecba5923608d92f3bb00dafefc278773456f9d882f5784110
|
|
| MD5 |
ee13857541c98808195fc595746e6209
|
|
| BLAKE2b-256 |
c6448e83e4e370600f83517a6ba1de26ec121a692a50ec48162b53f2fa29415c
|
File details
Details for the file dtcs-0.2.0-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: dtcs-0.2.0-cp39-abi3-win_amd64.whl
- Upload date:
- Size: 662.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 |
05cf21b033e81c8929da78f9bc8a55f060e9d3c704f328dbb30e1b0ac528c4c4
|
|
| MD5 |
dad5dfcf803f646bff480d9c6cf5d5db
|
|
| BLAKE2b-256 |
e6fe04e57471661b2e7b3a0f23dad2ecf89df9adbc7a3441184a760a86d43d72
|
File details
Details for the file dtcs-0.2.0-cp39-abi3-win32.whl.
File metadata
- Download URL: dtcs-0.2.0-cp39-abi3-win32.whl
- Upload date:
- Size: 602.4 kB
- Tags: CPython 3.9+, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09b6cf16deedda1c24ec8d5e477394bea556b8f63372657560fc7527d4e4f6cc
|
|
| MD5 |
c51eef76bcc1b992417202262e7dfb33
|
|
| BLAKE2b-256 |
8cd0af44bb27a26e430904583241ca65a203394d234932e8d22448a3ccfabd52
|
File details
Details for the file dtcs-0.2.0-cp39-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: dtcs-0.2.0-cp39-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.0 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 |
0fd165678a397810e6f703fd33c161856c0206af2c3ae7d8601d15a3b9d627ef
|
|
| MD5 |
5295d62f1407a798791cca894894897b
|
|
| BLAKE2b-256 |
a759e2f70fe0674524409ca3dcd0f2850b044bfc006f929bcc7e51c5a00c3325
|
File details
Details for the file dtcs-0.2.0-cp39-abi3-musllinux_1_2_i686.whl.
File metadata
- Download URL: dtcs-0.2.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 |
377e09bc95961814926683913a2e29807f27196ad35511b4ecb1b5d7f18f8bd1
|
|
| MD5 |
d349e4ae4362e08cf6d02c86b764ccce
|
|
| BLAKE2b-256 |
fcca79cdfa4146a47171a87b9968fda3d3dbe8ef36ac586d08540fd462fe9f8d
|
File details
Details for the file dtcs-0.2.0-cp39-abi3-musllinux_1_2_armv7l.whl.
File metadata
- Download URL: dtcs-0.2.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 |
6371671521233a30318fd4780f06772d89ec2d255ef40a8cf7782f0210977b5c
|
|
| MD5 |
59b517e5846c637d0c9742d6e879e303
|
|
| BLAKE2b-256 |
05bf05b30dccdf34245e7768b6e18b7b2cd39585a8ebe6853ea0dc8d20709293
|
File details
Details for the file dtcs-0.2.0-cp39-abi3-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: dtcs-0.2.0-cp39-abi3-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 968.8 kB
- 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 |
4d8c933cd4b572ad59a84b3f8838b9e9e4522617452d2a32e2849e15f5a1ee02
|
|
| MD5 |
9cdd553af3f63ddcb2add140b27edc0e
|
|
| BLAKE2b-256 |
fd7cdf47390c0963f9293b14e625e7e030fb46f8c02610afa303e1ad4acb4df8
|
File details
Details for the file dtcs-0.2.0-cp39-abi3-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: dtcs-0.2.0-cp39-abi3-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 794.7 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 |
1de56824d2cfea0dcfa07c40278ea887dc1f511e7f2120a60438d2a1f7441f07
|
|
| MD5 |
1d7522a4e10267822cd0100ecd07bec9
|
|
| BLAKE2b-256 |
d0801ff667ba44d49fd7ce076910974a5b13d00da6745cfe1a344e41a757fb44
|
File details
Details for the file dtcs-0.2.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: dtcs-0.2.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 820.6 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 |
6c7b9bc62451e5dbc180a11f1b2fed5975862cd59b41bcb642f771fc2e97cacc
|
|
| MD5 |
e8d43b3dd27abf6df5b3617dee4e6038
|
|
| BLAKE2b-256 |
57a78daf5bc7926cd6af6178d99d4fe80001ab5f2b9147a1744848fc5d545bb4
|
File details
Details for the file dtcs-0.2.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.
File metadata
- Download URL: dtcs-0.2.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
- Upload date:
- Size: 891.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 |
3510edacccbbb42d83c7dba1d54760081aaa90d54a8f310330c14f299a54e976
|
|
| MD5 |
095689c26d59a646738b77c505bc01d0
|
|
| BLAKE2b-256 |
2ffbabace1414ed1d35bbb656fc83811aa59d1953ce02db94f278037c5e2dd5b
|
File details
Details for the file dtcs-0.2.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.
File metadata
- Download URL: dtcs-0.2.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
- Upload date:
- Size: 1.1 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 |
0ef28ae0fd8723f7e61d7654fac65e2a632fad66176b4ddca644eea134b6798c
|
|
| MD5 |
4527346290657c598f27f15b2b8ebbf9
|
|
| BLAKE2b-256 |
45fd7d27528716e3fb0d3c4677d75d1c4ab83aa02803e8c660185db7c8cdaf49
|
File details
Details for the file dtcs-0.2.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.
File metadata
- Download URL: dtcs-0.2.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
- Upload date:
- Size: 801.7 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 |
5c342b507e809073b6322a7b3382f96e6522acdd6cba4b8a408b40f20fc84d5a
|
|
| MD5 |
a8dabb7894cc69672b6abab3438dac56
|
|
| BLAKE2b-256 |
02449b695cbb736d514e56743c846fbe524d0557c64f885e29cd3fa1efff6059
|
File details
Details for the file dtcs-0.2.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl.
File metadata
- Download URL: dtcs-0.2.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl
- Upload date:
- Size: 871.9 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 |
759b3f0a3f9eac2f8dc73c6593dcf3d60bbbb77d44df0b91def6872cae37d68a
|
|
| MD5 |
b8d55dd016fc2352b44c78ea57e3dff4
|
|
| BLAKE2b-256 |
8cb154b3acc65c4c896db2614f9e5e742b98a349744713e93e1dd3d6b4a27127
|
File details
Details for the file dtcs-0.2.0-cp39-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: dtcs-0.2.0-cp39-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 732.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 |
de42c1c35dfa606903fdc4f85c3e10a2955207e2556b4f0f879514c83c89638d
|
|
| MD5 |
50303143e69c5f584c0c70ccf194bc99
|
|
| BLAKE2b-256 |
ec782d5a021b8f63e3eca9af456123f11a972daa1f4ef1a82f70f3808fee1bbd
|
File details
Details for the file dtcs-0.2.0-cp39-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: dtcs-0.2.0-cp39-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 748.4 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 |
9c30f0c5987a7133b332f1c9e50bd1bd53c6d3c38317b9582bd9b99d9dce7d1e
|
|
| MD5 |
c31329ab2d293dacd7d7399409632529
|
|
| BLAKE2b-256 |
52a357ce7a9957ebc61e798d47fadc7ab85c771db5bcb549f7360f6fd3335215
|