Reference implementation of the Open Data Contract Standard (ODCS)
Project description
odcs — Rust & Python reference implementation for ODCS
Reference implementation, not the specification. This repo validates ODCS documents. The normative Open Data Contract Standard (ODCS) is maintained by Bitol.
odcs validates ODCS YAML/JSON files locally and in CI.
It checks that your contract document is well-formed and conforms to ODCS v3.1.0 — schema, quality rules, SLAs, ownership, and server metadata. It does not run quality checks against live data.
Release: 0.9.1 on
main(0.9.0 on crates.io and PyPI until v0.9.1 ships). 1.0.0 stabilization is complete onmain, pending release tag and registry publish — see Release status and API stability policy.
Install → validate in 60 seconds:
cargo install odcs # or: pip install pyodcs
odcs version # odcs 0.9.1 (upstream ODCS 3.1.0)
pyodcs version # pyodcs 0.9.1 (upstream ODCS 3.1.0); use --json for crateVersion JSON
odcs validate contract.yaml
New to ODCS? Read What is ODCS? first.
| Upstream ODCS | 3.1.0 |
| Rust crate | odcs |
| Python package | pyodcs |
| Documentation | odcs.readthedocs.io |
| Rust API docs | docs.rs/odcs |
Quick start
Copy examples/minimal.odcs.yaml or save as contract.yaml (.yaml and .odcs.yaml both work):
version: "1.0.0" # your contract revision
apiVersion: "v3.1.0" # ODCS spec release — not the same as version
kind: "DataContract"
id: "hello-contract"
status: "draft"
schema:
- name: customers
logicalType: object
properties:
- name: customer_id
logicalType: string
required: true
odcs validate contract.yaml # prints: valid
On failure, diagnostics include stable codes and paths:
[error] odcs:invalid-kind: expected kind 'DataContract', got 'WrongKind'
at: kind
See Diagnostics and Troubleshooting.
From code:
import pyodcs
report = pyodcs.parse_and_validate(open("contract.yaml", "rb").read(), format="yaml")
assert pyodcs.is_valid(report)
Full walkthrough: Getting started · Installation
Documentation
Full docs: odcs.readthedocs.io
| I want to… | Read |
|---|---|
| Learn what ODCS is | What is ODCS? |
| Get started in 5 minutes | Getting started |
| Install Rust or Python | Installation |
| Choose the right API | API decision guide |
| Use the CLI | CLI |
| Integrate in CI/CD | CI/CD |
| Fix validation errors | Troubleshooting |
| Browse examples | Examples |
| Local registry & cross-file refs | Local registry · examples/registry/ |
| Compare contract revisions | Compatibility analysis |
| Contribute | Contributing |
| Upstream sync policy (maintainers) | SPEC.md |
| Report a security issue | SECURITY.md |
Status: 0.9.1 on main (0.9.0 published); 1.0 stabilization complete, pending release — Release status · API stability · ROADMAP.md
This repository implements the standard; it is not the ODCS specification itself.
Pipeline
ODCS Document → Parser → Canonical Object Model → Validator → Diagnostics
Execution, pipeline composition, and transformation semantics are out of scope. See non-goals.
Contributing
See CONTRIBUTING.md. Run ./scripts/check.sh before opening a PR. When implementation guidance conflicts with the upstream ODCS specification, the upstream specification wins.
License
Apache License 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.9.1.tar.gz.
File metadata
- Download URL: pyodcs-0.9.1.tar.gz
- Upload date:
- Size: 172.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61d7479d8d20c72c0b457cc68c6de3cfd5552074fcefd8abbf93d728b12f2f8a
|
|
| MD5 |
c73680d3bebc75a78b3ce000845cdb43
|
|
| BLAKE2b-256 |
84533ea02624de3aa29254d2d2e1c53e4b5fea8eab4ebef12eca15438085340f
|
File details
Details for the file pyodcs-0.9.1-cp39-abi3-win_arm64.whl.
File metadata
- Download URL: pyodcs-0.9.1-cp39-abi3-win_arm64.whl
- Upload date:
- Size: 2.8 MB
- Tags: CPython 3.9+, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f50503b16089d6088f41361d9e541397b019af70a0c6928ae59e9eb4e97a145
|
|
| MD5 |
dcee3c2df14ee2f8c6736e00886fafbe
|
|
| BLAKE2b-256 |
c3c292c13b088a52d1f99a0d23d0e5f5138684da12d378855ebc8af11bdb6524
|
File details
Details for the file pyodcs-0.9.1-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: pyodcs-0.9.1-cp39-abi3-win_amd64.whl
- Upload date:
- Size: 3.0 MB
- Tags: CPython 3.9+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eca7a71050a836298b2c8f21b8532641ade9bf768344fcb4844da645d8215981
|
|
| MD5 |
e3d6659b41dc43ebd2c79c573d57b58c
|
|
| BLAKE2b-256 |
2b1d09cc3e947941d9983656d47a5a1854187f3f2b3fc1fc804cba0856d29b9e
|
File details
Details for the file pyodcs-0.9.1-cp39-abi3-win32.whl.
File metadata
- Download URL: pyodcs-0.9.1-cp39-abi3-win32.whl
- Upload date:
- Size: 2.7 MB
- Tags: CPython 3.9+, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cda10203c02ec143e7d6527937a0af8017302a52895140953143ed035f185e41
|
|
| MD5 |
fb80cb0a0d0c0c0985f940d51ac84d7a
|
|
| BLAKE2b-256 |
c59ece8620c502f47fa136bd2e269b05cd6081da422114ceeec9398d237a334a
|
File details
Details for the file pyodcs-0.9.1-cp39-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pyodcs-0.9.1-cp39-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 3.7 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 |
938e4e3f23d0e6c1a55e14bab2cb72244ac52b47e0c6e1a929354f8bf36befdb
|
|
| MD5 |
5a3b59582e9407dab227bfa788f87c05
|
|
| BLAKE2b-256 |
f903bb2e1ba444abc7892556a5d721fcad3863cc62685de8093e9f568f1dbfb2
|
File details
Details for the file pyodcs-0.9.1-cp39-abi3-musllinux_1_2_i686.whl.
File metadata
- Download URL: pyodcs-0.9.1-cp39-abi3-musllinux_1_2_i686.whl
- Upload date:
- Size: 3.7 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 |
e3aae21e49823e4079a3af33856346ca25616e842f1ee43d42f41cc39f13a5bc
|
|
| MD5 |
c04c38f9d8c9b1a17d496d63517c5fcd
|
|
| BLAKE2b-256 |
7baa9878eeb9021346281c3f7f7b1b217eec1027bb3c347f570bc33a4f81af19
|
File details
Details for the file pyodcs-0.9.1-cp39-abi3-musllinux_1_2_armv7l.whl.
File metadata
- Download URL: pyodcs-0.9.1-cp39-abi3-musllinux_1_2_armv7l.whl
- Upload date:
- Size: 3.6 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 |
d9b6f2c8b1aa41f5f4620779f83082b9a3cd0b638d4b914b8798212449d58c60
|
|
| MD5 |
a545489929052a1b635bb7e58db29e4b
|
|
| BLAKE2b-256 |
c5c91711db31d6971a13ecb53048515aa91b3d13520f4a02c9731e91107d8853
|
File details
Details for the file pyodcs-0.9.1-cp39-abi3-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pyodcs-0.9.1-cp39-abi3-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 3.6 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 |
6b215fb40469b64ab4b50f0f9ed633228243c55e7855439f3c44180922e9a4ad
|
|
| MD5 |
767452bc6f5677d8221b755be801029e
|
|
| BLAKE2b-256 |
232c0b788a49d51f44dbeb0a9f8686e069d5b32ae840cc2b1be608a7a7041b78
|
File details
Details for the file pyodcs-0.9.1-cp39-abi3-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: pyodcs-0.9.1-cp39-abi3-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 3.4 MB
- 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 |
d020a57e77c8597ac64ab6360185aa941b99e67cf551d95429478e2a40a7fbb7
|
|
| MD5 |
92b733f2a4de12c28a1779bcfe5cf058
|
|
| BLAKE2b-256 |
fa9022cae9bf09e48bddefbdd35ff4202147b3501e5cfd11f9d242ac7e61cbab
|
File details
Details for the file pyodcs-0.9.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pyodcs-0.9.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 3.4 MB
- 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 |
0a01c5a2cd5a6a640d2e68bafd4a3f4aafc4eb1f6d1c360d98870418a23107cd
|
|
| MD5 |
592bfc60a74f07f53ea49fd1a2e97077
|
|
| BLAKE2b-256 |
2c015ec2371ab4c0830a0426ba6cb324a1878225c38cc6b365db2f5feba77bf3
|
File details
Details for the file pyodcs-0.9.1-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.
File metadata
- Download URL: pyodcs-0.9.1-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
- Upload date:
- Size: 3.5 MB
- 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 |
f8588f7db2abfd6c4d9795e5467c19bf188600d1ccc619147e706699d834f72b
|
|
| MD5 |
60cdb4d8ba617ee6d41a3d0b2ed6dbc3
|
|
| BLAKE2b-256 |
d4697565225b47818a395e791a743232ccae00df21b016809b314d1b137e7ad0
|
File details
Details for the file pyodcs-0.9.1-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.
File metadata
- Download URL: pyodcs-0.9.1-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
- Upload date:
- Size: 4.0 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 |
0a0ec7247a08ff641fb2aa6a8d6613bcfaa385db4a7039739b103deed600c864
|
|
| MD5 |
809ad9c8072a9286aa98566de8fa69bb
|
|
| BLAKE2b-256 |
454ed5ec61e16f5fd44c29100c06d441f1311d3a795faac0d4a01238ece819c2
|
File details
Details for the file pyodcs-0.9.1-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.
File metadata
- Download URL: pyodcs-0.9.1-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 3.7 MB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04f8a288aa37c722fc6237dd0180ae235d791d6e95e59823b7f2bb7e56804ec4
|
|
| MD5 |
be2e28a344cb198a36454bc0040e96ed
|
|
| BLAKE2b-256 |
4242a6098df9df5def4961433aef10b40a9031a9f0ba1afc9210f7ddf7c089be
|
File details
Details for the file pyodcs-0.9.1-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.
File metadata
- Download URL: pyodcs-0.9.1-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
- Upload date:
- Size: 3.3 MB
- 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 |
dcb9608a97cb544993c0042ce500baac0296958d80236a5a632ae09ab09056c1
|
|
| MD5 |
11b636f2d65b059b2a092677fbcfe52c
|
|
| BLAKE2b-256 |
d5a733ab941888292abbb08df78bdd24db34d00df6df8384e89f698b411285d3
|
File details
Details for the file pyodcs-0.9.1-cp39-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: pyodcs-0.9.1-cp39-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 3.1 MB
- 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 |
de63ee42281b488fd88f3620048e0cf63024d2da8530688d743be5fe476db642
|
|
| MD5 |
3bdc4c8f817754cde19f11c7fe23e2b7
|
|
| BLAKE2b-256 |
26555e277397af1850828ff59d3eaac5ce0c55d90cc9521d66477b0c11d421c9
|
File details
Details for the file pyodcs-0.9.1-cp39-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: pyodcs-0.9.1-cp39-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 3.2 MB
- 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 |
46f4c75eb403cccc3b536e70acd415cc8fc2cbdf71e443f9e460045d5df96830
|
|
| MD5 |
69095d36e5902d3890fe2dc9b60cd050
|
|
| BLAKE2b-256 |
3554c2698476515881d0877726619a768e9b70d4712ccf5591053b4f636fc490
|