datacontract-cli 0.12.3__tar.gz → 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. {datacontract_cli-0.12.3/datacontract_cli.egg-info → datacontract_cli-1.0.0}/PKG-INFO +206 -189
  2. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/README.md +174 -163
  3. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/api.py +5 -2
  4. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/catalog/catalog.py +1 -1
  5. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/cli.py +35 -10
  6. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/command_changelog.py +10 -1
  7. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/command_ci.py +24 -3
  8. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/command_export.py +123 -28
  9. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/command_lint.py +20 -4
  10. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/command_test.py +32 -3
  11. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/data_contract.py +26 -12
  12. datacontract_cli-1.0.0/datacontract/engines/checks/check_spec.py +146 -0
  13. datacontract_cli-1.0.0/datacontract/engines/checks/create_checks.py +718 -0
  14. datacontract_cli-1.0.0/datacontract/engines/checks/type_normalize.py +137 -0
  15. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/engines/data_contract_test.py +16 -8
  16. datacontract_cli-1.0.0/datacontract/engines/ibis/connections/connect.py +462 -0
  17. {datacontract_cli-0.12.3/datacontract/engines/soda → datacontract_cli-1.0.0/datacontract/engines/ibis}/connections/duckdb_connection.py +52 -4
  18. {datacontract_cli-0.12.3/datacontract/engines/soda → datacontract_cli-1.0.0/datacontract/engines/ibis}/connections/kafka.py +50 -6
  19. datacontract_cli-1.0.0/datacontract/engines/ibis/dtype_category.py +41 -0
  20. datacontract_cli-1.0.0/datacontract/engines/ibis/ibis_check_execute.py +787 -0
  21. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/avro_exporter.py +1 -1
  22. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/avro_idl_exporter.py +1 -1
  23. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/data_caterer_exporter.py +1 -1
  24. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/dbml_exporter.py +1 -1
  25. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/dbt_exporter.py +3 -3
  26. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/dcs_exporter.py +1 -1
  27. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/go_exporter.py +1 -1
  28. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/html_exporter.py +1 -1
  29. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/iceberg_exporter.py +1 -1
  30. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/jsonschema_exporter.py +1 -1
  31. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/mermaid_exporter.py +1 -1
  32. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/odcs_v3_exporter.py +1 -1
  33. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/protobuf_exporter.py +1 -1
  34. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/pydantic_exporter.py +1 -1
  35. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/rdf_exporter.py +1 -1
  36. datacontract_cli-0.12.3/datacontract/engines/data_contract_checks.py → datacontract_cli-1.0.0/datacontract/export/sodacl_check_builder.py +59 -7
  37. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/sodacl_exporter.py +1 -1
  38. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/spark_exporter.py +2 -2
  39. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/sqlalchemy_exporter.py +1 -3
  40. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/csv_importer.py +1 -1
  41. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/dbt_importer.py +30 -1
  42. datacontract_cli-1.0.0/datacontract/imports/protobuf_importer.py +245 -0
  43. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/spark_importer.py +1 -1
  44. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/integration/dbt_sync.py +1 -1
  45. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/integration/entropy_data.py +11 -5
  46. datacontract_cli-1.0.0/datacontract/lint/resolve.py +415 -0
  47. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/model/run.py +5 -1
  48. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/output/junit_test_results.py +4 -2
  49. datacontract_cli-1.0.0/datacontract/output/output_format.py +21 -0
  50. datacontract_cli-1.0.0/datacontract/py.typed +0 -0
  51. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0/datacontract_cli.egg-info}/PKG-INFO +206 -189
  52. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract_cli.egg-info/SOURCES.txt +18 -19
  53. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract_cli.egg-info/requires.txt +32 -24
  54. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/pyproject.toml +63 -41
  55. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_ci_output.py +14 -0
  56. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_cli.py +9 -0
  57. datacontract_cli-1.0.0/tests/test_connect_databricks.py +121 -0
  58. datacontract_cli-1.0.0/tests/test_connect_sqlserver.py +178 -0
  59. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_data_contract_checks.py +91 -1
  60. datacontract_cli-1.0.0/tests/test_description_linter.py +0 -0
  61. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_duckdb_json.py +7 -5
  62. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_avro_idl.py +2 -2
  63. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_iceberg.py +1 -1
  64. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_jsonschema.py +1 -1
  65. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_sodacl.py +1 -1
  66. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_dbt.py +57 -0
  67. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_spark.py +4 -6
  68. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_lint.py +31 -4
  69. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_resolve.py +7 -7
  70. datacontract_cli-1.0.0/tests/test_resolve_definitions.py +531 -0
  71. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_dataframe.py +2 -4
  72. datacontract_cli-1.0.0/tests/test_test_diagnostics.py +127 -0
  73. datacontract_cli-1.0.0/tests/test_test_failed_samples.py +104 -0
  74. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_output_json.py +0 -2
  75. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_output_junit.py +0 -2
  76. datacontract_cli-1.0.0/tests/test_test_quality_percent_severity.py +192 -0
  77. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_schema_evolution.py +62 -6
  78. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_soda_connection_error.py +2 -2
  79. datacontract_cli-0.12.3/datacontract/engines/soda/check_soda_execute.py +0 -257
  80. datacontract_cli-0.12.3/datacontract/engines/soda/connections/athena.py +0 -79
  81. datacontract_cli-0.12.3/datacontract/engines/soda/connections/bigquery.py +0 -24
  82. datacontract_cli-0.12.3/datacontract/engines/soda/connections/databricks.py +0 -27
  83. datacontract_cli-0.12.3/datacontract/engines/soda/connections/impala.py +0 -72
  84. datacontract_cli-0.12.3/datacontract/engines/soda/connections/mysql.py +0 -19
  85. datacontract_cli-0.12.3/datacontract/engines/soda/connections/oracle.py +0 -52
  86. datacontract_cli-0.12.3/datacontract/engines/soda/connections/postgres.py +0 -21
  87. datacontract_cli-0.12.3/datacontract/engines/soda/connections/redshift.py +0 -29
  88. datacontract_cli-0.12.3/datacontract/engines/soda/connections/snowflake.py +0 -24
  89. datacontract_cli-0.12.3/datacontract/engines/soda/connections/sqlserver.py +0 -78
  90. datacontract_cli-0.12.3/datacontract/engines/soda/connections/trino.py +0 -29
  91. datacontract_cli-0.12.3/datacontract/imports/protobuf_importer.py +0 -284
  92. datacontract_cli-0.12.3/datacontract/lint/resolve.py +0 -214
  93. datacontract_cli-0.12.3/datacontract/output/output_format.py +0 -10
  94. datacontract_cli-0.12.3/tests/test_bigquery_soda_connection.py +0 -61
  95. datacontract_cli-0.12.3/tests/test_redshift_soda_configuration.py +0 -75
  96. datacontract_cli-0.12.3/tests/test_sqlserver_soda_connection.py +0 -152
  97. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/LICENSE +0 -0
  98. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/MANIFEST.in +0 -0
  99. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/__init__.py +0 -0
  100. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/changelog/__init__.py +0 -0
  101. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/changelog/changelog.py +0 -0
  102. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/changelog/normalize.py +0 -0
  103. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/command_api.py +0 -0
  104. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/command_catalog.py +0 -0
  105. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/command_dbt.py +0 -0
  106. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/command_import.py +0 -0
  107. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/command_init.py +0 -0
  108. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/command_publish.py +0 -0
  109. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/engines/__init__.py +0 -0
  110. {datacontract_cli-0.12.3/datacontract/engines/soda → datacontract_cli-1.0.0/datacontract/engines/checks}/__init__.py +0 -0
  111. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/engines/datacontract/check_that_datacontract_contains_valid_servers_configuration.py +0 -0
  112. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/engines/datacontract/check_that_datacontract_file_exists.py +0 -0
  113. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/engines/fastjsonschema/check_jsonschema.py +0 -0
  114. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/engines/fastjsonschema/s3/s3_read_files.py +0 -0
  115. {datacontract_cli-0.12.3/datacontract/export → datacontract_cli-1.0.0/datacontract/engines/ibis}/__init__.py +0 -0
  116. {datacontract_cli-0.12.3/datacontract/output → datacontract_cli-1.0.0/datacontract/engines/ibis/connections}/__init__.py +0 -0
  117. /datacontract_cli-0.12.3/datacontract/py.typed → /datacontract_cli-1.0.0/datacontract/export/__init__.py +0 -0
  118. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/bigquery_exporter.py +0 -0
  119. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/custom_exporter.py +0 -0
  120. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/dqx_exporter.py +0 -0
  121. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/duckdb_type_converter.py +0 -0
  122. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/excel_exporter.py +0 -0
  123. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/exporter.py +0 -0
  124. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/exporter_factory.py +0 -0
  125. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/great_expectations_exporter.py +0 -0
  126. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/markdown_exporter.py +0 -0
  127. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/odcs_export_helper.py +0 -0
  128. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/pandas_type_converter.py +0 -0
  129. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/sql_exporter.py +0 -0
  130. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/export/sql_type_converter.py +0 -0
  131. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/avro_importer.py +0 -0
  132. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/bigquery_importer.py +0 -0
  133. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/dbml_importer.py +0 -0
  134. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/dcs_importer.py +0 -0
  135. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/excel_importer.py +0 -0
  136. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/glue_importer.py +0 -0
  137. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/iceberg_importer.py +0 -0
  138. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/importer.py +0 -0
  139. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/importer_factory.py +0 -0
  140. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/json_importer.py +0 -0
  141. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/jsonschema_importer.py +0 -0
  142. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/odcs_helper.py +0 -0
  143. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/odcs_importer.py +0 -0
  144. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/parquet_importer.py +0 -0
  145. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/sql_importer.py +0 -0
  146. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/imports/unity_importer.py +0 -0
  147. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/init/init_template.py +0 -0
  148. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/integration/dbt_test_mapping.py +0 -0
  149. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/lint/files.py +0 -0
  150. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/lint/resources.py +0 -0
  151. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/lint/schema.py +0 -0
  152. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/lint/urls.py +0 -0
  153. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/model/changelog.py +0 -0
  154. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/model/exceptions.py +0 -0
  155. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/model/odcs.py +0 -0
  156. /datacontract_cli-0.12.3/tests/test_description_linter.py → /datacontract_cli-1.0.0/datacontract/output/__init__.py +0 -0
  157. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/output/ci_output.py +0 -0
  158. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/output/json_test_results.py +0 -0
  159. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/output/test_results_writer.py +0 -0
  160. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/output/text_changelog_results.py +0 -0
  161. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/schemas/datacontract-1.1.0.init.yaml +0 -0
  162. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/schemas/datacontract-1.1.0.schema.json +0 -0
  163. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/schemas/datacontract-1.2.0.init.yaml +0 -0
  164. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/schemas/datacontract-1.2.0.schema.json +0 -0
  165. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/schemas/datacontract-1.2.1.init.yaml +0 -0
  166. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/schemas/datacontract-1.2.1.schema.json +0 -0
  167. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/schemas/odcs-3.0.1.schema.json +0 -0
  168. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/schemas/odcs-3.0.2.schema.json +0 -0
  169. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/schemas/odcs-3.1.0.init.yaml +0 -0
  170. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/schemas/odcs-3.1.0.schema.json +0 -0
  171. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/templates/datacontract.html +0 -0
  172. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/templates/datacontract_odcs.html +0 -0
  173. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/templates/index.html +0 -0
  174. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/templates/partials/datacontract_information.html +0 -0
  175. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/templates/partials/datacontract_servicelevels.html +0 -0
  176. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/templates/partials/datacontract_terms.html +0 -0
  177. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/templates/partials/definition.html +0 -0
  178. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/templates/partials/example.html +0 -0
  179. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/templates/partials/model_field.html +0 -0
  180. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/templates/partials/quality.html +0 -0
  181. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/templates/partials/server.html +0 -0
  182. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract/templates/style/output.css +0 -0
  183. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract_cli.egg-info/dependency_links.txt +0 -0
  184. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract_cli.egg-info/entry_points.txt +0 -0
  185. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/datacontract_cli.egg-info/top_level.txt +0 -0
  186. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/setup.cfg +0 -0
  187. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_api.py +0 -0
  188. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_catalog.py +0 -0
  189. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_changelog.py +0 -0
  190. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_changelog_engine.py +0 -0
  191. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_changelog_normalize.py +0 -0
  192. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_changelog_output_text.py +0 -0
  193. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_data_contract.py +0 -0
  194. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_data_contract_specification.py +0 -0
  195. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_dbt_sync.py +0 -0
  196. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_dbt_test_mapping.py +0 -0
  197. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_download_datacontract_file.py +0 -0
  198. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_avro.py +0 -0
  199. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_bigquery.py +0 -0
  200. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_complex_data_contract.py +0 -0
  201. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_custom.py +0 -0
  202. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_custom_exporter.py +0 -0
  203. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_custom_model.py +0 -0
  204. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_data_caterer.py +0 -0
  205. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_dbml.py +0 -0
  206. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_dbt_models.py +0 -0
  207. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_dbt_sources.py +0 -0
  208. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_dbt_staging_sql.py +0 -0
  209. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_dqx.py +0 -0
  210. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_excel.py +0 -0
  211. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_go.py +0 -0
  212. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_great_expectations.py +0 -0
  213. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_html.py +0 -0
  214. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_markdown.py +0 -0
  215. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_mermaid.py +0 -0
  216. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_odcs_v3.py +0 -0
  217. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_protobuf.py +0 -0
  218. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_pydantic.py +0 -0
  219. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_rdf.py +0 -0
  220. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_spark.py +0 -0
  221. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_sql.py +0 -0
  222. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_sql_query.py +0 -0
  223. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_export_sqlalchemy.py +0 -0
  224. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_avro.py +0 -0
  225. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_bigquery.py +0 -0
  226. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_csv.py +0 -0
  227. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_dbml.py +0 -0
  228. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_excel.py +0 -0
  229. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_glue.py +0 -0
  230. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_iceberg.py +0 -0
  231. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_json.py +0 -0
  232. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_jsonschema.py +0 -0
  233. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_odcs_v3.py +0 -0
  234. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_parquet.py +0 -0
  235. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_protobuf.py +0 -0
  236. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_sql_oracle.py +0 -0
  237. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_sql_postgres.py +0 -0
  238. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_sql_snowflake.py +0 -0
  239. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_sql_sqlserver.py +0 -0
  240. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_import_unity_file.py +0 -0
  241. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_integration_entropydata.py +0 -0
  242. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_require_env.py +0 -0
  243. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_roundtrip_jsonschema.py +0 -0
  244. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_sql_type_converter_physicaltype.py +0 -0
  245. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_api.py +0 -0
  246. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_athena_iceberg.py +0 -0
  247. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_azure_remote.py +0 -0
  248. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_bigquery.py +0 -0
  249. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_checks_filter.py +0 -0
  250. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_databricks.py +0 -0
  251. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_delta.py +0 -0
  252. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_gcs_csv_remote.py +0 -0
  253. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_gcs_json_remote.py +0 -0
  254. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_kafka.py +0 -0
  255. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_kafka_remote.py +0 -0
  256. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_local_json.py +0 -0
  257. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_local_json_nd.py +0 -0
  258. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_mysql.py +0 -0
  259. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_oracle.py +0 -0
  260. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_parquet.py +0 -0
  261. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_postgres.py +0 -0
  262. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_quality.py +0 -0
  263. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_s3_csv.py +0 -0
  264. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_s3_delta.py +0 -0
  265. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_s3_json.py +0 -0
  266. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_s3_json_complex.py +0 -0
  267. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_s3_json_multiple_models.py +0 -0
  268. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_s3_json_remote.py +0 -0
  269. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_server_not_found.py +0 -0
  270. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_snowflake.py +0 -0
  271. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_sqlserver.py +0 -0
  272. {datacontract_cli-0.12.3 → datacontract_cli-1.0.0}/tests/test_test_trino.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datacontract-cli
