Skip to main content

Reference implementation of the Open Data Contract Standard (ODCS)

Project description

ODCS — Open Data Contract Standard

Reference Rust implementation for the Open Data Contract Standard.

Status: Pre-release skeleton
Upstream ODCS version: 3.1.0
Reference implementation: 0.2.0 (Phase 1 — Skeleton)

See ROADMAP.md for milestone status.

Overview

SPEC.md defines the upstream specification policy for this repository. The published ODCS specification remains the normative standard; this crate provides an idiomatic Rust API, deterministic validation, diagnostics, and CLI tooling aligned with upstream semantics.

This repository contains:

Path Purpose
SPEC.md Upstream specification policy and synchronization workflow
docs/ Documentation index
docs/implementation/ Reference implementation design and build guides
src/ Rust crate source (odcs)
python/ Python package source (pyodcs on PyPI)
examples/ Sample ODCS data contracts
tests/ Integration tests and fixtures
ROADMAP.md Reference implementation milestones
.github/workflows/ CI pipeline

Ecosystem

ODCS defines what data is.
DTCS defines how data changes.
DPCS defines how transformations compose.

See docs/implementation/relationship-to-dtcs.md for positioning alongside DTCS.

Quick start

Build the Rust crate

cargo build
cargo test
cargo run -- validate examples/minimal.odcs.yaml
cargo run -- version

Validate a contract

odcs validate examples/minimal.odcs.yaml
odcs validate examples/minimal.odcs.yaml --json
odcs inspect examples/minimal.odcs.yaml

The reference implementation targets this pipeline:

ODCS Document → Parser → Canonical Object Model → Validator → Diagnostics

Execution, pipeline composition, and transformation semantics remain out of scope. See docs/implementation/non-goals.md.

Repository layout

odcs/
├── SPEC.md                 # Upstream specification policy
├── Cargo.toml              # Rust crate manifest
├── pyproject.toml          # Python package manifest (`pyodcs`, maturin)
├── README.md
├── CONTRIBUTING.md
├── LICENSE
├── docs/
│   ├── README.md           # Documentation index
│   └── implementation/     # Reference implementation guides
├── examples/               # Example data contracts
├── python/                 # Python package source (`pyodcs`)
├── src/                    # Rust library, CLI binary, validation
├── tests/                  # Integration tests and fixtures
└── .cursor/prompts/        # Cursor build prompt

Contributing

See CONTRIBUTING.md for implementation guidelines and the review process.

When implementation guidance conflicts with the upstream ODCS specification, the upstream specification 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

pyodcs-0.2.0.tar.gz (30.5 kB view details)

Uploaded Source

Built Distributions

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

pyodcs-0.2.0-cp39-abi3-win_arm64.whl (407.4 kB view details)

Uploaded CPython 3.9+Windows ARM64

pyodcs-0.2.0-cp39-abi3-win_amd64.whl (424.3 kB view details)

Uploaded CPython 3.9+Windows x86-64

pyodcs-0.2.0-cp39-abi3-win32.whl (397.4 kB view details)

Uploaded CPython 3.9+Windows x86

pyodcs-0.2.0-cp39-abi3-musllinux_1_2_x86_64.whl (799.6 kB view details)

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

