datacontract-cli 0.10.32__tar.gz → 0.10.33__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (217) hide show
  1. {datacontract_cli-0.10.32/datacontract_cli.egg-info → datacontract_cli-0.10.33}/PKG-INFO +28 -4
  2. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/README.md +26 -2
  3. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/cli.py +20 -5
  4. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/data_contract.py +8 -2
  5. datacontract_cli-0.10.33/datacontract/export/excel_exporter.py +922 -0
  6. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/exporter.py +1 -0
  7. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/exporter_factory.py +4 -0
  8. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/excel_importer.py +13 -5
  9. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33/datacontract_cli.egg-info}/PKG-INFO +28 -4
  10. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract_cli.egg-info/SOURCES.txt +2 -0
  11. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract_cli.egg-info/requires.txt +1 -1
  12. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/pyproject.toml +2 -2
  13. datacontract_cli-0.10.33/tests/test_export_excel.py +104 -0
  14. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/LICENSE +0 -0
  15. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/MANIFEST.in +0 -0
  16. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/__init__.py +0 -0
  17. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/api.py +0 -0
  18. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/breaking/breaking.py +0 -0
  19. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/breaking/breaking_change.py +0 -0
  20. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/breaking/breaking_rules.py +0 -0
  21. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/catalog/catalog.py +0 -0
  22. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/__init__.py +0 -0
  23. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/data_contract_checks.py +0 -0
  24. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/data_contract_test.py +0 -0
  25. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/datacontract/check_that_datacontract_contains_valid_servers_configuration.py +0 -0
  26. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/datacontract/check_that_datacontract_file_exists.py +0 -0
  27. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/fastjsonschema/check_jsonschema.py +0 -0
  28. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/fastjsonschema/s3/s3_read_files.py +0 -0
  29. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/__init__.py +0 -0
  30. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/check_soda_execute.py +0 -0
  31. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/connections/bigquery.py +0 -0
  32. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/connections/databricks.py +0 -0
  33. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/connections/duckdb_connection.py +0 -0
  34. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/connections/kafka.py +0 -0
  35. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/connections/postgres.py +0 -0
  36. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/connections/snowflake.py +0 -0
  37. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/connections/sqlserver.py +0 -0
  38. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/connections/trino.py +0 -0
  39. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/__init__.py +0 -0
  40. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/avro_converter.py +0 -0
  41. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/avro_idl_converter.py +0 -0
  42. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/bigquery_converter.py +0 -0
  43. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/custom_converter.py +0 -0
  44. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/data_caterer_converter.py +0 -0
  45. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/dbml_converter.py +0 -0
  46. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/dbt_converter.py +0 -0
  47. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/dcs_exporter.py +0 -0
  48. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/duckdb_type_converter.py +0 -0
  49. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/go_converter.py +0 -0
  50. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/great_expectations_converter.py +0 -0
  51. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/html_exporter.py +0 -0
  52. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/iceberg_converter.py +0 -0
  53. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/jsonschema_converter.py +0 -0
  54. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/markdown_converter.py +0 -0
  55. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/mermaid_exporter.py +0 -0
  56. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/odcs_v3_exporter.py +0 -0
  57. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/pandas_type_converter.py +0 -0
  58. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/protobuf_converter.py +0 -0
  59. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/pydantic_converter.py +0 -0
  60. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/rdf_converter.py +0 -0
  61. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/sodacl_converter.py +0 -0
  62. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/spark_converter.py +0 -0
  63. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/sql_converter.py +0 -0
  64. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/sql_type_converter.py +0 -0
  65. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/sqlalchemy_converter.py +0 -0
  66. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/terraform_converter.py +0 -0
  67. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/avro_importer.py +0 -0
  68. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/bigquery_importer.py +0 -0
  69. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/csv_importer.py +0 -0
  70. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/dbml_importer.py +0 -0
  71. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/dbt_importer.py +0 -0
  72. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/glue_importer.py +0 -0
  73. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/iceberg_importer.py +0 -0
  74. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/importer.py +0 -0
  75. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/importer_factory.py +0 -0
  76. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/json_importer.py +0 -0
  77. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/jsonschema_importer.py +0 -0
  78. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/odcs_importer.py +0 -0
  79. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/odcs_v3_importer.py +0 -0
  80. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/parquet_importer.py +0 -0
  81. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/protobuf_importer.py +0 -0
  82. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/spark_importer.py +0 -0
  83. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/sql_importer.py +0 -0
  84. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/unity_importer.py +0 -0
  85. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/init/init_template.py +0 -0
  86. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/integration/datamesh_manager.py +0 -0
  87. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/files.py +0 -0
  88. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/lint.py +0 -0
  89. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/linters/__init__.py +0 -0
  90. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/linters/description_linter.py +0 -0
  91. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/linters/field_pattern_linter.py +0 -0
  92. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/linters/field_reference_linter.py +0 -0
  93. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/linters/notice_period_linter.py +0 -0
  94. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/linters/valid_constraints_linter.py +0 -0
  95. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/resolve.py +0 -0
  96. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/resources.py +0 -0
  97. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/schema.py +0 -0
  98. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/urls.py +0 -0
  99. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/model/data_contract_specification/__init__.py +0 -0
  100. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/model/exceptions.py +0 -0
  101. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/model/odcs.py +0 -0
  102. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/model/run.py +0 -0
  103. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/output/__init__.py +0 -0
  104. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/output/junit_test_results.py +0 -0
  105. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/output/output_format.py +0 -0
  106. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/output/test_results_writer.py +0 -0
  107. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/py.typed +0 -0
  108. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/schemas/datacontract-1.1.0.init.yaml +0 -0
  109. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/schemas/datacontract-1.1.0.schema.json +0 -0
  110. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/schemas/datacontract-1.2.0.init.yaml +0 -0
  111. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/schemas/datacontract-1.2.0.schema.json +0 -0
  112. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/schemas/odcs-3.0.1.schema.json +0 -0
  113. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/datacontract.html +0 -0
  114. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/datacontract_odcs.html +0 -0
  115. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/index.html +0 -0
  116. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/partials/datacontract_information.html +0 -0
  117. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/partials/datacontract_servicelevels.html +0 -0
  118. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/partials/datacontract_terms.html +0 -0
  119. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/partials/definition.html +0 -0
  120. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/partials/example.html +0 -0
  121. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/partials/model_field.html +0 -0
  122. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/partials/quality.html +0 -0
  123. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/partials/server.html +0 -0
  124. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/style/output.css +0 -0
  125. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract_cli.egg-info/dependency_links.txt +0 -0
  126. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract_cli.egg-info/entry_points.txt +0 -0
  127. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract_cli.egg-info/top_level.txt +0 -0
  128. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/setup.cfg +0 -0
  129. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_api.py +0 -0
  130. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_breaking.py +0 -0
  131. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_catalog.py +0 -0
  132. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_changelog.py +0 -0
  133. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_cli.py +0 -0
  134. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_data_contract_checks.py +0 -0
  135. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_data_contract_specification.py +0 -0
  136. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_description_linter.py +0 -0
  137. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_documentation_linter.py +0 -0
  138. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_download_datacontract_file.py +0 -0
  139. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_duckdb_json.py +0 -0
  140. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_avro.py +0 -0
  141. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_avro_idl.py +0 -0
  142. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_bigquery.py +0 -0
  143. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_complex_data_contract.py +0 -0
  144. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_custom.py +0 -0
  145. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_custom_exporter.py +0 -0
  146. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_data_caterer.py +0 -0
  147. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_dbml.py +0 -0
  148. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_dbt_models.py +0 -0
  149. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_dbt_sources.py +0 -0
  150. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_dbt_staging_sql.py +0 -0
  151. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_go.py +0 -0
  152. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_great_expectations.py +0 -0
  153. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_html.py +0 -0
  154. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_iceberg.py +0 -0
  155. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_jsonschema.py +0 -0
  156. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_markdown.py +0 -0
  157. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_mermaid.py +0 -0
  158. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_odcs_v3.py +0 -0
  159. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_protobuf.py +0 -0
  160. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_pydantic.py +0 -0
  161. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_rdf.py +0 -0
  162. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_sodacl.py +0 -0
  163. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_spark.py +0 -0
  164. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_sql.py +0 -0
  165. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_sql_query.py +0 -0
  166. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_sqlalchemy.py +0 -0
  167. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_terraform.py +0 -0
  168. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_field_constraint_linter.py +0 -0
  169. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_field_pattern_linter.py +0 -0
  170. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_field_reference_linter.py +0 -0
  171. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_avro.py +0 -0
  172. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_bigquery.py +0 -0
  173. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_csv.py +0 -0
  174. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_dbml.py +0 -0
  175. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_dbt.py +0 -0
  176. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_excel.py +0 -0
  177. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_glue.py +0 -0
  178. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_iceberg.py +0 -0
  179. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_json.py +0 -0
  180. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_jsonschema.py +0 -0
  181. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_odcs_v3.py +0 -0
  182. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_parquet.py +0 -0
  183. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_protobuf.py +0 -0
  184. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_spark.py +0 -0
  185. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_sql_postgres.py +0 -0
  186. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_sql_sqlserver.py +0 -0
  187. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_unity_file.py +0 -0
  188. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_integration_datameshmanager.py +0 -0
  189. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_lint.py +0 -0
  190. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_notice_period_linter.py +0 -0
  191. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_resolve.py +0 -0
  192. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_roundtrip_jsonschema.py +0 -0
  193. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_spec_fields_field.py +0 -0
  194. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_spec_ref.py +0 -0
  195. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_azure_remote.py +0 -0
  196. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_bigquery.py +0 -0
  197. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_databricks.py +0 -0
  198. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_dataframe.py +0 -0
  199. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_delta.py +0 -0
  200. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_gcs_csv_remote.py +0 -0
  201. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_gcs_json_remote.py +0 -0
  202. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_kafka.py +0 -0
  203. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_kafka_remote.py +0 -0
  204. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_local_json.py +0 -0
  205. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_output_junit.py +0 -0
  206. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_parquet.py +0 -0
  207. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_postgres.py +0 -0
  208. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_quality.py +0 -0
  209. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_s3_csv.py +0 -0
  210. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_s3_delta.py +0 -0
  211. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_s3_json.py +0 -0
  212. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_s3_json_complex.py +0 -0
  213. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_s3_json_multiple_models.py +0 -0
  214. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_s3_json_remote.py +0 -0
  215. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_snowflake.py +0 -0
  216. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_sqlserver.py +0 -0
  217. {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_trino.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datacontract-cli
3
- Version: 0.10.32
3
+ Version: 0.10.33
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
@@ -42,7 +42,7 @@ Provides-Extra: databricks
42
42
  Requires-Dist: soda-core-spark-df<3.6.0,>=3.3.20; extra == "databricks"
43
43
  Requires-Dist: soda-core-spark[databricks]<3.6.0,>=3.3.20; extra == "databricks"
44
44
  Requires-Dist: databricks-sql-connector<4.1.0,>=3.7.0; extra == "databricks"
45
- Requires-Dist: databricks-sdk<0.60.0; extra == "databricks"
45
+ Requires-Dist: databricks-sdk<0.61.0; extra == "databricks"
46
46
  Requires-Dist: pyspark<4.0.0,>=3.5.5; extra == "databricks"
47
47
  Provides-Extra: iceberg
48
48
  Requires-Dist: pyiceberg==0.9.1; extra == "iceberg"
@@ -214,9 +214,15 @@ $ datacontract export --format odcs datacontract.yaml --output odcs.yaml
214
214
  # import ODCS to data contract
215
215
  $ datacontract import --format odcs odcs.yaml --output datacontract.yaml
216
216
 
217
- # import sql (other formats: avro, glue, bigquery, jsonschema ...)
217
+ # import sql (other formats: avro, glue, bigquery, jsonschema, excel ...)
218
218
  $ datacontract import --format sql --source my-ddl.sql --dialect postgres --output datacontract.yaml
219
219
 
220
+ # import from Excel template
221
+ $ datacontract import --format excel --source odcs.xlsx --output datacontract.yaml
222
+
223
+ # export to Excel template
224
+ $ datacontract export --format excel --output odcs.xlsx datacontract.yaml
225
+
220
226
  # find differences between two data contracts
221
227
  $ datacontract diff datacontract-v1.yaml datacontract-v2.yaml
222
228
 
@@ -933,7 +939,7 @@ models:
933
939
  │ terraform|avro-idl|sql|sql-query|mer │
934
940
  │ maid|html|go|bigquery|dbml|spark|sql │
935
941
  │ alchemy|data-caterer|dcs|markdown|ic │
936
- │ eberg|custom]
942
+ │ eberg|custom|excel]
937
943
  │ --output PATH Specify the file path where the │