3
- Version: 0.12.3
3
+ Version: 1.0.0
4
4
  Summary: 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.
5
5
  Author-email: Jochen Christ <jochen.christ@innoq.com>, Stefan Negele <stefan.negele@innoq.com>, Simon Harrer <simon.harrer@innoq.com>
6
6
  License-Expression: MIT
@@ -8,7 +8,7 @@ Project-URL: Homepage, https://cli.datacontract.com
8
8
  Project-URL: Issues, https://github.com/datacontract/datacontract-cli/issues
9
9
  Classifier: Programming Language :: Python :: 3
10
10
  Classifier: Operating System :: OS Independent
11
- Requires-Python: <3.13,>=3.10
11
+ Requires-Python: <3.15,>=3.10
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
14
  Requires-Dist: typer<0.26,>=0.18.0
@@ -28,66 +28,70 @@ Requires-Dist: jinja_partials<1.0.0,>=0.2.1
28
28
  Requires-Dist: datacontract-specification<2.0.0,>=1.2.3
29
29
  Requires-Dist: open-data-contract-standard<4.0.0,>=3.1.2
30
30
  Requires-Dist: deepdiff<10.0.0,>=6.0.0
31
- Requires-Dist: setuptools>=70
32
31
  Provides-Extra: avro
33
32
  Requires-Dist: avro==1.12.1; extra == "avro"
