datacontract-cli 1.0.16__tar.gz → 1.0.17__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 (447) hide show
  1. {datacontract_cli-1.0.16/datacontract_cli.egg-info → datacontract_cli-1.0.17}/PKG-INFO +2 -1
  2. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/__init__.py +4 -0
  3. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/api.py +88 -3
  4. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/catalog/catalog.py +2 -1
  5. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/cli.py +29 -0
  6. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/command_changelog.py +11 -4
  7. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/command_ci.py +3 -1
  8. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/command_dbt.py +2 -1
  9. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/command_edit.py +2 -1
  10. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/command_export.py +6 -1
  11. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/command_import.py +55 -17
  12. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/command_lint.py +3 -1
  13. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/command_publish.py +4 -2
  14. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/command_test.py +50 -2
  15. datacontract_cli-1.0.17/datacontract/config/__init__.py +32 -0
  16. datacontract_cli-1.0.17/datacontract/config/cli_context.py +19 -0
  17. datacontract_cli-1.0.17/datacontract/config/settings.py +886 -0
  18. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/data_contract.py +25 -2
  19. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/data_contract_test.py +74 -7
  20. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/datacontract/check_azure_blob_file.py +9 -8
  21. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/fastjsonschema/check_jsonschema.py +23 -15
  22. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/fastjsonschema/s3/s3_read_files.py +5 -4
  23. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/ibis/connections/aws_credentials.py +12 -15
  24. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/ibis/connections/connect.py +220 -145
  25. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/ibis/connections/duckdb_connection.py +15 -13
  26. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/ibis/connections/kafka.py +19 -15
  27. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/ibis/connections/redshift_credentials.py +35 -51
  28. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/ibis/ibis_check_execute.py +43 -2
  29. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/athena_importer.py +5 -3
  30. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/dcs_importer.py +2 -2
  31. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/glue_importer.py +18 -15
  32. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/importer.py +9 -0
  33. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/mysql_importer.py +10 -6
  34. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/object_storage_importer.py +6 -4
  35. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/odcs_importer.py +4 -4
  36. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/oracle_importer.py +6 -4
  37. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/postgres_importer.py +10 -6
  38. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/redshift_importer.py +6 -4
  39. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/snowflake_importer.py +20 -20
  40. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/sqlserver_importer.py +9 -6
  41. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/trino_importer.py +8 -4
  42. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/unity_importer.py +12 -5
  43. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/integration/dbt_sync.py +23 -6
  44. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/integration/entropy_data.py +27 -19
  45. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/lint/files.py +2 -1
  46. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/lint/resolve.py +34 -21
  47. datacontract_cli-1.0.17/datacontract/lint/resources.py +26 -0
  48. datacontract_cli-1.0.17/datacontract/lint/s3.py +26 -0
  49. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/lint/urls.py +13 -11
  50. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/model/exceptions.py +0 -18
  51. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/model/run.py +3 -0
  52. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/output/test_results_writer.py +4 -0
  53. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/templates/datacontract.html +1 -0
  54. datacontract_cli-1.0.17/datacontract/templates/datacontract_odcs.html +47 -0
  55. datacontract_cli-1.0.17/datacontract/templates/macros/authoritative_definitions.html +25 -0
  56. datacontract_cli-1.0.17/datacontract/templates/macros/schema.html +226 -0
  57. datacontract_cli-1.0.17/datacontract/templates/macros/server.html +84 -0
  58. datacontract_cli-1.0.17/datacontract/templates/macros/support.html +25 -0
  59. datacontract_cli-1.0.17/datacontract/templates/partials_odcs/custom_properties.html +69 -0
  60. datacontract_cli-1.0.17/datacontract/templates/partials_odcs/diagram.html +41 -0
  61. datacontract_cli-1.0.17/datacontract/templates/partials_odcs/dialog_yaml.html +27 -0
  62. datacontract_cli-1.0.17/datacontract/templates/partials_odcs/footer.html +15 -0
  63. datacontract_cli-1.0.17/datacontract/templates/partials_odcs/fundamentals.html +113 -0
  64. datacontract_cli-1.0.17/datacontract/templates/partials_odcs/header.html +16 -0
  65. datacontract_cli-1.0.17/datacontract/templates/partials_odcs/pricing.html +37 -0
  66. datacontract_cli-1.0.17/datacontract/templates/partials_odcs/roles.html +91 -0
  67. datacontract_cli-1.0.17/datacontract/templates/partials_odcs/schema.html +123 -0
  68. datacontract_cli-1.0.17/datacontract/templates/partials_odcs/servers.html +282 -0
  69. datacontract_cli-1.0.17/datacontract/templates/partials_odcs/sla.html +95 -0
  70. datacontract_cli-1.0.17/datacontract/templates/partials_odcs/support.html +79 -0
  71. datacontract_cli-1.0.17/datacontract/templates/partials_odcs/team.html +236 -0
  72. datacontract_cli-1.0.17/datacontract/templates/partials_odcs/term_of_use.html +101 -0
  73. datacontract_cli-1.0.17/datacontract/templates/partials_odcs/title.html +88 -0
  74. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/templates/style/output.css +531 -213
  75. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17/datacontract_cli.egg-info}/PKG-INFO +2 -1
  76. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract_cli.egg-info/SOURCES.txt +32 -1
  77. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract_cli.egg-info/requires.txt +1 -0
  78. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/pyproject.toml +2 -1
  79. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_api.py +126 -0
  80. datacontract_cli-1.0.17/tests/test_config.py +248 -0
  81. datacontract_cli-1.0.17/tests/test_config_file.py +140 -0
  82. datacontract_cli-1.0.17/tests/test_config_require.py +39 -0
  83. datacontract_cli-1.0.17/tests/test_config_threading.py +96 -0
  84. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_connect_athena.py +15 -0
  85. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_connect_bigquery.py +12 -0
  86. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_connect_databricks.py +15 -0
  87. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_connect_impala.py +15 -0
  88. datacontract_cli-1.0.17/tests/test_connect_mysql.py +78 -0
  89. datacontract_cli-1.0.17/tests/test_connect_oracle.py +73 -0
  90. datacontract_cli-1.0.17/tests/test_connect_postgres.py +87 -0
  91. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_connect_redshift.py +21 -0
  92. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_connect_snowflake.py +73 -4
  93. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_connect_sqlserver.py +24 -1
  94. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_connect_trino.py +19 -0
  95. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_dbt_sync.py +31 -3
  96. datacontract_cli-1.0.17/tests/test_docs_config_options.py +17 -0
  97. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_edit.py +1 -1
  98. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_object_storage.py +3 -1
  99. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_lint.py +48 -0
  100. datacontract_cli-1.0.17/tests/test_test_row_filter.py +120 -0
  101. datacontract_cli-1.0.16/datacontract/lint/resources.py +0 -21
  102. datacontract_cli-1.0.16/datacontract/templates/datacontract_odcs.html +0 -703
  103. datacontract_cli-1.0.16/tests/test_require_env.py +0 -28
  104. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/LICENSE +0 -0
  105. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/MANIFEST.in +0 -0
  106. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/README.md +0 -0
  107. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/changelog/__init__.py +0 -0
  108. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/changelog/changelog.py +0 -0
  109. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/changelog/normalize.py +0 -0
  110. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/command_api.py +0 -0
  111. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/command_catalog.py +0 -0
  112. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/command_init.py +0 -0
  113. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/VERSION +0 -0
  114. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/abap-Bs8kvjsq.js +0 -0
  115. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/apex-Dspwrl5m.js +0 -0
  116. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/assets/editor.worker-4.7.0.js +0 -0
  117. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/assets/yaml.worker-4.7.0.js +0 -0
  118. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/azcli-k1BiOau1.js +0 -0
  119. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/bat-BIP72KWc.js +0 -0
  120. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/bicep-VhQeYhS3.js +0 -0
  121. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/cameligo-DnuAXtHg.js +0 -0
  122. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/clojure-BAuDPsal.js +0 -0
  123. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/coffee-BV06qSnj.js +0 -0
  124. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/cpp-Cz8Jeyrf.js +0 -0
  125. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/csharp-F6hhlXFb.js +0 -0
  126. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/csp-KzlEHCyI.js +0 -0
  127. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/css-e4FKntZ3.js +0 -0
  128. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/cssMode-BNkTa2xp.js +0 -0
  129. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/cypher-CpvDGKRr.js +0 -0
  130. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/dart-DdHeFWR0.js +0 -0
  131. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/datacontract-editor.css +0 -0
  132. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/datacontract-editor.es.js +0 -0
  133. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/dockerfile-aoNXDcio.js +0 -0
  134. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/ecl-C4Q0DYuA.js +0 -0
  135. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/elixir-C9X42b0T.js +0 -0
  136. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/flow9-Bff42pfB.js +0 -0
  137. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/freemarker2-Dyfzmb5A.js +0 -0
  138. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/fsharp-C6vPAsHG.js +0 -0
  139. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/go-DEr8zx9f.js +0 -0
  140. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/graphql-BiNBBRFh.js +0 -0
  141. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/handlebars-BtDNI-uC.js +0 -0
  142. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/hcl-2T9lKuFg.js +0 -0
  143. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/html-Cn4TGw_o.js +0 -0
  144. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/htmlMode-Bf84vbo2.js +0 -0
  145. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/index.html +0 -0
  146. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/ini-CZGtssYM.js +0 -0
  147. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/java-B260NeH3.js +0 -0
  148. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/javascript-B86Kac07.js +0 -0
  149. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/jsonMode-Ckgg5lAE.js +0 -0
  150. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/julia-kuNLM9c5.js +0 -0
  151. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/kotlin-Bz6kAefA.js +0 -0
  152. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/less-AZUtS89I.js +0 -0
  153. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/lexon-BcmgnyRb.js +0 -0
  154. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/liquid-D0NPwuu_.js +0 -0
  155. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/logo_fuchsia_v2.svg +0 -0
  156. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/lua-Dz1RbATg.js +0 -0
  157. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/m3-CIMooLFn.js +0 -0
  158. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/markdown-C1BsCK9P.js +0 -0
  159. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/mdx-QFRSBtVQ.js +0 -0
  160. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/mips-BovsnfLQ.js +0 -0
  161. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/monaco-4.7.0.js +0 -0
  162. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/msdax-CiRB2ZB-.js +0 -0
  163. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/mysql-BwdpPE19.js +0 -0
  164. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/objective-c-D4nfHfso.js +0 -0
  165. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/odcs.svg +0 -0
  166. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/pascal--j5-PYtz.js +0 -0
  167. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/pascaligo-C7TcJxNL.js +0 -0
  168. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/perl-BzEWqUb5.js +0 -0
  169. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/pgsql-B_KZ0mGX.js +0 -0
  170. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/php-A19QHzQV.js +0 -0
  171. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/pla-COeKY1hA.js +0 -0
  172. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/postiats-BfMp7zJL.js +0 -0
  173. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/powerquery-B0TS_5Gb.js +0 -0
  174. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/powershell-5jSbKdYB.js +0 -0
  175. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/protobuf-YgnOutn3.js +0 -0
  176. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/pug-DLej6kn5.js +0 -0
  177. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/python-C8RW9B6A.js +0 -0
  178. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/qsharp-AhjqtSHB.js +0 -0
  179. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/r-D-F4P80w.js +0 -0
  180. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/razor-CLZqdY_r.js +0 -0
  181. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/redis-hwwIlMnV.js +0 -0
  182. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/redshift-Bcm_kjEG.js +0 -0
  183. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/restructuredtext-CrdzfPP-.js +0 -0
  184. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/ruby-QC2UNm1s.js +0 -0
  185. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/rust-5aqiQ3L5.js +0 -0
  186. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/sb-B1g1ZfLJ.js +0 -0
  187. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/scala-C2U4R5Gb.js +0 -0
  188. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/scheme-DeFRbslr.js +0 -0
  189. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/scss-RSTCiCmI.js +0 -0
  190. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/shell-BpF-iNu8.js +0 -0
  191. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/solidity-C00r2mbQ.js +0 -0
  192. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/sophia-DVW5ZKDB.js +0 -0
  193. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/sparql-B0nmpxeX.js +0 -0
  194. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/sql-CJwKPERn.js +0 -0
  195. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/st-DPlKG5DT.js +0 -0
  196. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/swift-YZBAbVHV.js +0 -0
  197. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/systemverilog-CDQSaH63.js +0 -0
  198. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/tcl-Dlu8sp6Q.js +0 -0
  199. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/tsMode-yleMwhPq.js +0 -0
  200. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/twig-C5TO7-kw.js +0 -0
  201. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/typescript-CJBeebKU.js +0 -0
  202. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/typespec-BsmjDEu7.js +0 -0
  203. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/vb-ChHvIDrk.js +0 -0
  204. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/wgsl-XEp1ju8c.js +0 -0
  205. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/xml-vC-NMVX1.js +0 -0
  206. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/editor_assets/yaml-Dlf2VF-T.js +0 -0
  207. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/__init__.py +0 -0
  208. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/checks/__init__.py +0 -0
  209. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/checks/check_filter.py +0 -0
  210. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/checks/check_spec.py +0 -0
  211. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/checks/create_checks.py +0 -0
  212. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/checks/dimensions.py +0 -0
  213. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/checks/physical_type_match.py +0 -0
  214. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/checks/type_normalize.py +0 -0
  215. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/datacontract/check_that_datacontract_contains_valid_servers_configuration.py +0 -0
  216. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/datacontract/check_that_datacontract_file_exists.py +0 -0
  217. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/ibis/__init__.py +0 -0
  218. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/ibis/connections/__init__.py +0 -0
  219. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/ibis/connections/oracle_patch.py +0 -0
  220. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/ibis/connections/redshift_patch.py +0 -0
  221. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/ibis/dtype_category.py +0 -0
  222. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/ibis/native_type.py +0 -0
  223. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/engines/ibis/snowflake_structured_types.py +0 -0
  224. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/__init__.py +0 -0
  225. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/avro_exporter.py +0 -0
  226. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/avro_idl_exporter.py +0 -0
  227. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/bigquery_exporter.py +0 -0
  228. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/custom_exporter.py +0 -0
  229. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/data_caterer_exporter.py +0 -0
  230. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/dbml_exporter.py +0 -0
  231. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/dbt_exporter.py +0 -0
  232. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/dcs_exporter.py +0 -0
  233. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/dqx_exporter.py +0 -0
  234. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/duckdb_type_converter.py +0 -0
  235. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/excel_exporter.py +0 -0
  236. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/exporter.py +0 -0
  237. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/exporter_factory.py +0 -0
  238. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/go_exporter.py +0 -0
  239. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/great_expectations_exporter.py +0 -0
  240. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/html_exporter.py +0 -0
  241. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/iceberg_exporter.py +0 -0
  242. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/jsonschema_exporter.py +0 -0
  243. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/markdown_exporter.py +0 -0
  244. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/mermaid_exporter.py +0 -0
  245. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/odcs_export_helper.py +0 -0
  246. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/odcs_v3_exporter.py +0 -0
  247. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/pandas_type_converter.py +0 -0
  248. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/protobuf_exporter.py +0 -0
  249. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/pydantic_exporter.py +0 -0
  250. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/rdf_exporter.py +0 -0
  251. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/sodacl_check_builder.py +0 -0
  252. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/sodacl_exporter.py +0 -0
  253. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/spark_exporter.py +0 -0
  254. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/sql_exporter.py +0 -0
  255. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/sql_type_converter.py +0 -0
  256. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/export/sqlalchemy_exporter.py +0 -0
  257. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/avro_importer.py +0 -0
  258. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/bigquery_importer.py +0 -0
  259. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/csv_importer.py +0 -0
  260. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/dbml_importer.py +0 -0
  261. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/dbt_importer.py +0 -0
  262. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/excel_importer.py +0 -0
  263. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/iceberg_importer.py +0 -0
  264. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/importer_factory.py +0 -0
  265. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/json_importer.py +0 -0
  266. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/jsonschema_importer.py +0 -0
  267. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/odcs_helper.py +0 -0
  268. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/parquet_importer.py +0 -0
  269. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/powerbi_importer.py +0 -0
  270. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/protobuf_importer.py +0 -0
  271. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/spark_importer.py +0 -0
  272. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/imports/sql_importer.py +0 -0
  273. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/init/init_template.py +0 -0
  274. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/integration/dbt_test_mapping.py +0 -0
  275. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/lint/schema.py +0 -0
  276. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/model/changelog.py +0 -0
  277. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/model/odcs.py +0 -0
  278. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/model/server.py +0 -0
  279. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/output/__init__.py +0 -0
  280. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/output/ci_output.py +0 -0
  281. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/output/json_test_results.py +0 -0
  282. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/output/junit_test_results.py +0 -0
  283. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/output/output_format.py +0 -0
  284. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/output/text_changelog_results.py +0 -0
  285. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/py.typed +0 -0
  286. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/schemas/datacontract-1.1.0.init.yaml +0 -0
  287. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/schemas/datacontract-1.1.0.schema.json +0 -0
  288. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/schemas/datacontract-1.2.0.init.yaml +0 -0
  289. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/schemas/datacontract-1.2.0.schema.json +0 -0
  290. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/schemas/datacontract-1.2.1.init.yaml +0 -0
  291. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/schemas/datacontract-1.2.1.schema.json +0 -0
  292. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/schemas/odcs-3.0.1.schema.json +0 -0
  293. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/schemas/odcs-3.0.2.schema.json +0 -0
  294. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/schemas/odcs-3.1.0.init.yaml +0 -0
  295. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/schemas/odcs-3.1.0.schema.json +0 -0
  296. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/templates/index.html +0 -0
  297. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/templates/partials/datacontract_information.html +0 -0
  298. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/templates/partials/datacontract_servicelevels.html +0 -0
  299. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/templates/partials/datacontract_terms.html +0 -0
  300. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/templates/partials/definition.html +0 -0
  301. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/templates/partials/example.html +0 -0
  302. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/templates/partials/model_field.html +0 -0
  303. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/templates/partials/quality.html +0 -0
  304. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract/templates/partials/server.html +0 -0
  305. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract_cli.egg-info/dependency_links.txt +0 -0
  306. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract_cli.egg-info/entry_points.txt +0 -0
  307. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/datacontract_cli.egg-info/top_level.txt +0 -0
  308. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/setup.cfg +0 -0
  309. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_catalog.py +0 -0
  310. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_changelog.py +0 -0
  311. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_changelog_engine.py +0 -0
  312. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_changelog_normalize.py +0 -0
  313. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_changelog_output_text.py +0 -0
  314. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_ci_output.py +0 -0
  315. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_cli.py +0 -0
  316. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_connect_s3_credentials.py +0 -0
  317. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_create_checks_nested_type.py +0 -0
  318. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_create_checks_physical_type.py +0 -0
  319. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_create_checks_primary_key.py +0 -0
  320. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_data_contract.py +0 -0
  321. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_data_contract_checks.py +0 -0
  322. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_data_contract_specification.py +0 -0
  323. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_dbt_test_mapping.py +0 -0
  324. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_description_linter.py +0 -0
  325. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_docs_commands.py +0 -0
  326. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_docs_ordering.py +0 -0
  327. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_download_datacontract_file.py +0 -0
  328. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_dtype_category.py +0 -0
  329. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_duckdb_json.py +0 -0
  330. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_avro.py +0 -0
  331. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_avro_idl.py +0 -0
  332. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_bigquery.py +0 -0
  333. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_complex_data_contract.py +0 -0
  334. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_custom.py +0 -0
  335. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_custom_exporter.py +0 -0
  336. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_custom_model.py +0 -0
  337. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_data_caterer.py +0 -0
  338. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_dbml.py +0 -0
  339. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_dbt_models.py +0 -0
  340. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_dbt_sources.py +0 -0
  341. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_dbt_staging_sql.py +0 -0
  342. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_dqx.py +0 -0
  343. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_excel.py +0 -0
  344. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_go.py +0 -0
  345. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_great_expectations.py +0 -0
  346. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_html.py +0 -0
  347. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_iceberg.py +0 -0
  348. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_jsonschema.py +0 -0
  349. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_markdown.py +0 -0
  350. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_mermaid.py +0 -0
  351. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_odcs_v3.py +0 -0
  352. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_protobuf.py +0 -0
  353. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_pydantic.py +0 -0
  354. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_rdf.py +0 -0
  355. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_sodacl.py +0 -0
  356. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_spark.py +0 -0
  357. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_sql.py +0 -0
  358. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_sql_clickhouse.py +0 -0
  359. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_sql_query.py +0 -0
  360. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_export_sqlalchemy.py +0 -0
  361. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_ibis_mssql_pattern.py +0 -0
  362. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_ibis_mssql_schema.py +0 -0
  363. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_ibis_oracle_schema.py +0 -0
  364. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_athena.py +0 -0
  365. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_avro.py +0 -0
  366. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_bigquery.py +0 -0
  367. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_csv.py +0 -0
  368. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_dbml.py +0 -0
  369. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_dbt.py +0 -0
  370. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_excel.py +0 -0
  371. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_glue.py +0 -0
  372. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_iceberg.py +0 -0
  373. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_json.py +0 -0
  374. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_jsonschema.py +0 -0
  375. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_mysql.py +0 -0
  376. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_odcs_v3.py +0 -0
  377. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_oracle.py +0 -0
  378. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_parquet.py +0 -0
  379. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_postgres.py +0 -0
  380. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_powerbi.py +0 -0
  381. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_protobuf.py +0 -0
  382. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_redshift.py +0 -0
  383. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_snowflake.py +0 -0
  384. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_spark.py +0 -0
  385. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_sql_oracle.py +0 -0
  386. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_sql_postgres.py +0 -0
  387. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_sql_snowflake.py +0 -0
  388. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_sql_sqlserver.py +0 -0
  389. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_sqlserver.py +0 -0
  390. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_trino.py +0 -0
  391. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_import_unity_file.py +0 -0
  392. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_install_extras.py +0 -0
  393. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_integration_entropydata.py +0 -0
  394. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_native_type_schema_scope.py +0 -0
  395. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_oracle_patch.py +0 -0
  396. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_physical_type_match.py +0 -0
  397. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_redshift_credentials.py +0 -0
  398. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_redshift_patch.py +0 -0
  399. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_resolve.py +0 -0
  400. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_resolve_definitions.py +0 -0
  401. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_roundtrip_jsonschema.py +0 -0
  402. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_server_type_mssql.py +0 -0
  403. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_snowflake_structured_types.py +0 -0
  404. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_sql_type_converter_physicaltype.py +0 -0
  405. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_api.py +0 -0
  406. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_athena_iceberg.py +0 -0
  407. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_azure_blob_file.py +0 -0
  408. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_azure_remote.py +0 -0
  409. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_bigquery.py +0 -0
  410. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_checks_filter.py +0 -0
  411. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_databricks.py +0 -0
  412. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_dataframe.py +0 -0
  413. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_delta.py +0 -0
  414. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_diagnostics.py +0 -0
  415. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_dimension_filter.py +0 -0
  416. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_failed_samples.py +0 -0
  417. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_gcs_csv_remote.py +0 -0
  418. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_gcs_json_remote.py +0 -0
  419. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_kafka.py +0 -0
  420. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_kafka_remote.py +0 -0
  421. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_local_json.py +0 -0
  422. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_local_json_nd.py +0 -0
  423. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_mysql.py +0 -0
  424. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_oracle.py +0 -0
  425. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_oracle_xe.py +0 -0
  426. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_output_json.py +0 -0
  427. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_output_junit.py +0 -0
  428. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_parquet.py +0 -0
  429. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_postgres.py +0 -0
  430. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_quality.py +0 -0
  431. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_quality_id_and_tag_filter.py +0 -0
  432. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_quality_local_fallback.py +0 -0
  433. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_quality_percent_severity.py +0 -0
  434. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_redshift.py +0 -0
  435. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_s3_csv.py +0 -0
  436. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_s3_delta.py +0 -0
  437. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_s3_json.py +0 -0
  438. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_s3_json_complex.py +0 -0
  439. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_s3_json_multiple_models.py +0 -0
  440. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_s3_json_remote.py +0 -0
  441. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_schema_evolution.py +0 -0
  442. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_server_not_found.py +0 -0
  443. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_snowflake.py +0 -0
  444. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_soda_connection_error.py +0 -0
  445. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_sqlserver.py +0 -0
  446. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/tests/test_test_trino.py +0 -0
  447. {datacontract_cli-1.0.16 → datacontract_cli-1.0.17}/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.16
