Releases: datacontract/datacontract-cli
v0.12.5
[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 onlint,test,ci,export, andchangelog. (#1261) - Resolve
authoritativeDefinitions[type=semantics](and the legacytype=semantic) the same way. Aurl:that points at the configured entropy-data host is fetched directly; aurl:that's an IRI (host doesn't match) is routed throughGET /api/semantics?iri=...on the configured host, which uses the API key's organization to resolve. (#1262) --no-inline-referencesflag to skip the HTTP fetch (#1261)
- Breaking: Per default, any resolution failure of
- When
--json-schemapoints 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, andcinow infer--output-formatfrom the--outputfile 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 formapandvarchartypes nested insidestructcolumns; affected columns emit a warning and skip the type check instead (#1219,#1245 @IchEssBlumen) WARNING/ERRORlog messages are no longer hidden by default forimport,export,changelog,catalog,dbt, andpublish(#1264)datacontract testagainst S3, GCS, and Azure no longer fails withFailed to download extensionin air-gapped containers. The required DuckDB extensions are now bundled via thes3/gcs/azureinstall extras (#1191 @ParenParikh)- JSON/CSV/Parquet with DuckDB:
field_is_presentcheck now correctly detects missing columns (#1065,#1163 @hieusats) import dbt --model <name>.vNnow correctly imports the specified version of a versioned dbt model. Previously the filter compared the fullname.vNstring againstnode["name"](which is always the bare base name), producing a silent empty contract (#1249 @willbowditch)
v0.12.4
[0.12.4] - 2026-05-21
Added
datacontract testnow 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
physicalNamewhen set (falling back toname), matching the existing table-level resolution and the SQL/BigQuery exporters. Previously a property whose logicalnamediffered from its physical column (e.g.name: brandwithphysicalName: BRAND) failed the presence and type checks even though the physical column existed (#1246)
v0.12.3
[0.12.3] - 2026-05-18
Added
- new
datacontract dbt synccommand: generate dbt tests from an ODCS contract, then rundbt testfor them, and optionally publish the results to Entropy Data (#1222, #1235) redshiftserver type fordatacontract test(requirespip install datacontract-cli[redshift]). (#1236)
Fixed
- SQL type converter: emit canonical
decimal/numericper dialect (Postgres →numeric, MySQL →decimal) sotest's column-type check matchesinformation_schema(#1237)
v0.12.2
[0.12.2] - 2026-05-05
Added
impalaextra (pip install datacontract-cli[impala]) — pulls insoda-core-impala. Impala engine support landed in #965 but the install extra was never added; users had to installsoda-core-impalamanually. Also included in[all].
Changed
- breaking: drop the
dbtextra and thedbt-coredependency.import dbtnow readsmanifest.jsondirectly with no third-party dependency, and works without installing any extra. Minimum supported manifest schema version is v9 (dbt 1.5+). Users who installeddatacontract-cli[dbt]should switch to plaindatacontract-cli. - breaking: the
protobufextra now requires theprotoccompiler installed on the system. Replaces the bundledgrpcio-tools(~50 MB of platform-specific protoc binaries) with the lighterprotobufruntime (>=3.20,<7.0).import protobufraises a clear error with platform-specific install hints ifprotocis not onPATH. Install withbrew install protobuf(macOS),sudo apt install protobuf-compiler(Debian/Ubuntu), etc. — see README.
Fixed
- README install table: add missing
csv,excel, andoracleextras. 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) changelogcommand help text now advertises(url or path)for V1/V2 arguments, clarifying that HTTP/HTTPS URLs are accepted (#1162)- breaking:
testcommand now exits non-zero when a server is specified, but soda-core fails to connect or authenticate (#1181) - correct swapped
check_typelabelsmodel_qualty_sqlandfield_quality_sql(#1187) import sparknow 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
setuptoolsas a base dependency. soda-core'senv_helper.pyimportsfrom distutils.util import strtobool;distutilswas removed from stdlib in Python 3.12 and stripped from python-build-standalone 3.11 builds.setuptoolsprovides thedistutilsshim. Previously pulled in transitively viagrpcio-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
[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
--schemaas 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 setDATACONTRACT_CLI_DEBUG=1) to see the full traceback. (#1175) - Add example calls to
--helpoutputs (#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
[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
--schemaas 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 setDATACONTRACT_CLI_DEBUG=1) to see the full traceback. (#1175) - Add example calls to
--helpoutputs (#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
[0.11.9] - 2026-04-20
Added
- Added
--checksoption totestcommand to selectively run check categories:schema,quality,servicelevel(#678) - Added
--schema-nameoption totestcommand to test a specific schema instead of all schemas (#1079,#1085 @kelsoufi-sanofi)
Fixed
- Move
precision/scalefornumbertypes fromlogicalTypeOptionstocustomProperties(#1145,#1160 @davidb-tada) - Emit placeholder server values in SQL importer so generated contracts pass lint (#1146,#1152 @Ai-chan-0411)
- Fix Protobuf export for arrays of objects and improve message/enum naming to UpperCamelCase (#1012 @Schokuroff)
- Exit with code 1 when
--servername is not found (#1153,#1161 @Ai-chan-0411)
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
[0.11.8] - 2026-04-10
Added
- Added
cicommand for CI/CD-optimized test runs: multi-file support, GitHub Actions annotations and step summary, Azure DevOps annotations,--fail-onflag,--jsonoutput (#1114) - Added
changelogcommand and API endpoint (#1118 @davidb-tada) - Added opt-in
--all-errorsmode fordatacontract lintto report all JSON Schema validation errors, with matchingall_errorssupport in the Python library and API (#1125 @jmbenedetto) - Added
--schema-nameoption 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 barevarchar, 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
[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
Release v0.11.6
[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