pyodcs-0.2.0-cp39-abi3-musllinux_1_2_i686.whl (836.9 kB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ i686

pyodcs-0.2.0-cp39-abi3-musllinux_1_2_armv7l.whl (857.9 kB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARMv7l

pyodcs-0.2.0-cp39-abi3-musllinux_1_2_aarch64.whl (757.0 kB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARM64

pyodcs-0.2.0-cp39-abi3-manylinux_2_28_aarch64.whl (584.6 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ ARM64

pyodcs-0.2.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (598.2 kB view details)

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

pyodcs-0.2.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (634.9 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ s390x

pyodcs-0.2.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (883.8 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ppc64le

pyodcs-0.2.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (592.6 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARMv7l

pyodcs-0.2.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl (634.3 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.5+ i686

pyodcs-0.2.0-cp39-abi3-macosx_11_0_arm64.whl (526.9 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

pyodcs-0.2.0-cp39-abi3-macosx_10_12_x86_64.whl (534.5 kB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

Details for the file pyodcs-0.2.0.tar.gz.

File metadata

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

File hashes

Hashes for pyodcs-0.2.0.tar.gz
Algorithm Hash digest
SHA256 8c55d17d90e337257a0229f0f844a3cdaa2126f496f230ce30140da2debaea2c
MD5 b6beff9fb364a16d65c816049bc47170
BLAKE2b-256 b2c22ef4f3779a4f8e4ae34cf7b4386fea44047a126bbbda9441bb2b52c3ec5e

See more details on using hashes here.

File details

Details for the file pyodcs-0.2.0-cp39-abi3-win_arm64.whl.

File metadata

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

File hashes

Hashes for pyodcs-0.2.0-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 e716521552348f24f89c35e016fe749d4369ba24dbca2ac78c4ea707a785cb7b
MD5 e2819dadf289a3c88bf96420efe9eb70
BLAKE2b-256 4ee70e7521f3af76529844ef16cce5967cef00b883316c5025235b20505386a7

See more details on using hashes here.

File details

Details for the file pyodcs-0.2.0-cp39-abi3-win_amd64.whl.

File metadata

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

File hashes

Hashes for pyodcs-0.2.0-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1813016a5f00c767e89facf703fcd12a522529b11000e667fe2e4f7ca11c4a70
MD5 2516732b623d68d20e9787b1682b1e05
BLAKE2b-256 a6c3bbccef6e93a7fb10974a2e148493a43e2c7d1c45b771920af819ee034f97

See more details on using hashes here.

File details

Details for the file pyodcs-0.2.0-cp39-abi3-win32.whl.

File metadata

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

File hashes

Hashes for pyodcs-0.2.0-cp39-abi3-win32.whl
Algorithm Hash digest
SHA256 453dbeb640a78da3ea163d2515aa1c92b1f795933c5ba22c1d31a142e3e7b9b5
MD5 32badd44c1179bd63b8ccef38556b6db
BLAKE2b-256 df9bab6163db89cb07acc6d3574ce5f76627792b67b7ed686f56b73582fe2d22

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.2.0-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bef466b4b348b885af598dc23db57f463d8c8c93c6fb7df7bc70f7a66fe8b71f
MD5 9bbe68a1eccd1473abb1631e7220ba8c
BLAKE2b-256 9e900614ded15224e8c826b66e11f1eb4b4e0b56d66c07a0d62dd23ebfe17c36

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.2.0-cp39-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 496b412ec2ac425cb6aae970b59657d2af17247530b624259c5d2bf21d6d6e02
MD5 9da56e1c96a80c2b1aac8282db8c4802
BLAKE2b-256 67b1cc34bd0957d542897bf4df8f39d76e1d0788c6cd7b7fe8ac08262551a3b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.2.0-cp39-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 a7b8b38e4eb4322ade887375113a84f19f385d631ee2308ea05d4f01cab92054
MD5 f925428f125149918ab41bb66b4bb005
BLAKE2b-256 d76914d77f8f53c11882de96e68003268a3833cdc667c2cfba1a8a08feec025f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.2.0-cp39-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9013c6e30ee579f5face6a114431acd8319747b10714c77c8c9bc539137513fd
MD5 d30a91f931a4cae11b5589698c1d84e0
BLAKE2b-256 e3cfaa9c19afb000f5cb6a13cc6ee1586d305d3daf140c86d4aad901dc5d30c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.2.0-cp39-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b4a491c1961c0b85fa5f6732173a3030bc0aa86195b943e20711c7dd55f10a03
MD5 bb96756f128fbeee36d1c0c716e003a8
BLAKE2b-256 4013682bbf90efaaae92b06f2370cc6f11ea1ce47238b99906d314b3a861fac2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.2.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4c647731ac558011e278790bb1f91061d8625ce12d25475d6d8d3377448a31cb
MD5 0a28caf24d08c03da22a275cc4f7766a
BLAKE2b-256 136bd1378253cc1ee88493f92d163104fdb9bac9487c192b404e64bb8fead6a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.2.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 a862e1fc920f40616338be2a2bef5066970e18de3bb6c5369fda15b07cbfa46e
MD5 425bac4ed6c1ea3ecdb90c91e8718027
BLAKE2b-256 bac3afe26c9dbd60811930b0802059b85f401ffa262c6666a61842280aefbf94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.2.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 5fb34138be8b43c8282c5658b269d7df2c53eff03fde4676ed9675035c2576e7
MD5 09a9093379d3c0a15309d41818807f3d
BLAKE2b-256 2cdf73fb29fcd1f087861abf27f2070df6717920ef2ce6e6888208b0e120bfa8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.2.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 fa692ba093a388924c4895244a10d3ab1408a113cb87c40cfeaa0385b5b36c95
MD5 cbcda7020878135c7b49c9bc2df5a887
BLAKE2b-256 8d8dfde4f33a923431df357228eb96cb2d0a3438e30af2c53bbb0ed9f3e6b267

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.2.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 a706e0c9a9bb9b1034e2b991f72609bbddd9856d298818591a6aa0965500ba00
MD5 46a2972a129431fbe64dd1f670348c20
BLAKE2b-256 2bd03ee57615e38bc87fa042c06f7cb166115d26f53511e841aaa9a1c0382b2e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.2.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4bbf3e03568cfaded5a2b5d1865d85ba908213e2c538bc53b3006ea02ef55f30
MD5 c82f12bec9ad12f53fb06673e3e5b8f4
BLAKE2b-256 b073aa2e7e595e59c441e632667019b83ee55300be9b2f954aaf44acd1d80424

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.2.0-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 08834f5e728741a7dd6c3b5768b2c41ca232d303523609cce7d1569beba8f240
MD5 cb9cbf46961909a4ec0dd495eea2df4e
BLAKE2b-256 c893db4eac051d36c249ed51add326d4da9d37c4055020d587c0c3ba0b99bf97

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