3
+ Version: 1.0.17
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
@@ -14,6 +14,7 @@ License-File: LICENSE
14
14
  Requires-Dist: typer<0.28,>=0.18.0
15
15
  Requires-Dist: click<9.0.0,>=8.1.0
16
16
  Requires-Dist: pydantic<2.14.0,>=2.8.2
17
+ Requires-Dist: pydantic-settings<3.0.0,>=2.5.0
17
18
  Requires-Dist: pyyaml~=6.0.1
18
19
  Requires-Dist: ruamel.yaml<0.20,>=0.17
19
20
  Requires-Dist: requests<2.35,>=2.31
@@ -11,3 +11,7 @@ def repr_str(dumper, data):
11
11
 
12
12
 
13
13
  yaml.add_representer(str, repr_str, Dumper=yaml.SafeDumper)
14
+
15
+ from datacontract.config import Config # noqa: E402
16
+
17
+ __all__ = ["Config"]
@@ -1,3 +1,4 @@
1
+ import json
1
2
  import logging
2
3
  import os
3
4
  import tempfile
@@ -10,8 +11,9 @@ from fastapi import Body, Depends, FastAPI, HTTPException, Query, Request, statu
10
11
  from fastapi.middleware.cors import CORSMiddleware
11
12
  from fastapi.responses import PlainTextResponse