34
33
  Provides-Extra: bigquery
35
- Requires-Dist: soda-core-bigquery<3.6.0,>=3.3.20; extra == "bigquery"
34
+ Requires-Dist: ibis-framework[bigquery]<13.0.0,>=10.0.0; extra == "bigquery"
36
35
  Provides-Extra: csv
37
36
  Requires-Dist: pandas>=2.0.0; extra == "csv"
38
37
  Provides-Extra: excel
39
38
  Requires-Dist: openpyxl<4.0.0,>=3.1.5; extra == "excel"
40
39
  Provides-Extra: databricks
41
- Requires-Dist: soda-core-spark-df<3.6.0,>=3.3.20; extra == "databricks"
42
- Requires-Dist: soda-core-spark[databricks]<3.6.0,>=3.3.20; extra == "databricks"
40
+ Requires-Dist: ibis-framework[databricks,pyspark]<13.0.0,>=10.0.0; extra == "databricks"
43
41
  Requires-Dist: databricks-sql-connector<4.3.0,>=3.7.0; extra == "databricks"
44
- Requires-Dist: databricks-sdk<0.109.0; extra == "databricks"
42
+ Requires-Dist: databricks-sdk<0.112.0; extra == "databricks"
45
43
  Requires-Dist: pyspark<5.0.0,>=3.5.0; extra == "databricks"
46
44
  Provides-Extra: iceberg
47
45
  Requires-Dist: pyiceberg==0.11.1; extra == "iceberg"
48
46
  Provides-Extra: kafka
49
47
  Requires-Dist: datacontract-cli[avro]; extra == "kafka"
50
- Requires-Dist: soda-core-spark-df<3.6.0,>=3.3.20; extra == "kafka"
48
+ Requires-Dist: ibis-framework[pyspark]<13.0.0,>=10.0.0; extra == "kafka"
51
49
  Requires-Dist: pyspark<5.0.0,>=3.5.0; extra == "kafka"
52
50
  Provides-Extra: mysql
53
- Requires-Dist: soda-core-mysql<3.6.0,>=3.3.20; extra == "mysql"
54
- Requires-Dist: mysql-connector-python<9.7.0,>=8.0.30; extra == "mysql"
51
+ Requires-Dist: datacontract-cli[duckdb]; extra == "mysql"
55
52
  Provides-Extra: postgres
56
- Requires-Dist: soda-core-postgres<3.6.0,>=3.3.20; extra == "postgres"
53
+ Requires-Dist: ibis-framework[postgres]<13.0.0,>=10.0.0; extra == "postgres"
57
54
  Provides-Extra: redshift
58
- Requires-Dist: soda-core-redshift<3.6.0,>=3.3.20; extra == "redshift"
55
+ Requires-Dist: ibis-framework[postgres]<13.0.0,>=10.0.0; extra == "redshift"
59
56
  Provides-Extra: s3
60
57
  Requires-Dist: s3fs<2027.0.0,>=2025.2.0; extra == "s3"
61
- Requires-Dist: aiobotocore<3.8.0,>=2.17.0; extra == "s3"
58
+ Requires-Dist: duckdb-extension-httpfs<1.6.0,>=1.5.0; extra == "s3"
59
+ Requires-Dist: duckdb-extension-aws<1.6.0,>=1.5.0; extra == "s3"
60
+ Provides-Extra: gcs
61
+ Requires-Dist: datacontract-cli[duckdb]; extra == "gcs"
62
+ Requires-Dist: duckdb-extension-httpfs<1.6.0,>=1.5.0; extra == "gcs"
63
+ Provides-Extra: azure
64
+ Requires-Dist: datacontract-cli[duckdb]; extra == "azure"
65
+ Requires-Dist: duckdb-extension-azure<1.6.0,>=1.5.0; extra == "azure"
62
66
  Provides-Extra: snowflake