938
944
  │ exported data will be saved. If no │
939
945
  │ path is provided, the output will be │
@@ -1003,6 +1009,7 @@ Available export options:
1003
1009
  | `dcs` | Export to Data Contract Specification in YAML format | ✅ |
1004
1010
  | `markdown` | Export to Markdown | ✅ |
1005
1011
  | `iceberg` | Export to an Iceberg JSON Schema Definition | partial |
1012
+ | `excel` | Export to ODCS Excel Template | ✅ |
1006
1013
  | `custom` | Export to Custom format with Jinja | ✅ |
1007
1014
  | Missing something? | Please create an issue on GitHub | TBD |
1008
1015
 
@@ -1274,6 +1281,22 @@ FROM
1274
1281
  {{ ref('orders') }}
1275
1282
  ```
1276
1283
 
1284
+ #### ODCS Excel Templace
1285
+
1286
+ The `export` function converts a data contract into an ODCS (Open Data Contract Standard) Excel template. This creates a user-friendly Excel spreadsheet that can be used for authoring, sharing, and managing data contracts using the familiar Excel interface.
1287
+
1288
+ ```shell
1289
+ datacontract export --format excel --output datacontract.xlsx datacontract.yaml
1290
+ ```
1291
+
1292
+ The Excel format enables:
1293
+ - **User-friendly authoring**: Create and edit data contracts in Excel's familiar interface
1294
+ - **Easy sharing**: Distribute data contracts as standard Excel files
1295
+ - **Collaboration**: Enable non-technical stakeholders to contribute to data contract definitions
1296
+ - **Round-trip conversion**: Import Excel templates back to YAML data contracts
1297
+
1298
+ For more information about the Excel template structure, visit the [ODCS Excel Template repository](https://github.com/datacontract/open-data-contract-standard-excel-template).
1299
+
1277
1300
  ### import
1278
1301
  ```
