Skip to main content

odcs — Rust & Python reference implementation for ODCS

CI Crates.io PyPI Documentation License

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 on main, 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)

Source distribution for pyodcs 0.9.1
File Size Uploaded
pyodcs-0.9.1.tar.gz 172.5 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for pyodcs 0.9.1
File
pyodcs-0.9.1-cp39-abi3-win_arm64.whl CPython 3.9 abi3 Windows ARM64 Details
pyodcs-0.9.1-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
pyodcs-0.9.1-cp39-abi3-win32.whl CPython 3.9 abi3 Windows x86-32 Details
pyodcs-0.9.1-cp39-abi3-musllinux_1_2_x86_64.whl CPython 3.9 abi3 Linux musl 1.2+ x86-64 Details
pyodcs-0.9.1-cp39-abi3-musllinux_1_2_i686.whl CPython 3.9 abi3 Linux musl 1.2+ x86-32 Details
pyodcs-0.9.1-cp39-abi3-musllinux_1_2_armv7l.whl CPython 3.9 abi3 Linux musl 1.2+ ARMv7l Details
pyodcs-0.9.1-cp39-abi3-musllinux_1_2_aarch64.whl CPython 3.9 abi3 Linux musl 1.2+ ARM64 Details
pyodcs-0.9.1-cp39-abi3-manylinux_2_28_aarch64.whl CPython 3.9 abi3 Linux glibc 2.28+ ARM64 Details
pyodcs-0.9.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-64 Details
pyodcs-0.9.1-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl CPython 3.9 abi3 Linux glibc 2.17+ IBM System/390x Details
pyodcs-0.9.1-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl CPython 3.9 abi3 Linux glibc 2.17+ PowerPC 64-le Details
pyodcs-0.9.1-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-32 Details
pyodcs-0.9.1-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.9 abi3 Linux glibc 2.17+ ARMv7l Details
pyodcs-0.9.1-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details
pyodcs-0.9.1-cp39-abi3-macosx_10_12_x86_64.whl CPython 3.9 abi3 macOS 10.12+ x86-64 Details

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

Release history Release notifications | RSS feed

This release

0.9.1 This release

16 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page