63
67
  Requires-Dist: snowflake-connector-python[pandas]<4.6,>=3.6; extra == "snowflake"
64
- Requires-Dist: soda-core-snowflake<3.6.0,>=3.3.20; extra == "snowflake"
68
+ Requires-Dist: ibis-framework[snowflake]<13.0.0,>=10.0.0; extra == "snowflake"
65
69
  Provides-Extra: sqlserver
66
- Requires-Dist: soda-core-sqlserver<3.6.0,>=3.3.20; extra == "sqlserver"
70
+ Requires-Dist: ibis-framework[mssql]<13.0.0,>=10.0.0; extra == "sqlserver"
67
71
  Provides-Extra: oracle
68
- Requires-Dist: soda-core-oracle<3.6.0,>=3.3.20; extra == "oracle"
72
+ Requires-Dist: ibis-framework[oracle]<13.0.0,>=10.0.0; extra == "oracle"
69
73
  Provides-Extra: athena
70
- Requires-Dist: soda-core-athena<3.6.0,>=3.3.20; extra == "athena"
74
+ Requires-Dist: ibis-framework[athena]<13.0.0,>=10.0.0; extra == "athena"
71
75
  Provides-Extra: trino
72
- Requires-Dist: soda-core-trino<3.6.0,>=3.3.20; extra == "trino"
76
+ Requires-Dist: ibis-framework[trino]<13.0.0,>=10.0.0; extra == "trino"
73
77
  Provides-Extra: impala
74
- Requires-Dist: soda-core-impala<3.6.0,>=3.3.20; extra == "impala"
78
+ Requires-Dist: ibis-framework[impala]<13.0.0,>=10.0.0; extra == "impala"
75
79
  Provides-Extra: dbml
76
80
  Requires-Dist: pydbml>=1.1.1; extra == "dbml"
77
81
  Provides-Extra: duckdb
78
- Requires-Dist: duckdb<1.6.0,>=1.0.0; extra == "duckdb"
79
- Requires-Dist: soda-core-duckdb<3.6.0,>=3.3.20; extra == "duckdb"
82
+ Requires-Dist: duckdb<1.6.0,>=1.5.0; extra == "duckdb"
83
+ Requires-Dist: ibis-framework[duckdb]<13.0.0,>=10.0.0; extra == "duckdb"
80
84
  Provides-Extra: parquet
81
85
  Requires-Dist: pyarrow>=18.1.0; extra == "parquet"
82
86
  Provides-Extra: rdf
83
87
  Requires-Dist: rdflib==7.6.0; extra == "rdf"
84
88
  Provides-Extra: api
85
- Requires-Dist: fastapi==0.136.1; extra == "api"
86
- Requires-Dist: uvicorn<0.47.0,>=0.44.0; extra == "api"
89
+ Requires-Dist: fastapi<0.137.0,>=0.115.0; extra == "api"
90
+ Requires-Dist: uvicorn<0.49.0,>=0.44.0; extra == "api"
87
91
  Provides-Extra: protobuf
88
- Requires-Dist: protobuf<8.0,>=3.20; extra == "protobuf"
92
+ Requires-Dist: proto-schema-parser<3.0,>=1.0; extra == "protobuf"
89
93
  Provides-Extra: all
90
- Requires-Dist: datacontract-cli[api,athena,bigquery,csv,databricks,dbml,duckdb,excel,iceberg,impala,kafka,mysql,oracle,parquet,postgres,protobuf,rdf,redshift,s3,snowflake,sqlserver,trino]; extra == "all"
94
+ Requires-Dist: datacontract-cli[api,athena,azure,bigquery,csv,databricks,dbml,duckdb,excel,gcs,iceberg,impala,kafka,mysql,oracle,parquet,postgres,protobuf,rdf,redshift,s3,snowflake,sqlserver,trino]; extra == "all"
91
95
  Provides-Extra: dev
92
96
  Requires-Dist: datacontract-cli[all]; extra == "dev"
93
97
  Requires-Dist: httpx==0.28.1; extra == "dev"
@@ -99,7 +103,9 @@ Requires-Dist: pre-commit<4.7.0,>=3.7.1; extra == "dev"
99
103
  Requires-Dist: pytest; extra == "dev"
100
104
  Requires-Dist: pytest-xdist; extra == "dev"
101
105
  Requires-Dist: pymssql==2.3.13; extra == "dev"
102
- Requires-Dist: ruff==0.15.12; extra == "dev"
106
+ Requires-Dist: psycopg2-binary<3.0,>=2.9; extra == "dev"
107
+ Requires-Dist: mysql-connector-python<9.7.0,>=8.0.30; extra == "dev"
108
+ Requires-Dist: ruff==0.15.14; extra == "dev"
103
109
  Requires-Dist: testcontainers[kafka,minio,mssql,mysql,postgres]==4.14.2; extra == "dev"
104
110
  Requires-Dist: trino==0.337.0; extra == "dev"
105
111
  Dynamic: license-file
@@ -345,31 +351,33 @@ uv tool install --python python3.11 --upgrade 'datacontract-cli[all]'
345
351
 
346
352
  A list of available extras:
347
353
 
