Skip to main content

Reference implementation of the Open Data Contract Standard (ODCS)

Project description

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.

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.9.1.tar.gz (172.5 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.9.1-cp39-abi3-win_arm64.whl (2.8 MB view details)

Uploaded CPython 3.9+Windows ARM64

pyodcs-0.9.1-cp39-abi3-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.9+Windows x86-64

pyodcs-0.9.1-cp39-abi3-win32.whl (2.7 MB view details)

Uploaded CPython 3.9+Windows x86

pyodcs-0.9.1-cp39-abi3-musllinux_1_2_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ x86-64

pyodcs-0.9.1-cp39-abi3-musllinux_1_2_i686.whl (3.7 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ i686

pyodcs-0.9.1-cp39-abi3-musllinux_1_2_armv7l.whl (3.6 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARMv7l

pyodcs-0.9.1-cp39-abi3-musllinux_1_2_aarch64.whl (3.6 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARM64

pyodcs-0.9.1-cp39-abi3-manylinux_2_28_aarch64.whl (3.4 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ ARM64

pyodcs-0.9.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.4 MB view details)

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

pyodcs-0.9.1-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (3.5 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ s390x

pyodcs-0.9.1-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (4.0 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ppc64le

pyodcs-0.9.1-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (3.7 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ i686

pyodcs-0.9.1-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.3 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARMv7l

pyodcs-0.9.1-cp39-abi3-macosx_11_0_arm64.whl (3.1 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

pyodcs-0.9.1-cp39-abi3-macosx_10_12_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

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

Hashes for pyodcs-0.9.1.tar.gz
Algorithm Hash digest
SHA256 61d7479d8d20c72c0b457cc68c6de3cfd5552074fcefd8abbf93d728b12f2f8a
MD5 c73680d3bebc75a78b3ce000845cdb43
BLAKE2b-256 84533ea02624de3aa29254d2d2e1c53e4b5fea8eab4ebef12eca15438085340f

See more details on using hashes here.

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

Hashes for pyodcs-0.9.1-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 3f50503b16089d6088f41361d9e541397b019af70a0c6928ae59e9eb4e97a145
MD5 dcee3c2df14ee2f8c6736e00886fafbe
BLAKE2b-256 c3c292c13b088a52d1f99a0d23d0e5f5138684da12d378855ebc8af11bdb6524

See more details on using hashes here.

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

Hashes for pyodcs-0.9.1-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 eca7a71050a836298b2c8f21b8532641ade9bf768344fcb4844da645d8215981
MD5 e3d6659b41dc43ebd2c79c573d57b58c
BLAKE2b-256 2b1d09cc3e947941d9983656d47a5a1854187f3f2b3fc1fc804cba0856d29b9e

See more details on using hashes here.

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

Hashes for pyodcs-0.9.1-cp39-abi3-win32.whl
Algorithm Hash digest
SHA256 cda10203c02ec143e7d6527937a0af8017302a52895140953143ed035f185e41
MD5 fb80cb0a0d0c0c0985f940d51ac84d7a
BLAKE2b-256 c59ece8620c502f47fa136bd2e269b05cd6081da422114ceeec9398d237a334a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.9.1-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 938e4e3f23d0e6c1a55e14bab2cb72244ac52b47e0c6e1a929354f8bf36befdb
MD5 5a3b59582e9407dab227bfa788f87c05
BLAKE2b-256 f903bb2e1ba444abc7892556a5d721fcad3863cc62685de8093e9f568f1dbfb2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.9.1-cp39-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 e3aae21e49823e4079a3af33856346ca25616e842f1ee43d42f41cc39f13a5bc
MD5 c04c38f9d8c9b1a17d496d63517c5fcd
BLAKE2b-256 7baa9878eeb9021346281c3f7f7b1b217eec1027bb3c347f570bc33a4f81af19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.9.1-cp39-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 d9b6f2c8b1aa41f5f4620779f83082b9a3cd0b638d4b914b8798212449d58c60
MD5 a545489929052a1b635bb7e58db29e4b
BLAKE2b-256 c5c91711db31d6971a13ecb53048515aa91b3d13520f4a02c9731e91107d8853

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.9.1-cp39-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6b215fb40469b64ab4b50f0f9ed633228243c55e7855439f3c44180922e9a4ad
MD5 767452bc6f5677d8221b755be801029e
BLAKE2b-256 232c0b788a49d51f44dbeb0a9f8686e069d5b32ae840cc2b1be608a7a7041b78

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.9.1-cp39-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d020a57e77c8597ac64ab6360185aa941b99e67cf551d95429478e2a40a7fbb7
MD5 92b733f2a4de12c28a1779bcfe5cf058
BLAKE2b-256 fa9022cae9bf09e48bddefbdd35ff4202147b3501e5cfd11f9d242ac7e61cbab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.9.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0a01c5a2cd5a6a640d2e68bafd4a3f4aafc4eb1f6d1c360d98870418a23107cd
MD5 592bfc60a74f07f53ea49fd1a2e97077
BLAKE2b-256 2c015ec2371ab4c0830a0426ba6cb324a1878225c38cc6b365db2f5feba77bf3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.9.1-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 f8588f7db2abfd6c4d9795e5467c19bf188600d1ccc619147e706699d834f72b
MD5 60cdb4d8ba617ee6d41a3d0b2ed6dbc3
BLAKE2b-256 d4697565225b47818a395e791a743232ccae00df21b016809b314d1b137e7ad0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.9.1-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 0a0ec7247a08ff641fb2aa6a8d6613bcfaa385db4a7039739b103deed600c864
MD5 809ad9c8072a9286aa98566de8fa69bb
BLAKE2b-256 454ed5ec61e16f5fd44c29100c06d441f1311d3a795faac0d4a01238ece819c2

See more details on using hashes here.

File details

Details for the file pyodcs-0.9.1-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pyodcs-0.9.1-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 04f8a288aa37c722fc6237dd0180ae235d791d6e95e59823b7f2bb7e56804ec4
MD5 be2e28a344cb198a36454bc0040e96ed
BLAKE2b-256 4242a6098df9df5def4961433aef10b40a9031a9f0ba1afc9210f7ddf7c089be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.9.1-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 dcb9608a97cb544993c0042ce500baac0296958d80236a5a632ae09ab09056c1
MD5 11b636f2d65b059b2a092677fbcfe52c
BLAKE2b-256 d5a733ab941888292abbb08df78bdd24db34d00df6df8384e89f698b411285d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.9.1-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 de63ee42281b488fd88f3620048e0cf63024d2da8530688d743be5fe476db642
MD5 3bdc4c8f817754cde19f11c7fe23e2b7
BLAKE2b-256 26555e277397af1850828ff59d3eaac5ce0c55d90cc9521d66477b0c11d421c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.9.1-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 46f4c75eb403cccc3b536e70acd415cc8fc2cbdf71e443f9e460045d5df96830
MD5 69095d36e5902d3890fe2dc9b60cd050
BLAKE2b-256 3554c2698476515881d0877726619a768e9b70d4712ccf5591053b4f636fc490

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