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.
Metadata
Release files for pyodcs 0.9.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyodcs-0.9.1.tar.gz | 172.5 kB | Details |
Built distributions (wheels)
Total release size: 50.6 MB
Release files / pyodcs-0.9.1.tar.gz
| Download URL | pyodcs-0.9.1.tar.gz |
|---|---|
| Size | 172.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
61d7479d8d20c72c0b457cc68c6de3cfd5552074fcefd8abbf93d728b12f2f8a
|
|
BLAKE2b-256 checksum How to use checksums |
84533ea02624de3aa29254d2d2e1c53e4b5fea8eab4ebef12eca15438085340f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / pyodcs-0.9.1-cp39-abi3-win_arm64.whl
| Download URL | pyodcs-0.9.1-cp39-abi3-win_arm64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.9 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
3f50503b16089d6088f41361d9e541397b019af70a0c6928ae59e9eb4e97a145
|
|
BLAKE2b-256 checksum How to use checksums |
c3c292c13b088a52d1f99a0d23d0e5f5138684da12d378855ebc8af11bdb6524
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / pyodcs-0.9.1-cp39-abi3-win_amd64.whl
| Download URL | pyodcs-0.9.1-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
eca7a71050a836298b2c8f21b8532641ade9bf768344fcb4844da645d8215981
|
|
BLAKE2b-256 checksum How to use checksums |
2b1d09cc3e947941d9983656d47a5a1854187f3f2b3fc1fc804cba0856d29b9e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / pyodcs-0.9.1-cp39-abi3-win32.whl
| Download URL | pyodcs-0.9.1-cp39-abi3-win32.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.9 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
cda10203c02ec143e7d6527937a0af8017302a52895140953143ed035f185e41
|
|
BLAKE2b-256 checksum How to use checksums |
c59ece8620c502f47fa136bd2e269b05cd6081da422114ceeec9398d237a334a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / pyodcs-0.9.1-cp39-abi3-musllinux_1_2_x86_64.whl
| Download URL | pyodcs-0.9.1-cp39-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
938e4e3f23d0e6c1a55e14bab2cb72244ac52b47e0c6e1a929354f8bf36befdb
|
|
BLAKE2b-256 checksum How to use checksums |
f903bb2e1ba444abc7892556a5d721fcad3863cc62685de8093e9f568f1dbfb2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / pyodcs-0.9.1-cp39-abi3-musllinux_1_2_i686.whl
| Download URL | pyodcs-0.9.1-cp39-abi3-musllinux_1_2_i686.whl |
|---|---|
| Size | 3.7 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
e3aae21e49823e4079a3af33856346ca25616e842f1ee43d42f41cc39f13a5bc
|
|
BLAKE2b-256 checksum How to use checksums |
7baa9878eeb9021346281c3f7f7b1b217eec1027bb3c347f570bc33a4f81af19
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / pyodcs-0.9.1-cp39-abi3-musllinux_1_2_armv7l.whl
| Download URL | pyodcs-0.9.1-cp39-abi3-musllinux_1_2_armv7l.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.9 Linux musl 1.2+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
d9b6f2c8b1aa41f5f4620779f83082b9a3cd0b638d4b914b8798212449d58c60
|
|
BLAKE2b-256 checksum How to use checksums |
c5c91711db31d6971a13ecb53048515aa91b3d13520f4a02c9731e91107d8853
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / pyodcs-0.9.1-cp39-abi3-musllinux_1_2_aarch64.whl
| Download URL | pyodcs-0.9.1-cp39-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.9 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
6b215fb40469b64ab4b50f0f9ed633228243c55e7855439f3c44180922e9a4ad
|
|
BLAKE2b-256 checksum How to use checksums |
232c0b788a49d51f44dbeb0a9f8686e069d5b32ae840cc2b1be608a7a7041b78
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / pyodcs-0.9.1-cp39-abi3-manylinux_2_28_aarch64.whl
| Download URL | pyodcs-0.9.1-cp39-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 3.4 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
d020a57e77c8597ac64ab6360185aa941b99e67cf551d95429478e2a40a7fbb7
|
|
BLAKE2b-256 checksum How to use checksums |
fa9022cae9bf09e48bddefbdd35ff4202147b3501e5cfd11f9d242ac7e61cbab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / pyodcs-0.9.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pyodcs-0.9.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 3.4 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
0a01c5a2cd5a6a640d2e68bafd4a3f4aafc4eb1f6d1c360d98870418a23107cd
|
|
BLAKE2b-256 checksum How to use checksums |
2c015ec2371ab4c0830a0426ba6cb324a1878225c38cc6b365db2f5feba77bf3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / pyodcs-0.9.1-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
| Download URL | pyodcs-0.9.1-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl |
|---|---|
| Size | 3.5 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ IBM System/390x abi3 |
|
SHA-256 checksum How to use checksums |
f8588f7db2abfd6c4d9795e5467c19bf188600d1ccc619147e706699d834f72b
|
|
BLAKE2b-256 checksum How to use checksums |
d4697565225b47818a395e791a743232ccae00df21b016809b314d1b137e7ad0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / pyodcs-0.9.1-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
| Download URL | pyodcs-0.9.1-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl |
|---|---|
| Size | 4.0 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ PowerPC 64-le abi3 |
|
SHA-256 checksum How to use checksums |
0a0ec7247a08ff641fb2aa6a8d6613bcfaa385db4a7039739b103deed600c864
|
|
BLAKE2b-256 checksum How to use checksums |
454ed5ec61e16f5fd44c29100c06d441f1311d3a795faac0d4a01238ece819c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / pyodcs-0.9.1-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | pyodcs-0.9.1-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 3.7 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
04f8a288aa37c722fc6237dd0180ae235d791d6e95e59823b7f2bb7e56804ec4
|
|
BLAKE2b-256 checksum How to use checksums |
4242a6098df9df5def4961433aef10b40a9031a9f0ba1afc9210f7ddf7c089be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / pyodcs-0.9.1-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
| Download URL | pyodcs-0.9.1-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl |
|---|---|
| Size | 3.3 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
dcb9608a97cb544993c0042ce500baac0296958d80236a5a632ae09ab09056c1
|
|
BLAKE2b-256 checksum How to use checksums |
d5a733ab941888292abbb08df78bdd24db34d00df6df8384e89f698b411285d3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / pyodcs-0.9.1-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | pyodcs-0.9.1-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.1 MB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
de63ee42281b488fd88f3620048e0cf63024d2da8530688d743be5fe476db642
|
|
BLAKE2b-256 checksum How to use checksums |
26555e277397af1850828ff59d3eaac5ce0c55d90cc9521d66477b0c11d421c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / pyodcs-0.9.1-cp39-abi3-macosx_10_12_x86_64.whl
| Download URL | pyodcs-0.9.1-cp39-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.9 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
46f4c75eb403cccc3b536e70acd415cc8fc2cbdf71e443f9e460045d5df96830
|
|
BLAKE2b-256 checksum How to use checksums |
3554c2698476515881d0877726619a768e9b70d4712ccf5591053b4f636fc490
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|