datacontract-cli 1.0.7__tar.gz → 1.0.8__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 (369) hide show
  1. {datacontract_cli-1.0.7/datacontract_cli.egg-info → datacontract_cli-1.0.8}/PKG-INFO +1 -1
  2. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/ibis/connections/connect.py +7 -1
  3. datacontract_cli-1.0.8/datacontract/engines/ibis/connections/redshift_patch.py +84 -0
  4. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8/datacontract_cli.egg-info}/PKG-INFO +1 -1
  5. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract_cli.egg-info/SOURCES.txt +3 -0
  6. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/pyproject.toml +1 -1
  7. datacontract_cli-1.0.8/tests/test_redshift_patch.py +91 -0
  8. datacontract_cli-1.0.8/tests/test_test_redshift.py +86 -0
  9. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/LICENSE +0 -0
  10. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/MANIFEST.in +0 -0
  11. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/README.md +0 -0
  12. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/__init__.py +0 -0
  13. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/api.py +0 -0
  14. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/catalog/catalog.py +0 -0
  15. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/changelog/__init__.py +0 -0
  16. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/changelog/changelog.py +0 -0
  17. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/changelog/normalize.py +0 -0
  18. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/cli.py +0 -0
  19. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/command_api.py +0 -0
  20. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/command_catalog.py +0 -0
  21. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/command_changelog.py +0 -0
  22. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/command_ci.py +0 -0
  23. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/command_dbt.py +0 -0
  24. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/command_edit.py +0 -0
  25. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/command_export.py +0 -0
  26. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/command_import.py +0 -0
  27. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/command_init.py +0 -0
  28. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/command_lint.py +0 -0
  29. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/command_publish.py +0 -0
  30. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/command_test.py +0 -0
  31. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/data_contract.py +0 -0
  32. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/VERSION +0 -0
  33. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/abap-Bs8kvjsq.js +0 -0
  34. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/apex-Dspwrl5m.js +0 -0
  35. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/assets/editor.worker-4.7.0.js +0 -0
  36. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/assets/yaml.worker-4.7.0.js +0 -0
  37. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/azcli-k1BiOau1.js +0 -0
  38. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/bat-BIP72KWc.js +0 -0
  39. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/bicep-VhQeYhS3.js +0 -0
  40. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/cameligo-DnuAXtHg.js +0 -0
  41. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/clojure-BAuDPsal.js +0 -0
  42. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/coffee-BV06qSnj.js +0 -0
  43. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/cpp-Cz8Jeyrf.js +0 -0
  44. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/csharp-F6hhlXFb.js +0 -0
  45. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/csp-KzlEHCyI.js +0 -0
  46. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/css-e4FKntZ3.js +0 -0
  47. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/cssMode-BNkTa2xp.js +0 -0
  48. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/cypher-CpvDGKRr.js +0 -0
  49. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/dart-DdHeFWR0.js +0 -0
  50. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/datacontract-editor.css +0 -0
  51. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/datacontract-editor.es.js +0 -0
  52. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/dockerfile-aoNXDcio.js +0 -0
  53. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/ecl-C4Q0DYuA.js +0 -0
  54. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/elixir-C9X42b0T.js +0 -0
  55. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/flow9-Bff42pfB.js +0 -0
  56. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/freemarker2-Dyfzmb5A.js +0 -0
  57. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/fsharp-C6vPAsHG.js +0 -0
  58. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/go-DEr8zx9f.js +0 -0
  59. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/graphql-BiNBBRFh.js +0 -0
  60. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/handlebars-BtDNI-uC.js +0 -0
  61. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/hcl-2T9lKuFg.js +0 -0
  62. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/html-Cn4TGw_o.js +0 -0
  63. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/htmlMode-Bf84vbo2.js +0 -0
  64. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/index.html +0 -0
  65. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/ini-CZGtssYM.js +0 -0
  66. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/java-B260NeH3.js +0 -0
  67. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/javascript-B86Kac07.js +0 -0
  68. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/jsonMode-Ckgg5lAE.js +0 -0
  69. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/julia-kuNLM9c5.js +0 -0
  70. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/kotlin-Bz6kAefA.js +0 -0
  71. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/less-AZUtS89I.js +0 -0
  72. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/lexon-BcmgnyRb.js +0 -0
  73. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/liquid-D0NPwuu_.js +0 -0
  74. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/logo_fuchsia_v2.svg +0 -0
  75. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/lua-Dz1RbATg.js +0 -0
  76. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/m3-CIMooLFn.js +0 -0
  77. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/markdown-C1BsCK9P.js +0 -0
  78. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/mdx-QFRSBtVQ.js +0 -0
  79. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/mips-BovsnfLQ.js +0 -0
  80. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/monaco-4.7.0.js +0 -0
  81. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/msdax-CiRB2ZB-.js +0 -0
  82. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/mysql-BwdpPE19.js +0 -0
  83. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/objective-c-D4nfHfso.js +0 -0
  84. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/odcs.svg +0 -0
  85. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/pascal--j5-PYtz.js +0 -0
  86. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/pascaligo-C7TcJxNL.js +0 -0
  87. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/perl-BzEWqUb5.js +0 -0
  88. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/pgsql-B_KZ0mGX.js +0 -0
  89. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/php-A19QHzQV.js +0 -0
  90. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/pla-COeKY1hA.js +0 -0
  91. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/postiats-BfMp7zJL.js +0 -0
  92. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/powerquery-B0TS_5Gb.js +0 -0
  93. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/powershell-5jSbKdYB.js +0 -0
  94. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/protobuf-YgnOutn3.js +0 -0
  95. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/pug-DLej6kn5.js +0 -0
  96. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/python-C8RW9B6A.js +0 -0
  97. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/qsharp-AhjqtSHB.js +0 -0
  98. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/r-D-F4P80w.js +0 -0
  99. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/razor-CLZqdY_r.js +0 -0
  100. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/redis-hwwIlMnV.js +0 -0
  101. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/redshift-Bcm_kjEG.js +0 -0
  102. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/restructuredtext-CrdzfPP-.js +0 -0
  103. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/ruby-QC2UNm1s.js +0 -0
  104. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/rust-5aqiQ3L5.js +0 -0
  105. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/sb-B1g1ZfLJ.js +0 -0
  106. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/scala-C2U4R5Gb.js +0 -0
  107. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/scheme-DeFRbslr.js +0 -0
  108. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/scss-RSTCiCmI.js +0 -0
  109. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/shell-BpF-iNu8.js +0 -0
  110. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/solidity-C00r2mbQ.js +0 -0
  111. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/sophia-DVW5ZKDB.js +0 -0
  112. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/sparql-B0nmpxeX.js +0 -0
  113. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/sql-CJwKPERn.js +0 -0
  114. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/st-DPlKG5DT.js +0 -0
  115. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/swift-YZBAbVHV.js +0 -0
  116. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/systemverilog-CDQSaH63.js +0 -0
  117. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/tcl-Dlu8sp6Q.js +0 -0
  118. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/tsMode-yleMwhPq.js +0 -0
  119. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/twig-C5TO7-kw.js +0 -0
  120. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/typescript-CJBeebKU.js +0 -0
  121. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/typespec-BsmjDEu7.js +0 -0
  122. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/vb-ChHvIDrk.js +0 -0
  123. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/wgsl-XEp1ju8c.js +0 -0
  124. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/xml-vC-NMVX1.js +0 -0
  125. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/editor_assets/yaml-Dlf2VF-T.js +0 -0
  126. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/__init__.py +0 -0
  127. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/checks/__init__.py +0 -0
  128. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/checks/check_spec.py +0 -0
  129. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/checks/create_checks.py +0 -0
  130. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/checks/type_normalize.py +0 -0
  131. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/data_contract_test.py +0 -0
  132. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/datacontract/check_azure_blob_file.py +0 -0
  133. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/datacontract/check_that_datacontract_contains_valid_servers_configuration.py +0 -0
  134. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/datacontract/check_that_datacontract_file_exists.py +0 -0
  135. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/fastjsonschema/check_jsonschema.py +0 -0
  136. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/fastjsonschema/s3/s3_read_files.py +0 -0
  137. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/ibis/__init__.py +0 -0
  138. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/ibis/connections/__init__.py +0 -0
  139. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/ibis/connections/duckdb_connection.py +0 -0
  140. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/ibis/connections/kafka.py +0 -0
  141. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/ibis/connections/oracle_patch.py +0 -0
  142. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/ibis/dtype_category.py +0 -0
  143. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/engines/ibis/ibis_check_execute.py +0 -0
  144. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/__init__.py +0 -0
  145. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/avro_exporter.py +0 -0
  146. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/avro_idl_exporter.py +0 -0
  147. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/bigquery_exporter.py +0 -0
  148. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/custom_exporter.py +0 -0
  149. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/data_caterer_exporter.py +0 -0
  150. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/dbml_exporter.py +0 -0
  151. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/dbt_exporter.py +0 -0
  152. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/dcs_exporter.py +0 -0
  153. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/dqx_exporter.py +0 -0
  154. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/duckdb_type_converter.py +0 -0
  155. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/excel_exporter.py +0 -0
  156. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/exporter.py +0 -0
  157. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/exporter_factory.py +0 -0
  158. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/go_exporter.py +0 -0
  159. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/great_expectations_exporter.py +0 -0
  160. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/html_exporter.py +0 -0
  161. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/iceberg_exporter.py +0 -0
  162. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/jsonschema_exporter.py +0 -0
  163. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/markdown_exporter.py +0 -0
  164. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/mermaid_exporter.py +0 -0
  165. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/odcs_export_helper.py +0 -0
  166. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/odcs_v3_exporter.py +0 -0
  167. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/pandas_type_converter.py +0 -0
  168. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/protobuf_exporter.py +0 -0
  169. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/pydantic_exporter.py +0 -0
  170. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/rdf_exporter.py +0 -0
  171. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/sodacl_check_builder.py +0 -0
  172. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/sodacl_exporter.py +0 -0
  173. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/spark_exporter.py +0 -0
  174. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/sql_exporter.py +0 -0
  175. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/sql_type_converter.py +0 -0
  176. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/export/sqlalchemy_exporter.py +0 -0
  177. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/avro_importer.py +0 -0
  178. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/bigquery_importer.py +0 -0
  179. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/csv_importer.py +0 -0
  180. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/dbml_importer.py +0 -0
  181. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/dbt_importer.py +0 -0
  182. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/dcs_importer.py +0 -0
  183. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/excel_importer.py +0 -0
  184. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/glue_importer.py +0 -0
  185. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/iceberg_importer.py +0 -0
  186. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/importer.py +0 -0
  187. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/importer_factory.py +0 -0
  188. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/json_importer.py +0 -0
  189. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/jsonschema_importer.py +0 -0
  190. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/odcs_helper.py +0 -0
  191. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/odcs_importer.py +0 -0
  192. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/parquet_importer.py +0 -0
  193. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/powerbi_importer.py +0 -0
  194. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/protobuf_importer.py +0 -0
  195. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/snowflake_importer.py +0 -0
  196. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/spark_importer.py +0 -0
  197. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/sql_importer.py +0 -0
  198. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/imports/unity_importer.py +0 -0
  199. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/init/init_template.py +0 -0
  200. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/integration/dbt_sync.py +0 -0
  201. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/integration/dbt_test_mapping.py +0 -0
  202. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/integration/entropy_data.py +0 -0
  203. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/lint/files.py +0 -0
  204. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/lint/resolve.py +0 -0
  205. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/lint/resources.py +0 -0
  206. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/lint/schema.py +0 -0
  207. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/lint/urls.py +0 -0
  208. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/model/changelog.py +0 -0
  209. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/model/exceptions.py +0 -0
  210. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/model/odcs.py +0 -0
  211. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/model/run.py +0 -0
  212. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/model/server.py +0 -0
  213. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/output/__init__.py +0 -0
  214. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/output/ci_output.py +0 -0
  215. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/output/json_test_results.py +0 -0
  216. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/output/junit_test_results.py +0 -0
  217. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/output/output_format.py +0 -0
  218. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/output/test_results_writer.py +0 -0
  219. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/output/text_changelog_results.py +0 -0
  220. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/py.typed +0 -0
  221. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/schemas/datacontract-1.1.0.init.yaml +0 -0
  222. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/schemas/datacontract-1.1.0.schema.json +0 -0
  223. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/schemas/datacontract-1.2.0.init.yaml +0 -0
  224. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/schemas/datacontract-1.2.0.schema.json +0 -0
  225. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/schemas/datacontract-1.2.1.init.yaml +0 -0
  226. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/schemas/datacontract-1.2.1.schema.json +0 -0
  227. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/schemas/odcs-3.0.1.schema.json +0 -0
  228. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/schemas/odcs-3.0.2.schema.json +0 -0
  229. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/schemas/odcs-3.1.0.init.yaml +0 -0
  230. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/schemas/odcs-3.1.0.schema.json +0 -0
  231. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/templates/datacontract.html +0 -0
  232. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/templates/datacontract_odcs.html +0 -0
  233. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/templates/index.html +0 -0
  234. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/templates/partials/datacontract_information.html +0 -0
  235. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/templates/partials/datacontract_servicelevels.html +0 -0
  236. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/templates/partials/datacontract_terms.html +0 -0
  237. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/templates/partials/definition.html +0 -0
  238. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/templates/partials/example.html +0 -0
  239. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/templates/partials/model_field.html +0 -0
  240. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/templates/partials/quality.html +0 -0
  241. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/templates/partials/server.html +0 -0
  242. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract/templates/style/output.css +0 -0
  243. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract_cli.egg-info/dependency_links.txt +0 -0
  244. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract_cli.egg-info/entry_points.txt +0 -0
  245. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract_cli.egg-info/requires.txt +0 -0
  246. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/datacontract_cli.egg-info/top_level.txt +0 -0
  247. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/setup.cfg +0 -0
  248. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_api.py +0 -0
  249. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_catalog.py +0 -0
  250. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_changelog.py +0 -0
  251. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_changelog_engine.py +0 -0
  252. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_changelog_normalize.py +0 -0
  253. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_changelog_output_text.py +0 -0
  254. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_ci_output.py +0 -0
  255. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_cli.py +0 -0
  256. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_connect_databricks.py +0 -0
  257. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_connect_sqlserver.py +0 -0
  258. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_connect_trino.py +0 -0
  259. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_data_contract.py +0 -0
  260. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_data_contract_checks.py +0 -0
  261. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_data_contract_specification.py +0 -0
  262. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_dbt_sync.py +0 -0
  263. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_dbt_test_mapping.py +0 -0
  264. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_description_linter.py +0 -0
  265. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_download_datacontract_file.py +0 -0
  266. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_duckdb_json.py +0 -0
  267. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_edit.py +0 -0
  268. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_avro.py +0 -0
  269. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_avro_idl.py +0 -0
  270. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_bigquery.py +0 -0
  271. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_complex_data_contract.py +0 -0
  272. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_custom.py +0 -0
  273. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_custom_exporter.py +0 -0
  274. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_custom_model.py +0 -0
  275. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_data_caterer.py +0 -0
  276. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_dbml.py +0 -0
  277. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_dbt_models.py +0 -0
  278. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_dbt_sources.py +0 -0
  279. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_dbt_staging_sql.py +0 -0
  280. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_dqx.py +0 -0
  281. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_excel.py +0 -0
  282. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_go.py +0 -0
  283. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_great_expectations.py +0 -0
  284. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_html.py +0 -0
  285. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_iceberg.py +0 -0
  286. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_jsonschema.py +0 -0
  287. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_markdown.py +0 -0
  288. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_mermaid.py +0 -0
  289. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_odcs_v3.py +0 -0
  290. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_protobuf.py +0 -0
  291. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_pydantic.py +0 -0
  292. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_rdf.py +0 -0
  293. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_sodacl.py +0 -0
  294. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_spark.py +0 -0
  295. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_sql.py +0 -0
  296. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_sql_clickhouse.py +0 -0
  297. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_sql_query.py +0 -0
  298. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_export_sqlalchemy.py +0 -0
  299. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_ibis_mssql_pattern.py +0 -0
  300. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_ibis_oracle_schema.py +0 -0
  301. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_avro.py +0 -0
  302. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_bigquery.py +0 -0
  303. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_csv.py +0 -0
  304. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_dbml.py +0 -0
  305. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_dbt.py +0 -0
  306. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_excel.py +0 -0
  307. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_glue.py +0 -0
  308. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_iceberg.py +0 -0
  309. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_json.py +0 -0
  310. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_jsonschema.py +0 -0
  311. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_odcs_v3.py +0 -0
  312. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_parquet.py +0 -0
  313. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_powerbi.py +0 -0
  314. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_protobuf.py +0 -0
  315. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_snowflake.py +0 -0
  316. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_spark.py +0 -0
  317. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_sql_oracle.py +0 -0
  318. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_sql_postgres.py +0 -0
  319. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_sql_snowflake.py +0 -0
  320. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_sql_sqlserver.py +0 -0
  321. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_import_unity_file.py +0 -0
  322. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_integration_entropydata.py +0 -0
  323. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_lint.py +0 -0
  324. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_oracle_patch.py +0 -0
  325. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_require_env.py +0 -0
  326. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_resolve.py +0 -0
  327. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_resolve_definitions.py +0 -0
  328. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_roundtrip_jsonschema.py +0 -0
  329. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_sql_type_converter_physicaltype.py +0 -0
  330. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_api.py +0 -0
  331. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_athena_iceberg.py +0 -0
  332. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_azure_blob_file.py +0 -0
  333. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_azure_remote.py +0 -0
  334. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_bigquery.py +0 -0
  335. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_checks_filter.py +0 -0
  336. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_databricks.py +0 -0
  337. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_dataframe.py +0 -0
  338. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_delta.py +0 -0
  339. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_diagnostics.py +0 -0
  340. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_failed_samples.py +0 -0
  341. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_gcs_csv_remote.py +0 -0
  342. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_gcs_json_remote.py +0 -0
  343. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_kafka.py +0 -0
  344. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_kafka_remote.py +0 -0
  345. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_local_json.py +0 -0
  346. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_local_json_nd.py +0 -0
  347. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_mysql.py +0 -0
  348. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_oracle.py +0 -0
  349. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_oracle_xe.py +0 -0
  350. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_output_json.py +0 -0
  351. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_output_junit.py +0 -0
  352. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_parquet.py +0 -0
  353. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_postgres.py +0 -0
  354. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_quality.py +0 -0
  355. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_quality_local_fallback.py +0 -0
  356. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_quality_percent_severity.py +0 -0
  357. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_s3_csv.py +0 -0
  358. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_s3_delta.py +0 -0
  359. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_s3_json.py +0 -0
  360. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_s3_json_complex.py +0 -0
  361. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_s3_json_multiple_models.py +0 -0
  362. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_s3_json_remote.py +0 -0
  363. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_schema_evolution.py +0 -0
  364. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_server_not_found.py +0 -0
  365. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_snowflake.py +0 -0
  366. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_soda_connection_error.py +0 -0
  367. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_sqlserver.py +0 -0
  368. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/tests/test_test_trino.py +0 -0
  369. {datacontract_cli-1.0.7 → datacontract_cli-1.0.8}/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.7
