Skip to main content

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

dtcs-0.2.0.tar.gz (94.6 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.2.0-cp39-abi3-win_arm64.whl (618.0 kB view details)

Uploaded CPython 3.9+Windows ARM64

dtcs-0.2.0-cp39-abi3-win_amd64.whl (662.3 kB view details)

Uploaded CPython 3.9+Windows x86-64

dtcs-0.2.0-cp39-abi3-win32.whl (602.4 kB view details)

Uploaded CPython 3.9+Windows x86

dtcs-0.2.0-cp39-abi3-musllinux_1_2_x86_64.whl (1.0 MB view details)

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

dtcs-0.2.0-cp39-abi3-musllinux_1_2_i686.whl (1.1 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ i686

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

Uploaded CPython 3.9+musllinux: musl 1.2+ ARMv7l

dtcs-0.2.0-cp39-abi3-musllinux_1_2_aarch64.whl (968.8 kB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARM64

dtcs-0.2.0-cp39-abi3-manylinux_2_28_aarch64.whl (794.7 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ ARM64

dtcs-0.2.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (820.6 kB view details)

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

dtcs-0.2.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (891.8 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ s390x

dtcs-0.2.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.1 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ppc64le

dtcs-0.2.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (801.7 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARMv7l

dtcs-0.2.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl (871.9 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.5+ i686

dtcs-0.2.0-cp39-abi3-macosx_11_0_arm64.whl (732.6 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

dtcs-0.2.0-cp39-abi3-macosx_10_12_x86_64.whl (748.4 kB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

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

Hashes for dtcs-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3db3f825d3ffb98b7d3fe2697c3530649a1c80414bfe510e89b5a9eae28d0857
MD5 2d765809e80eb4d3796412ffe1a8d23a
BLAKE2b-256 6a43b5a0fcf314a3800a23f9c3e6fa7c0e3f74247cf11d363ff19509fe930897

See more details on using hashes here.

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

Hashes for dtcs-0.2.0-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 4ce29e293d2109aecba5923608d92f3bb00dafefc278773456f9d882f5784110
MD5 ee13857541c98808195fc595746e6209
BLAKE2b-256 c6448e83e4e370600f83517a6ba1de26ec121a692a50ec48162b53f2fa29415c

See more details on using hashes here.

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

Hashes for dtcs-0.2.0-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 05cf21b033e81c8929da78f9bc8a55f060e9d3c704f328dbb30e1b0ac528c4c4
MD5 dad5dfcf803f646bff480d9c6cf5d5db
BLAKE2b-256 e6fe04e57471661b2e7b3a0f23dad2ecf89df9adbc7a3441184a760a86d43d72

See more details on using hashes here.

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

Hashes for dtcs-0.2.0-cp39-abi3-win32.whl
Algorithm Hash digest
SHA256 09b6cf16deedda1c24ec8d5e477394bea556b8f63372657560fc7527d4e4f6cc
MD5 c51eef76bcc1b992417202262e7dfb33
BLAKE2b-256 8cd0af44bb27a26e430904583241ca65a203394d234932e8d22448a3ccfabd52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.2.0-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0fd165678a397810e6f703fd33c161856c0206af2c3ae7d8601d15a3b9d627ef
MD5 5295d62f1407a798791cca894894897b
BLAKE2b-256 a759e2f70fe0674524409ca3dcd0f2850b044bfc006f929bcc7e51c5a00c3325

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.2.0-cp39-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 377e09bc95961814926683913a2e29807f27196ad35511b4ecb1b5d7f18f8bd1
MD5 d349e4ae4362e08cf6d02c86b764ccce
BLAKE2b-256 fcca79cdfa4146a47171a87b9968fda3d3dbe8ef36ac586d08540fd462fe9f8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.2.0-cp39-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 6371671521233a30318fd4780f06772d89ec2d255ef40a8cf7782f0210977b5c
MD5 59b517e5846c637d0c9742d6e879e303
BLAKE2b-256 05bf05b30dccdf34245e7768b6e18b7b2cd39585a8ebe6853ea0dc8d20709293

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.2.0-cp39-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4d8c933cd4b572ad59a84b3f8838b9e9e4522617452d2a32e2849e15f5a1ee02
MD5 9cdd553af3f63ddcb2add140b27edc0e
BLAKE2b-256 fd7cdf47390c0963f9293b14e625e7e030fb46f8c02610afa303e1ad4acb4df8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.2.0-cp39-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1de56824d2cfea0dcfa07c40278ea887dc1f511e7f2120a60438d2a1f7441f07
MD5 1d7522a4e10267822cd0100ecd07bec9
BLAKE2b-256 d0801ff667ba44d49fd7ce076910974a5b13d00da6745cfe1a344e41a757fb44

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.2.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6c7b9bc62451e5dbc180a11f1b2fed5975862cd59b41bcb642f771fc2e97cacc
MD5 e8d43b3dd27abf6df5b3617dee4e6038
BLAKE2b-256 57a78daf5bc7926cd6af6178d99d4fe80001ab5f2b9147a1744848fc5d545bb4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.2.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 3510edacccbbb42d83c7dba1d54760081aaa90d54a8f310330c14f299a54e976
MD5 095689c26d59a646738b77c505bc01d0
BLAKE2b-256 2ffbabace1414ed1d35bbb656fc83811aa59d1953ce02db94f278037c5e2dd5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.2.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 0ef28ae0fd8723f7e61d7654fac65e2a632fad66176b4ddca644eea134b6798c
MD5 4527346290657c598f27f15b2b8ebbf9
BLAKE2b-256 45fd7d27528716e3fb0d3c4677d75d1c4ab83aa02803e8c660185db7c8cdaf49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.2.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 5c342b507e809073b6322a7b3382f96e6522acdd6cba4b8a408b40f20fc84d5a
MD5 a8dabb7894cc69672b6abab3438dac56
BLAKE2b-256 02449b695cbb736d514e56743c846fbe524d0557c64f885e29cd3fa1efff6059

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.2.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 759b3f0a3f9eac2f8dc73c6593dcf3d60bbbb77d44df0b91def6872cae37d68a
MD5 b8d55dd016fc2352b44c78ea57e3dff4
BLAKE2b-256 8cb154b3acc65c4c896db2614f9e5e742b98a349744713e93e1dd3d6b4a27127

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.2.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 de42c1c35dfa606903fdc4f85c3e10a2955207e2556b4f0f879514c83c89638d
MD5 50303143e69c5f584c0c70ccf194bc99
BLAKE2b-256 ec782d5a021b8f63e3eca9af456123f11a972daa1f4ef1a82f70f3808fee1bbd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtcs-0.2.0-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9c30f0c5987a7133b332f1c9e50bd1bd53c6d3c38317b9582bd9b99d9dce7d1e
MD5 c31329ab2d293dacd7d7399409632529
BLAKE2b-256 52a357ce7a9957ebc61e798d47fadc7ab85c771db5bcb549f7360f6fd3335215

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