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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ce1e73af062b95ccc953d31803dea8551df5dc2d9d4d7442dfaaf9e34f14b08
|
|
| MD5 |
dce9d9ef5dc3688121154e25de4ce120
|
|
| BLAKE2b-256 |
9d0e77ff09e6ee6856a7771a8aade605941715d93a2293f65dc19412cd70db67
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d7849d36f2ece840016cb17855ae83bb36949dfe53b15aa54822d7fa8023697
|
|
| MD5 |
ab331615c6f68f36e029499203610250
|
|
| BLAKE2b-256 |
d47fa20f00fa9db82d142286b796fe13beb7e8323b9a1aeac3e146223df1bad7
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f2ff6d93501633dad3c85c90c4e70ea413bb8187ba026181a65b361daffed4a
|
|
| MD5 |
169388cbf815a5352c53d41027601633
|
|
| BLAKE2b-256 |
56ff2951f1df82627c1785ea75b320616f7f2fe0c55fd9e39fcbc4aa8fe63a48
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1071eb5a4de996250a7881f49e8986d837f9c7022daacf95a028b0e5a4187a94
|
|
| MD5 |
335fc833981a5d1f2d9e7aa6bcb44afa
|
|
| BLAKE2b-256 |
43d6f44b45dfde72fc89a59a2ccae07cc2fd58617a3377fc7d301515fb3621ab
|
File details
Details for the file pyodcs-0.3.0-cp39-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pyodcs-0.3.0-cp39-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.9+, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46ca7da558f2a2cbe79f170c54aac75a4292097e1d219e76cf6b1b326f178a17
|
|
| MD5 |
9b04528aaa059877b077cb9db810715a
|
|
| BLAKE2b-256 |
de95bb25860e703cf96f8ed7a21ccf7737fa8a710adead01b75e827c0bb49fc8
|
File details
Details for the file pyodcs-0.3.0-cp39-abi3-musllinux_1_2_i686.whl.
File metadata
- Download URL: pyodcs-0.3.0-cp39-abi3-musllinux_1_2_i686.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.9+, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7502ff6d65770c4114528efb74b643a28e700686f5af8200c7b6a724a4891bbe
|
|
| MD5 |
1ac9e942fbfc555bc6398db800684d08
|
|
| BLAKE2b-256 |
9158cb75bc8799ca432a834ddfa7b66af583c815171948cb9b7c46bb03e119f5
|
File details
Details for the file pyodcs-0.3.0-cp39-abi3-musllinux_1_2_armv7l.whl.
File metadata
- Download URL: pyodcs-0.3.0-cp39-abi3-musllinux_1_2_armv7l.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.9+, musllinux: musl 1.2+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a4531ac030c27867ea20244a22d676654e090731821100ee6d7a8b27d5d32cb
|
|
| MD5 |
a70dbb0795d67a2cf635a17e2f7fdc43
|
|
| BLAKE2b-256 |
18df08c086726e383ccfd37ae021f278e5315be09a7dac4420b20aedb0275116
|
File details
Details for the file pyodcs-0.3.0-cp39-abi3-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pyodcs-0.3.0-cp39-abi3-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.9+, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81642aa49f44a8115b5d02745c96d533bee74cc09d4cf75c07cab2c5dd306fce
|
|
| MD5 |
adffff49228f4e3018e5007d7228c725
|
|
| BLAKE2b-256 |
3720f69b076339feb487058cbee2f56fa63738600ddc74901bd1ec2f2ccfd28f
|
File details
Details for the file pyodcs-0.3.0-cp39-abi3-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: pyodcs-0.3.0-cp39-abi3-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 852.8 kB
- Tags: CPython 3.9+, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae31aeabf2423789dc355b92607a4ccaf857c7a3135fc0f1c7bf919e8b1d2d56
|
|
| MD5 |
12b7ff76e79b3c11cd110616df626950
|
|
| BLAKE2b-256 |
cea6bab7fcb47f8d74ee41ec7230c9ed833512bfa5233430a80eb45fc0d7a4eb
|
File details
Details for the file pyodcs-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pyodcs-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 864.1 kB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb77fe262368a6d9b626bb5739fad4e3baadbd20e3c6b20a0ebd83a60bf8dfae
|
|
| MD5 |
a1d60fa6ff35a672fa112bbc1ec39309
|
|
| BLAKE2b-256 |
573f1c945f163dd08e0398ac1fd37b87a1e215d2ae4181451f8b21b38a4e3dbf
|
File details
Details for the file pyodcs-0.3.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.
File metadata
- Download URL: pyodcs-0.3.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
- Upload date:
- Size: 946.6 kB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ s390x
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0994ad3dd1d73dcc1cf24207eb6b7f651bd9973d09c7a37a6eda4c14b9bffb8d
|
|
| MD5 |
d0e0dc517078c2b997a9a82346253a4c
|
|
| BLAKE2b-256 |
2aa09150006472264f39261c4f41089271619dc8285bb78a634392aab9c811d4
|
File details
Details for the file pyodcs-0.3.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.
File metadata
- Download URL: pyodcs-0.3.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ ppc64le
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ff8393600c66cff5787cfceb3c84953dea8ec2fe1b09ce8e2fd4d5ed621ee4f
|
|
| MD5 |
16391b3d1769462295cfc7be4f1b5b9e
|
|
| BLAKE2b-256 |
85d43b15470052159d67c9e4f5736f9df6982b9be1f0ee9be63a20bf1384e2cf
|
File details
Details for the file pyodcs-0.3.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.
File metadata
- Download URL: pyodcs-0.3.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
- Upload date:
- Size: 826.8 kB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97623f5a10bb0a9bba2fcdb5432c3610c3bf146da1d62f5468a7133966674888
|
|
| MD5 |
71a35ad91610c67cff3722bf467eab50
|
|
| BLAKE2b-256 |
38e443e9c93a9984f52cdb2afc19644a7ac5bf5bdd718318729308602dd37037
|
File details
Details for the file pyodcs-0.3.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl.
File metadata
- Download URL: pyodcs-0.3.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl
- Upload date:
- Size: 907.4 kB
- Tags: CPython 3.9+, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b46a58c595370b0a781470917aea358bf86115867423b7617e06468343513e19
|
|
| MD5 |
090da50fa5c2ce8d5a0c5a218798d453
|
|
| BLAKE2b-256 |
31ec19ab9263a6c2e6599031278965f2359639b2fddb964ef070f0c086f9a431
|
File details
Details for the file pyodcs-0.3.0-cp39-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: pyodcs-0.3.0-cp39-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 782.0 kB
- Tags: CPython 3.9+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e895d9b6309658ff15a51f9711c28205481a7c597571ad6f60d2f5e09a7a480
|
|
| MD5 |
a9916bb2d9bb77bcbf4f322050f99623
|
|
| BLAKE2b-256 |
af7dcadf1020b91454d223b12a30b89da1ac6b61c2e7cddf012ca3b5564b812c
|
File details
Details for the file pyodcs-0.3.0-cp39-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: pyodcs-0.3.0-cp39-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 796.6 kB
- Tags: CPython 3.9+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a7760efba3a62940594b62589a92b700869af81da05a798bc227740a3fdc399
|
|
| MD5 |
c2919965cebae3705850c240a4731e18
|
|
| BLAKE2b-256 |
262c23869f8df5398849f3223a3b5c032a8b2e79617688046a15c91e96b816e0
|