Skip to main content

DTCS — Data Transformation Contract Standard

CI crates.io PyPI License

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.6.0 — validation, analysis (Ch 7–8), registries, and embedded standard libraries with registry-driven semantics validation
Document dtcsVersion 1.0.0 (currently exact; patch releases are rejected)
Try it now pip install dtcs or cargo install dtcs

What you can do today: validate YAML/JSON contracts, resolve dtcs: identifiers through the embedded registry (including standard actions, functions, and rules), 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 · analyze · inspect · diagnostics · compat · evolve · lineage · registry · 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

# Analyze a contract (static semantics; no runtime evaluation)
dtcs analyze 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

# Resolve a standard identifier
dtcs registry resolve dtcs:lowercase
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.5:

DTCS Document
        │
        ▼
Parser → Canonical Object Model
        │
        ├──────────────────────────────┐
        ▼                              ▼
Validator (0.1–0.5)              Analyzer (0.3)
        │                              │
        │  registry::resolve           ├─ compatibility::analyze
        │  stdlib definition checks    ├─ analyze_evolution
        ▼                              ├─ versioning::validate
Diagnostics                            └─ 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. Phase 0.4 adds the identifier registry, file/URI loading with offline cache, and registry-aware extension validation. Phase 0.5 embeds starter standard libraries for semantic actions, functions, and rules, and validates contract usage against structured registry definitions (target types, phases, arity, and return types).

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.

Download files

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

Source Distribution

dtcs-0.6.0.tar.gz (154.7 kB view details)

Uploaded Source

Built Distributions

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

dtcs-0.6.0-cp39-abi3-win_arm64.whl (837.1 kB view details)

Uploaded CPython 3.9+Windows ARM64

dtcs-0.6.0-cp39-abi3-win_amd64.whl (879.8 kB view details)

Uploaded CPython 3.9+Windows x86-64

dtcs-0.6.0-cp39-abi3-win32.whl (794.5 kB view details)

Uploaded CPython 3.9+Windows x86

dtcs-0.6.0-cp39-abi3-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ x86-64

