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.4.0 — validation, analysis, and registries
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, 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.4:

DTCS Document
        │
        ▼
Parser → Canonical Object Model
        │
        ├──────────────────────────────┐
        ▼                              ▼
Validator (0.1–0.4)              Analyzer (0.3)
        │                              │
        │  registry::resolve           ├─ compatibility::analyze
        ▼                              ├─ analyze_evolution
Diagnostics                            ├─ 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. Phase 0.4 adds the identifier registry, file/URI loading with offline cache, and registry-aware extension validation.

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.4.0.tar.gz (135.3 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.4.0-cp39-abi3-win_arm64.whl (720.8 kB view details)

Uploaded CPython 3.9+Windows ARM64

dtcs-0.4.0-cp39-abi3-win_amd64.whl (775.3 kB view details)

Uploaded CPython 3.9+Windows x86-64

dtcs-0.4.0-cp39-abi3-win32.whl (696.9 kB view details)

Uploaded CPython 3.9+Windows x86

dtcs-0.4.0-cp39-abi3-musllinux_1_2_x86_64.whl (1.1 MB view details)

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

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

Uploaded CPython 3.9+musllinux: musl 1.2+ i686

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

Uploaded CPython 3.9+musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.9+musllinux: musl 1.2+ ARM64

dtcs-0.4.0-cp39-abi3-manylinux_2_28_aarch64.whl (902.1 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ ARM64

dtcs-0.4.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (942.3 kB view details)

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

dtcs-0.4.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (994.5 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ s390x

dtcs-0.4.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.2 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ppc64le

dtcs-0.4.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (911.5 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARMv7l

dtcs-0.4.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl (989.7 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.5+ i686

dtcs-0.4.0-cp39-abi3-macosx_11_0_arm64.whl (827.6 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

dtcs-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl (860.1 kB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for dtcs-0.4.0.tar.gz
Algorithm Hash digest
SHA256 053857d8c3fbb0959f4033702999f92218071a807f21c01746db8efa6b1cd0dc
MD5 49c7cd4aa0c6edcfc98a6c42b1fef1de
BLAKE2b-256 19af7801ffb2216b898f7c7f85fd7423af9f7ebbd5367d0fa7dfc80f557dde04

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for dtcs-0.4.0-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 dc35fd9ddb84c334a732d49f977bab16c34320056f39d99b654920ace9a24a04
MD5 039a2fde79e9ca50df00a01291bab673
BLAKE2b-256 6f903f0a787b253098b3a32f64a08896ab6b3fe5b1993f746be59ed5a6f2a691

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dtcs-0.4.0-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 775.3 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.4.0-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 23d0c887211cd1beaf9ade4c9d7cf01953e15dcb990eccce7caf5bd26d986cda
MD5 2daad80e0d3e1a613b0d67cc40437e38
BLAKE2b-256 5fb6af16a33a128c4ba14249c26f8e92a2b958923198053c9e58e3e32ca4661e

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for dtcs-0.4.0-cp39-abi3-win32.whl
Algorithm Hash digest
SHA256 49c20793bfa0c8effd8f9b6db5bc907e1fcfe6ecf564b6a5be129525bf9a35d0
MD5 d7a1bbbd79bedd538d0a34b22bc3e384
BLAKE2b-256 b2309e8ff65e54fa923cb7db3ee8f488029d5298f02d0a46a7943583e2d28f57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.4.0-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 15906a241e0f003c89e5d291f89917d8b554aaefdd81404e9043cf1df168ecaa
MD5 9700a15c51a45e009837a82fb5169028
BLAKE2b-256 1c41e50c15eaa6d9c2ccf07560aa758149b6cbb8eeb0fb785a3c166480ec39f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.4.0-cp39-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 d5f2af16f36d3471be250f138ea2769337bf7f3e96bf8c17dc3a4aa395fbd84b
MD5 6a3059db159a388cf28923c5af47c15b
BLAKE2b-256 c92c6728760cb4c8f25ba3a6974524e9c1d3db08674b7fd3f8bddf52831696fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.4.0-cp39-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 5d781b1c1e2463a84233b3d5b05262d98d5cef900db63d74ba6af04805e8a078
MD5 02179d5cd5167a485c03b78dbb7af654
BLAKE2b-256 22dbb693fec9d9e2e2368be46aad7a65374c405d6838d238b6b713b8874e5c67

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.4.0-cp39-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 28344b787446bb6807aa1f46449ca9eb12e080039d7d43de73e1887f67ae2566
MD5 54ae9b0e11f8269f841ff6e66c04659a
BLAKE2b-256 96119e1afb4ccf3dc684f6a8a80a52ecaabbd04633a9d1d7068980cfaf18b301

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.4.0-cp39-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 817b80ca4c577b26f9e7a2e3d80255e1920d957de6fcebba0498da9e1095466d
MD5 17f4202c891580783b15382ea51ca959
BLAKE2b-256 60d084baa30f3d10c33d211617449d2374db5b796b9f110db574fea012d267c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.4.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 008ce3cdbce12b0a25d01ad99691b1490c5e66bc5ebe8b13b5d7274e3af5b7d3
MD5 9b2b29263e45fdd16b8aebb1227f3e85
BLAKE2b-256 2aa721755e18920321569da5413de55d124ce3878571ef0c49614a1e9ff260ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.4.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 f27794bc44872ba5e9ff3268ff19560bb4872db30ac1500e67d0b005c6990776
MD5 c3a7d5111c08a749f348c3772d770fcb
BLAKE2b-256 18fc0874b0f35b01575f2973844e54a2ca6019dedbdc852924064875abb10a4f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.4.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 dedae660665a304bf57e8f73f94887b9dca358639294d78f178218bb2d1bddbc
MD5 ea2967cde65c1661454b983cb430a2db
BLAKE2b-256 b50d282f33009b403585d634c23ce9122737559aef181044b55860f86b015789

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.4.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 55c170925db5b1043c45293490d9b860c4cc0f76c25e81988a4d93c743d4a7b6
MD5 bdf0ca77d0077e87707b528fd1bb0b2e
BLAKE2b-256 46ea69189af82604852ba120e152ec92de1781da977fa83673d975ac42ffddf6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.4.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 c99717d7ff3331a4b6e4ba5911a323d5f13af79fba14c69c4bc64369a75a5f97
MD5 7955a602e6bbf162f52261a1df057178
BLAKE2b-256 7189689d758e00882804535c13de10828ebe7a68d2170fc91dc689e18ae4a55b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.4.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 77f2afa79a2f5c9c55af1bf5af7666783923176318ed81af9fdc50172090eb12
MD5 c3e79dac0555575d46ef378cd0e61595
BLAKE2b-256 75fa4096058f06003da9fd8f3e1049281ca207b8bcf4ad82ede88237e57fd826

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7455636267faa1a34bb26ebf1b25e7eef6c0c88efbe5aae7e2608952ae5a739d
MD5 b2c89d061df334309f83b733bda1de28
BLAKE2b-256 d793e9d789241c89ae398de13623d71d081880270c1611c27ec3115532391fe9

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

0.5.0

16 files

This release

0.4.0 This release

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