Skip to main content

Reference implementation of the Data Transformation Contract Standard (DTCS)

Project description

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.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

dtcs-0.3.0.tar.gz (122.5 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.3.0-cp39-abi3-win_arm64.whl (668.7 kB view details)

Uploaded CPython 3.9+Windows ARM64

dtcs-0.3.0-cp39-abi3-win_amd64.whl (718.3 kB view details)

Uploaded CPython 3.9+Windows x86-64

dtcs-0.3.0-cp39-abi3-win32.whl (658.7 kB view details)

Uploaded CPython 3.9+Windows x86

dtcs-0.3.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.3.0-cp39-abi3-musllinux_1_2_i686.whl (1.1 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ i686

dtcs-0.3.0-cp39-abi3-musllinux_1_2_armv7l.whl (1.1 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARMv7l

dtcs-0.3.0-cp39-abi3-musllinux_1_2_aarch64.whl (1.0 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARM64

dtcs-0.3.0-cp39-abi3-manylinux_2_28_aarch64.whl (849.8 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ ARM64

dtcs-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (883.9 kB view details)

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

dtcs-0.3.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (941.8 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ s390x

dtcs-0.3.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.3.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (866.1 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARMv7l

dtcs-0.3.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl (939.4 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.5+ i686

dtcs-0.3.0-cp39-abi3-macosx_11_0_arm64.whl (779.6 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

dtcs-0.3.0-cp39-abi3-macosx_10_12_x86_64.whl (808.6 kB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

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

Hashes for dtcs-0.3.0.tar.gz
Algorithm Hash digest
SHA256 716ffa40af423733f89c42d58b90a9fe4795d0b4667042a3fcc551d6fbf3dcdc
MD5 93dc711a771b4a20bb439357a19b6d06
BLAKE2b-256 10aaeef128e153ab2d87b8a2dba610e195cc61910925d47810994eb7fcdd1a4e

See more details on using hashes here.

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

Hashes for dtcs-0.3.0-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 aeba326e05d2ad59cc55ae426054342fef09334536bf18ea6248fdfc00380f25
MD5 bf7345424ecfa30824ce8fa5b169fb46
BLAKE2b-256 c20f445f07ee1ee6851a221f146026e7ecdb3a84f2f28881925300f5ccc51df0

See more details on using hashes here.

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

Hashes for dtcs-0.3.0-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 ca417d0f54424fe8f8ca6888cd0f89c0a1565352d593aab0f2626cafe5090224
MD5 d88b7381340350bc2cd3780339f0d7d5
BLAKE2b-256 b73ff00125cdbc8bf6631c6041fce463aa3c18befc23cf955e93fd3f062ec715

See more details on using hashes here.

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

Hashes for dtcs-0.3.0-cp39-abi3-win32.whl
Algorithm Hash digest
SHA256 be015418e0f6ac3d5de9d63de82ee50567433f232e001b35048f11d7a78fdb4c
MD5 31256bbbf6a153905cbdb245a1631116
BLAKE2b-256 8a48f452d15a2982d05ef8f852a0dcbdb9b304df0c3c54fc3b9a5fa20d7fbee9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.3.0-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a44128ffe41faae3e949132b3800790bdf64e9d74f2dafef07e1e85bb48de7aa
MD5 7eb5f959acb70c39de49417b371e0406
BLAKE2b-256 ab130f9a91aed779d5ab21c743e5e6625cd58501ce0eae2fbf1c57b790cb010c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.3.0-cp39-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 12e8620eb095e5a1192b11ba0a30e9e9754540dc6b1407c7f1fc2fef4d152ab3
MD5 f7a263d7a2cf64a00b51b03ae87bf4f3
BLAKE2b-256 e175adfcb837b192bfbe5039ca96c0f8d72af24f048a545c61f6da2d825ef509

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.3.0-cp39-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 110a7672753c03a5524ca22ddfad4c9208a452724d8ec9b265e4666162587a41
MD5 8c73d07e1cbb6fa5bcc2380bfab8a84b
BLAKE2b-256 6d9a71427a8525079bf59afbed6421e1faadde13a31791d3dd08e5bbb3018e70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.3.0-cp39-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fada2d463595f4505a745bd8ba430cd4f4d62c4e76111c2c562dd2fb44d30147
MD5 2b5d535860b97223d95a3d6762bc50f7
BLAKE2b-256 8c9f07b593e7c04cd6185a4cf7b305393ac15186f955d46e9bd967ae67976169

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.3.0-cp39-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e453d9d6a9dc3cecb80bb628fdbafa7ea51d7582476f9f387f70e750d4900e52
MD5 882f330ca86b5476b04c9ef1878694ae
BLAKE2b-256 06eab2cfa42f3feeb68f212c8bc29acb9cf6eaca6300e31f92ba89456798d0a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fbb4f88ae31794b4125baf84045558d51d9e18f37a5626a897a844c6ae158699
MD5 c3716c995938cdc7ca36d1c514cc9022
BLAKE2b-256 fe42b40835ae0df14b69c759045207dfa6e31bf374cbecde2cd70e17805fb558

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.3.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 bf773c63d8979607dba5e104fe46acada594a421ca7362434c95043e2ce20559
MD5 6141a9fdafcb5e7ff35fefcf3086ccec
BLAKE2b-256 6dd2b0b55566dbee88c305bc95bb41d5b82117963f2c8438a20726fb1b8b396c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.3.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 67507782864c41d47f648eabe03488e87590240176d90e4a3ad33e42d58c55c0
MD5 2b052653dac4da0c9574cb19cfc3d1d6
BLAKE2b-256 652ee215d2b6e4a4b779bd984292e5060ad18eebf2c5b2f673f95dd2b36a689b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.3.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 483477d1f18779fcc57302864524207bd8842447ccebe0317f3ead1fd82a9df3
MD5 bf9ad11c47f531ed9a114e84a3ae3c18
BLAKE2b-256 88988e5ef46dfdcd83be0a4e374f2663f6ad7e1ff7e4d1b61dba67099468f370

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.3.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 72586fbb8ba6ea7d266620317671c1220c469fa38d907283af4a43a894a34d36
MD5 ef0c85047cf3928c5ca676ac40f76b26
BLAKE2b-256 d827fe8abbc66e8906c5690e2de5d726a84c97aa2276975c8a7681d5493507f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.3.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e582d9c02e90b349526e02c512a81a8a30143b539ffb3dfee13ee89445d46c3e
MD5 88be9c99250c3554d5eaddbc7e9d3eff
BLAKE2b-256 d5592bd42b61f4664c148d6c84ac916c5e3c40ab105c3f677ab6bbac727f180e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.3.0-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f490183c806f090f06d3b10643ebfbfed2ad8befb89b86fd11c32ca499b3ff74
MD5 ee95c806db59b0457dc7ac5d0e81e735
BLAKE2b-256 6be85152f8544d0dbaa96e3c47f2bd04b1f04d66fb197772060ac7596166ca7a

See more details on using hashes here.

Supported by

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