dtcs-0.6.0-cp39-abi3-musllinux_1_2_i686.whl (1.3 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ i686

dtcs-0.6.0-cp39-abi3-musllinux_1_2_armv7l.whl (1.3 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARMv7l

dtcs-0.6.0-cp39-abi3-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARM64

dtcs-0.6.0-cp39-abi3-manylinux_2_28_aarch64.whl (1.0 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ ARM64

dtcs-0.6.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ x86-64

dtcs-0.6.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.1 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ s390x

dtcs-0.6.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.4 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ppc64le

dtcs-0.6.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.0 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARMv7l

dtcs-0.6.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl (1.1 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.5+ i686

dtcs-0.6.0-cp39-abi3-macosx_11_0_arm64.whl (939.8 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

dtcs-0.6.0-cp39-abi3-macosx_10_12_x86_64.whl (974.2 kB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

Details for the file dtcs-0.6.0.tar.gz.

File metadata

  • Download URL: dtcs-0.6.0.tar.gz
  • Upload date:
  • Size: 154.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for dtcs-0.6.0.tar.gz
Algorithm Hash digest
SHA256 1a9674eb6edccdca94a1eac3c24a9890336ee90ba06366181e4241167aae134c
MD5 9eec155a9cdc776a491984b5fde8611b
BLAKE2b-256 84187aee14976f69b348c8cb58d7da42f54dc735cc585ecbf9363037c9c1278b

See more details on using hashes here.

File details

Details for the file dtcs-0.6.0-cp39-abi3-win_arm64.whl.

File metadata

  • Download URL: dtcs-0.6.0-cp39-abi3-win_arm64.whl
  • Upload date:
  • Size: 837.1 kB
  • Tags: CPython 3.9+, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for dtcs-0.6.0-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 fe881160a38654caac3c1807b911f3e662f9f39379784beeef51447e9f1ef9da
MD5 227a15b26b8a4fb7471cdb565d57e97e
BLAKE2b-256 6ffc727a1f501add1181cecf8e904081a96aba99a93af5c6316d9f41983cd98b

See more details on using hashes here.

File details

Details for the file dtcs-0.6.0-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: dtcs-0.6.0-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 879.8 kB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for dtcs-0.6.0-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1d2e361fd7a6df8aea52ec76dc108d5cf9bb662f8ba6d5f5bcfd201e43f58bc7
MD5 5ece2e910c4373cf4fbeb6b320969299
BLAKE2b-256 9ae9e636e295586170437737405ed991f70a2080c3efe9fc8e1641b5c6de001a

See more details on using hashes here.

File details

Details for the file dtcs-0.6.0-cp39-abi3-win32.whl.

File metadata

  • Download URL: dtcs-0.6.0-cp39-abi3-win32.whl
  • Upload date:
  • Size: 794.5 kB
  • Tags: CPython 3.9+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for dtcs-0.6.0-cp39-abi3-win32.whl
Algorithm Hash digest
SHA256 cfb04cd5a6e95e1dd1f130c855f9d2cf36378a170c28fed43cb020be5584f216
MD5 4d7aa63e58e9889f3cfcbda3caf9133b
BLAKE2b-256 6cb136742b31ad5277d9629a7738a1bc0c486d67e038eff852494acc91f94cc2

See more details on using hashes here.

File details

Details for the file dtcs-0.6.0-cp39-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for dtcs-0.6.0-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 88c77af80789d43f880e64645d74aa7aaa882e1d3bf7f6716a5890b49b457657
MD5 a1e7f7b69eadf621f812c5a7baeaee62
BLAKE2b-256 c6b3492f8d0471709e55cdf9ef8c92e8fcdc2d6bc5178d568ee280eae5ad47cd

See more details on using hashes here.

File details

Details for the file dtcs-0.6.0-cp39-abi3-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for dtcs-0.6.0-cp39-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 468cca4e41460159a097e1c1811b8aaf2f3f28c31bc7e7bb25129aa8fb6a3d9a
MD5 95518a68b9a3078d85c850ac6b368af7
BLAKE2b-256 0218809cf73567f604dc9448ef1d0ec0874450e3fc1ce8e261f681d4067f378a

See more details on using hashes here.

File details

Details for the file dtcs-0.6.0-cp39-abi3-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for dtcs-0.6.0-cp39-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 f1a34f23fca712fb64c4179abf14fd70924ed32103a61475ebf7b1d40e9ea61b
MD5 318d20b5920b699f8cf7ad11b3bcc07e
BLAKE2b-256 4220593885e387139c2675b7e28cf8c7032e5fd6d754454c723d5dec4b89b87c

See more details on using hashes here.

File details

Details for the file dtcs-0.6.0-cp39-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for dtcs-0.6.0-cp39-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e779249ca713c2692409cc48cfd61bb8c10ccc4baa99380f18faf81ebebed142
MD5 2c884538fb6996cad3ffab48c075dc2a
BLAKE2b-256 9dd938428a7b5158bb299551679f1479241c74e3eb3f5453eee7989576e59faf

See more details on using hashes here.

File details

Details for the file dtcs-0.6.0-cp39-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for dtcs-0.6.0-cp39-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 52bf64be95867a86254f7d91dc230bdd1e2e654694209c9c97a9fe5996b032be
MD5 40f214be77213010c7ce4abdd28eaa7e
BLAKE2b-256 c08f634ad47ea6bfd0f17c67a12772c3417e5ddf5df5c7ac1b94a860863ec228

See more details on using hashes here.

File details

Details for the file dtcs-0.6.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dtcs-0.6.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0b9ffbfe38d1f5089d23866241c79b3856a84f65edb01d2a673d16d3b018d915
MD5 076d848ec34086d69cc4832bc523d395
BLAKE2b-256 3898d579e3067d4b559a74eda2ecd97debd351ba9152f68ffddf47f70c94cc38

See more details on using hashes here.

File details

Details for the file dtcs-0.6.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for dtcs-0.6.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 930a007cf1cfff4b835efb6208f48efd9054b8d2e91f06cc933cd600cc16f4d2
MD5 14ea90e40cf97c91211759386ea4fe9e
BLAKE2b-256 f6e16587316121e9fd6ec89058a3b744321ca50307386c1c64a61eb20e99519a

See more details on using hashes here.

File details

Details for the file dtcs-0.6.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for dtcs-0.6.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 ee73bfcbae32250715d32a2e4eb6154f2d299c540f6f472565241e81d3200b4b
MD5 ad4964b126fd3e82b2af638b151abef0
BLAKE2b-256 6c7c335ee82c03fe50590ac75982098ccb067e839cbeebff061dd200fd4d1af1

See more details on using hashes here.

File details

Details for the file dtcs-0.6.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for dtcs-0.6.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 f08b83363609d4c2f9c2fd36dd6af6368ecec985f2bbf6cf04b068510a496251
MD5 96e61cb3557f4c74c40dc1010c738173
BLAKE2b-256 d6262da7ad935919ca50f1fb7ae30bb48ad148528c26bc22fb9e5d75152a8582

See more details on using hashes here.

File details

Details for the file dtcs-0.6.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for dtcs-0.6.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 345add219635b05536c887f10c15bf2590e8be7ee4b44cc95c2eee72ae73263b
MD5 e92b0836dc7518eb0fc0902ed29ea67f
BLAKE2b-256 4f1e18c77e29dde205d9e68ca2cb3238bac3cb89f76376da6d58cd5eec22c5bb

See more details on using hashes here.

File details

Details for the file dtcs-0.6.0-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dtcs-0.6.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2ad8d4c1b111d7cff2e2b0b10f29b3f17a4276dd78f22075eed19b212c9ec2e0
MD5 38d188b968a0f0ba4c1e0451e7578141
BLAKE2b-256 3fbf4da064e5aacdb475c5e89f0d1ce4b98add96bd15350c05f7b8a031b5890a

See more details on using hashes here.

File details

Details for the file dtcs-0.6.0-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dtcs-0.6.0-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8725f7e16ec91f7b12573f64b9baac86d0bd7dc5b36287ca72dedd2428794254
MD5 937f257031b458255ef724b49ffc173d
BLAKE2b-256 754b0ed6198638b2f9133907762ff7c508e89f2b24f38273e540b615385207f0

See more details on using hashes here.

Release history Release notifications | RSS feed

0.13.0

16 files

0.12.0

16 files

0.11.0

16 files

0.10.1

16 files

0.9.0

16 files

0.8.0

16 files

0.7.0

16 files

This release

0.6.0 This release

16 files

0.5.0

16 files

0.4.0

16 files

0.3.0

16 files

0.2.0

16 files

0.1.2

16 files

0.1.1

5 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page