1279
1302
 
@@ -1392,6 +1415,7 @@ Available import options:
1392
1415
  | `spark` | Import from Spark StructTypes, Variant | ✅ |
1393
1416
  | `sql` | Import from SQL DDL | ✅ |
1394
1417
  | `unity` | Import from Databricks Unity Catalog | partial |
1418
+ | `excel` | Import from ODCS Excel Template | ✅ |
1395
1419
  | Missing something? | Please create an issue on GitHub | TBD |
1396
1420
 
1397
1421
 
@@ -120,9 +120,15 @@ $ datacontract export --format odcs datacontract.yaml --output odcs.yaml
120
120
  # import ODCS to data contract
121
121
  $ datacontract import --format odcs odcs.yaml --output datacontract.yaml
122
122
 
123
- # import sql (other formats: avro, glue, bigquery, jsonschema ...)
123
+ # import sql (other formats: avro, glue, bigquery, jsonschema, excel ...)
124
124
  $ datacontract import --format sql --source my-ddl.sql --dialect postgres --output datacontract.yaml
125
125
 
126
+ # import from Excel template
127
+ $ datacontract import --format excel --source odcs.xlsx --output datacontract.yaml
128
+
129
+ # export to Excel template
130
+ $ datacontract export --format excel --output odcs.xlsx datacontract.yaml
131
+
126
132
  # find differences between two data contracts
