| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| datacontract_cli-1.1.2-py3-none-any.whl | 2026-08-26 | 3.2 MB | |
| datacontract_cli-1.1.2-py3-none-any.whl.sigstore.json | 2026-08-26 | 11.2 kB | |
| datacontract_cli-1.1.2.tar.gz | 2026-08-26 | 3.3 MB | |
| datacontract_cli-1.1.2.tar.gz.sigstore.json | 2026-08-26 | 11.2 kB | |
| README.md | 2026-08-26 | 4.4 kB | |
| v1.1.2 source code.tar.gz | 2026-08-26 | 7.5 MB | |
| v1.1.2 source code.zip | 2026-08-26 | 8.0 MB | |
| Totals: 7 Items | 22.0 MB | 0 | |
[1.1.2] - 2026-08-26
Added
- New server type
duckdbto test the tables inside a DuckDB database file (the file is opened read-only) --dry-runflag fordatacontract dbt syncthat reports the same plan as a real sync, but writes nothing to disk (#1513 @q-maze)- Test results report how many rows a check found bad out of the rows it read, plus the data quality dimension and the
qualityrule a check comes from (#1526) postgresqlis accepted as the ODCS synonym of thepostgresserver typedatacontract import pydantic-modelreads the contract description from the module docstring (#1507 @OGsiji)
Changed
- The
enginefield of test results is now always one ofdatacontract-cli,dbtorjsonschema; the valuesdatacontract,ibisanddbt-syncno longer occur (#1505) datacontract testanddatacontract cireport a failed publish of the test results on the console and exit with code 1, instead of silently succeedingdatacontract api:- only publishes test results to the Entropy Data platform or the host configured via
ENTROPY_DATA_HOST; otherpublish_urltargets are refused (#1541) - no longer sends permissive
Access-Control-Allow-Origin: *headers; it serves no CORS headers at all, since the only browser client is the same-origin Swagger UI - no longer reloads on file changes by default; pass
--reloadto enable it (development only) - A JSON Schema check that could not be run is reported as
skipped, notinfo
Security
datacontract export htmlanddatacontract catalognow HTML-escape data contract field values, closing a stored cross-site scripting hole- The Entropy Data API key is only sent to the Entropy Data host, no longer to any host a data contract URL or
--publishURL points at; setENTROPY_DATA_HOSTfor a self-hosted deployment - A
quality.type: sqlrule must be a read-only query; DDL, DML,COPY,ATTACHand the like are reported as a failed check instead of being executed, for every data source datacontract api:- refuses
servers[].type: local, so a posted data contract cannot read the files of the server running it; setDATACONTRACT_CLI_API_ALLOW_LOCAL_FILES=trueto allow it - confines the DuckDB connection of a file-based server to the data locations the posted data contract declares
- refuses to send an environment-held data source credential to a host named by the posted contract, preventing credential exfiltration through a crafted
serverssection - compares the
x-api-keyheader in constant time to avoid a timing side channel - reports the URL of a failed
authoritativeDefinitionslookup instead of echoing the server-side error reason, which is now logged instead
Fixed
- A
quality.type: sqlrule is read in the SQL dialect of its server type, so dialect-specific syntax (BigQuery backticks, SnowflakeSAMPLE, SQL ServerTOP) is no longer mistaken for an invalid query - Configuration options that override a server's location (
DATACONTRACT_BIGQUERY_PROJECT,DATACONTRACT_POSTGRES_SCHEMA, and the like) now apply to the whole test run, not just to the connection - Test results published to Entropy Data no longer drop the quality rule id, category, rule definition and failed samples
datacontract testanddatacontract export sodaclfreshness and retention checks now honor the schema object's and property'sphysicalName(#1488 @erikgrip2)datacontract test --publishno longer fails for runs with skipped checks (skipped checks are omitted from the published test results)- BigQuery:
DATACONTRACT_BIGQUERY_BILLING_PROJECTno longer overrides the server'sproject, so tables are still read from the data project (#1358) datacontract export pydantic-modelexports the ODCStimestampandtimelogical types asdatetime.datetimeanddatetime.timeinstead of guessing from the physical type, which turned aTIMESTAMPTZcolumn into astr(#1507 @OGsiji)datacontract export pydantic-modelexports the ODCSdatelogical type asdatetime.dateinstead ofdatetime.datetime(#1507 @OGsiji)datacontract import pydantic-modelmapsdatetime.datetimeto thetimestamplogical type anddatetime.timetotime(#1507 @OGsiji)datacontract export dcsexports apiicustom property as a boolean instead of the string'True'