NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3752 most downloaded on PyPI
The datacontract CLI is an open source command-line tool for working with Data Contracts. It uses data contract YAML files to lint the data contract, connect to data sources and execute schema and quality tests, detect breaking changes, and export to different formats. The tool is written in Python. It can be used as a standalone CLI tool, in a CI/CD pipeline, or directly as a Python library.
Last release 9 days ago
08 Sep 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
90 releases · first in 2024
datacontract import --format csv
fields instead of schemaoptions instead of generator.options--template not resolving fileOne column per month.
Replaced deprecated primary field with primaryKey in exporters, importers, examples, and Jinja templates for backward compatibility. Fixes #518.
primary field with primaryKey in exporters, importers, examples, and Jinja templates for backward compatibility. Fixes #518.Support for exporting a Data Contract to an Iceberg schema definition.
not_null information as a datacontract required field (#547)tests to data_tests (#548)--dbt-model (#532)KeyError: 'fail' from happening when testing with SodaCLSupport for model import from parquet file metadata.
suite_name the name of the expectation suite to exportengine used to run checkssql_server_type to define the type of SQL Server to use when engine is sqlInfo and Terms blocks.datacontract import now has --output option for saving Data Contract to fileDATACONTRACT_MAX_ERRORS. Furthermore, the primaryKey will be additionally added to the error message.Models and Fields blocks.datacontract catalog --files '*.yaml' now checks also any subfolders for such files.required arrayData Contract CLI now supports the Open Data Contract Standard (ODCS) v3.0.0.
Data Contract CLI now supports the Open Data Contract Standard (ODCS) v3.0.0.
datacontract test now also supports ODCS v3 data contract formatdatacontract export --format odcs_v3: Export to Open Data Contract Standard v3.0.0 (#460)datacontract test now also supports ODCS v3 anda Data Contract SQL quality checks on field and model leveldatacontract import --format odcs: Now supports ODSC v3.0.0 files (#474)datacontract export --format odcs: Now creates v3.0.0 Open Data Contract Standard files (alias to odcs_v3). Old versions are still available as format odcs_v2. (#460)datacontract export --format data-caterer: Export to Data Caterer YAML
datacontract export --format data-caterer: Export to Data Caterer YAMLdatacontract export --format jsonschema handle optional and nullable fields (#409)datacontract import --format unity handle nested and complex fields (#420)datacontract import --format spark handle field descriptions (#420)datacontract export --format bigquery handle bigqueryType (#422)Support for import of DBML Models
datacontract export --format sqlalchemy: Export to SQLAlchemy ORM models (#399)datacontract publish now also accepts the DATACONTRACT_MANAGER_API_KEY as an environment variabledefinitions.fields) (#375)Support data type map in Glue import.
keys and values fields.$ref are not always resolved.string and format uuidkeys and values fields$ref are not always resolvedstring and format uuidAdd support for dbt manifest file
map and enum type for Avro schema import (#311)datacontract import --format spark: Import from Spark tables (#326)glue_table as parameter did not filter the tables and instead returned all tables from source database (#333)Spark export: add Spark StructType exporter
--schema option for the catalog and export command to provide the schema also locallydatacontract import --format jsonschema when description is missing (#300)datacontract test with case-sensitive Postgres table names (#310)datacontract serve start a local web server to provide a REST-API for the commands
datacontract serve start a local web server to provide a REST-API for the commandsGOOGLE_APPLICATION_CREDENTIALS as variable for connecting to bigquery in datacontract testtype attribute, don't assume all imported models are tablesdatacontract export --format avro fixed array structure (#243)Test data contract against dataframes / temporary views
Fixed Docker build by removing msodbcsql18 dependency (temporary workaround)
datacontract export --format dbml: Export to Database Markup Language (DBML)
sqlserver (#196)datacontract export --format dbml: Export to Database Markup Language (DBML) (#135)datacontract export --format avro: Now supports config map on field level for logicalTypes and default values Custom Avro Propertiesdatacontract import --format avro: Now supports importing logicalType and default definition on avro files Custom Avro Propertiesconfig.bigqueryType for testing BigQuery typesdatacontract catalog Show search bar also on mobilesqlserver (#196)datacontract export --format dbml: Export to Database Markup Language (DBML) (#135)datacontract export --format avro: Now supports config map on field level for logicalTypes and default values Custom Avro Propertiesdatacontract import --format avro: Now supports importing logicalType and default definition on avro files Custom Avro Propertiesconfig.bigqueryType for testing BigQuery typesimport through the glue-table parameter (#122)datacontract catalog Show search bar also on mobiledatacontract publish: Publish the data contract to the Data Mesh Manager
datacontract catalog Searchdatacontract publish: Publish the data contract to the Data Mesh Managerdatacontract import --format bigquery: Import from BigQuery format (#110)datacontract export --format bigquery: Export to BigQuery format (#111)datacontract export --format avro: Now supports Avro logical types to better model date types. date, timestamp/timestamp-tz and timestamp-ntz are now mapped to the appropriate logical types. (#141)datacontract import --format jsonschema: Import from JSON schema (#91)datacontract export --format jsonschema: Improved export by exporting more additional informationdatacontract export --format html: Added support for Service Levels, Definitions, Examples and nested Fields (one level deep)datacontract export --format go: Export to go types formatdatacontract catalog: Add index.html to manifest
Added support for delta tables on S3
azure (#146)delta tables on S3 (#24)datacontract catalog that generates a data contract catalog with an index.html file.### Fixed - export format html
Added timestamp when ah HTML export was created
Added descriptions as comments to datacontract export --format sql for Databricks dialects
datacontract export --format sql for Databricks dialectsAdded export format great-expectations: datacontract export --format great-expectations
datacontract export --format great-expectationsdatacontract export --format sqlsql_type_converter to build checks.Fixed a bug where the export to YAML always escaped the unicode characters.
datacontract test --publish-to-opentelemetrydatacontract export --format protobufdatacontract export --format terraform (limitation: only works for AWS S3 right now)datacontract export --format sqldatacontract export --format sql-querydatacontract export --format avro-idl: Generates an Avro IDL file containing records for each model.datacontract changelog datacontract1.yaml datacontract2.yaml will now generate a changelog based on the changes in the data contract. This will be useful for keeping track of changes in the data contract over time.datacontract lint will now check for a variety of possible errors in the data contract, such as missing descriptions, incorrect references to models or fields, nonsensical constraints, and more.datacontract import --format avro will now import avro schemas into a data contract.added export format avro: datacontract export --format avro
datacontract export --format avroadded command datacontract breaking to detect breaking changes in between two data contracts.
This is a hugh step forward, we now support testing Kafka messages. We start with JSON messages. Avro and Protobuf will follow.
datacontract import --format sql (#51)datacontract export --format dbt-sourcesdatacontract export --format dbt-staging-sqldatacontract export --format rdf (#52)datacontract breaking to detect breaking changes in between two data contracts.test - show a test summary table.
### Added - Support for Postgres - Support for Databricks
Support for BigQuery data connection
### Added - Publish to Docker Hub
Nothing published for this version
This is a breaking change (we are still on a 0.x.x version). The project migrated from Golang to Python. The Golang version can be found at cli-go
This is a breaking change (we are still on a 0.x.x version). The project migrated from Golang to Python. The Golang version can be found at cli-go
test Support to directly run tests and connect to data sources defined in servers section.test generated schema tests from the model definition.test --publish URL Publish test results to a server URL.export now exports the data contract so format jsonschema and sodacl.--file option removed in favor of a direct argument.: Use datacontract test datacontract.yaml instead of datacontract test --file datacontract.yaml.model is now part of exportquality is now part of exportdiff needs to be migrated to Python.breaking needs to be migrated to Python.inline needs to be migrated to Python.Your coding agent can read these notes before it upgrades. Set up the MCP server →