3
+ Version: 1.0.8
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
@@ -115,7 +115,13 @@ def connect_ibis(
115
115
  if password:
116
116
  kwargs["password"] = password
117
117
  # Redshift speaks the postgres wire protocol; ibis has no dedicated backend.
118
- return ibis.postgres.connect(**kwargs)
118
+ con = ibis.postgres.connect(**kwargs)
119
+ # ibis's postgres schema introspection joins pg_catalog.pg_enum, which
120
+ # Redshift does not expose; patch it out so model lookups don't fail.
121
+ from datacontract.engines.ibis.connections.redshift_patch import apply_redshift_compatibility_patch
122
+
123
+ apply_redshift_compatibility_patch(con)
124
+ return con
119
125
 
120
126
  if server_type == "mysql":
121
127
  return _connect_mysql_via_duckdb(ibis, data_contract, server, run, schema_name)
@@ -0,0 +1,84 @@
1
+ """Make ibis's Postgres schema introspection valid on Amazon Redshift.
2
+
3
+ Redshift has no dedicated ibis backend; it rides the Postgres backend over the
4
+ Postgres wire protocol (see ``connect.py``). ibis builds the column-metadata
5
+ query behind ``con.table(...)`` (``ibis.backends.postgres.Backend.get_schema``)
6
+ with an enum-detection ``CASE`` that joins ``pg_catalog.pg_enum``:
7
+
8
+ CASE WHEN EXISTS(
9
+ SELECT 1 FROM pg_catalog.pg_type t
10
+ INNER JOIN pg_catalog.pg_enum e ON e.enumtypid = t.oid ...
11
+ ) THEN 'enum' ELSE pg_catalog.format_type(...) END
12
+
13
+ PostgreSQL exposes ``pg_catalog.pg_enum``; Redshift does not, so introspecting
14
+ any model fails with:
15
+
16
+ relation "pg_catalog.pg_enum" does not exist
17
+
18
+ Redshift has no enum types, so the ``CASE`` is pointless there. This module
19
+ re-binds ``get_schema`` on a connected backend with the same query minus the
20
+ enum join, reading the column type straight from ``pg_catalog.format_type``.
21
+ ``_get_schema_using_query`` (custom-SQL introspection) calls ``self.get_schema``
22
+ internally, so it inherits the fix without a separate override. The patch can be
23
+ removed once a fixed ibis release is available.
24
+ """
25
+
26
+ from __future__ import annotations
27
+
28
+ import logging
29
+ import types
30
+
31
+ logger = logging.getLogger(__name__)
32
+
33
+ # ibis's get_schema query without the pg_enum-dependent enum CASE. Every other
34
+ # relation (pg_attribute / pg_class / pg_namespace) and pg_catalog.format_type
35
+ # is supported by Redshift's leader-node catalog.
36
+ _TYPE_INFO_SQL = """\
37
+ SELECT
38
+ a.attname AS column_name,
39
+ pg_catalog.format_type(a.atttypid, a.atttypmod) AS data_type,
40
+ NOT a.attnotnull AS nullable
41
+ FROM pg_catalog.pg_attribute a
42
+ INNER JOIN pg_catalog.pg_class c
43
+ ON a.attrelid = c.oid
44
+ INNER JOIN pg_catalog.pg_namespace n
45
+ ON c.relnamespace = n.oid
46
+ WHERE a.attnum > 0
47
+ AND NOT a.attisdropped
48
+ AND n.nspname = ANY(%(dbs)s)
49
+ AND c.relname = %(name)s
50
+ ORDER BY a.attnum ASC"""
51
+
52
+
53
+ def apply_redshift_compatibility_patch(con) -> None:
54
+ """Re-bind Postgres schema introspection to emit Redshift-compatible SQL.
55
+
56
+ Best-effort: if the backend internals differ from what we expect (e.g. a
57
+ future ibis refactor), the patch is skipped and the original method stays in
58
+ place rather than breaking the connection.
59
+ """
60
+ try:
61
+ con.get_schema = types.MethodType(_get_schema, con)
62
+ except Exception: # pragma: no cover - defensive, never block a connection
63
+ logger.debug("Could not apply Redshift compatibility patch", exc_info=True)
64
+
65
+
66
+ def _get_schema(self, name: str, *, catalog=None, database=None):
67
+ """Drop-in for ``Backend.get_schema`` without the ``pg_enum`` join."""
68
+ import ibis.common.exceptions as com
69
+ import ibis.expr.schema as sch
70
+
71
+ dbs = [database or self.current_database]
72
+ if database is None and (temp_table_db := self._session_temp_db) is not None:
73
+ dbs.append(temp_table_db)
74
+
75
+ type_mapper = self.compiler.type_mapper
76
+ con = self.con
77
+ params = {"dbs": dbs, "name": name}
78
+ with con.cursor() as cursor, con.transaction():
79
+ rows = cursor.execute(_TYPE_INFO_SQL, params, prepare=True).fetchall()
80
+
81
+ if not rows:
82
+ raise com.TableNotFound(name)
83
+
84
+ return sch.Schema({col: type_mapper.from_string(typestr, nullable=nullable) for col, typestr, nullable in rows})
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datacontract-cli
3
- Version: 1.0.7
3
+ Version: 1.0.8
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
@@ -136,6 +136,7 @@ datacontract/engines/ibis/connections/connect.py
136
136
  datacontract/engines/ibis/connections/duckdb_connection.py
137
137
  datacontract/engines/ibis/connections/kafka.py
138
138
  datacontract/engines/ibis/connections/oracle_patch.py
139
+ datacontract/engines/ibis/connections/redshift_patch.py
139
140
  datacontract/export/__init__.py
140
141
  datacontract/export/avro_exporter.py
141
142
  datacontract/export/avro_idl_exporter.py
@@ -317,6 +318,7 @@ tests/test_import_unity_file.py
317
318
  tests/test_integration_entropydata.py
318
319
  tests/test_lint.py
319
320
  tests/test_oracle_patch.py
321
+ tests/test_redshift_patch.py
320
322
  tests/test_require_env.py
321
323
  tests/test_resolve.py
322
324
  tests/test_resolve_definitions.py
@@ -349,6 +351,7 @@ tests/test_test_postgres.py
349
351
  tests/test_test_quality.py
350
352
  tests/test_test_quality_local_fallback.py
351
353
  tests/test_test_quality_percent_severity.py
354
+ tests/test_test_redshift.py
352
355
  tests/test_test_s3_csv.py
353
356
  tests/test_test_s3_delta.py
354
357
  tests/test_test_s3_json.py
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "datacontract-cli"
3
- version = "1.0.7"
3
+ version = "1.0.8"
4
4
  description = "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
  license = "MIT"
6
6
  readme = "README.md"
@@ -0,0 +1,91 @@
1
+ """Regression tests for the Redshift Postgres schema-introspection patch.
2
+
3
+ Redshift rides ibis's Postgres backend, whose ``get_schema`` query joins
4
+ ``pg_catalog.pg_enum`` to detect enum columns. Redshift does not expose
5
+ ``pg_enum``, so the unpatched query fails with ``relation "pg_catalog.pg_enum"
6
+ does not exist``. These tests assert the patched query never references
7
+ ``pg_enum`` and still types columns correctly, without needing a live Redshift.
8
+ """
9
+
10
+ import contextlib
11
+
12
+ import pytest
13
+
14
+ sc = pytest.importorskip("ibis.backends.sql.compilers")
15
+
16
+ from datacontract.engines.ibis.connections import redshift_patch # noqa: E402
17
+
18
+
19
+ class _StubCursor:
20
+ def __init__(self, rows):
21
+ self._rows = rows
22
+
23
+ def execute(self, sql, params=None, prepare=False):
24
+ self._executed_sql = sql
25
+ return self
26
+
27
+ def fetchall(self):
28
+ return self._rows
29
+
30
+ def __enter__(self):
31
+ return self
32
+
33
+ def __exit__(self, *exc):
34
+ return False
35
+
36
+
37
+ class _StubPostgresConnection:
38
+ """Minimal stand-in exposing what the patched introspection method touches."""
39
+
40
+ name = "postgres"
41
+ compiler = sc.postgres.compiler
42
+ current_database = "dev"
43
+ _session_temp_db = None
44
+
45
+ def __init__(self, rows):
46
+ self._cursor = _StubCursor(rows)
47
+
48
+ @property
49
+ def con(self):
50
+ return self
51
+
52
+ def cursor(self):
53
+ return self._cursor
54
+
55
+ @contextlib.contextmanager
56
+ def transaction(self):
57
+ yield
58
+
59
+
60
+ def test_get_schema_query_omits_pg_enum_and_types_columns():
61
+ rows = [
62
+ ("cust_code", "character varying(10)", False),
63
+ ("cust_state", "character varying(24)", True),
64
+ ]
65
+ con = _StubPostgresConnection(rows)
66
+
67
+ schema = redshift_patch._get_schema(con, "customer", database="dwh_academic")
68
+
69
+ assert "pg_enum" not in con._cursor._executed_sql
70
+ assert schema["cust_code"].is_string()
71
+ assert schema["cust_code"].nullable is False
72
+ assert schema["cust_state"].nullable is True
73
+
74
+
75
+ def test_get_schema_raises_table_not_found_when_empty():
76
+ import ibis.common.exceptions as com
77
+
78
+ con = _StubPostgresConnection([])
79
+ with pytest.raises(com.TableNotFound):
80
+ redshift_patch._get_schema(con, "missing", database="dwh_academic")
81
+
82
+
83
+ def test_apply_patch_rebinds_get_schema():
84
+ class _Backend:
85
+ def get_schema(self, *a, **k): # pragma: no cover - replaced by the patch
86
+ return "original"
87
+
88
+ backend = _Backend()
89
+ redshift_patch.apply_redshift_compatibility_patch(backend)
90
+
91
+ assert backend.get_schema.__func__ is redshift_patch._get_schema
@@ -0,0 +1,86 @@
1
+ """Smoke test for the Redshift test path against a Postgres testcontainer.
2
+
3
+ Redshift has no dedicated ibis backend; it rides the Postgres backend over the
4
+ Postgres wire protocol (see ``connect_ibis``), with two compatibility patches on
5
+ top: tables are qualified with the configured ``schema`` (#1338) and the column
6
+ introspection query is rewritten to drop the ``pg_catalog.pg_enum`` join that
7
+ Redshift does not expose (``redshift_patch``).
8
+
9
+ No real Redshift is reachable in CI, so this exercises the full ``type: redshift``
10
+ code path — connect branch, schema-qualified introspection, the pg_enum-free
11
+ ``get_schema``, the batched aggregations, a pattern check, and custom SQL quality
12
+ checks — against a wire-compatible Postgres. It proves the redshift branch and
13
+ the patched introspection produce correct schemas and a passing run end-to-end;
14
+ it cannot catch Redshift-only dialect divergences (POSIX regex, temp-view-backed
15
+ ``con.sql`` falling back to ``raw_sql``), which need a live cluster.
16
+ """
17
+
18
+ import pytest
19
+ from testcontainers.postgres import PostgresContainer
20
+
21
+ from datacontract.data_contract import DataContract
22
+ from datacontract.model.exceptions import DataContractException
23
+ from datacontract.model.run import ResultEnum
24
+
25
+ postgres = PostgresContainer("postgres:16")
26
+
27
+
28
+ @pytest.fixture(scope="function", autouse=True)
29
+ def postgres_container(request):
30
+ postgres.start()
31
+
32
+ def remove_container():
33
+ postgres.stop()
34
+
35
+ request.addfinalizer(remove_container)
36
+
37
+
38
+ def test_test_redshift_path_via_postgres_wire(postgres_container, monkeypatch):
39
+ monkeypatch.setenv("DATACONTRACT_REDSHIFT_USERNAME", postgres.username)
40
+ monkeypatch.setenv("DATACONTRACT_REDSHIFT_PASSWORD", postgres.password)
41
+ _init_sql("fixtures/postgres/data/data.sql")
42
+
43
+ data_contract_str = _setup_datacontract("fixtures/redshift/odcs.yaml")
44
+ data_contract = DataContract(data_contract_str=data_contract_str)
45
+
46
+ run = data_contract.test()
47
+
48
+ print(run.pretty())
49
+ assert run.result == "passed"
50
+ assert all(check.result == ResultEnum.passed for check in run.checks)
51
+
52
+
53
+ def _setup_datacontract(file):
54
+ with open(file) as data_contract_file:
55
+ data_contract_str = data_contract_file.read()
56
+ port = postgres.get_exposed_port(5432)
57
+ # The fixture uses the default Redshift port 5439 as a placeholder.
58
+ return data_contract_str.replace("5439", str(port))
59
+
60
+
61
+ def _init_sql(file_path):
62
+ try:
63
+ import psycopg2
64
+ except ImportError as e:
65
+ raise DataContractException(
66
+ type="schema",
67
+ result="failed",
68
+ name="postgres extra missing",
69
+ reason="Install the extra datacontract-cli[postgres] to use postgres",
70
+ engine="datacontract",
71
+ original_exception=e,
72
+ )
73
+
74
+ connection = psycopg2.connect(
75
+ database=postgres.dbname,
76
+ user=postgres.username,
77
+ password=postgres.password,
78
+ host=postgres.get_container_host_ip(),
79
+ port=postgres.get_exposed_port(5432),
80
+ )
81
+ cursor = connection.cursor()
82
+ with open(file_path, "r") as sql_file:
83
+ cursor.execute(sql_file.read())
84
+ connection.commit()
85
+ cursor.close()
86
+ connection.close()