datacontract-cli 1.0.14__tar.gz → 1.0.16__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.

Potentially problematic release.


This version of datacontract-cli might be problematic. Click here for more details.

Files changed (413) hide show
  1. {datacontract_cli-1.0.14/datacontract_cli.egg-info → datacontract_cli-1.0.16}/PKG-INFO +38 -15
  2. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/README.md +21 -6
  3. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/api.py +22 -1
  4. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/cli.py +14 -3
  5. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_catalog.py +1 -1
  6. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_import.py +369 -14
  7. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_publish.py +1 -1
  8. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_test.py +72 -14
  9. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/data_contract.py +9 -0
  10. datacontract_cli-1.0.16/datacontract/engines/checks/check_filter.py +50 -0
  11. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/checks/check_spec.py +15 -0
  12. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/checks/create_checks.py +145 -63
  13. datacontract_cli-1.0.16/datacontract/engines/checks/dimensions.py +53 -0
  14. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/checks/physical_type_match.py +106 -12
  15. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/data_contract_test.py +80 -2
  16. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/datacontract/check_azure_blob_file.py +42 -17
  17. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/fastjsonschema/s3/s3_read_files.py +5 -4
  18. datacontract_cli-1.0.16/datacontract/engines/ibis/connections/aws_credentials.py +90 -0
  19. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/connections/connect.py +153 -36
  20. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/connections/duckdb_connection.py +74 -27
  21. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/connections/kafka.py +131 -12
  22. datacontract_cli-1.0.16/datacontract/engines/ibis/connections/redshift_credentials.py +244 -0
  23. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/connections/redshift_patch.py +7 -0
  24. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/ibis_check_execute.py +17 -2
  25. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/native_type.py +133 -20
  26. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/protobuf_exporter.py +16 -24
  27. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/sodacl_check_builder.py +3 -3
  28. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/sql_type_converter.py +9 -4
  29. datacontract_cli-1.0.16/datacontract/imports/athena_importer.py +114 -0
  30. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/bigquery_importer.py +11 -0
  31. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/csv_importer.py +1 -6
  32. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/dbt_importer.py +6 -2
  33. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/glue_importer.py +30 -18
  34. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/importer.py +11 -0
  35. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/importer_factory.py +48 -0
  36. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/json_importer.py +1 -5
  37. datacontract_cli-1.0.16/datacontract/imports/mysql_importer.py +217 -0
  38. datacontract_cli-1.0.16/datacontract/imports/object_storage_importer.py +182 -0
  39. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/odcs_helper.py +9 -0
  40. datacontract_cli-1.0.16/datacontract/imports/oracle_importer.py +247 -0
  41. datacontract_cli-1.0.16/datacontract/imports/postgres_importer.py +245 -0
  42. datacontract_cli-1.0.16/datacontract/imports/redshift_importer.py +264 -0
  43. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/sql_importer.py +4 -1
  44. datacontract_cli-1.0.16/datacontract/imports/sqlserver_importer.py +246 -0
  45. datacontract_cli-1.0.16/datacontract/imports/trino_importer.py +193 -0
  46. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/integration/dbt_sync.py +172 -41
  47. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/model/run.py +5 -0
  48. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16/datacontract_cli.egg-info}/PKG-INFO +38 -15
  49. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract_cli.egg-info/SOURCES.txt +36 -0
  50. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract_cli.egg-info/requires.txt +18 -8
  51. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/pyproject.toml +51 -10
  52. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_api.py +40 -0
  53. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_cli.py +14 -0
  54. datacontract_cli-1.0.16/tests/test_connect_athena.py +107 -0
  55. datacontract_cli-1.0.16/tests/test_connect_bigquery.py +95 -0
  56. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_connect_databricks.py +67 -0
  57. datacontract_cli-1.0.16/tests/test_connect_impala.py +103 -0
  58. datacontract_cli-1.0.16/tests/test_connect_redshift.py +80 -0
  59. datacontract_cli-1.0.16/tests/test_connect_s3_credentials.py +187 -0
  60. datacontract_cli-1.0.16/tests/test_connect_snowflake.py +104 -0
  61. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_connect_sqlserver.py +28 -3
  62. datacontract_cli-1.0.16/tests/test_create_checks_primary_key.py +84 -0
  63. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_dbt_sync.py +198 -2
  64. datacontract_cli-1.0.16/tests/test_docs_commands.py +105 -0
  65. datacontract_cli-1.0.16/tests/test_docs_ordering.py +125 -0
  66. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_dbml.py +1 -1
  67. datacontract_cli-1.0.16/tests/test_ibis_mssql_schema.py +61 -0
  68. datacontract_cli-1.0.16/tests/test_import_athena.py +209 -0
  69. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_csv.py +2 -3
  70. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_dbt.py +27 -1
  71. datacontract_cli-1.0.16/tests/test_import_mysql.py +199 -0
  72. datacontract_cli-1.0.16/tests/test_import_object_storage.py +192 -0
  73. datacontract_cli-1.0.16/tests/test_import_oracle.py +160 -0
  74. datacontract_cli-1.0.16/tests/test_import_postgres.py +186 -0
  75. datacontract_cli-1.0.16/tests/test_import_redshift.py +258 -0
  76. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_sql_snowflake.py +13 -0
  77. datacontract_cli-1.0.16/tests/test_import_sqlserver.py +115 -0
  78. datacontract_cli-1.0.16/tests/test_import_trino.py +139 -0
  79. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_unity_file.py +25 -0
  80. datacontract_cli-1.0.16/tests/test_install_extras.py +72 -0
  81. datacontract_cli-1.0.16/tests/test_native_type_schema_scope.py +102 -0
  82. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_physical_type_match.py +129 -0
  83. datacontract_cli-1.0.16/tests/test_redshift_credentials.py +273 -0
  84. datacontract_cli-1.0.16/tests/test_server_type_mssql.py +77 -0
  85. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_sql_type_converter_physicaltype.py +2 -1
  86. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_azure_blob_file.py +90 -0
  87. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_checks_filter.py +32 -0
  88. datacontract_cli-1.0.16/tests/test_test_dimension_filter.py +288 -0
  89. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_kafka.py +121 -0
  90. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_parquet.py +11 -0
  91. datacontract_cli-1.0.16/tests/test_test_quality_id_and_tag_filter.py +164 -0
  92. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/LICENSE +0 -0
  93. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/MANIFEST.in +0 -0
  94. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/__init__.py +0 -0
  95. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/catalog/catalog.py +0 -0
  96. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/changelog/__init__.py +0 -0
  97. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/changelog/changelog.py +0 -0
  98. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/changelog/normalize.py +0 -0
  99. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_api.py +0 -0
  100. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_changelog.py +0 -0
  101. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_ci.py +0 -0
  102. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_dbt.py +0 -0
  103. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_edit.py +0 -0
  104. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_export.py +0 -0
  105. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_init.py +0 -0
  106. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_lint.py +0 -0
  107. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/VERSION +0 -0
  108. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/abap-Bs8kvjsq.js +0 -0
  109. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/apex-Dspwrl5m.js +0 -0
  110. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/assets/editor.worker-4.7.0.js +0 -0
  111. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/assets/yaml.worker-4.7.0.js +0 -0
  112. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/azcli-k1BiOau1.js +0 -0
  113. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/bat-BIP72KWc.js +0 -0
  114. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/bicep-VhQeYhS3.js +0 -0
  115. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/cameligo-DnuAXtHg.js +0 -0
  116. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/clojure-BAuDPsal.js +0 -0
  117. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/coffee-BV06qSnj.js +0 -0
  118. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/cpp-Cz8Jeyrf.js +0 -0
  119. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/csharp-F6hhlXFb.js +0 -0
  120. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/csp-KzlEHCyI.js +0 -0
  121. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/css-e4FKntZ3.js +0 -0
  122. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/cssMode-BNkTa2xp.js +0 -0
  123. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/cypher-CpvDGKRr.js +0 -0
  124. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/dart-DdHeFWR0.js +0 -0
  125. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/datacontract-editor.css +0 -0
  126. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/datacontract-editor.es.js +0 -0
  127. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/dockerfile-aoNXDcio.js +0 -0
  128. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/ecl-C4Q0DYuA.js +0 -0
  129. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/elixir-C9X42b0T.js +0 -0
  130. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/flow9-Bff42pfB.js +0 -0
  131. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/freemarker2-Dyfzmb5A.js +0 -0
  132. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/fsharp-C6vPAsHG.js +0 -0
  133. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/go-DEr8zx9f.js +0 -0
  134. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/graphql-BiNBBRFh.js +0 -0
  135. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/handlebars-BtDNI-uC.js +0 -0
  136. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/hcl-2T9lKuFg.js +0 -0
  137. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/html-Cn4TGw_o.js +0 -0
  138. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/htmlMode-Bf84vbo2.js +0 -0
  139. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/index.html +0 -0
  140. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/ini-CZGtssYM.js +0 -0
  141. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/java-B260NeH3.js +0 -0
  142. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/javascript-B86Kac07.js +0 -0
  143. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/jsonMode-Ckgg5lAE.js +0 -0
  144. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/julia-kuNLM9c5.js +0 -0
  145. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/kotlin-Bz6kAefA.js +0 -0
  146. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/less-AZUtS89I.js +0 -0
  147. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/lexon-BcmgnyRb.js +0 -0
  148. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/liquid-D0NPwuu_.js +0 -0
  149. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/logo_fuchsia_v2.svg +0 -0
  150. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/lua-Dz1RbATg.js +0 -0
  151. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/m3-CIMooLFn.js +0 -0
  152. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/markdown-C1BsCK9P.js +0 -0
  153. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/mdx-QFRSBtVQ.js +0 -0
  154. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/mips-BovsnfLQ.js +0 -0
  155. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/monaco-4.7.0.js +0 -0
  156. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/msdax-CiRB2ZB-.js +0 -0
  157. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/mysql-BwdpPE19.js +0 -0
  158. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/objective-c-D4nfHfso.js +0 -0
  159. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/odcs.svg +0 -0
  160. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/pascal--j5-PYtz.js +0 -0
  161. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/pascaligo-C7TcJxNL.js +0 -0
  162. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/perl-BzEWqUb5.js +0 -0
  163. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/pgsql-B_KZ0mGX.js +0 -0
  164. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/php-A19QHzQV.js +0 -0
  165. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/pla-COeKY1hA.js +0 -0
  166. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/postiats-BfMp7zJL.js +0 -0
  167. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/powerquery-B0TS_5Gb.js +0 -0
  168. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/powershell-5jSbKdYB.js +0 -0
  169. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/protobuf-YgnOutn3.js +0 -0
  170. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/pug-DLej6kn5.js +0 -0
  171. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/python-C8RW9B6A.js +0 -0
  172. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/qsharp-AhjqtSHB.js +0 -0
  173. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/r-D-F4P80w.js +0 -0
  174. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/razor-CLZqdY_r.js +0 -0
  175. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/redis-hwwIlMnV.js +0 -0
  176. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/redshift-Bcm_kjEG.js +0 -0
  177. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/restructuredtext-CrdzfPP-.js +0 -0
  178. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/ruby-QC2UNm1s.js +0 -0
  179. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/rust-5aqiQ3L5.js +0 -0
  180. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/sb-B1g1ZfLJ.js +0 -0
  181. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/scala-C2U4R5Gb.js +0 -0
  182. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/scheme-DeFRbslr.js +0 -0
  183. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/scss-RSTCiCmI.js +0 -0
  184. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/shell-BpF-iNu8.js +0 -0
  185. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/solidity-C00r2mbQ.js +0 -0
  186. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/sophia-DVW5ZKDB.js +0 -0
  187. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/sparql-B0nmpxeX.js +0 -0
  188. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/sql-CJwKPERn.js +0 -0
  189. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/st-DPlKG5DT.js +0 -0
  190. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/swift-YZBAbVHV.js +0 -0
  191. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/systemverilog-CDQSaH63.js +0 -0
  192. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/tcl-Dlu8sp6Q.js +0 -0
  193. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/tsMode-yleMwhPq.js +0 -0
  194. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/twig-C5TO7-kw.js +0 -0
  195. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/typescript-CJBeebKU.js +0 -0
  196. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/typespec-BsmjDEu7.js +0 -0
  197. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/vb-ChHvIDrk.js +0 -0
  198. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/wgsl-XEp1ju8c.js +0 -0
  199. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/xml-vC-NMVX1.js +0 -0
  200. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/yaml-Dlf2VF-T.js +0 -0
  201. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/__init__.py +0 -0
  202. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/checks/__init__.py +0 -0
  203. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/checks/type_normalize.py +0 -0
  204. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/datacontract/check_that_datacontract_contains_valid_servers_configuration.py +0 -0
  205. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/datacontract/check_that_datacontract_file_exists.py +0 -0
  206. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/fastjsonschema/check_jsonschema.py +0 -0
  207. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/__init__.py +0 -0
  208. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/connections/__init__.py +0 -0
  209. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/connections/oracle_patch.py +0 -0
  210. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/dtype_category.py +0 -0
  211. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/snowflake_structured_types.py +0 -0
  212. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/__init__.py +0 -0
  213. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/avro_exporter.py +0 -0
  214. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/avro_idl_exporter.py +0 -0
  215. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/bigquery_exporter.py +0 -0
  216. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/custom_exporter.py +0 -0
  217. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/data_caterer_exporter.py +0 -0
  218. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/dbml_exporter.py +0 -0
  219. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/dbt_exporter.py +0 -0
  220. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/dcs_exporter.py +0 -0
  221. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/dqx_exporter.py +0 -0
  222. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/duckdb_type_converter.py +0 -0
  223. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/excel_exporter.py +0 -0
  224. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/exporter.py +0 -0
  225. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/exporter_factory.py +0 -0
  226. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/go_exporter.py +0 -0
  227. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/great_expectations_exporter.py +0 -0
  228. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/html_exporter.py +0 -0
  229. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/iceberg_exporter.py +0 -0
  230. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/jsonschema_exporter.py +0 -0
  231. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/markdown_exporter.py +0 -0
  232. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/mermaid_exporter.py +0 -0
  233. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/odcs_export_helper.py +0 -0
  234. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/odcs_v3_exporter.py +0 -0
  235. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/pandas_type_converter.py +0 -0
  236. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/pydantic_exporter.py +0 -0
  237. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/rdf_exporter.py +0 -0
  238. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/sodacl_exporter.py +0 -0
  239. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/spark_exporter.py +0 -0
  240. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/sql_exporter.py +0 -0
  241. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/sqlalchemy_exporter.py +0 -0
  242. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/avro_importer.py +0 -0
  243. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/dbml_importer.py +0 -0
  244. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/dcs_importer.py +0 -0
  245. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/excel_importer.py +0 -0
  246. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/iceberg_importer.py +0 -0
  247. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/jsonschema_importer.py +0 -0
  248. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/odcs_importer.py +0 -0
  249. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/parquet_importer.py +0 -0
  250. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/powerbi_importer.py +0 -0
  251. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/protobuf_importer.py +0 -0
  252. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/snowflake_importer.py +0 -0
  253. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/spark_importer.py +0 -0
  254. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/unity_importer.py +0 -0
  255. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/init/init_template.py +0 -0
  256. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/integration/dbt_test_mapping.py +0 -0
  257. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/integration/entropy_data.py +0 -0
  258. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/lint/files.py +0 -0
  259. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/lint/resolve.py +0 -0
  260. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/lint/resources.py +0 -0
  261. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/lint/schema.py +0 -0
  262. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/lint/urls.py +0 -0
  263. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/model/changelog.py +0 -0
  264. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/model/exceptions.py +0 -0
  265. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/model/odcs.py +0 -0
  266. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/model/server.py +0 -0
  267. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/output/__init__.py +0 -0
  268. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/output/ci_output.py +0 -0
  269. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/output/json_test_results.py +0 -0
  270. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/output/junit_test_results.py +0 -0
  271. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/output/output_format.py +0 -0
  272. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/output/test_results_writer.py +0 -0
  273. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/output/text_changelog_results.py +0 -0
  274. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/py.typed +0 -0
  275. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/datacontract-1.1.0.init.yaml +0 -0
  276. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/datacontract-1.1.0.schema.json +0 -0
  277. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/datacontract-1.2.0.init.yaml +0 -0
  278. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/datacontract-1.2.0.schema.json +0 -0
  279. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/datacontract-1.2.1.init.yaml +0 -0
  280. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/datacontract-1.2.1.schema.json +0 -0
  281. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/odcs-3.0.1.schema.json +0 -0
  282. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/odcs-3.0.2.schema.json +0 -0
  283. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/odcs-3.1.0.init.yaml +0 -0
  284. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/odcs-3.1.0.schema.json +0 -0
  285. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/datacontract.html +0 -0
  286. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/datacontract_odcs.html +0 -0
  287. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/index.html +0 -0
  288. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/partials/datacontract_information.html +0 -0
  289. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/partials/datacontract_servicelevels.html +0 -0
  290. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/partials/datacontract_terms.html +0 -0
  291. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/partials/definition.html +0 -0
  292. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/partials/example.html +0 -0
  293. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/partials/model_field.html +0 -0
  294. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/partials/quality.html +0 -0
  295. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/partials/server.html +0 -0
  296. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/style/output.css +0 -0
  297. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract_cli.egg-info/dependency_links.txt +0 -0
  298. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract_cli.egg-info/entry_points.txt +0 -0
  299. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract_cli.egg-info/top_level.txt +0 -0
  300. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/setup.cfg +0 -0
  301. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_catalog.py +0 -0
  302. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_changelog.py +0 -0
  303. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_changelog_engine.py +0 -0
  304. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_changelog_normalize.py +0 -0
  305. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_changelog_output_text.py +0 -0
  306. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_ci_output.py +0 -0
  307. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_connect_trino.py +0 -0
  308. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_create_checks_nested_type.py +0 -0
  309. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_create_checks_physical_type.py +0 -0
  310. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_data_contract.py +0 -0
  311. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_data_contract_checks.py +0 -0
  312. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_data_contract_specification.py +0 -0
  313. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_dbt_test_mapping.py +0 -0
  314. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_description_linter.py +0 -0
  315. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_download_datacontract_file.py +0 -0
  316. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_dtype_category.py +0 -0
  317. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_duckdb_json.py +0 -0
  318. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_edit.py +0 -0
  319. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_avro.py +0 -0
  320. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_avro_idl.py +0 -0
  321. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_bigquery.py +0 -0
  322. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_complex_data_contract.py +0 -0
  323. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_custom.py +0 -0
  324. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_custom_exporter.py +0 -0
  325. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_custom_model.py +0 -0
  326. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_data_caterer.py +0 -0
  327. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_dbt_models.py +0 -0
  328. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_dbt_sources.py +0 -0
  329. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_dbt_staging_sql.py +0 -0
  330. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_dqx.py +0 -0
  331. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_excel.py +0 -0
  332. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_go.py +0 -0
  333. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_great_expectations.py +0 -0
  334. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_html.py +0 -0
  335. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_iceberg.py +0 -0
  336. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_jsonschema.py +0 -0
  337. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_markdown.py +0 -0
  338. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_mermaid.py +0 -0
  339. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_odcs_v3.py +0 -0
  340. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_protobuf.py +0 -0
  341. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_pydantic.py +0 -0
  342. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_rdf.py +0 -0
  343. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_sodacl.py +0 -0
  344. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_spark.py +0 -0
  345. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_sql.py +0 -0
  346. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_sql_clickhouse.py +0 -0
  347. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_sql_query.py +0 -0
  348. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_sqlalchemy.py +0 -0
  349. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_ibis_mssql_pattern.py +0 -0
  350. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_ibis_oracle_schema.py +0 -0
  351. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_avro.py +0 -0
  352. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_bigquery.py +0 -0
  353. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_dbml.py +0 -0
  354. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_excel.py +0 -0
  355. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_glue.py +0 -0
  356. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_iceberg.py +0 -0
  357. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_json.py +0 -0
  358. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_jsonschema.py +0 -0
  359. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_odcs_v3.py +0 -0
  360. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_parquet.py +0 -0
  361. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_powerbi.py +0 -0
  362. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_protobuf.py +0 -0
  363. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_snowflake.py +0 -0
  364. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_spark.py +0 -0
  365. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_sql_oracle.py +0 -0
  366. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_sql_postgres.py +0 -0
  367. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_sql_sqlserver.py +0 -0
  368. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_integration_entropydata.py +0 -0
  369. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_lint.py +0 -0
  370. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_oracle_patch.py +0 -0
  371. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_redshift_patch.py +0 -0
  372. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_require_env.py +0 -0
  373. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_resolve.py +0 -0
  374. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_resolve_definitions.py +0 -0
  375. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_roundtrip_jsonschema.py +0 -0
  376. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_snowflake_structured_types.py +0 -0
  377. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_api.py +0 -0
  378. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_athena_iceberg.py +0 -0
  379. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_azure_remote.py +0 -0
  380. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_bigquery.py +0 -0
  381. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_databricks.py +0 -0
  382. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_dataframe.py +0 -0
  383. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_delta.py +0 -0
  384. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_diagnostics.py +0 -0
  385. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_failed_samples.py +0 -0
  386. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_gcs_csv_remote.py +0 -0
  387. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_gcs_json_remote.py +0 -0
  388. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_kafka_remote.py +0 -0
  389. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_local_json.py +0 -0
  390. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_local_json_nd.py +0 -0
  391. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_mysql.py +0 -0
  392. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_oracle.py +0 -0
  393. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_oracle_xe.py +0 -0
  394. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_output_json.py +0 -0
  395. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_output_junit.py +0 -0
  396. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_postgres.py +0 -0
  397. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_quality.py +0 -0
  398. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_quality_local_fallback.py +0 -0
  399. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_quality_percent_severity.py +0 -0
  400. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_redshift.py +0 -0
  401. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_s3_csv.py +0 -0
  402. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_s3_delta.py +0 -0
  403. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_s3_json.py +0 -0
  404. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_s3_json_complex.py +0 -0
  405. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_s3_json_multiple_models.py +0 -0
  406. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_s3_json_remote.py +0 -0
  407. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_schema_evolution.py +0 -0
  408. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_server_not_found.py +0 -0
  409. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_snowflake.py +0 -0
  410. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_soda_connection_error.py +0 -0
  411. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_sqlserver.py +0 -0
  412. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_trino.py +0 -0
  413. {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_type_normalize.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datacontract-cli
3
- Version: 1.0.14
3
+ Version: 1.0.16
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
@@ -18,7 +18,7 @@ Requires-Dist: pyyaml~=6.0.1
18
18
  Requires-Dist: ruamel.yaml<0.20,>=0.17
19
19
  Requires-Dist: requests<2.35,>=2.31
20
20
  Requires-Dist: truststore<1.0,>=0.10
21
- Requires-Dist: fastjsonschema<2.22.0,>=2.19.1
21
+ Requires-Dist: fastjsonschema<2.23.0,>=2.19.1
22
22
  Requires-Dist: jsonschema<5.0.0,>=4.23.0
23
23
  Requires-Dist: pytz>=2024.1
24
24
  Requires-Dist: python-multipart<1.0.0,>=0.0.20
@@ -39,11 +39,19 @@ Provides-Extra: csv
39
39
  Requires-Dist: pandas>=2.0.0; extra == "csv"
40
40
  Provides-Extra: excel
41
41
  Requires-Dist: openpyxl<4.0.0,>=3.1.5; extra == "excel"
42
+ Provides-Extra: dataframe
43
+ Requires-Dist: ibis-framework[pyspark]<13.0.0,>=10.0.0; extra == "dataframe"
44
+ Requires-Dist: pyspark<5.0.0,>=3.5.0; extra == "dataframe"
42
45
  Provides-Extra: databricks
43
46
  Requires-Dist: ibis-framework[databricks,pyspark]<13.0.0,>=10.0.0; extra == "databricks"
44
- Requires-Dist: databricks-sql-connector<4.4.0,>=3.7.0; extra == "databricks"
45
- Requires-Dist: databricks-sdk<0.122.0; extra == "databricks"
47
+ Requires-Dist: databricks-sql-connector<4.5.0,>=3.7.0; extra == "databricks"
48
+ Requires-Dist: databricks-sdk<0.123.0; extra == "databricks"
46
49
  Requires-Dist: pyspark<5.0.0,>=3.5.0; extra == "databricks"
50
+ Provides-Extra: databricks-runtime
51
+ Requires-Dist: ibis-framework[databricks]<13.0.0,>=10.0.0; extra == "databricks-runtime"
52
+ Requires-Dist: databricks-sql-connector<4.5.0,>=3.7.0; extra == "databricks-runtime"
53
+ Requires-Dist: databricks-sdk<0.123.0; extra == "databricks-runtime"
54
+ Requires-Dist: packaging<27.0,>=21.3; extra == "databricks-runtime"
47
55
  Provides-Extra: iceberg
48
56
  Requires-Dist: pyiceberg==0.11.1; extra == "iceberg"
49
57
  Provides-Extra: kafka
@@ -61,12 +69,12 @@ Requires-Dist: ibis-framework[postgres]<13.0.0,>=10.0.0; extra == "redshift"
61
69
  Requires-Dist: psycopg[binary]<4.0,>=3.1; extra == "redshift"
62
70
  Requires-Dist: packaging<27.0,>=21.3; extra == "redshift"
63
71
  Provides-Extra: s3
72
+ Requires-Dist: datacontract-cli[duckdb]; extra == "s3"
64
73
  Requires-Dist: s3fs<2027.0.0,>=2025.2.0; extra == "s3"
65
74
  Requires-Dist: duckdb-extension-httpfs<1.6.0,>=1.5.0; extra == "s3"
66
75
  Requires-Dist: duckdb-extension-aws<1.6.0,>=1.5.0; extra == "s3"
67
76
  Provides-Extra: gcs
68
- Requires-Dist: datacontract-cli[duckdb]; extra == "gcs"
69
- Requires-Dist: duckdb-extension-httpfs<1.6.0,>=1.5.0; extra == "gcs"
77
+ Requires-Dist: datacontract-cli[s3]; extra == "gcs"
70
78
  Provides-Extra: azure
71
79
  Requires-Dist: datacontract-cli[duckdb]; extra == "azure"
72
80
  Requires-Dist: duckdb-extension-azure<1.6.0,>=1.5.0; extra == "azure"
@@ -100,12 +108,12 @@ Requires-Dist: pyarrow>=18.1.0; extra == "parquet"
100
108
  Provides-Extra: rdf
101
109
  Requires-Dist: rdflib==7.6.0; extra == "rdf"
102
110
  Provides-Extra: api
103
- Requires-Dist: fastapi<0.140.0,>=0.115.0; extra == "api"
111
+ Requires-Dist: fastapi<0.141.0,>=0.115.0; extra == "api"
104
112
  Requires-Dist: uvicorn<0.52.0,>=0.44.0; extra == "api"
105
113
  Provides-Extra: protobuf
106
114
  Requires-Dist: proto-schema-parser<3.0,>=1.0; extra == "protobuf"
107
115
  Provides-Extra: all
108
- 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"
116
+ Requires-Dist: datacontract-cli[api,athena,azure,bigquery,csv,databricks,dataframe,dbml,duckdb,excel,gcs,iceberg,impala,kafka,mysql,oracle,parquet,postgres,protobuf,rdf,redshift,s3,snowflake,sqlserver,trino]; extra == "all"
109
117
  Provides-Extra: dev
110
118
  Requires-Dist: datacontract-cli[all]; extra == "dev"
111
119
  Requires-Dist: httpx==0.28.1; extra == "dev"
@@ -119,7 +127,7 @@ Requires-Dist: pytest-xdist; extra == "dev"
119
127
  Requires-Dist: pymssql==2.3.13; extra == "dev"
120
128
  Requires-Dist: psycopg2-binary<3.0,>=2.9; extra == "dev"
121
129
  Requires-Dist: mysql-connector-python<9.7.0,>=8.0.30; extra == "dev"
122
- Requires-Dist: ruff==0.15.22; extra == "dev"
130
+ Requires-Dist: ruff==0.16.0; extra == "dev"
123
131
  Requires-Dist: testcontainers[kafka,minio,mssql,mysql,postgres]==4.14.2; extra == "dev"
124
132
  Requires-Dist: trino==0.338.0; extra == "dev"
125
133
  Dynamic: license-file
@@ -131,6 +139,8 @@ Dynamic: license-file
131
139
  <img alt="Test Workflow" src="https://img.shields.io/github/actions/workflow/status/datacontract/datacontract-cli/ci.yaml?branch=main"></a>
132
140
  <a href="https://pypi.org/project/datacontract-cli/">
133
141
  <img alt="PyPI Version" src="https://img.shields.io/pypi/v/datacontract-cli" /></a>
142
+ <a href="https://pypistats.org/packages/datacontract-cli">
143
+ <img alt="PyPI Monthly Downloads" src="https://img.shields.io/badge/downloads-1.4M%2Fmonth-brightgreen" /></a>
134
144
  <a href="https://github.com/datacontract/datacontract-cli">
135
145
  <img alt="Stars" src="https://img.shields.io/github/stars/datacontract/datacontract-cli" /></a>
136
146
  <a href="https://datacontract.com/slack" rel="nofollow"><img src="https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&amp;style=social" alt="Slack Status" data-canonical-src="https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&amp;style=social" style="max-width: 100%;"></a>
@@ -145,7 +155,9 @@ It can be used as a standalone CLI tool, in a CI/CD pipeline, or directly as a P
145
155
 
146
156
  > 📖 **Full documentation: [docs.datacontract.com](https://docs.datacontract.com)**
147
157
  >
148
- > Quick links: [Quickstart](https://docs.datacontract.com/quickstart) · [Commands](https://docs.datacontract.com/commands) · [Best Practices](https://docs.datacontract.com/best-practices) · [Custom Export and Import](https://docs.datacontract.com/extending) · [Development Setup](#development-setup)
158
+ > Quick links: [Quickstart](https://docs.datacontract.com/quickstart) · [Commands](https://docs.datacontract.com/commands) · [Best Practices](https://docs.datacontract.com/best-practices) · [Custom Export and Import](https://docs.datacontract.com/extending) · [Release Notes](https://docs.datacontract.com/release-notes) · [Development Setup](#development-setup)
159
+ >
160
+ > For LLMs: [cli.datacontract.com/llms.txt](https://cli.datacontract.com/llms.txt) · [docs.datacontract.com/llms.txt](https://docs.datacontract.com/llms.txt) · [docs.datacontract.com/llms-full.txt](https://docs.datacontract.com/llms-full.txt)
149
161
 
150
162
  ## Getting started
151
163
 
@@ -207,6 +219,15 @@ Server: production (type=postgres, host=aws-1-eu-central-2.pooler.supabase.com,
207
219
 
208
220
  Voilà, the CLI tested that the YAML itself is valid, all records comply with the schema, and all quality attributes are met.
209
221
 
222
+ To test your own data, import a contract straight from an existing table (this also generates the `servers` block) and run the tests against the actual data:
223
+
224
+ ```bash
225
+ $ datacontract import snowflake --source <account> --database ORDER_DB --schema PUBLIC --output datacontract.yaml
226
+ $ datacontract test datacontract.yaml
227
+ ```
228
+
229
+ Copy-paste guides with credentials setup are available for [Snowflake](https://docs.datacontract.com/testing/snowflake), [BigQuery](https://docs.datacontract.com/testing/bigquery), [Databricks](https://docs.datacontract.com/testing/databricks), and [15+ other sources](https://docs.datacontract.com/testing).
230
+
210
231
  We can also use the data contract metadata to export in many [formats](https://docs.datacontract.com/exports), e.g., to generate a SQL DDL:
211
232
 
212
233
  ```bash
@@ -216,17 +237,17 @@ $ datacontract export sql https://datacontract.com/orders-v1.odcs.yaml
216
237
  -- Data Contract: orders
217
238
  -- SQL Dialect: postgres
218
239
  CREATE TABLE orders (
219
- order_id None not null primary key,
240
+ order_id UUID not null primary key,
220
241
  customer_id text not null,
221
242
  order_total integer not null,
222
- order_timestamp None,
243
+ order_timestamp TIMESTAMPTZ,
223
244
  order_status text
224
245
  );
225
246
  CREATE TABLE line_items (
226
- line_item_id None not null primary key,
247
+ line_item_id UUID not null primary key,
227
248
  sku text not null,
228
249
  price integer not null,
229
- order_id None
250
+ order_id UUID
230
251
  );
231
252
  ```
232
253
 
@@ -380,6 +401,8 @@ A list of available extras:
380
401
  | Google BigQuery | `pip install datacontract-cli[bigquery]` |
381
402
  | CSV | `pip install datacontract-cli[csv]` |
382
403
  | Databricks Integration | `pip install datacontract-cli[databricks]` |
404
+ | Databricks Runtime | `pip install datacontract-cli[databricks-runtime]` (inside Databricks, where the cluster provides PySpark) |
405
+ | DataFrame (Spark) | `pip install datacontract-cli[dataframe]` |
383
406
  | DBML | `pip install datacontract-cli[dbml]` |
384
407
  | DuckDB (local/S3/GCS/Azure file testing) | `pip install datacontract-cli[duckdb]` |
385
408
  | Excel | `pip install datacontract-cli[excel]` |
@@ -409,7 +432,7 @@ It covers everything in depth, including the complete command reference:
409
432
 
410
433
  - [Quickstart](https://docs.datacontract.com/quickstart) — install and run your first test
411
434
  - [Open Data Contract Standard](https://docs.datacontract.com/open-data-contract-standard) — the contract format
412
- - [Test your contract](https://docs.datacontract.com/testing) and [Connect your Data](https://docs.datacontract.com/connect) — schema & quality tests against 18+ data sources
435
+ - [Test your Data](https://docs.datacontract.com/testing) — schema & quality tests against 18+ data sources
413
436
  - [Define your Quality Rules](https://docs.datacontract.com/quality-rules) — SQL, library, text, and custom checks
414
437
  - [Sync with dbt](https://docs.datacontract.com/dbt) · [Edit your contract](https://docs.datacontract.com/editor)
415
438
  - [Imports](https://docs.datacontract.com/imports) and [Exports](https://docs.datacontract.com/exports) — convert to/from 25+ formats
@@ -5,6 +5,8 @@
5
5
  <img alt="Test Workflow" src="https://img.shields.io/github/actions/workflow/status/datacontract/datacontract-cli/ci.yaml?branch=main"></a>
6
6
  <a href="https://pypi.org/project/datacontract-cli/">
7
7
  <img alt="PyPI Version" src="https://img.shields.io/pypi/v/datacontract-cli" /></a>
8
+ <a href="https://pypistats.org/packages/datacontract-cli">
9
+ <img alt="PyPI Monthly Downloads" src="https://img.shields.io/badge/downloads-1.4M%2Fmonth-brightgreen" /></a>
8
10
  <a href="https://github.com/datacontract/datacontract-cli">
9
11
  <img alt="Stars" src="https://img.shields.io/github/stars/datacontract/datacontract-cli" /></a>
10
12
  <a href="https://datacontract.com/slack" rel="nofollow"><img src="https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&amp;style=social" alt="Slack Status" data-canonical-src="https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&amp;style=social" style="max-width: 100%;"></a>
@@ -19,7 +21,9 @@ It can be used as a standalone CLI tool, in a CI/CD pipeline, or directly as a P
19
21
 
20
22
  > 📖 **Full documentation: [docs.datacontract.com](https://docs.datacontract.com)**
21
23
  >
22
- > Quick links: [Quickstart](https://docs.datacontract.com/quickstart) · [Commands](https://docs.datacontract.com/commands) · [Best Practices](https://docs.datacontract.com/best-practices) · [Custom Export and Import](https://docs.datacontract.com/extending) · [Development Setup](#development-setup)
24
+ > Quick links: [Quickstart](https://docs.datacontract.com/quickstart) · [Commands](https://docs.datacontract.com/commands) · [Best Practices](https://docs.datacontract.com/best-practices) · [Custom Export and Import](https://docs.datacontract.com/extending) · [Release Notes](https://docs.datacontract.com/release-notes) · [Development Setup](#development-setup)
25
+ >
26
+ > For LLMs: [cli.datacontract.com/llms.txt](https://cli.datacontract.com/llms.txt) · [docs.datacontract.com/llms.txt](https://docs.datacontract.com/llms.txt) · [docs.datacontract.com/llms-full.txt](https://docs.datacontract.com/llms-full.txt)
23
27
 
24
28
  ## Getting started
25
29
 
@@ -81,6 +85,15 @@ Server: production (type=postgres, host=aws-1-eu-central-2.pooler.supabase.com,
81
85
 
82
86
  Voilà, the CLI tested that the YAML itself is valid, all records comply with the schema, and all quality attributes are met.
83
87
 
88
+ To test your own data, import a contract straight from an existing table (this also generates the `servers` block) and run the tests against the actual data:
89
+
90
+ ```bash
91
+ $ datacontract import snowflake --source <account> --database ORDER_DB --schema PUBLIC --output datacontract.yaml
92
+ $ datacontract test datacontract.yaml
93
+ ```
94
+
95
+ Copy-paste guides with credentials setup are available for [Snowflake](https://docs.datacontract.com/testing/snowflake), [BigQuery](https://docs.datacontract.com/testing/bigquery), [Databricks](https://docs.datacontract.com/testing/databricks), and [15+ other sources](https://docs.datacontract.com/testing).
96
+
84
97
  We can also use the data contract metadata to export in many [formats](https://docs.datacontract.com/exports), e.g., to generate a SQL DDL:
85
98
 
86
99
  ```bash
@@ -90,17 +103,17 @@ $ datacontract export sql https://datacontract.com/orders-v1.odcs.yaml
90
103
  -- Data Contract: orders
91
104
  -- SQL Dialect: postgres
92
105
  CREATE TABLE orders (
93
- order_id None not null primary key,
106
+ order_id UUID not null primary key,
94
107
  customer_id text not null,
95
108
  order_total integer not null,
96
- order_timestamp None,
109
+ order_timestamp TIMESTAMPTZ,
97
110
  order_status text
98
111
  );
99
112
  CREATE TABLE line_items (
100
- line_item_id None not null primary key,
113
+ line_item_id UUID not null primary key,
101
114
  sku text not null,
102
115
  price integer not null,
103
- order_id None
116
+ order_id UUID
104
117
  );
105
118
  ```
106
119
 
@@ -254,6 +267,8 @@ A list of available extras:
254
267
  | Google BigQuery | `pip install datacontract-cli[bigquery]` |
255
268
  | CSV | `pip install datacontract-cli[csv]` |
256
269
  | Databricks Integration | `pip install datacontract-cli[databricks]` |
270
+ | Databricks Runtime | `pip install datacontract-cli[databricks-runtime]` (inside Databricks, where the cluster provides PySpark) |
271
+ | DataFrame (Spark) | `pip install datacontract-cli[dataframe]` |
257
272
  | DBML | `pip install datacontract-cli[dbml]` |
258
273
  | DuckDB (local/S3/GCS/Azure file testing) | `pip install datacontract-cli[duckdb]` |
259
274
  | Excel | `pip install datacontract-cli[excel]` |
@@ -283,7 +298,7 @@ It covers everything in depth, including the complete command reference:
283
298
 
284
299
  - [Quickstart](https://docs.datacontract.com/quickstart) — install and run your first test
285
300
  - [Open Data Contract Standard](https://docs.datacontract.com/open-data-contract-standard) — the contract format
286
- - [Test your contract](https://docs.datacontract.com/testing) and [Connect your Data](https://docs.datacontract.com/connect) — schema & quality tests against 18+ data sources
301
+ - [Test your Data](https://docs.datacontract.com/testing) — schema & quality tests against 18+ data sources
287
302
  - [Define your Quality Rules](https://docs.datacontract.com/quality-rules) — SQL, library, text, and custom checks
288
303
  - [Sync with dbt](https://docs.datacontract.com/dbt) · [Edit your contract](https://docs.datacontract.com/editor)
289
304
  - [Imports](https://docs.datacontract.com/imports) and [Exports](https://docs.datacontract.com/exports) — convert to/from 25+ formats
@@ -204,6 +204,25 @@ customProperties:
204
204
  contractCreatedTs: "2025-01-15T10:00:00Z"
205
205
  """
206
206
 
207
+
208
+ def _require_schema_url(schema: str | None) -> str | None:
209
+ """Reject anything that is not an http(s) URL.
210
+
211
+ The parameter is documented as a URL, but `fetch_schema` falls through to the
212
+ filesystem for anything else — so without this an unauthenticated caller could
213
+ have the server open its own files, and tell existing paths from missing ones
214
+ by the error it got back.
215
+ """
216
+ if schema is None:
217
+ return None
218
+ if not schema.startswith(("http://", "https://")):
219
+ raise HTTPException(
220
+ status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
221
+ detail="The schema parameter must be an http:// or https:// URL.",
222
+ )
223
+ return schema
224
+
225
+
207
226
  app = FastAPI(
208
227
  docs_url="/",
209
228
  title="Data Contract CLI API",
@@ -365,7 +384,9 @@ async def lint(
365
384
  Query(description="Report all JSON Schema validation errors instead of only the first one."),
366
385
  ] = False,
367
386
  ):
368
- data_contract = DataContract(data_contract_str=body, schema_location=schema, all_errors=all_errors)
387
+ data_contract = DataContract(
388
+ data_contract_str=body, schema_location=_require_schema_url(schema), all_errors=all_errors
389
+ )
369
390
  lint_result = data_contract.lint()
370
391
  return {"result": lint_result.result, "checks": lint_result.checks}
371
392
 
@@ -9,6 +9,7 @@ import typer
9
9
  from click import Context
10
10
  from dotenv import find_dotenv, load_dotenv
11
11
  from rich.console import Console
12
+ from rich.markup import escape
12
13
  from typer.core import TyperGroup
13
14
  from typing_extensions import Annotated
14
15
 
@@ -47,6 +48,10 @@ class OrderedCommands(TyperGroup):
47
48
  class OrderedCommandsWithMigrationHints(OrderedCommands):
48
49
  """Intercepts removed or renamed options on import/export and points the user to the v0.12.0 migration notes."""
49
50
 
51
+ # Import formats where `--schema` still means the database schema, so it must
52
+ # not be rewritten to the v0.12.0 `--json-schema`.
53
+ DATABASE_SCHEMA_IMPORTS = {"snowflake", "redshift", "postgres", "athena", "sqlserver", "oracle", "trino"}
54
+
50
55
  RENAMED_FLAGS = {
51
56
  "--format": None,
52
57
  "--rdf-base": "--base",
@@ -65,13 +70,17 @@ class OrderedCommandsWithMigrationHints(OrderedCommands):
65
70
  subcommand = positionals[0] if positionals else None
66
71
 
67
72
  # this function is called by both `datacontract` and `datacontract import`
68
- is_import_snowflake = (positionals[:1] == ["snowflake"]) or (positionals[:2] == ["import", "snowflake"])
73
+ if subcommand == "import":
74
+ import_format = positionals[1] if len(positionals) > 1 else None
75
+ else:
76
+ import_format = subcommand
77
+ takes_database_schema = import_format in self.DATABASE_SCHEMA_IMPORTS
69
78
 
70
79
  rewritten_args = []
71
80
  for arg in args:
72
81
  if isinstance(arg, str) and arg.startswith("--"):
73
82
  flag, _, value = arg.partition("=")
74
- if flag == "--schema" and not is_import_snowflake:
83
+ if flag == "--schema" and not takes_database_schema:
75
84
  typer.secho(
76
85
  "Warning: --schema was replaced with --json-schema in v0.12.0 and will be removed in v0.13.0.",
77
86
  err=True,
@@ -261,7 +270,9 @@ def main():
261
270
  from datacontract.model.exceptions import DataContractException
262
271
 
263
272
  message = e.reason if isinstance(e, DataContractException) else str(e)
264
- console.print(f"[red]Error:[/red] {message}")
273
+ # Escape the message: bracketed text in an exception (e.g. a driver's
274
+ # `pip install "botocore[crt]"` hint) would otherwise be eaten as rich markup.
275
+ console.print(f"[red]Error:[/red] {escape(message)}")
265
276
  console.print("[dim]Pass --debug (or set DATACONTRACT_CLI_DEBUG=1) for the full traceback.[/dim]")
266
277
  sys.exit(1)
267
278
 
@@ -28,7 +28,7 @@ def catalog(
28
28
  debug: debug_option = None,
29
29
  ):
30
30
  """
31
- Create a html catalog of data contracts.
31
+ Create an HTML catalog of data contracts.
32
32
  """
33
33
  enable_debug_logging(debug)
34
34