Data Product CLI
The dataproduct CLI is an open-source command-line tool for working with
data products defined with the
Open Data Product Standard (ODPS).
It is the data-product sibling of
datacontract-cli (which
targets the Open Data Contract Standard) and mirrors its technology and
release mechanism. The tool is written in Python and can be used standalone, in
CI/CD, or as a Python library.
The behavior of each command is specified in
specs/.
Install
uv tool install --python python3.11 dataproduct-cli
# or
pip install dataproduct-cli
Commands
init — create a data product
dataproduct init # writes ./dataproduct.odps.yaml
dataproduct init my.odps.yaml # custom path
dataproduct init --overwrite # replace an existing file
dataproduct init --template <url|path> # seed from a template or existing product
lint — validate against the ODPS standard
dataproduct lint # lints ./dataproduct.odps.yaml
dataproduct lint my.odps.yaml
dataproduct lint --all-errors # report every schema violation
dataproduct lint --output-format junit --output TEST-dataproduct.xml
dataproduct lint --json-schema ./odps.schema.json # validate against a custom schema
The data product is checked against the bundled ODPS JSON Schema matching its
apiVersion (v1.1.0, v1.0.0, or v0.9.0; unknown versions are validated
against the latest). Exit code is 0 when valid, 1 otherwise.
lint also resolves the data contracts linked via inputPorts[].contractId /
outputPorts[].contractId: through Entropy Data when an API key is set,
otherwise by searching *.odcs.yaml files (kind: DataContract, matching id)
under the current directory. --local-references searches the local files even
when an API key is set. If datacontract
is on your PATH, each resolved contract is linted with it too. Unresolved or
invalid contracts are reported as warnings; --no-resolve-references turns this off.
publish — publish to Entropy Data
export ENTROPY_DATA_API_KEY=... # from Entropy Data → Settings → API Keys
dataproduct publish my.odps.yaml
publish sends PUT {host}/api/dataproducts/{id} with an x-api-key header.
The host defaults to https://api.entropy-data.com and can be overridden with
ENTROPY_DATA_HOST. The referenced team must already exist in your org.
Configuration
| Purpose | Variable (with fallbacks) |
|---|---|
| API host | ENTROPY_DATA_HOST → DATAMESH_MANAGER_HOST → DATACONTRACT_MANAGER_HOST → https://api.entropy-data.com |
| API key | ENTROPY_DATA_API_KEY → DATAMESH_MANAGER_API_KEY → DATACONTRACT_MANAGER_API_KEY |
.env files are loaded automatically.
Use as a library
from dataproduct.data_product import DataProduct
run = DataProduct(data_product_file="dataproduct.odps.yaml").lint()
assert run.result == "passed"
DataProduct(data_product_file="dataproduct.odps.yaml").publish()
Development
See AGENTS.md.
License
MIT
Metadata
Release files for dataproduct-cli 0.3.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 | Provenance | Actions |
|---|---|---|---|---|
| dataproduct_cli-0.3.1.tar.gz | 28.3 kB | With provenance | Details for dataproduct_cli-0.3.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| dataproduct_cli-0.3.1-py3-none-any.whl | Python 3 | none | any | Details for dataproduct_cli-0.3.1-py3-none-any.whl |
Total release size: 60.3 kB
Release files / dataproduct_cli-0.3.1.tar.gz
| Download URL | dataproduct_cli-0.3.1.tar.gz |
|---|---|
| Size | 28.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
29ee6ce826f9f4585469c8a90261d8cbddbf7fe451909a2a25be0af27ba3300b
|
|
BLAKE2b-256 checksum How to use checksums |
f326fb9fb4c505e66d2f7aa5a215e77687c71b0cb0c853bbab8e18b3f1a591c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / dataproduct_cli-0.3.1-py3-none-any.whl
| Download URL | dataproduct_cli-0.3.1-py3-none-any.whl |
|---|---|
| Size | 32.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f27669f547a9bc800557da0c8f12829bac01f639c86dcd1c10194305c7448f95
|
|
BLAKE2b-256 checksum How to use checksums |
7c8eea9d766a7e44d10835986b74a95d64d7d187c071bcbed9e57fef3269c8a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logSecurity for dataproduct-cli 0.3.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for dataproduct_cli-0.3.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.