348
- | Dependency | Installation Command |
349
- |-------------------------|--------------------------------------------|
350
- | Amazon Athena | `pip install datacontract-cli[athena]` |
351
- | Avro Support | `pip install datacontract-cli[avro]` |
352
- | Google BigQuery | `pip install datacontract-cli[bigquery]` |
353
- | CSV | `pip install datacontract-cli[csv]` |
354
- | Databricks Integration | `pip install datacontract-cli[databricks]` |
355
- | DBML | `pip install datacontract-cli[dbml]` |
356
- | DuckDB (local/S3/GCS/Azure file testing) | `pip install datacontract-cli[duckdb]` |
357
- | Excel | `pip install datacontract-cli[excel]` |
358
- | Iceberg | `pip install datacontract-cli[iceberg]` |
359
- | Impala | `pip install datacontract-cli[impala]` |
360
- | Kafka Integration | `pip install datacontract-cli[kafka]` |
361
- | MySQL Integration | `pip install datacontract-cli[mysql]` |
362
- | Oracle | `pip install datacontract-cli[oracle]` |
363
- | Parquet | `pip install datacontract-cli[parquet]` |
364
- | PostgreSQL Integration | `pip install datacontract-cli[postgres]` |
365
- | protobuf | `pip install datacontract-cli[protobuf]` |
366
- | RDF | `pip install datacontract-cli[rdf]` |
367
- | Amazon Redshift | `pip install datacontract-cli[redshift]` |
368
- | S3 Integration | `pip install datacontract-cli[s3]` |
369
- | Snowflake Integration | `pip install datacontract-cli[snowflake]` |
370
- | Microsoft SQL Server | `pip install datacontract-cli[sqlserver]` |
371
- | Trino | `pip install datacontract-cli[trino]` |
372
- | API (run as web server) | `pip install datacontract-cli[api]` |
354
+ | Dependency | Installation Command |
355
+ |------------------------------------------|--------------------------------------------|
356
+ | Amazon Athena | `pip install datacontract-cli[athena]` |
357
+ | Avro Support | `pip install datacontract-cli[avro]` |
358
+ | Azure Integration | `pip install datacontract-cli[azure]` |
359
+ | Google BigQuery | `pip install datacontract-cli[bigquery]` |
360
+ | CSV | `pip install datacontract-cli[csv]` |
361
+ | Databricks Integration | `pip install datacontract-cli[databricks]` |
362
+ | DBML | `pip install datacontract-cli[dbml]` |
363
+ | DuckDB (local/S3/GCS/Azure file testing) | `pip install datacontract-cli[duckdb]` |
364
+ | Excel | `pip install datacontract-cli[excel]` |
365
+ | GCS Integration | `pip install datacontract-cli[gcs]` |
366
+ | Iceberg | `pip install datacontract-cli[iceberg]` |
367
+ | Impala | `pip install datacontract-cli[impala]` |
368
+ | Kafka Integration | `pip install datacontract-cli[kafka]` |
369
+ | MySQL Integration | `pip install datacontract-cli[mysql]` |
370
+ | Oracle | `pip install datacontract-cli[oracle]` |
371
+ | Parquet | `pip install datacontract-cli[parquet]` |
372
+ | PostgreSQL Integration | `pip install datacontract-cli[postgres]` |
373
+ | protobuf | `pip install datacontract-cli[protobuf]` |
374
+ | RDF | `pip install datacontract-cli[rdf]` |
375
+ | Amazon Redshift | `pip install datacontract-cli[redshift]` |
376
+ | S3 Integration | `pip install datacontract-cli[s3]` |
377
+ | Snowflake Integration | `pip install datacontract-cli[snowflake]` |
378
+ | Microsoft SQL Server | `pip install datacontract-cli[sqlserver]` |
379
+ | Trino | `pip install datacontract-cli[trino]` |
380
+ | API (run as web server) | `pip install datacontract-cli[api]` |
373
381
 
374
382
 
375
383
  ## Documentation
@@ -390,8 +398,7 @@ Commands
390
398
 
391
399
  ### init
392
400
  ```
393
-
394
- Usage: datacontract init [OPTIONS] [LOCATION]
401
+ Usage: datacontract init [OPTIONS] [LOCATION]
395
402
 
396
403
  Create an empty data contract.
397
404
 
@@ -407,15 +414,12 @@ Commands
407
414
  │ --help Show this message and exit. │
408
415
  ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
409
416
 
410
- Example: datacontract init datacontract.yaml
411
-
412
-
417
+ Example: datacontract init datacontract.yaml
413
418
  ```
414
419
 
415
420
  ### lint
416
421
  ```
417
-
418
- Usage: datacontract lint [OPTIONS] [LOCATION]
422
+ Usage: datacontract lint [OPTIONS] [LOCATION]
419
423
 
420
424
  Validate that the datacontract.yaml is correctly formatted.
421
425
 
@@ -424,29 +428,37 @@ Commands
424
428
  │ [default: datacontract.yaml] │
425
429
  ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
426
430
  ╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
427
- │ --json-schema TEXT The location (url or path) of the ODCS JSON
428
- Schema
429
- │ --output PATH Specify the file path where the test results
430
- should be written to (e.g.,
431
- './test-results/TEST-datacontract.xml'). If no
432
- path is provided, the output will be printed to
433
- stdout.
434
- --output-format [json|junit] The target format for the test results.
435
- │ --all-errors Report all JSON Schema validation errors instead
436
- of stopping after the first one.
437
- │ --debug --no-debug Enable debug logging
438
- --help Show this message and exit.
431
+ │ --json-schema TEXT The location (url or path) of the │
432
+ ODCS JSON Schema
433
+ │ --output PATH Specify the file path where the
434
+ test results should be written to │
435
+ (e.g.,
436
+ './test-results/TEST-datacontrac…
437
+ If no path is provided, the
438
+ output will be printed to stdout.
439
+ │ --output-format [json|junit] The target format for the test
440
+ results.
441
+ │ --all-errors Report all JSON Schema validation
442
+ errors instead of stopping after
443
+ │ the first one. │
444
+ │ --inline-references --no-inline-references Resolve external references │
445
+ │ (currently: │
446
+ │ authoritativeDefinitions[type in │
447
+ │ {definition, semantics}]) in the │
448
+ │ contract and inline the fetched │
449
+ │ content from the configured │
450
+ │ entropy-data host. │
451
+ │ [default: inline-references] │
452
+ │ --debug --no-debug Enable debug logging │
453
+ │ --help Show this message and exit. │
439
454
  ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
440
455
 
441
- Example: datacontract lint datacontract.yaml
442
-
443
-
456
+ Example: datacontract lint datacontract.yaml
444
457
  ```
445
458
 
446
459
  ### changelog
447
460
  ```
448
-
449
- Usage: datacontract changelog [OPTIONS] V1 V2
461
+ Usage: datacontract changelog [OPTIONS] V1 V2
450
462
 
451
463
  Show a changelog between two data contracts.
452
464
 
@@ -457,13 +469,17 @@ Commands
457
469
  │ [required] │
458
470
  ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
459
471
  ╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
460
- │ --debug --no-debug Enable debug logging
461
- --help Show this message and exit.
472
+ │ --inline-references --no-inline-references Resolve external references (currently:
473
+ authoritativeDefinitions[type in {definition,
474
+ │ semantics}]) in the contract and inline the │
475
+ │ fetched content from the configured │
476
+ │ entropy-data host. │
477
+ │ [default: inline-references] │
478
+ │ --debug --no-debug Enable debug logging │
479
+ │ --help Show this message and exit. │
462
480
  ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
463
481
 
464
- Example: datacontract changelog datacontract-v1.yaml datacontract-v2.yaml
465
-
466
-
482
+ Example: datacontract changelog datacontract-v1.yaml datacontract-v2.yaml
467
483
  ```
468
484
 
469
485
  ```bash
@@ -472,8 +488,7 @@ $ datacontract changelog v1.odcs.yaml v2.odcs.yaml
472
488
 
473
489
  ### test
474
490
  ```
475
-
476
- Usage: datacontract test [OPTIONS] [LOCATION]
491
+ Usage: datacontract test [OPTIONS] [LOCATION]
477
492
 
478
493
  Run schema and quality tests on configured servers.
479
494
 
@@ -522,13 +537,22 @@ $ datacontract changelog v1.odcs.yaml v2.odcs.yaml
522
537
  │ publishing the data │
523
538
  │ contract. │
524
539
  │ [default: ssl-verification] │
540
+ │ --inline-references --no-inline-references Resolve external references │
541
+ │ (currently: │
542
+ │ authoritativeDefinitions[t… │
543
+ │ in {definition, │
544
+ │ semantics}]) in the │
545
+ │ contract and inline the │
546
+ │ fetched content from the │
547
+ │ configured entropy-data │
548
+ │ host. │
549
+ │ [default: │
550
+ │ inline-references] │
525
551
  │ --debug --no-debug Enable debug logging │