12
13
  from fastapi.security.api_key import APIKeyHeader
13
- from pydantic import BaseModel
14
+ from pydantic import BaseModel, ValidationError
14
15
 
16
+ from datacontract.config import Config, known_env_names
15
17
  from datacontract.data_contract import DataContract, ExportFormat
16
18
  from datacontract.model.exceptions import DataContractException
17
19
  from datacontract.model.run import Run
@@ -270,6 +272,58 @@ api_key_header = APIKeyHeader(
270
272
  )
271
273
 
272
274
 
275
+ _CONFIG_HEADER_PREFIX = "datacontract-"
276
+
277
+
278
+ def config_from_headers(headers) -> "Config | None":
279
+ """Build a per-request Config from configuration option headers.
280
+
281
+ Header names are matched case-insensitively and map mechanically to the env
282
+ var names: uppercase, dashes to underscores — ``datacontract-snowflake-password``
283
+ → ``DATACONTRACT_SNOWFLAKE_PASSWORD``, ``entropy-data-api-key`` →
284
+ ``ENTROPY_DATA_API_KEY``. Returns None when no config headers are present,
285
+ so env-var-configured deployments behave exactly as before. Unknown
286
+ ``datacontract-*`` option names are rejected with a 400.
287
+ """
288
+ known = known_env_names()
289
+ values = {}
290
+ for name, value in headers.items():
291
+ lowered = name.lower()
292
+ env = lowered.upper().replace("-", "_")
293
+ if lowered.startswith(_CONFIG_HEADER_PREFIX) or env in known:
294
+ values[env] = value
295
+ if not values:
296
+ return None
297
+ try:
298
+ return Config.resolve(values)
299
+ except (ValueError, ValidationError) as e:
300
+ raise HTTPException(
301
+ status_code=status.HTTP_400_BAD_REQUEST,
302
+ detail=f"Invalid datacontract-* configuration header: {e}",
303
+ )
304
+
305
+
306
+ def _parse_filters_query(filters: str | None) -> dict[str, str] | None:
307
+ """Parse the `filters` query parameter (JSON object mapping schema name to predicate)."""
308
+ if filters is None:
309
+ return None
310
+ detail = (
311
+ "The filters parameter must be a JSON object mapping schema name to a SQL predicate, "
312
+ 'e.g., {"orders": "ingested_at >= CURRENT_DATE - 1"}.'
313
+ )
314
+ try:
315
+ parsed = json.loads(filters)
316
+ except json.JSONDecodeError:
317
+ raise HTTPException(status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, detail=detail)
318
+ if (
319
+ not isinstance(parsed, dict)
320
+ or not parsed
321
+ or not all(isinstance(predicate, str) and predicate.strip() for predicate in parsed.values())
322
+ ):
323
+ raise HTTPException(status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, detail=detail)
324
+ return {schema_name: predicate.strip() for schema_name, predicate in parsed.items()}
325
+
326
+
273
327
  def check_api_key(api_key_header: str | None):
