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

odcs validates Open Data Contract Standard (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.8.0 is on main and ready to publish. Push tag v0.8.0 to release to crates.io and PyPI. See Release status.

Install → validate in 60 seconds:

cargo install odcs   # or: pip install pyodcs
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

Save a minimal contract as contract.yaml:

version: "1.0.0"
apiVersion: "v3.1.0"
kind: "DataContract"
id: "hello-contract"
status: "draft"
schema:
  - name: customers
    properties:
      - name: customer_id
        logicalType: string
        required: true
odcs validate contract.yaml   # prints: valid

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
Contribute Contributing
Report a security issue SECURITY.md

Status: Alpha pre-1.0 — see ROADMAP.md and Release status.

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

Uploaded CPython 3.9+Windows ARM64

pyodcs-0.8.0-cp39-abi3-win_amd64.whl (2.9 MB view details)

Uploaded CPython 3.9+Windows x86-64

pyodcs-0.8.0-cp39-abi3-win32.whl (2.6 MB view details)

Uploaded CPython 3.9+Windows x86

pyodcs-0.8.0-cp39-abi3-musllinux_1_2_x86_64.whl (3.6 MB view details)

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

pyodcs-0.8.0-cp39-abi3-musllinux_1_2_i686.whl (3.6 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ i686

pyodcs-0.8.0-cp39-abi3-musllinux_1_2_armv7l.whl (3.5 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARMv7l

pyodcs-0.8.0-cp39-abi3-musllinux_1_2_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARM64

pyodcs-0.8.0-cp39-abi3-manylinux_2_28_aarch64.whl (3.3 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ ARM64

pyodcs-0.8.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

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

pyodcs-0.8.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (3.4 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ s390x

pyodcs-0.8.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (3.9 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ppc64le

pyodcs-0.8.0-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (3.6 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ i686

pyodcs-0.8.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.2 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARMv7l

pyodcs-0.8.0-cp39-abi3-macosx_11_0_arm64.whl (3.0 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

pyodcs-0.8.0-cp39-abi3-macosx_10_12_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

Details for the file pyodcs-0.8.0.tar.gz.

File metadata

  • Download URL: pyodcs-0.8.0.tar.gz
  • Upload date:
  • Size: 143.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for pyodcs-0.8.0.tar.gz
Algorithm Hash digest
SHA256 0bf0d60495228b0cd48b58603b521120763ded15ca951b1a16f58edd5d28ce3b
MD5 15736e59ad37a3c40dfa645c0d98e9d0
BLAKE2b-256 57429ca413e3c599616fd6da315e70527d27dde1c8eba6e070176022c7686d04

See more details on using hashes here.

File details

Details for the file pyodcs-0.8.0-cp39-abi3-win_arm64.whl.

File metadata

  • Download URL: pyodcs-0.8.0-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.8.0-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 d7d9c7f4bb9f26e0e92c9bac023f52a8050a9c85b92fce0c9472556070107a37
MD5 05592d2519dff941fab4514bd195fd75
BLAKE2b-256 6a99ff46e44fef4d931614c9e1038858d65856aa902247f4f1375979b58172d6

See more details on using hashes here.

File details

Details for the file pyodcs-0.8.0-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: pyodcs-0.8.0-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 2.9 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.8.0-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 942e52dd48ca2a675f70ef52c9845e41802ac89de08a165193bdd6b2cd2120c4
MD5 77a008ea2b13f6c44bdc4bd61ba0f008
BLAKE2b-256 95ac5f29f9c7d3cfcdd8e6723ca74d52baef620d7c7ccdddcbf214ca9d68de9b

See more details on using hashes here.

File details

Details for the file pyodcs-0.8.0-cp39-abi3-win32.whl.

File metadata

  • Download URL: pyodcs-0.8.0-cp39-abi3-win32.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.9+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for pyodcs-0.8.0-cp39-abi3-win32.whl
Algorithm Hash digest
SHA256 426cd9bbf004651c93e37ca61146e8dc87d98fba510daf29df0dafd7bc7683a0
MD5 b7caeb0afeedbe347b9dc2a83b581619
BLAKE2b-256 2337f9a399d5e253f51762111fa4d45fea3e5ec9a4ba059bc6760c24c363346f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.8.0-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 aac799ef300a4646190c4fd600d2f31bf4af6426694f5b3177f682659fb54087
MD5 e9d25082ecbcfbec364658cce0688bee
BLAKE2b-256 3a86b778ee6839a004b2476b122c81bb5a722c5990f39ebc787ebb992cba9583

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.8.0-cp39-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 4aaafc45d229a9e7ed1c5bb88ae0df885ff048a743d4eb864d295c4d999fe0e0
MD5 c90622b448317fc41bb9b622127c47c0
BLAKE2b-256 89dea550f8eb6b827c1414ccc01347295eb513a8b8b37b05d658fbd1b1b46ce6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.8.0-cp39-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 ab8212ac3ec1b6e4de3237792f1f37c3330ebecbd930bdff36a7d2d76c28b5af
MD5 e06dd1e216a056f1e885696e8ca48b44
BLAKE2b-256 748c7d5e7479dc47c369c7a6a91ae18c891a3cc67405736e7ac970918cc167d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.8.0-cp39-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 342ef26039f18520e24739b93e3085f60a6c6ce3e1b09acd6886d253bf65edb8
MD5 67e66705f72db574a35eff6e381565ea
BLAKE2b-256 9d5c1cb50dbf9986c9b7ea391d09fe536c517e158d3f28ae3618fdf2ef807a9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.8.0-cp39-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 32b334ac583ebac0d2d1d2cc2a16575377f499e4f4cb29fc4e01cf0531b9976b
MD5 e5e8df461ec8c599e5bb2dbcd13d1bb2
BLAKE2b-256 f1171775cfb86fd94ae73a03251f2c600a58dec425a7c342620d4073ca8a4712

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.8.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5b00e782476c0db8d6fca188212ba13c4941dd42986c5b99bcb95e3dd5993a5f
MD5 80f41a094ad18f9ecd49b742de36f0f1
BLAKE2b-256 373f67f15e4d0a28cff5f190ee21c8230734a59dfca0accd5b146f5448edc09a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.8.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 304bba7ac4430482fb88ce8b76605f9cc354304b8601385759af7835ce4eb08a
MD5 537470ca7c35e3e5acb5a553e4eb1c6a
BLAKE2b-256 f67911f20ee02d2184ad72428cd1e2c6919d11210e7840b7c1405b209a4d7afe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.8.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 46239c058bbe63b625c77a3f6ffca4a9e9f6df0d4e3af7d6629d0b6e538bb1fd
MD5 d2ada6931d56d760175f7dad7c7b90f0
BLAKE2b-256 9935f0f4fd996199e13863653d58168d1236e7ffe0b1de484ff96cda102cbef2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.8.0-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 de9a9f31585ead95f3dcea869934d4edd6c88f37454cbd3882cd04167d2a8971
MD5 b0e15b1e4d7148a67e0a07918195da70
BLAKE2b-256 652a84e9b57bded978345570900c53f34a3bc73f83fa9dcde8f117805842e47d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.8.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 d68bfe605e2b369451053eb653e1d739980ad1731f8cbd67838b2a13218b9fd6
MD5 6ff96f6b1b7c5fe038955dd628ec256e
BLAKE2b-256 632e0a37726b00936962386f29463812307a1d9e1810642bcabd9dc12cc17398

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.8.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8939ad77c07c8dae167d2cce9e87dc2136f6fbdcfe652b572c9fe12ce65a3cea
MD5 cedcc1310c75cc8a8bb611b77429f0f7
BLAKE2b-256 2b600dd76d7617fa96741fd0b9eee0ee05e28f11731291a5fb0686d20cdd0aa8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyodcs-0.8.0-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 abae29de53ed109a7a96aba5500814593953ea71cd975349ebbc53f2b6368def
MD5 395492ad5a1a8819c29d167c59d38cdd
BLAKE2b-256 e7633a5babd96ddaba2956108058343d54064ff3b288274130be8b74b1a42bf2

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