526
552
  │ --help Show this message and exit. │
527
553
  ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
528
554
 
529
- Example: datacontract test datacontract.yaml --server production
530
-
531
-
555
+ Example: datacontract test datacontract.yaml --server production
532
556
  ```
533
557
 
534
558
  Data Contract CLI connects to a data source and runs schema and quality tests to verify that the data contract is valid.
@@ -540,7 +564,7 @@ $ datacontract test --server production datacontract.yaml
540
564
  For CI/CD pipelines, see [`ci`](#ci).
541
565
 
542
566
  The application uses different engines, based on the server `type`.
543
- Internally, it connects with DuckDB, Spark, or a native connection and executes the most tests with _soda-core_ and _fastjsonschema_.
567
+ Internally, it connects with DuckDB, Spark, or a native connection and executes most checks with _ibis_ (compiling dialect-specific SQL per backend) and validates JSON with _fastjsonschema_.
544
568
 
545
569
  #### Supported Data Sources
546
570
 
@@ -671,7 +695,7 @@ We support authentication to BigQuery using Service Account Key or Application D
671
695
  * BigQuery Job User
672
696
  * BigQuery Data Viewer
673
697
 
674
- When no `DATACONTRACT_BIGQUERY_ACCOUNT_INFO_JSON_PATH` is set, the CLI falls back to ADC/WIF automatically via Soda's `use_context_auth`.
698
+ When no `DATACONTRACT_BIGQUERY_ACCOUNT_INFO_JSON_PATH` is set, the CLI falls back to Application Default Credentials (ADC/WIF) automatically.
675
699
 
676
700
  ##### Example
677
701
 
@@ -764,6 +788,8 @@ models:
764
788
  | `DATACONTRACT_SQLSERVER_DRIVER` | `ODBC Driver 18 for SQL Server` | ODBC driver name |
765
789
  | `DATACONTRACT_SQLSERVER_TRUSTED_CONNECTION` | `True` | Deprecated. Equivalent to `AUTHENTICATION=windows` |
766
790
 
791
+ The `cli` mode reuses an `az login` session through the Azure default credential chain and requires ODBC Driver 18.1 or newer.
792
+
767
793
  </details>
768
794
 
769
795
  <details markdown="1">
@@ -841,9 +867,17 @@ models:
841
867
 
842
868
  | Environment Variable | Example | Description |
843
869
  |-------------------------------------------|--------------------------------------|-----------------------------------------------------------|
844
- | `DATACONTRACT_DATABRICKS_TOKEN` | `dapia00000000000000000000000000000` | The personal access token to authenticate |
845
- | `DATACONTRACT_DATABRICKS_HTTP_PATH` | `/sql/1.0/warehouses/b053a3ffffffff` | The HTTP path to the SQL warehouse or compute cluster |
846
870
  | `DATACONTRACT_DATABRICKS_SERVER_HOSTNAME` | `dbc-abcdefgh-1234.cloud.databricks.com` | The host name of the SQL warehouse or compute cluster |
871
+ | `DATACONTRACT_DATABRICKS_HTTP_PATH` | `/sql/1.0/warehouses/b053a3ffffffff` | The HTTP path to the SQL warehouse or compute cluster |
872
+ | `DATACONTRACT_DATABRICKS_TOKEN` | `dapia00000000000000000000000000000` | A personal access token (PAT) to authenticate |
873
+ | `DATACONTRACT_DATABRICKS_CLIENT_ID` | `00000000-0000-0000-0000-000000000000` | Service principal application (client) ID for OAuth machine-to-machine (M2M) auth |
874
+ | `DATACONTRACT_DATABRICKS_CLIENT_SECRET` | `dose00000000000000000000000000000000` | Service principal OAuth secret, used together with the client ID |
875
+ | `DATACONTRACT_DATABRICKS_PROFILE` | `my-profile` | A profile from `~/.databrickscfg`, delegating to the Databricks SDK unified auth (also resolves Azure CLI / managed identity) |
876
+ | `DATACONTRACT_DATABRICKS_AUTH_TYPE` | `databricks-oauth` | Explicit connector auth type, e.g. `databricks-oauth` for the interactive user-to-machine (U2M) browser login |
877
+
878
+ The authentication method is selected from the variables you set, in this order:
879
+ a personal access token, then an OAuth service principal (`CLIENT_ID` + `CLIENT_SECRET`),
880
+ then a config profile, then an explicit `AUTH_TYPE`.
847
881
 
848
882
  </details>
849
883
 
@@ -969,16 +1003,17 @@ models:
969
1003
  ```
970
1004
 
971
1005
  ##### Environment Variables