274
328
  correct_api_key = os.getenv("DATACONTRACT_CLI_API_KEY")
275
329
  if correct_api_key is None or correct_api_key == "":
@@ -298,7 +352,9 @@ def check_api_key(api_key_header: str | None):
298
352
  description="""
299
353
  Run schema and quality tests. Data Contract CLI connects to the data sources configured in the server section.
300
354
  This usually requires credentials to access the data sources.
301
- Credentials must be provided via environment variables when running the web server.
355
+ Credentials can be provided via environment variables when running the web server, or per request
356
+ via datacontract-* headers (case-insensitive), which map to the environment variable names
357
+ (e.g. datacontract-snowflake-password sets DATACONTRACT_SNOWFLAKE_PASSWORD for this request only).
302
358
  POST the data contract YAML as payload.
303
359
  """,
304
360
  responses={
@@ -348,12 +404,41 @@ async def test(
348
404
  examples=["https://api.datamesh-manager.com/api/test-results"],
349
405
  ),
350
406
  ] = None,
407
+ filter: Annotated[
408
+ str | None,
409
+ Query(
410
+ description="A SQL predicate to filter the rows under test, in the dialect of the server. "
411
+ "Only works if a single schema is tested; for contracts with multiple schemas, use filters. "
412
+ "Schema checks and custom SQL queries are not filtered.",
413
+ examples=["ingested_at >= CURRENT_DATE - 1"],
414
+ ),
415
+ ] = None,
416
+ filters: Annotated[
417
+ str | None,
418
+ Query(
419
+ description="Row filters per schema, as a JSON object mapping schema name to SQL predicate. "
420
+ "Schema checks and custom SQL queries are not filtered.",
421
+ examples=['{"orders": "ingested_at >= CURRENT_DATE - 1"}'],
422
+ ),
423
+ ] = None,
351
424
  ) -> Run:
