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.5.0 — validation, analysis, 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 · 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

# 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.5.0.tar.gz (144.2 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.5.0-cp39-abi3-win_arm64.whl (777.7 kB view details)

Uploaded CPython 3.9+Windows ARM64

dtcs-0.5.0-cp39-abi3-win_amd64.whl (817.1 kB view details)

Uploaded CPython 3.9+Windows x86-64

dtcs-0.5.0-cp39-abi3-win32.whl (736.8 kB view details)

Uploaded CPython 3.9+Windows x86

dtcs-0.5.0-cp39-abi3-musllinux_1_2_x86_64.whl (1.2 MB view details)

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

dtcs-0.5.0-cp39-abi3-musllinux_1_2_i686.whl (1.2 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ i686

dtcs-0.5.0-cp39-abi3-musllinux_1_2_armv7l.whl (1.2 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARMv7l

dtcs-0.5.0-cp39-abi3-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARM64

dtcs-0.5.0-cp39-abi3-manylinux_2_28_aarch64.whl (954.1 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ ARM64

dtcs-0.5.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (995.9 kB view details)

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

dtcs-0.5.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.5.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.3 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ppc64le

dtcs-0.5.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (950.2 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARMv7l

dtcs-0.5.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.5+ i686

dtcs-0.5.0-cp39-abi3-macosx_11_0_arm64.whl (876.2 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

dtcs-0.5.0-cp39-abi3-macosx_10_12_x86_64.whl (912.9 kB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for dtcs-0.5.0.tar.gz
Algorithm Hash digest
SHA256 91cbd3208329b716a491b61d29e7cd83c9131c752c835cdc7ae4cfc460cb56a5
MD5 6ec8da042519be4bfabcaac85e2757bf
BLAKE2b-256 7730c029cbc3f0b008f71740125fdf00101dd2b6c7b804889112bcde7104dec7

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for dtcs-0.5.0-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 16dc29b8cb03e9c10f2a0ae7a6194554755884d43e62d81d5b5d305ac84cbfaf
MD5 0c856c7190f157b1a52088a0f4a0ccee
BLAKE2b-256 1e385cf9e042cea6cbef9e2a7e72f2242d83d856c27af89e72929faf80229156

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dtcs-0.5.0-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 817.1 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.5.0-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a9b513d11f53874abd70abc66c7a7e5123b268bdb69a0d5f17c1cc2f5b3dfce4
MD5 fd4c9144934466edc910cfef0d94630e
BLAKE2b-256 2c063e40855aeed28ef9c4c1c9fb914f561b590b5b5fc71cd7080bab5ff7c765

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for dtcs-0.5.0-cp39-abi3-win32.whl
Algorithm Hash digest
SHA256 cf83d851d122f3aee9dd7e6bb7a7e252767fada4672d665e557d8d14bf22b444
MD5 1a51001961000ea1b07ab15a6004e5ba
BLAKE2b-256 f0c0dd5e413d2cdb9bdae7087fa253d7899121243cb79b3c250a911b43a9b1a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.5.0-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 81d3cacf53a1d4a43e22aa7ec2d441a8371bd70c2790a660c41c515b02ad93b8
MD5 d7d67b4301807492475843a17e350f25
BLAKE2b-256 668fd973528fd43fe6f012ba6e8bb6b922d71de83c22442604be66aa761b7093

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.5.0-cp39-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 5388038af15f4c739d227562cfe116b64562ba6e97459cf07e92c2bf31872643
MD5 42c961a40edf82e129bdf4b8bdf50b9a
BLAKE2b-256 c05087b5f2bd18a5994b195953b7709c7b0f7b7a53c0e2f6d1d4d33346f7222e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.5.0-cp39-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 47d297e5d4e48f71b893d725e0487439f41215dfc8f60029ccaf86122fb3b399
MD5 dafc7ddf44de7891ad276b4b9785c59f
BLAKE2b-256 b9f5430079ddb4e86787901bbc05d50b23e136e91062560ececfd72e34d847a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.5.0-cp39-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9f4a75943b0c391ed0b2ab7052b4c0976bf496f01aff4cd68e475bcfbe14410d
MD5 d3266f5e6f841645cbb1bc1d2163ff8a
BLAKE2b-256 4b904167dc24ba8cf6d5d81bd0109d732b5dfe0b67e212146775d6c116aa9b41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.5.0-cp39-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a65d6ed274e7a7ab729d504ab37a5d4df4f189435e927e09fc13064531d2c571
MD5 ee07969c95824eab7ec6571c5a649c7c
BLAKE2b-256 89e5a0ecdea50746ed0d828c632ebfa9ba2f3c3397ebaf146ec1bef98e76dd9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.5.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d7d2705614aaa615ce4bc3242293c369b8b131c55f3ab245e1314699524385c4
MD5 17124118a235dd217fd9cfb30aff5031
BLAKE2b-256 9bfd4bfa9e1de424493087c77a8b9b0cb0dcdf60acfbf205435354193fb23270

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.5.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 a6ed97b38e899d8e2b2160013849fde5001e895354ba26621384773c705a3d5c
MD5 79b53dce2ff3af854cc0db118b81aa2a
BLAKE2b-256 373a6a6284adf6516d6493d446ed8fd89485647d809cbed3c4b5063816e7e92b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.5.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 df85dba823b76a38c52d9a652c1cd4e0dcf3f6a424a1ccfe0e178c35e460884c
MD5 a47be27daf02c6e7fe94a515df7b615a
BLAKE2b-256 ae2ca75e8a3f8613e891f89cddacc208794572b9fb57e67d5b2971575f154134

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.5.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 e0d51f6c229b7f61791f185aa4037983da9c5da2cd0a7a9e7ae2600c1c0a00f9
MD5 f571fe3ffe8727da7f37ac9485db1986
BLAKE2b-256 39771f2667247fa7491eee5b7f061a5f104cf12543c19f70bc84247254539072

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.5.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 cd3dc88bb4f9733d9a7d344a868fc62458935cafad22f71eaf5d1082c3c45c50
MD5 74927f3c8dbbd38f04084ac0bdd3cd7f
BLAKE2b-256 9fa433ee51440e8a9c2ba5149f3c2fe3656b3006613b1453e2319f8d03f7c1a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.5.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 903fe962326e56f27ad376bbce3ef96d923acf013286d4719c384872bdb7a510
MD5 6588594a689c2d749379b0b023ff702f
BLAKE2b-256 e55e328cc25faa066ba2a95a25006c7006ec4501268639451dd048e69d506935

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.5.0-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5357ee8bc999f39a7a9152247f686433ce216e30a99c538d9f63645162763e0f
MD5 08cc6ab095043f10b02631afef61df35
BLAKE2b-256 b6d9cb2e2b2c2ac4f05aec0797122f7195e27c4110c540943684200f4994298a

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

0.6.0

16 files

This release

0.5.0 This release

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