972
- All [parameters supported by Soda](https://docs.soda.io/soda/connect-snowflake.html), uppercased and prepended by `DATACONTRACT_SNOWFLAKE_` prefix.
1006
+ Any `DATACONTRACT_SNOWFLAKE_`-prefixed variable is passed (lowercased, prefix stripped) as a connection parameter to the [snowflake-connector-python](https://docs.snowflake.com/en/developer-guide/python-connector/python-connector-api#connect) driver that the ibis Snowflake backend uses.
973
1007
  For example:
974
1008
 
975
- | Soda parameter | Environment Variable |
1009
+ | Connection parameter | Environment Variable |
976
1010
  |----------------------|---------------------------------------------|
977
- | `username` | `DATACONTRACT_SNOWFLAKE_USERNAME` |
1011
+ | `user` | `DATACONTRACT_SNOWFLAKE_USERNAME` or `DATACONTRACT_SNOWFLAKE_USER` |
978
1012
  | `password` | `DATACONTRACT_SNOWFLAKE_PASSWORD` |
979
1013
  | `warehouse` | `DATACONTRACT_SNOWFLAKE_WAREHOUSE` |
980
1014
  | `role` | `DATACONTRACT_SNOWFLAKE_ROLE` |
981
- | `connection_timeout` | `DATACONTRACT_SNOWFLAKE_CONNECTION_TIMEOUT` |
1015
+
1016
+ (`DATACONTRACT_SNOWFLAKE_USERNAME` is accepted as an alias for the connector's `user` parameter.)
982
1017
 
983
1018
  Beware, that parameters:
984
1019
  * `account`
@@ -1082,24 +1117,14 @@ models:
1082
1117
  ```
1083
1118
 
1084
1119
  ##### Environment Variables
1085
- All [parameters supported by Soda](https://docs.soda.io/soda/connect-redshift.html), uppercased and prepended by `DATACONTRACT_REDSHIFT_` prefix.
1086
- For example:
1087
-
1088
- | Soda parameter | Environment Variable | Details |
1089
- |---------------------|-------------------------------------------|---------------------|
1090
- | `username` | `DATACONTRACT_REDSHIFT_USERNAME` | |
1091
- | `password` | `DATACONTRACT_REDSHIFT_PASSWORD` | leave unset for IAM |
1092
- | `region` | `DATACONTRACT_REDSHIFT_REGION` | for IAM |
1093
- | `access_key_id` | `DATACONTRACT_REDSHIFT_ACCESS_KEY_ID` | for IAM |
1094
- | `secret_access_key` | `DATACONTRACT_REDSHIFT_SECRET_ACCESS_KEY` | for IAM |
1095
- | `role_arn` | `DATACONTRACT_REDSHIFT_ROLE_ARN` | for IAM |
1096
-
1097
- IAM credentials can be supplied in two ways:
1120
+ Redshift is reached over the PostgreSQL wire protocol via the ibis Postgres backend, using username/password authentication.
1098
1121
 
1099
- 1. **AWS_PROFILE** set `AWS_PROFILE` in your shell to a profile defined in `~/.aws/credentials` and `DATACONTRACT_REDSHIFT_REGION`.
1100
- 2. **Explicit keys** — set `DATACONTRACT_REDSHIFT_REGION`, `..._ACCESS_KEY_ID`, `..._SECRET_ACCESS_KEY`, and `..._SESSION_TOKEN` for temporary credentials, or `..._ROLE_ARN` to assume a role.
1122
+ | Connection parameter | Environment Variable |
1123
+ |----------------------|----------------------------------|
1124
+ | `user` | `DATACONTRACT_REDSHIFT_USERNAME` |
1125
+ | `password` | `DATACONTRACT_REDSHIFT_PASSWORD` |
1101
1126
 
1102
- >IAM authentication is supported only for **provisioned** Redshift clusters.
1127
+ > Note: IAM-based authentication (region / access key / role ARN) is not currently supported for Redshift, because ibis connects through the generic Postgres backend rather than a Redshift-specific driver.
1103
1128
 
1104
1129
  </details>
1105
1130
 
@@ -1175,7 +1200,7 @@ models:
1175
1200
  <details markdown="1">
1176
1201
  <summary><strong>Impala</strong></summary>
1177
1202
 
1178
- Data Contract CLI can run Soda checks against an Apache Impala cluster.
1203
+ Data Contract CLI can run checks against an Apache Impala cluster.
1179
1204
 
1180
1205
  ##### Example
1181
1206
 
@@ -1186,7 +1211,7 @@ servers:
1186
1211
  type: impala
1187
1212
  host: my-impala-host
1188
1213
  port: 443
1189
- # Optional default database used for Soda scans
1214
+ # Optional default database used for the checks
1190
1215
  database: my_database
1191
1216
  models:
1192
1217
  my_table_1: # corresponds to a table
@@ -1218,7 +1243,7 @@ If `physicalType` is not specified in the schema, we recommend the following map
1218
1243
  | `date` | `DATE` |
1219
1244
  | `datetime` | `TIMESTAMP` |
1220
1245
 
1221
- This keeps the Impala schema compatible with the expectations of the Soda checks generated by datacontract-cli.
1246
+ This keeps the Impala schema compatible with the expectations of the checks generated by datacontract-cli.
1222
1247
 
1223
1248
  </details>
1224
1249
 
@@ -1362,8 +1387,7 @@ $ datacontract dbt sync orders.odcs.yaml --publish https://api.entropy-data.com/
1362
1387
 
1363
1388
  ### ci
1364
1389
  ```
1365
-
1366
- Usage: datacontract ci [OPTIONS] [LOCATIONS]...
1390
+ Usage: datacontract ci [OPTIONS] [LOCATIONS]...
1367
1391
 
1368
1392
  Run tests for CI/CD pipelines. Emits GitHub Actions annotations and step summary.
1369
1393
 
@@ -1372,48 +1396,59 @@ $ datacontract dbt sync orders.odcs.yaml --publish https://api.entropy-data.com/
1372
1396
  │ file(s). │
1373
1397
  ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
1374
1398
  ╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
1375
- │ --json-schema TEXT The location (url or path)
1376
- of the ODCS JSON Schema
1377
- --server TEXT The server configuration
1378
- to run the schema and
1379
- quality tests. Use the key
1380
- of the server object in
1381
- the data contract yaml
1382
- file to refer to a server,
1383
- e.g., `production`, or
1384
- `all` for all servers
1385
- (default).
1386
- [default: all]
1387
- --publish TEXT The url to publish the
1388
- results after the test.
1389
- │ --output PATH Specify the file path
1390
- where the test results
1391
- should be written to
1392
- (e.g.,
1393
- './test-results/TEST-data…
1394
- --output-format [json|junit] The target format for the
1395
- test results.
1396
- │ --logs --no-logs Print logs
1397
- [default: no-logs]
1398
- │ --json Print test results as JSON
1399
- to stdout.
1400
- │ --fail-on [warning|error|never] Minimum severity that
1401
- causes a non-zero exit
1402
- code.
1403
- [default: error]
1404
- --ssl-verification --no-ssl-verification SSL verification when
1405
- publishing the data
1406
- contract.
1407
- [default:
1408
- ssl-verification]
1409
- --debug --no-debug Enable debug logging
1410
- --help Show this message and
1411
- exit.
1399
+ │ --json-schema TEXT The location (url or
1400
+ path) of the ODCS JSON
1401
+ Schema
1402
+ --server TEXT The server configuration
1403
+ to run the schema and
1404
+ quality tests. Use the
1405
+ key of the server object
1406
+ in the data contract
1407
+ yaml file to refer to a
1408
+ server, e.g.,
1409
+ `production`, or `all`
1410
+ for all servers
1411
+ (default).
1412
+ [default: all]
1413
+ │ --publish TEXT The url to publish the
1414
+ results after the test.
1415
+ --output PATH Specify the file path
1416
+ where the test results
1417
+ should be written to
1418
+ (e.g.,
1419
+ './test-results/TEST-da…
1420
+ │ --output-format [json|junit] The target format for
1421
+ the test results.
1422
+ │ --logs --no-logs Print logs
1423
+ [default: no-logs]
1424
+ │ --json Print test results as
1425
+ JSON to stdout.
1426
+ --fail-on [warning|error|never] Minimum severity that
1427
+ causes a non-zero exit
1428
+ code.
1429
+ [default: error]
1430
+ --ssl-verification --no-ssl-verification SSL verification when
1431
+ publishing the data
1432
+ contract.
1433
+ [default:
1434
+ ssl-verification]
1435
+ --inline-references --no-inline-references Resolve external
1436
+ │ references (currently: │
1437
+ │ authoritativeDefinition… │
1438
+ │ in {definition, │
1439
+ │ semantics}]) in the │
1440
+ │ contract and inline the │
1441
+ │ fetched content from the │
1442
+ │ configured entropy-data │
1443
+ │ host. │
1444
+ │ [default: │
1445
+ │ inline-references] │
1446
+ │ --debug --no-debug Enable debug logging │
1447
+ │ --help Show this message and │
1448
+ │ exit. │
1412
1449
  ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
1413
1450
 
1414
- Example: datacontract ci datacontract.yaml --output test-results.xml --output-format junit
1415
-
1416
-
1451
+ Example: datacontract ci datacontract.yaml --output test-results.xml --output-format junit
1417
1452
  ```
1418
1453
 
1419
1454
  The `ci` command wraps [`test`](#test) with CI/CD-specific features:
@@ -1496,8 +1531,7 @@ steps:
1496
1531
 
1497
1532
  ### export
1498
1533
  ```
1499
-
1500
- Usage: datacontract export [OPTIONS] COMMAND [ARGS]...
1534
+ Usage: datacontract export [OPTIONS] COMMAND [ARGS]...
1501
1535
 
1502
1536
  Convert a data contract to a target format.
1503
1537
 
@@ -1537,9 +1571,7 @@ steps:
1537
1571
 
1538
1572
  Example: datacontract export html datacontract.yaml --output datacontract.html
1539
1573
  For SQL dialects (postgres, mysql, snowflake, databricks, sqlserver, trino, oracle), use
1540
- `datacontract export sql --dialect <dialect>`.
1541
-
1542
-
1574
+ `datacontract export sql --dialect <dialect>`.
1543
1575
  ```
1544
1576
 
1545
1577
  Run `datacontract export <format> --help` to see the format-specific options (e.g. `datacontract export sql --help`). If you are missing a format, please [create an issue on GitHub](https://github.com/datacontract/datacontract-cli/issues).
@@ -1875,8 +1907,7 @@ For more information about the Excel template structure, visit the [ODCS Excel T
1875
1907
 
1876
1908
  ### import
1877
1909
  ```
1878
-
1879
- Usage: datacontract import [OPTIONS] COMMAND [ARGS]...
1910
+ Usage: datacontract import [OPTIONS] COMMAND [ARGS]...
1880
1911
 
1881
1912
  Create a data contract from a source format.
1882
1913
 
@@ -1902,9 +1933,7 @@ For more information about the Excel template structure, visit the [ODCS Excel T
1902
1933
  │ excel Import a data contract from an Excel file. │
1903
1934
  ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
1904
1935
 
1905
- Example: datacontract import sql --source ddl.sql --dialect postgres --output datacontract.yaml
1906
-
1907
-
1936
+ Example: datacontract import sql --source ddl.sql --dialect postgres --output datacontract.yaml
1908
1937
  ```
1909
1938
 
1910
1939
  Run `datacontract import <format> --help` to see the format-specific options (e.g. `datacontract import sql --help`). If you are missing a format, please [create an issue on GitHub](https://github.com/datacontract/datacontract-cli/issues).
@@ -1973,6 +2002,8 @@ datacontract import unity --table <table_full_name>
1973
2002
  Importing from dbt manifest file.
1974
2003
  You may give the `--model` parameter to enumerate the tables that should be imported. If no tables are given, _all_ available tables of the database will be imported.
1975
2004
 
2005
+ For [versioned dbt models](https://docs.getdbt.com/docs/collaborate/govern/model-versions), use the `name.vN` convention to target a specific version. Omitting the version suffix imports all versions of that model.
2006
+
1976
2007
  Examples:
1977
2008
 
1978
2009
  ```bash
@@ -2116,15 +2147,9 @@ datacontract import csv --source "test.csv"
2116
2147
 
2117
2148
  Importing from protobuf File. Specify file in `source` parameter.
2118
2149
 
2119
- Requires the `protoc` compiler installed on the system. Install with:
2120
-
2121
- | Platform | Command |
2122
- |----------------|--------------------------------------|
2123
- | macOS | `brew install protobuf` |
2124
- | Debian/Ubuntu | `sudo apt install protobuf-compiler` |
2125
- | Fedora/RHEL | `sudo dnf install protobuf-compiler` |
2126
- | Arch | `sudo pacman -S protobuf` |
2127
- | Windows | `choco install protoc` (or [download a release](https://github.com/protocolbuffers/protobuf/releases)) |
2150
+ `.proto` files are parsed with a pure-Python parser, so no `protoc` compiler or
2151
+ other system dependency is required. Transitive `import` statements (including
2152
+ across subdirectories) are resolved automatically.
2128
2153
 
2129
2154
  Example:
2130
2155
 
@@ -2137,8 +2162,7 @@ datacontract import protobuf --source "test.proto"
2137
2162
 
2138
2163
  ### catalog
2139
2164
  ```
2140
-
2141
- Usage: datacontract catalog [OPTIONS]
2165
+ Usage: datacontract catalog [OPTIONS]
2142
2166
 
2143
2167
  Create a html catalog of data contracts.
2144
2168
 
@@ -2153,9 +2177,7 @@ datacontract import protobuf --source "test.proto"
2153
2177
  │ --help Show this message and exit. │
2154
2178
  ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
2155
2179
 
2156
- Example: datacontract catalog --files "**/*.yaml" --output catalog/
2157
-
2158
-
2180
+ Example: datacontract catalog --files "**/*.yaml" --output catalog/
2159
2181
  ```
2160
2182
 
2161
2183
  Examples:
@@ -2170,8 +2192,7 @@ datacontract catalog --files "*.odcs.yaml"
2170
2192
 
2171
2193
  ### publish
2172
2194
  ```
2173
-
2174
- Usage: datacontract publish [OPTIONS] [LOCATION]
2195
+ Usage: datacontract publish [OPTIONS] [LOCATION]
2175
2196
 
2176
2197
  Publish the data contract to the Entropy Data.
2177
2198
 
@@ -2189,15 +2210,12 @@ datacontract catalog --files "*.odcs.yaml"
2189
2210
  │ --help Show this message and exit. │
2190
2211
  ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
2191
2212
 
2192
- Example: datacontract publish datacontract.yaml
2193
-
2194
-
2213
+ Example: datacontract publish datacontract.yaml
2195
2214
  ```
2196
2215
 
2197
2216
  ### api
2198
2217
  ```
2199
-
2200
- Usage: datacontract api [OPTIONS]
2218
+ Usage: datacontract api [OPTIONS]
2201
2219
 
2202
2220
  Start the datacontract CLI as server application with REST API.
2203
2221
 
@@ -2226,9 +2244,7 @@ datacontract catalog --files "*.odcs.yaml"
2226
2244
  │ --help Show this message and exit. │
2227
2245
  ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
2228
2246
 
2229
- Example: datacontract api --port 4242 --host 0.0.0.0
2230
-
2231
-
2247
+ Example: datacontract api --port 4242 --host 0.0.0.0
2232
2248
  ```
2233
2249
 
2234
2250
  ## Integrations
@@ -2478,10 +2494,11 @@ models:
2478
2494
 
2479
2495
  - Install [uv](https://docs.astral.sh/uv/)
2480
2496
  - Python base interpreter should be 3.11.x.
2497
+ - A JDK (17 or 21) must be installed for the Spark-based tests (e.g. `test_test_kafka.py`, `test_test_delta.py`, `test_test_dataframe.py`, `test_import_spark.py`). Java 25 is not yet supported. On macOS and Linux you can install one with [SDKMAN](https://sdkman.io): `sdk install java 21.0.11-tem` (or any 21.x build from `sdk list java`). Verify with `java --version`.
2481
2498
  - Docker engine must be running to execute the tests.
2482
2499
 
2483
2500
  ```bash
2484
- # make sure uv is installed
2501
+ sdk use java 21.0.11-tem
2485
2502
  uv python pin 3.11
2486
2503
  uv venv
2487
2504
  uv pip install -e '.[dev]'