352
425
  check_api_key(api_key)
426
+ parsed_filters = _parse_filters_query(filters)
427
+ if filter is not None and parsed_filters is not None:
428
+ raise HTTPException(
429
+ status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
430
+ detail="Use either the filter or the filters parameter, not both.",
431
+ )
353
432
  logging.info("Testing data contract...")
354
433
  logging.info(body)
355
434
  return DataContract(
356
- data_contract_str=body, server=server, publish_url=publish_url, fastapi_url=str(request.url)
435
+ data_contract_str=body,
436
+ server=server,
437
+ publish_url=publish_url,
438
+ fastapi_url=str(request.url),
439
+ config=config_from_headers(request.headers),
440
+ filter=filter,
441
+ filters=parsed_filters,
357
442
  ).test()
358
443
 
359
444
 
@@ -8,6 +8,7 @@ import pytz
8
8
  from jinja2 import Environment, PackageLoader, select_autoescape
9
9
  from open_data_contract_standard.model import OpenDataContractStandard
10
10
 
11
+ from datacontract.config import cli_config
11
12
  from datacontract.data_contract import DataContract
12
13
  from datacontract.export.html_exporter import get_version
13
14
 
@@ -26,7 +27,7 @@ def _get_owner(odcs: OpenDataContractStandard) -> Optional[str]:
26
27
  def create_data_contract_html(contracts, file: Path, path: Path, schema: str):
27
28
  logging.debug(f"Creating data contract html for file {file} and schema {schema}")
28
29
  data_contract = DataContract(
29
- data_contract_file=f"{file.absolute()}", inline_references=True, schema_location=schema
30
+ data_contract_file=f"{file.absolute()}", inline_references=True, schema_location=schema, config=cli_config()
30
31
  )
31
32
  html = data_contract.export(export_format="html")
32
33
  odcs = data_contract.get_data_contract()
@@ -5,6 +5,7 @@ from importlib import metadata
5
5
  from pathlib import Path
6
6
  from typing import Iterable, Optional
7
7
 
8
+ import pydantic
8
9
  import typer
9
10
  from click import Context
10
11
  from dotenv import find_dotenv, load_dotenv
@@ -13,6 +14,7 @@ from rich.markup import escape
13
14
  from typer.core import TyperGroup
14
15
  from typing_extensions import Annotated
15
16
 
17
+ from datacontract.config import Config, set_cli_config
16
18
  from datacontract.output.output_format import OutputFormat
17
19
 
18
20
  console = Console()
@@ -151,6 +153,13 @@ def common(
151
153
  "instead of the bundled CA certificates (e.g. behind a corporate proxy or internal CA).",
152
154
  envvar="DATACONTRACT_SYSTEM_TRUSTSTORE",
153
155
  ),
156
+ config_file: Optional[Path] = typer.Option(
157
+ None,
158
+ "--config-file",
159
+ help="Path to a YAML file with credentials and connection options "
160
+ "(sections per data source, ${VAR} references resolve from the environment). "
161
+ "Defaults to ./datacontract-config.yaml or ~/.datacontract/config.yaml if present.",
162
+ ),
154
163
  ):
