Skip to content

Releases: datacontract/datacontract-cli

v0.12.5

30 May 11:35

Choose a tag to compare

[0.12.5] - 2026-05-30

Added

  • Resolve authoritativeDefinitions[type=definition] on schema properties, filling fields the contract author left unset (#1261)
    • Breaking: Per default, any resolution failure of authoritativeDefinitions[type in {definition, semantics}] now rejects the contract on lint, test, ci, export, and changelog. (#1261)
    • Resolve authoritativeDefinitions[type=semantics] (and the legacy type=semantic) the same way. A url: that points at the configured entropy-data host is fetched directly; a url: that's an IRI (host doesn't match) is routed through GET /api/semantics?iri=... on the configured host, which uses the API key's organization to resolve. (#1262)
    • --no-inline-references flag to skip the HTTP fetch (#1261)
  • When --json-schema points at a custom JSON Schema, the ODCS Pydantic step now accepts extra top-level fields the schema allows (#1266)

Changed

  • JSON Schema validation errors now identify the offending schema and property by name instead of array indices (#1255 @dmaresma)
  • test, lint, and ci now infer --output-format from the --output file extension when not given (.json → json, .xml → junit) (#1156 @dallylee)

Fixed

  • Schema type check no longer fails for varchar(n) columns on Databricks with PySpark 4.0+, and for map and varchar types nested inside struct columns; affected columns emit a warning and skip the type check instead (#1219,#1245 @IchEssBlumen)
  • WARNING/ERROR log messages are no longer hidden by default for import, export, changelog, catalog, dbt, and publish (#1264)
  • datacontract test against S3, GCS, and Azure no longer fails with Failed to download extension in air-gapped containers. The required DuckDB extensions are now bundled via the s3/gcs/azure install extras (#1191 @ParenParikh)
  • JSON/CSV/Parquet with DuckDB: field_is_present check now correctly detects missing columns (#1065,#1163 @hieusats)
  • import dbt --model <name>.vN now correctly imports the specified version of a versioned dbt model. Previously the filter compared the full name.vN string against node["name"] (which is always the bare base name), producing a silent empty contract (#1249 @willbowditch)

v0.12.4

21 May 20:26

Choose a tag to compare

[0.12.4] - 2026-05-21

Added

  • datacontract test now logs the Data Contract CLI version and whether it ran as a local CLI or through the FastAPI server (including the request URL) as part of the test result logs

Fixed

  • Schema checks now resolve each property by its physicalName when set (falling back to name), matching the existing table-level resolution and the SQL/BigQuery exporters. Previously a property whose logical name differed from its physical column (e.g. name: brand with physicalName: BRAND) failed the presence and type checks even though the physical column existed (#1246)

v0.12.3

18 May 17:46

Choose a tag to compare

[0.12.3] - 2026-05-18

Added

  • new datacontract dbt sync command: generate dbt tests from an ODCS contract, then run dbt test for them, and optionally publish the results to Entropy Data (#1222, #1235)
  • redshift server type for datacontract test (requires pip install datacontract-cli[redshift]). (#1236)

Fixed

  • SQL type converter: emit canonical decimal/numeric per dialect (Postgres → numeric, MySQL → decimal) so test's column-type check matches information_schema (#1237)

v0.12.2

05 May 18:09

Choose a tag to compare

[0.12.2] - 2026-05-05

Added

  • impala extra (pip install datacontract-cli[impala]) — pulls in soda-core-impala. Impala engine support landed in #965 but the install extra was never added; users had to install soda-core-impala manually. Also included in [all].

Changed

  • breaking: drop the dbt extra and the dbt-core dependency. import dbt now reads manifest.json directly with no third-party dependency, and works without installing any extra. Minimum supported manifest schema version is v9 (dbt 1.5+). Users who installed datacontract-cli[dbt] should switch to plain datacontract-cli.
  • breaking: the protobuf extra now requires the protoc compiler installed on the system. Replaces the bundled grpcio-tools (~50 MB of platform-specific protoc binaries) with the lighter protobuf runtime (>=3.20,<7.0). import protobuf raises a clear error with platform-specific install hints if protoc is not on PATH. Install with brew install protobuf (macOS), sudo apt install protobuf-compiler (Debian/Ubuntu), etc. — see README.

Fixed

  • README install table: add missing csv, excel, and oracle extras. The matching [project.optional-dependencies] entries already existed but were undocumented.
  • quality: support {object} and ${object} placeholder in SQL quality queries as the ODCS-spec name for the current schema object (alias for {model}/{table}) (#676)
  • changelog command help text now advertises (url or path) for V1/V2 arguments, clarifying that HTTP/HTTPS URLs are accepted (#1162)
  • breaking: test command now exits non-zero when a server is specified, but soda-core fails to connect or authenticate (#1181)
  • correct swapped check_type labels model_qualty_sql and field_quality_sql (#1187)
  • import spark now emits a native Spark SQL physicalType (e.g. string) instead of Python repr (e.g. StringType()). Contracts imported using Spark in v0.11.0–v0.12.1 did not perform type checks and must be re-imported. (#1048)
  • Re-add setuptools as a base dependency. soda-core's env_helper.py imports from distutils.util import strtobool; distutils was removed from stdlib in Python 3.12 and stripped from python-build-standalone 3.11 builds. setuptools provides the distutils shim. Previously pulled in transitively via grpcio-tools; now required explicitly. Reverts #1199 — see soda-core#2091.
  • SLA freshness checks now quote column identifiers with special characters (#1202)
  • update field / model quotation for Impala, dataframe, and Kafka (#1202)

v0.12.1

21 Apr 06:55

Choose a tag to compare

[0.12.1] - 2026-04-21

This release introduces several changes to improve the usability of datacontract-cli for AI Agents.

  • Breaking: Several changes in the CLI syntax (#1157):

Fix in v0.12.1: re-added --schema as alias for the new --json-schema (will be removed in v0.13.0)

Command Old option New option
lint, test, ci, publish, catalog --schema <PATH> (still works until v0.13.0) --json-schema <PATH>
export, import --format <FORMAT> <OPTIONS> <FORMAT> <OPTIONS> (drop --format)
Export options:
export --format dbt --format dbt dbt-models (format renamed)
export --format great-expectations --sql-server-type <TYPE> --dialect <TYPE>
export --format rdf --rdf-base <URI> --base <URI>
export --format sql --sql-server-type <TYPE> --dialect <TYPE>
export --format sql-query --sql-server-type <TYPE> --dialect <TYPE>
Import options:
import --format bigquery --bigquery-[project|dataset|table] <NAME> --[project|dataset|table] <NAME>
import --format dbt --dbt-model <NAME> --model <NAME>
import --format glue --source <NAME>, --glue-table <NAME> --database <NAME>, --table <NAME>
import --format iceberg --iceberg-table <NAME> --table <NAME>
import --format unity --unity-table-full-name <NAME> --table <NAME>
import --format spark --source <NAMES> --tables <NAMES>
import --template dropped (was a no-op)

The --schema option (referring to the ODCS JSON schema) was renamed to --json-schema to avoid confusion with --schema-name, which refers to the schema within the data contract to test for.

  • Error messages for uncaught exceptions are shortened now. Pass --debug (or set DATACONTRACT_CLI_DEBUG=1) to see the full traceback. (#1175)
  • Add example calls to --help outputs (#1176)
  • Add explicit errors when required env vars for soda connections are missing (#1177)
  • Validate some of the CLI options against their allowed values instead of accepting any string (#1178)

v0.12.0

20 Apr 21:11

Choose a tag to compare

v0.12.0 Pre-release
Pre-release

[0.12.0] - 2026-04-20

This release introduces several changes to improve the usability of datacontract-cli for AI Agents.

  • Breaking: Several changes in the CLI syntax (#1157):

Fix in v0.12.1: re-added --schema as alias for the new --json-schema (will be removed in v0.13.0)

Command Old option New option
lint, test, ci, publish, catalog --schema <PATH> (still works until v0.13.0) --json-schema <PATH>
export, import --format <FORMAT> <OPTIONS> <FORMAT> <OPTIONS> (drop --format)
Export options:
export --format dbt --format dbt dbt-models (format renamed)
export --format great-expectations --sql-server-type <TYPE> --dialect <TYPE>
export --format rdf --rdf-base <URI> --base <URI>
export --format sql --sql-server-type <TYPE> --dialect <TYPE>
export --format sql-query --sql-server-type <TYPE> --dialect <TYPE>
Import options:
import --format bigquery --bigquery-[project|dataset|table] <NAME> --[project|dataset|table] <NAME>
import --format dbt --dbt-model <NAME> --model <NAME>
import --format glue --source <NAME>, --glue-table <NAME> --database <NAME>, --table <NAME>
import --format iceberg --iceberg-table <NAME> --table <NAME>
import --format unity --unity-table-full-name <NAME> --table <NAME>
import --format spark --source <NAMES> --tables <NAMES>
import --template dropped (was a no-op)

The --schema option (referring to the ODCS JSON schema) was renamed to --json-schema to avoid confusion with --schema-name, which refers to the schema within the data contract to test for.

  • Error messages for uncaught exceptions are shortened now. Pass --debug (or set DATACONTRACT_CLI_DEBUG=1) to see the full traceback. (#1175)
  • Add example calls to --help outputs (#1176)
  • Add explicit errors when required env vars for soda connections are missing (#1177)
  • Validate some of the CLI options against their allowed values instead of accepting any string (#1178)

v0.11.9

20 Apr 14:21

Choose a tag to compare

[0.11.9] - 2026-04-20

Added

  • Added --checks option to test command to selectively run check categories: schema, quality, servicelevel (#678)
  • Added --schema-name option to test command to test a specific schema instead of all schemas (#1079,#1085 @kelsoufi-sanofi)

Fixed

Thanks to @kelsoufi-sanofi for the new --schema-name option on test, and to @Schokuroff, @Ai-chan-0411, and @davidb-tada for their contributions.

v0.11.8

10 Apr 11:13

Choose a tag to compare

[0.11.8] - 2026-04-10

Added

  • Added ci command for CI/CD-optimized test runs: multi-file support, GitHub Actions annotations and step summary, Azure DevOps annotations, --fail-on flag, --json output (#1114)
  • Added changelog command and API endpoint (#1118 @davidb-tada)
  • Added opt-in --all-errors mode for datacontract lint to report all JSON Schema validation errors, with matching all_errors support in the Python library and API (#1125 @jmbenedetto)
  • Added --schema-name option to custom model export (#978 @AntoineGiraud)

Fixed

  • Avro importer now raises an error for union fields with multiple non-null types, which are not supported by ODCS (#1124)
  • Fix SQL export generating multiple PRIMARY KEY constraints for composite keys (#1026,#1092 @barry0451 @dwestheide)
  • Preserve parametrized physicalTypes for SQL export (#1086,#1093 @barry0451 @alexander-griesbeck)
  • Fix incorrect SQL type mappings: SQL Server double/jsonb, MySQL bare varchar, missing Trino types (#1110)
  • Fix markdown export breaking table structure when extra field values contain pipe characters (#832,#1117 @barry0451 @grepwood)
  • Fix dbt import using incorrect physicalType instead of actual materialization type (#1136)
  • Remove unnecessary numpy dependency from databricks and kafka extras (#1135 @kayhendriksen)

Special thanks to @davidb-tada for the outstanding contribution of the new changelog command and API endpoint! Also thanks to @barry0451 for multiple quality fixes across the SQL exporter and markdown export, and to @AntoineGiraud and @jmbenedetto for their feature contributions.

v0.11.7

24 Mar 19:04

Choose a tag to compare

[0.11.7] - 2026-03-24

Fixed

  • Escape single quotes in string values for SodaCL checks (#1090)
  • Escape BigQuery field and model names with backticks for SodaCL checks (#736)
  • Escape Databricks model names with backticks for SodaCL checks
  • Fixed catalog export SpecView not having a tags property for the index.html template (#1059)
  • Fix SQL importer type mappings: binary types, datetime/time, uuid now map to correct ODCS logicalType and format (#790)

Added

  • Added support for MySQL for data contract tests (#1101)
  • Support additional PyArrow types in Parquet importer (#1091)
  • Populate logicalTypeOptions.format for SQL import from binary and uuid types (#790)
  • Snowflake DDL import with tags, descriptions, and template variable handling (#790)

Release v0.11.6

18 Mar 07:36

Choose a tag to compare

[0.11.6] - 2026-03-17

Fixed

  • Fix parser error for CSV / Parquet table names containing special characters (#1066)
  • Fix BigQuery export failing with "Unsupported type" for parameterized physicalType like NUMERIC(18, 4) (#1083)

Added

  • Added JSON output format for test results (--output-format json)
  • Added Azure AD / Entra ID authentication support for SQL Server and Microsoft Fabric