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
Upstream ODCS version: 3.1.0
Reference implementation: 0.3.0 (Phase 2 & 3 — Canonical Object Model and Parsing)

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.3.0.tar.gz (48.9 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.3.0-cp39-abi3-win_arm64.whl (719.8 kB view details)

Uploaded CPython 3.9+Windows ARM64

pyodcs-0.3.0-cp39-abi3-win_amd64.whl (749.8 kB view details)

Uploaded CPython 3.9+Windows x86-64

pyodcs-0.3.0-cp39-abi3-win32.whl (657.3 kB view details)

Uploaded CPython 3.9+Windows x86

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

pyodcs-0.3.0-cp39-abi3-musllinux_1_2_i686.whl (1.1 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ i686

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

Uploaded CPython 3.9+musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.9+musllinux: musl 1.2+ ARM64

pyodcs-0.3.0-cp39-abi3-manylinux_2_28_aarch64.whl (852.8 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ ARM64

pyodcs-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (864.1 kB view details)

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

pyodcs-0.3.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (946.6 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ s390x

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

pyodcs-0.3.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (826.8 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARMv7l

pyodcs-0.3.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl (907.4 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.5+ i686

pyodcs-0.3.0-cp39-abi3-macosx_11_0_arm64.whl (782.0 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

pyodcs-0.3.0-cp39-abi3-macosx_10_12_x86_64.whl (796.6 kB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for pyodcs-0.3.0.tar.gz
Algorithm Hash digest
SHA256 2ce1e73af062b95ccc953d31803dea8551df5dc2d9d4d7442dfaaf9e34f14b08
MD5 dce9d9ef5dc3688121154e25de4ce120
BLAKE2b-256 9d0e77ff09e6ee6856a7771a8aade605941715d93a2293f65dc19412cd70db67

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pyodcs-0.3.0-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 8d7849d36f2ece840016cb17855ae83bb36949dfe53b15aa54822d7fa8023697
MD5 ab331615c6f68f36e029499203610250
BLAKE2b-256 d47fa20f00fa9db82d142286b796fe13beb7e8323b9a1aeac3e146223df1bad7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyodcs-0.3.0-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 749.8 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.3.0-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2f2ff6d93501633dad3c85c90c4e70ea413bb8187ba026181a65b361daffed4a
MD5 169388cbf815a5352c53d41027601633
BLAKE2b-256 56ff2951f1df82627c1785ea75b320616f7f2fe0c55fd9e39fcbc4aa8fe63a48

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pyodcs-0.3.0-cp39-abi3-win32.whl
Algorithm Hash digest
SHA256 1071eb5a4de996250a7881f49e8986d837f9c7022daacf95a028b0e5a4187a94
MD5 335fc833981a5d1f2d9e7aa6bcb44afa
BLAKE2b-256 43d6f44b45dfde72fc89a59a2ccae07cc2fd58617a3377fc7d301515fb3621ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.3.0-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 46ca7da558f2a2cbe79f170c54aac75a4292097e1d219e76cf6b1b326f178a17
MD5 9b04528aaa059877b077cb9db810715a
BLAKE2b-256 de95bb25860e703cf96f8ed7a21ccf7737fa8a710adead01b75e827c0bb49fc8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.3.0-cp39-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 7502ff6d65770c4114528efb74b643a28e700686f5af8200c7b6a724a4891bbe
MD5 1ac9e942fbfc555bc6398db800684d08
BLAKE2b-256 9158cb75bc8799ca432a834ddfa7b66af583c815171948cb9b7c46bb03e119f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.3.0-cp39-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 0a4531ac030c27867ea20244a22d676654e090731821100ee6d7a8b27d5d32cb
MD5 a70dbb0795d67a2cf635a17e2f7fdc43
BLAKE2b-256 18df08c086726e383ccfd37ae021f278e5315be09a7dac4420b20aedb0275116

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.3.0-cp39-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 81642aa49f44a8115b5d02745c96d533bee74cc09d4cf75c07cab2c5dd306fce
MD5 adffff49228f4e3018e5007d7228c725
BLAKE2b-256 3720f69b076339feb487058cbee2f56fa63738600ddc74901bd1ec2f2ccfd28f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.3.0-cp39-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ae31aeabf2423789dc355b92607a4ccaf857c7a3135fc0f1c7bf919e8b1d2d56
MD5 12b7ff76e79b3c11cd110616df626950
BLAKE2b-256 cea6bab7fcb47f8d74ee41ec7230c9ed833512bfa5233430a80eb45fc0d7a4eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eb77fe262368a6d9b626bb5739fad4e3baadbd20e3c6b20a0ebd83a60bf8dfae
MD5 a1d60fa6ff35a672fa112bbc1ec39309
BLAKE2b-256 573f1c945f163dd08e0398ac1fd37b87a1e215d2ae4181451f8b21b38a4e3dbf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.3.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 0994ad3dd1d73dcc1cf24207eb6b7f651bd9973d09c7a37a6eda4c14b9bffb8d
MD5 d0e0dc517078c2b997a9a82346253a4c
BLAKE2b-256 2aa09150006472264f39261c4f41089271619dc8285bb78a634392aab9c811d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.3.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 5ff8393600c66cff5787cfceb3c84953dea8ec2fe1b09ce8e2fd4d5ed621ee4f
MD5 16391b3d1769462295cfc7be4f1b5b9e
BLAKE2b-256 85d43b15470052159d67c9e4f5736f9df6982b9be1f0ee9be63a20bf1384e2cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.3.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 97623f5a10bb0a9bba2fcdb5432c3610c3bf146da1d62f5468a7133966674888
MD5 71a35ad91610c67cff3722bf467eab50
BLAKE2b-256 38e443e9c93a9984f52cdb2afc19644a7ac5bf5bdd718318729308602dd37037

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.3.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 b46a58c595370b0a781470917aea358bf86115867423b7617e06468343513e19
MD5 090da50fa5c2ce8d5a0c5a218798d453
BLAKE2b-256 31ec19ab9263a6c2e6599031278965f2359639b2fddb964ef070f0c086f9a431

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.3.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4e895d9b6309658ff15a51f9711c28205481a7c597571ad6f60d2f5e09a7a480
MD5 a9916bb2d9bb77bcbf4f322050f99623
BLAKE2b-256 af7dcadf1020b91454d223b12a30b89da1ac6b61c2e7cddf012ca3b5564b812c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.3.0-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1a7760efba3a62940594b62589a92b700869af81da05a798bc227740a3fdc399
MD5 c2919965cebae3705850c240a4731e18
BLAKE2b-256 262c23869f8df5398849f3223a3b5c032a8b2e79617688046a15c91e96b816e0

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