155
164
  """
156
165
  The datacontract CLI is an open source command-line tool for working with Data Contracts (https://datacontract.com).
@@ -164,10 +173,30 @@ def common(
164
173
  # Already-set environment variables take precedence.
165
174
  load_dotenv(dotenv_path=find_dotenv(usecwd=True), override=False)
166
175
 
176
+ set_cli_config(_load_config_file(config_file))
177
+
167
178
  if system_truststore:
168
179
  inject_system_truststore()
169
180
 
170
181
 
182
+ def _load_config_file(config_file: "Optional[Path]"):
183
+ """Load the --config-file, or the first default location that exists."""
184
+ candidates = (
185
+ [config_file]
186
+ if config_file
187
+ else [Path("datacontract-config.yaml"), Path.home() / ".datacontract" / "config.yaml"]
188
+ )
189
+ for candidate in candidates:
190
+ if candidate.exists():
191
+ try:
192
+ return Config.from_yaml(candidate)
193
+ except (ValueError, pydantic.ValidationError) as e:
194
+ raise typer.BadParameter(str(e), param_hint="--config-file")
195
+ if config_file:
196
+ raise typer.BadParameter(f"Config file {config_file} does not exist.", param_hint="--config-file")
197
+ return None
198
+
199
+
171
200
  def enable_debug_logging(debug: bool, otherwise_disable_stderr: bool = False):
172
201
  if not debug and otherwise_disable_stderr:
173
202
  # some commands render run.logs to the console themselves; a NullHandler keeps
@@ -2,6 +2,7 @@ import typer
2
2
  from typing_extensions import Annotated
3
3
 
4
4
  from datacontract.cli import app, console, debug_option, enable_debug_logging
5
+ from datacontract.config import cli_config
5
6
  from datacontract.data_contract import DataContract
6
7
  from datacontract.output.text_changelog_results import write_text_changelog_results
7
8
 
@@ -11,8 +12,14 @@ from datacontract.output.text_changelog_results import write_text_changelog_resu
11
12
  epilog="Example: datacontract changelog datacontract-v1.yaml datacontract-v2.yaml",
12
13
  )
13
14
  def changelog(
14
- v1: Annotated[str, typer.Argument(help="The location (url or path) of the source (before) data contract YAML.")],
15
- v2: Annotated[str, typer.Argument(help="The location (url or path) of the target (after) data contract YAML.")],
15
+ v1: Annotated[
16
+ str,
17
+ typer.Argument(help="The location (url, s3 url, or local path) of the source (before) data contract YAML."),
18
+ ],
19
+ v2: Annotated[
20
+ str,
21
+ typer.Argument(help="The location (url, s3 url, or local path) of the target (after) data contract YAML."),
22
+ ],
16
23
  inline_references: Annotated[
17
24
  bool,
18
25
  typer.Option(
@@ -24,7 +31,7 @@ def changelog(
24
31
  ):
25
32
  """Show a changelog between two data contracts."""
26
33
  enable_debug_logging(debug)
27
- result = DataContract(data_contract_file=v1, inline_references=inline_references).changelog(
28
- DataContract(data_contract_file=v2, inline_references=inline_references)
34
+ result = DataContract(config=cli_config(), data_contract_file=v1, inline_references=inline_references).changelog(
35
+ DataContract(config=cli_config(), data_contract_file=v2, inline_references=inline_references)
29
36
  )
30
37
  write_text_changelog_results(result, console)
@@ -15,6 +15,7 @@ from datacontract.cli import (
15
15
  resolve_output_format,
16
16
  validate_publish_url,
17
17
  )
18
+ from datacontract.config import cli_config
18
19
  from datacontract.data_contract import DataContract
19
20
  from datacontract.output.ci_output import write_ci_output, write_ci_summary, write_json_results
20
21
  from datacontract.output.output_format import OutputFormat
@@ -34,7 +35,7 @@ class FailOn(str, Enum):
34
35
  def ci(
35
36
  locations: Annotated[
36
37
  Optional[list[str]],
37
- typer.Argument(help="The location(s) (url or path) of the data contract yaml file(s)."),
38
+ typer.Argument(help="The location(s) (url, s3 url, or local path) of the data contract yaml file(s)."),
38
39
  ] = None,
39
40
  schema: Annotated[
40
41
  str,
@@ -111,6 +112,7 @@ def ci(
111
112
  for location in locations:
112
113
  out.print(f"Testing {location}")
113
114
  run = DataContract(
115
+ config=cli_config(),
114
116
  data_contract_file=location,
115
117
  schema_location=schema,
116
118
  publish_url=publish,
@@ -14,6 +14,7 @@ from datacontract.cli import (
14
14
  enable_debug_logging,
15
15
  validate_publish_url,
16
16
  )
17
+ from datacontract.config import cli_config
17
18
  from datacontract.integration.dbt_sync import (
18
19
  ModelResolution,
19
20
  _ensure_dbt_project,
@@ -120,7 +121,7 @@ def _maybe_publish(run: Run, odcs, publish: Optional[str], ssl_verification: boo
120
121
  f"Pass --server to identify the run.[/yellow]"
121
122
  )
122
123
  return False
123
- return not publish_test_results_to_entropy_data(run, publish, ssl_verification)
124
+ return not publish_test_results_to_entropy_data(run, publish, ssl_verification, config=cli_config())
124
125
 
125
126
 
126
127
  def _report_run(run: Run, *, run_only: bool, publish_failed: bool, ctx: _ContractCtx) -> bool:
@@ -10,6 +10,7 @@ import typer
10
10
  from typing_extensions import Annotated
11
11
 
12
12
  from datacontract.cli import app, console, debug_option, enable_debug_logging
13
+ from datacontract.config import cli_config
13
14
  from datacontract.init.init_template import get_init_template
14
15
  from datacontract.lint.urls import fetch_resource
15
16
  from datacontract.model.exceptions import DataContractException
@@ -56,7 +57,7 @@ def _download_local_copy(url: str) -> str:
56
57
  console.print("Aborted.")
57
58
  raise typer.Exit(code=1)
58
59
  try:
59
- content = fetch_resource(url)
60
+ content = fetch_resource(url, cli_config())
60
61
  except DataContractException as e:
61
62
  console.print(f"[red]Error: {e.reason}[/red]")
62
63
  raise typer.Exit(code=1)
@@ -6,6 +6,7 @@ from rich.console import Console
6
6
  from typing_extensions import Annotated
7
7
 
8
8
  from datacontract.cli import OrderedCommandsWithMigrationHints, debug_option, enable_debug_logging
9
+ from datacontract.config import cli_config
9
10
  from datacontract.data_contract import DataContract
10
11
  from datacontract.export.exporter import ExportFormat, SqlServerType
11
12
  from datacontract.export.great_expectations_exporter import GreatExpectationsEngine
@@ -17,7 +18,10 @@ export_app = typer.Typer(cls=OrderedCommandsWithMigrationHints, no_args_is_help=
17
18
  # ---------------------------------------------------------------------------
18
19
  # Shared option type aliases
19
20
  # ---------------------------------------------------------------------------
20
- location_arg = Annotated[str, typer.Argument(help="The location (url or path) of the data contract yaml.")]
21
+ location_arg = Annotated[
22
+ str,
23
+ typer.Argument(help="The location (url, s3 url, or local path) of the data contract yaml."),
24
+ ]
21
25
  output_option = Annotated[
22
26
  Optional[Path],
23
27
  typer.Option(
@@ -64,6 +68,7 @@ def _export(
64
68
  clickhouse_order_by: Optional[str] = None,
65
69
  ):
66
70
  result = DataContract(
71
+ config=cli_config(),
67
72
  data_contract_file=location,
68
73
  schema_location=schema,
69
74
  server=server,
@@ -6,6 +6,7 @@ from rich.console import Console
6
6
  from typing_extensions import Annotated
7
7
 
8
8
  from datacontract.cli import OrderedCommandsWithMigrationHints, debug_option, enable_debug_logging
9
+ from datacontract.config import cli_config
9
10
  from datacontract.data_contract import DataContract
10
11
  from datacontract.imports.sql_importer import SqlDialect
11
12
 
@@ -69,6 +70,7 @@ def import_sql(
69
70
  """Import a data contract from a SQL DDL file."""
70
71
  enable_debug_logging(debug)
71
72
  result = DataContract.import_from_source(
73
+ config=cli_config(),
72
74
  format="sql",
73
75
  source=source,
74
76
  schema=schema,
@@ -93,7 +95,9 @@ def import_avro(
93
95
  ):
94
96
  """Import a data contract from an Avro schema file."""
95
97
  enable_debug_logging(debug)
96
- result = DataContract.import_from_source(format="avro", source=source, schema=schema, owner=owner, id=id)
98
+ result = DataContract.import_from_source(
99
+ config=cli_config(), format="avro", source=source, schema=schema, owner=owner, id=id
100
+ )
97
101
  _write_result(result, output)
98
102
 
99
103
 
@@ -118,7 +122,7 @@ def import_dbt(
118
122
  """Import a data contract from a dbt manifest file."""
119
123
  enable_debug_logging(debug)
120
124
  result = DataContract.import_from_source(
121
- format="dbt", source=source, schema=schema, dbt_model=model, owner=owner, id=id
125
+ config=cli_config(), format="dbt", source=source, schema=schema, dbt_model=model, owner=owner, id=id
122
126
  )
123
127
  _write_result(result, output)
124
128
 
@@ -154,6 +158,7 @@ def import_dbml(
154
158
  """Import a data contract from a DBML file."""
155
159
  enable_debug_logging(debug)
156
160
  result = DataContract.import_from_source(
161
+ config=cli_config(),
157
162
  format="dbml",
158
163
  source=source,
159
164
  schema=odcs_schema,
@@ -186,7 +191,7 @@ def import_glue(
186
191
  """Import a data contract from AWS Glue."""
187
192
  enable_debug_logging(debug)
188
193
  result = DataContract.import_from_source(
189
- format="glue", source=database, schema=schema, glue_table=table, owner=owner, id=id
194
+ config=cli_config(), format="glue", source=database, schema=schema, glue_table=table, owner=owner, id=id
190
195
  )
191
196
  _write_result(result, output)
192
197
 
@@ -219,6 +224,7 @@ def import_bigquery(
219
224
  """Import a data contract from BigQuery."""
220
225
  enable_debug_logging(debug)
221
226
  result = DataContract.import_from_source(
227
+ config=cli_config(),
222
228
  format="bigquery",
223
229
  source=source,
224
230
  schema=schema,
@@ -259,7 +265,13 @@ def import_databricks(
259
265
  """Import a data contract from Databricks Unity Catalog."""
260
266
  enable_debug_logging(debug)
261
267
  result = DataContract.import_from_source(
262
- format="databricks", source=source, schema=schema, unity_table_full_name=table, owner=owner, id=id
268
+ config=cli_config(),
269
+ format="databricks",
270
+ source=source,
271
+ schema=schema,
272
+ unity_table_full_name=table,
273
+ owner=owner,
274
+ id=id,
263
275
  )
264
276
  _write_result(result, output)
265
277
 
@@ -298,7 +310,9 @@ def import_jsonschema(
298
310
  ):
299
311
  """Import a data contract from a JSON Schema file."""
300
312
  enable_debug_logging(debug)
301
- result = DataContract.import_from_source(format="jsonschema", source=source, schema=schema, owner=owner, id=id)
313
+ result = DataContract.import_from_source(
314
+ config=cli_config(), format="jsonschema", source=source, schema=schema, owner=owner, id=id
315
+ )
302
316
  _write_result(result, output)
303
317
 
304
318
 
@@ -316,7 +330,9 @@ def import_json(
316
330
  ):
317
331
  """Import a data contract from a JSON file."""
318
332
  enable_debug_logging(debug)
319
- result = DataContract.import_from_source(format="json", source=source, schema=schema, owner=owner, id=id)
333
+ result = DataContract.import_from_source(
334
+ config=cli_config(), format="json", source=source, schema=schema, owner=owner, id=id
335
+ )
320
336
  _write_result(result, output)
321
337
 
322
338
 
@@ -334,7 +350,9 @@ def import_odcs(
334
350
  ):
335
351
  """Import a data contract from an ODCS file."""
336
352
  enable_debug_logging(debug)
337
- result = DataContract.import_from_source(format="odcs", source=source, schema=schema, owner=owner, id=id)
353
+ result = DataContract.import_from_source(
354
+ config=cli_config(), format="odcs", source=source, schema=schema, owner=owner, id=id
355
+ )
338
356
  _write_result(result, output)
339
357
 
340
358
 
@@ -352,7 +370,9 @@ def import_parquet(
352
370
  ):
353
371
  """Import a data contract from a Parquet file."""
354
372
  enable_debug_logging(debug)
355
- result = DataContract.import_from_source(format="parquet", source=source, schema=schema, owner=owner, id=id)
373
+ result = DataContract.import_from_source(
374
+ config=cli_config(), format="parquet", source=source, schema=schema, owner=owner, id=id
375
+ )
356
376
  _write_result(result, output)
357
377
 
358
378
 
@@ -370,7 +390,9 @@ def import_csv(
370
390
  ):
371
391
  """Import a data contract from a CSV file."""
372
392
  enable_debug_logging(debug)
373
- result = DataContract.import_from_source(format="csv", source=source, schema=schema, owner=owner, id=id)
393
+ result = DataContract.import_from_source(
394
+ config=cli_config(), format="csv", source=source, schema=schema, owner=owner, id=id
395
+ )
374
396
  _write_result(result, output)
375
397
 
376
398
 
@@ -388,7 +410,9 @@ def import_protobuf(
388
410
  ):
389
411
  """Import a data contract from a Protobuf schema file."""
390
412
  enable_debug_logging(debug)
391
- result = DataContract.import_from_source(format="protobuf", source=source, schema=schema, owner=owner, id=id)
413
+ result = DataContract.import_from_source(
414
+ config=cli_config(), format="protobuf", source=source, schema=schema, owner=owner, id=id
415
+ )
392
416
  _write_result(result, output)
393
417
 
394
418
 
@@ -409,7 +433,9 @@ def import_spark(
409
433
  ):
410
434
  """Import a data contract from a Spark schema."""
411
435
  enable_debug_logging(debug)
412
- result = DataContract.import_from_source(format="spark", source=tables, schema=schema, owner=owner, id=id)
436
+ result = DataContract.import_from_source(
437
+ config=cli_config(), format="spark", source=tables, schema=schema, owner=owner, id=id
438
+ )
413
439
  _write_result(result, output)
414
440
 
415
441
 
@@ -432,7 +458,7 @@ def import_iceberg(
432
458
  """Import a data contract from an Iceberg schema."""
433
459
  enable_debug_logging(debug)
434
460
  result = DataContract.import_from_source(
435
- format="iceberg", source=source, schema=schema, iceberg_table=table, owner=owner, id=id
461
+ config=cli_config(), format="iceberg", source=source, schema=schema, iceberg_table=table, owner=owner, id=id
436
462
  )
437
463
  _write_result(result, output)
438
464
 
@@ -451,7 +477,9 @@ def import_excel(
451
477
  ):
452
478
  """Import a data contract from an Excel file."""
453
479
  enable_debug_logging(debug)
454
- result = DataContract.import_from_source(format="excel", source=source, schema=schema, owner=owner, id=id)
480
+ result = DataContract.import_from_source(
481
+ config=cli_config(), format="excel", source=source, schema=schema, owner=owner, id=id
482
+ )
455
483
  _write_result(result, output)
456
484
 
457
485
 
@@ -471,7 +499,9 @@ def import_powerbi(
471
499
  ):
472
500
  """Import a data contract from a Power BI semantic model (.pbit, .bim, or .json) file."""
473
501
  enable_debug_logging(debug)
474
- result = DataContract.import_from_source(format="powerbi", source=source, schema=schema, owner=owner, id=id)
502
+ result = DataContract.import_from_source(
503
+ config=cli_config(), format="powerbi", source=source, schema=schema, owner=owner, id=id
504
+ )
475
505
  _write_result(result, output)
476
506
 
477
507
 
@@ -491,7 +521,7 @@ def import_snowflake(
491
521
  """Import a data contract from a Snowflake workspace."""
492
522
  enable_debug_logging(debug)
493
523
  result = DataContract.import_from_source(
494
- format="snowflake", source=source, database=database, schema=schema, owner=owner, id=id
524
+ config=cli_config(), format="snowflake", source=source, database=database, schema=schema, owner=owner, id=id
495
525
  )
496
526
  _write_result(result, output)
497
527
 
@@ -519,6 +549,7 @@ def import_redshift(
519
549
  """Import a data contract from an Amazon Redshift schema."""
520
550
  enable_debug_logging(debug)
521
551
  result = DataContract.import_from_source(
552
+ config=cli_config(),
522
553
  format="redshift",
523
554
  source=source,
524
555
  port=port,
@@ -554,6 +585,7 @@ def import_postgres(
554
585
  """Import a data contract from a Postgres schema."""
555
586
  enable_debug_logging(debug)
556
587
  result = DataContract.import_from_source(
588
+ config=cli_config(),
557
589
  format="postgres",
558
590
  source=source,
559
591
  port=port,
@@ -589,7 +621,7 @@ def import_gcs(
589
621
  """Import a data contract from files in Google Cloud Storage."""
590
622
  enable_debug_logging(debug)
591
623
  result = DataContract.import_from_source(
592
- format="gcs", source=source, file_format=format, delimiter=delimiter, owner=owner, id=id
624
+ config=cli_config(), format="gcs", source=source, file_format=format, delimiter=delimiter, owner=owner, id=id
593
625
  )
594
626
  _write_result(result, output)
595
627
 
@@ -616,7 +648,7 @@ def import_adls(
616
648
  """Import a data contract from files in Azure Blob Storage / ADLS."""
617
649
  enable_debug_logging(debug)
618
650
  result = DataContract.import_from_source(
619
- format="adls", source=source, file_format=format, delimiter=delimiter, owner=owner, id=id
651
+ config=cli_config(), format="adls", source=source, file_format=format, delimiter=delimiter, owner=owner, id=id
620
652
  )
621
653
  _write_result(result, output)
622
654
 
@@ -642,6 +674,7 @@ def import_trino(
642
674
  """Import a data contract from a Trino catalog."""
643
675
  enable_debug_logging(debug)
644
676
  result = DataContract.import_from_source(
677
+ config=cli_config(),
645
678
  format="trino",
646
679
  source=source,
647
680
  port=port,
@@ -677,6 +710,7 @@ def import_oracle(
677
710
  """Import a data contract from an Oracle database."""
678
711
  enable_debug_logging(debug)
679
712
  result = DataContract.import_from_source(
713
+ config=cli_config(),
680
714
  format="oracle",
681
715
  source=source,
682
716
  port=port,
@@ -710,6 +744,7 @@ def import_sqlserver(
710
744
  """Import a data contract from a SQL Server database."""
711
745
  enable_debug_logging(debug)
712
746
  result = DataContract.import_from_source(
747
+ config=cli_config(),
713
748
  format="sqlserver",
714
749
  source=source,
715
750
  port=port,
@@ -742,6 +777,7 @@ def import_mysql(
742
777
  """Import a data contract from a MySQL database."""
743
778
  enable_debug_logging(debug)
744
779
  result = DataContract.import_from_source(
780
+ config=cli_config(),
745
781
  format="mysql",
746
782
  source=source,
747
783
  port=port,
@@ -778,6 +814,7 @@ def import_s3(
778
814
  """Import a data contract from files in S3."""
779
815
  enable_debug_logging(debug)
780
816
  result = DataContract.import_from_source(
817
+ config=cli_config(),
781
818
  format="s3",
782
819
  source=source,
783
820
  file_format=format,
@@ -815,6 +852,7 @@ def import_athena(
815
852
  """Import a data contract from an Amazon Athena database."""
816
853
  enable_debug_logging(debug)
817
854
  result = DataContract.import_from_source(
855
+ config=cli_config(),
818
856
  format="athena",
819
857
  schema=schema,
820
858
  staging_dir=staging_dir,
@@ -4,6 +4,7 @@ import typer
4
4
  from typing_extensions import Annotated
5
5
 
6
6
  from datacontract.cli import app, console, debug_option, enable_debug_logging, resolve_output_format
7
+ from datacontract.config import cli_config
7
8
  from datacontract.data_contract import DataContract
8
9
  from datacontract.output.output_format import OutputFormat
9
10
  from datacontract.output.test_results_writer import write_test_result
@@ -16,7 +17,7 @@ from datacontract.output.test_results_writer import write_test_result
16
17
  def lint(
17
18
  location: Annotated[
18
19
  str,
19
- typer.Argument(help="The location (url or path) of the data contract yaml."),
20
+ typer.Argument(help="The location (url, s3 url, or local path) of the data contract yaml."),
20
21
  ] = "datacontract.yaml",
21
22
  schema: Annotated[
22
23
  str,
@@ -55,6 +56,7 @@ def lint(
55
56
 
56
57
  output_format = resolve_output_format(output_format, output)
57
58
  run = DataContract(
59
+ config=cli_config(),
58
60
  data_contract_file=location,
59
61
  schema_location=schema,
60
62
  all_errors=all_errors,
@@ -2,6 +2,7 @@ import typer
2
2
  from typing_extensions import Annotated
3
3
 
4
4
  from datacontract.cli import app, debug_option, enable_debug_logging
5
+ from datacontract.config import cli_config
5
6
  from datacontract.integration.entropy_data import (
6
7
  publish_data_contract_to_entropy_data,
7
8
  )
@@ -15,7 +16,7 @@ from datacontract.lint.resolve import resolve_data_contract_dict
15
16
  def publish(
16
17
  location: Annotated[
17
18
  str,
18
- typer.Argument(help="The location (url or path) of the data contract yaml."),
19
+ typer.Argument(help="The location (url, s3 url, or local path) of the data contract yaml."),
19
20
  ] = "datacontract.yaml",
20
21
  schema: Annotated[
21
22
  str,
@@ -33,6 +34,7 @@ def publish(
33
34
  enable_debug_logging(debug)
34
35
 
35
36
  publish_data_contract_to_entropy_data(
36
- data_contract_dict=resolve_data_contract_dict(location),
37
+ config=cli_config(),
38
+ data_contract_dict=resolve_data_contract_dict(location, config=cli_config()),
37
39
  ssl_verification=ssl_verification,
38
40
  )