Skip to main content

Python SDK and AI agent toolkit for the OpenDataProducts.org standards family, supporting ODPS, ODPC, ODPG, ODPV, MCP, CLI workflows, and LLM-assisted generation

Project description

Open Data Products Python SDK

PyPI version Python Support License: Apache-2.0

open-data-products is a Python SDK and CLI for the OpenDataProducts.org standards family: ODPS, ODPC, ODPG, ODPV, and ODPR.

Use it to validate data product documents, build catalogs and graphs, inspect portfolio source intake, run LLM-assisted generation workflows, expose a local MCP server, and give AI agents a consistent standards-aware API.

Install

pip install open-data-products

Optional extras:

# Outlook .msg intake support
pip install "open-data-products[email]"

# Data Contract CLI integration
pip install "open-data-products[contracts]"

# Embedded llama.cpp generation support
pip install "open-data-products[llama-cpp]"

# Development tools
pip install "open-data-products[dev]"

Python 3.8 or newer is required.

What It Provides

Area Capabilities
Cross-spec API Detect, load, validate, explain, summarize, and resolve references across ODPS, ODPC, ODPG, and ODPV documents
CLI Run validation, generation, catalog, graph, vocabulary, portfolio, OKF, contract, resource, manifest, and MCP workflows through open-data-products
Portfolio workflows Build, refresh, sync, render, localize, explain, and inspect portfolio workspaces from objectives, use cases, signals, and product source lanes
Document intake Read Markdown, text, YAML, JSON, EML, MSG with the email extra, DOCX, PPTX, PDF, CSV, and XLSX source files for portfolio workflows
Agent surfaces Run a safe-class stdio MCP server and generate an ARWS-compatible agent manifest
LLM generation Generate ODPC fragments, ODPG graphs, and ODPS product YAML from source notes using local or hosted providers
Data Contracts Resolve ODPS contract references, validate external contracts through optional datacontract-cli, extract schemas, check alignment, and generate reports

Quick CLI Examples

Most commands print human-readable output by default. Add --json for CI, scripts, MCP clients, and agents.

Run the SDK through Python:

# Validate and inspect standards documents
python3 -m open_data_products.cli validate examples/product.yaml
python3 -m open_data_products.cli explain examples/product.yaml --json
python3 -m open_data_products.cli refs examples/product.yaml --json
python3 -m open_data_products.cli summary examples/product.yaml

# Discover bundled schemas, prompts, vocabulary records, and guidance
python3 -m open_data_products.cli resources --json
python3 -m open_data_products.cli resources --id generation.prompt.system --json

# Agent surfaces
python3 -m open_data_products.cli manifest --json
python3 -m open_data_products.cli serve

After installation, the console script provides the same commands:

open-data-products validate examples/product.yaml
open-data-products explain examples/product.yaml --json

Portfolio source intake can be inspected without calling an LLM:

python3 -m open_data_products.cli portfolio intake \
  --objectives sources/objectives/ \
  --use-cases sources/use-cases/ \
  --signals sources/signals/ \
  --products sources/products/ \
  --config generation.config.yaml \
  --json

Portfolio build uses the same source lanes and prompt budget controls:

python3 -m open_data_products.cli portfolio build \
  --objectives sources/objectives/ \
  --use-cases sources/use-cases/ \
  --signals sources/signals/ \
  --products sources/products/ \
  --output generated/portfolio/

LLM Generation

Generation defaults to local Ollama-compatible settings, and can also use embedded llama.cpp, OpenAI-compatible local servers, NVIDIA NIM, Claude, and hosted providers configured in generation.config.yaml.

open-data-products config generation --copy-to generation.config.yaml
open-data-products config generation --config generation.config.yaml --check

open-data-products generate \
  --config generation.config.yaml \
  --input source_docs/products/ \
  --kind product-reference \
  --output generated/

Documentation

The full SDK guide that used to live in this README is now here:

Focused user guides:

Project references:

Development

git clone https://github.com/Open-Data-Product-Initiative/odps-python
cd odps-python
pip install -e ".[dev]"
pytest -q

Before publishing a package, verify the PyPI description renders:

python3 -m build
python3 -m twine check dist/*

Acknowledgments

Thanks to the Open Data Product Initiative community, Chris Howard / Kitard for the original odps-python foundation, devlouie for the MCP layer and agent surface, and the Data Contract CLI project for the optional contract execution engine.

License

Apache License 2.0. See LICENSE for details.

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

open_data_products-0.3.5.tar.gz (3.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

open_data_products-0.3.5-py3-none-any.whl (432.5 kB view details)

Uploaded Python 3

File details

Details for the file open_data_products-0.3.5.tar.gz.

File metadata

  • Download URL: open_data_products-0.3.5.tar.gz
  • Upload date:
  • Size: 3.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for open_data_products-0.3.5.tar.gz
Algorithm Hash digest
SHA256 80c0aa1814c2c447776b19bcffeee10aeb34b38b178e8810cea4f3b37fa79ade
MD5 2bfc2e936df783acf49e85ac97d8576b
BLAKE2b-256 31e9a5c64760696623bbabe026ecb4c240e74fbcb52535c65620da1c46ca88f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_data_products-0.3.5.tar.gz:

Publisher: publish-pypi.yml on Open-Data-Product-Initiative/odp-agent-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file open_data_products-0.3.5-py3-none-any.whl.

File metadata

File hashes

Hashes for open_data_products-0.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 dd1bf6abf1bc90226e352a577fb5706ce95d4eff4835c19aa30fb589b8da32fd
MD5 b74e24de18bd3d7ac735e73c33996108
BLAKE2b-256 10f98c8ebcfc4985b3189ae97dcb937b0e1c7929f5338487ebe7f45ba1c93ed0

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_data_products-0.3.5-py3-none-any.whl:

Publisher: publish-pypi.yml on Open-Data-Product-Initiative/odp-agent-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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