127
133
  $ datacontract diff datacontract-v1.yaml datacontract-v2.yaml
128
134
 
@@ -839,7 +845,7 @@ models:
839
845
  │ terraform|avro-idl|sql|sql-query|mer │
840
846
  │ maid|html|go|bigquery|dbml|spark|sql │
841
847
  │ alchemy|data-caterer|dcs|markdown|ic │
842
- │ eberg|custom]
848
+ │ eberg|custom|excel]
843
849
  │ --output PATH Specify the file path where the │
844
850
  │ exported data will be saved. If no │
845
851
  │ path is provided, the output will be │
@@ -909,6 +915,7 @@ Available export options:
909
915
  | `dcs` | Export to Data Contract Specification in YAML format | ✅ |
910
916
  | `markdown` | Export to Markdown | ✅ |
911
917
  | `iceberg` | Export to an Iceberg JSON Schema Definition | partial |
918
+ | `excel` | Export to ODCS Excel Template | ✅ |
912
919
  | `custom` | Export to Custom format with Jinja | ✅ |
913
920
  | Missing something? | Please create an issue on GitHub | TBD |
914
921
 
@@ -1180,6 +1187,22 @@ FROM
1180
1187
  {{ ref('orders') }}
1181
1188
  ```
1182
1189
 
1190
+ #### ODCS Excel Templace
1191
+
1192
+ The `export` function converts a data contract into an ODCS (Open Data Contract Standard) Excel template. This creates a user-friendly Excel spreadsheet that can be used for authoring, sharing, and managing data contracts using the familiar Excel interface.
1193
+
1194
+ ```shell
1195
+ datacontract export --format excel --output datacontract.xlsx datacontract.yaml
1196
+ ```
1197
+
1198
+ The Excel format enables:
1199
+ - **User-friendly authoring**: Create and edit data contracts in Excel's familiar interface
1200
+ - **Easy sharing**: Distribute data contracts as standard Excel files
1201
+ - **Collaboration**: Enable non-technical stakeholders to contribute to data contract definitions
1202
+ - **Round-trip conversion**: Import Excel templates back to YAML data contracts
1203
+
1204
+ For more information about the Excel template structure, visit the [ODCS Excel Template repository](https://github.com/datacontract/open-data-contract-standard-excel-template).
1205
+
1183
1206
  ### import
1184
1207
  ```
1185
1208
 
@@ -1298,6 +1321,7 @@ Available import options:
1298
1321
  | `spark` | Import from Spark StructTypes, Variant | ✅ |
1299
1322
  | `sql` | Import from SQL DDL | ✅ |
1300
1323
  | `unity` | Import from Databricks Unity Catalog | partial |
1324
+ | `excel` | Import from ODCS Excel Template | ✅ |
1301
1325
  | Missing something? | Please create an issue on GitHub | TBD |
1302
1326
 
1303
1327
 
@@ -210,12 +210,21 @@ def export(
210
210
  # TODO: this should be a subcommand
211
211
  template: Annotated[
212
212
  Optional[Path],
213
- typer.Option(help="[custom] The file path of Jinja template."),
213
+ typer.Option(
214
+ help="The file path or URL of a template. For Excel format: path/URL to custom Excel template. For custom format: path to Jinja template."
215
+ ),
214
216
  ] = None,
215
217
  ):
216
218
  """
217
219
  Convert data contract to a specific format. Saves to file specified by `output` option if present, otherwise prints to stdout.
218
220
  """
221
+ # Validate that Excel format requires an output file path
222
+ if format == ExportFormat.excel and output is None:
223
+ console.print("❌ Error: Excel export requires an output file path.")
224
+ console.print("💡 Hint: Use --output to specify where to save the Excel file, e.g.:")
225
+ console.print(" datacontract export --format excel --output datacontract.xlsx")
226
+ raise typer.Exit(code=1)
227
+
219
228
  # TODO exception handling
220
229
  result = DataContract(data_contract_file=location, schema_location=schema, server=server).export(
221
230
  export_format=format,
@@ -230,8 +239,13 @@ def export(
230
239
  if output is None:
231
240
  console.print(result, markup=False, soft_wrap=True)
232
241
  else:
233
- with output.open(mode="w", encoding="utf-8") as f:
234
- f.write(result)
242
+ if isinstance(result, bytes):
243
+ # If the result is bytes, we assume it's a binary file (e.g., Excel, PDF)
244
+ with output.open(mode="wb") as f:
245
+ f.write(result)
246
+ else:
247
+ with output.open(mode="w", encoding="utf-8") as f:
248
+ f.write(result)
235
249
  console.print(f"Written result to {output}")
236
250
 
237
251
 
@@ -482,13 +496,14 @@ def _get_uvicorn_arguments(port: int, host: str, context: typer.Context) -> dict
482
496
  }
483
497
 
484
498
  # Create a list of the extra arguments, remove the leading -- from the cli arguments
485
- trimmed_keys = list(map(lambda x : str(x).replace("--", ""),context.args[::2]))
499
+ trimmed_keys = list(map(lambda x: str(x).replace("--", ""), context.args[::2]))
486
500
  # Merge the two dicts and return them as one dict
487
501
  return default_args | dict(zip(trimmed_keys, context.args[1::2]))
488
502
 
503
+
489
504
  @app.command(context_settings={"allow_extra_args": True, "ignore_unknown_options": True})
490
505
  def api(
491
- ctx: Annotated[typer.Context, typer.Option(help="Extra arguments to pass to uvicorn.run().")],
506
+ ctx: Annotated[typer.Context, typer.Option(help="Extra arguments to pass to uvicorn.run().")],
492
507
  port: Annotated[int, typer.Option(help="Bind socket to this port.")] = 4242,
493
508
  host: Annotated[
494
509
  str, typer.Option(help="Bind socket to this host. Hint: For running in docker, set it to 0.0.0.0")
@@ -250,8 +250,14 @@ class DataContract:
250
250
  inline_quality=self._inline_quality,
251
251
  )
252
252
 
253
- def export(self, export_format: ExportFormat, model: str = "all", sql_server_type: str = "auto", **kwargs) -> str:
254
- if export_format == ExportFormat.html or export_format == ExportFormat.mermaid:
253
+ def export(
254
+ self, export_format: ExportFormat, model: str = "all", sql_server_type: str = "auto", **kwargs
255
+ ) -> str | bytes:
256
+ if (
257
+ export_format == ExportFormat.html
258
+ or export_format == ExportFormat.mermaid
259
+ or export_format == ExportFormat.excel
260
+ ):
255
261
  data_contract = resolve.resolve_data_contract_v2(
256
262
  self._data_contract_file,
257
263
  self._data_contract_str,