datacontract-cli 0.10.28__tar.gz → 0.10.30__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 (215) hide show
  1. {datacontract_cli-0.10.28/datacontract_cli.egg-info → datacontract_cli-0.10.30}/PKG-INFO +24 -34
  2. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/README.md +10 -20
  3. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/api.py +1 -1
  4. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/cli.py +27 -2
  5. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/data_contract.py +2 -2
  6. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/engines/soda/connections/duckdb_connection.py +1 -1
  7. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/great_expectations_converter.py +6 -3
  8. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/markdown_converter.py +1 -1
  9. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/rdf_converter.py +2 -2
  10. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/sql_type_converter.py +2 -2
  11. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/excel_importer.py +7 -5
  12. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/importer.py +1 -0
  13. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/importer_factory.py +7 -0
  14. datacontract_cli-0.10.30/datacontract/imports/json_importer.py +325 -0
  15. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/init/init_template.py +1 -1
  16. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/lint/resolve.py +1 -1
  17. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/lint/schema.py +1 -1
  18. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/schemas/datacontract-1.1.0.init.yaml +1 -1
  19. datacontract_cli-0.10.30/datacontract/schemas/datacontract-1.2.0.init.yaml +91 -0
  20. datacontract_cli-0.10.30/datacontract/schemas/datacontract-1.2.0.schema.json +2029 -0
  21. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30/datacontract_cli.egg-info}/PKG-INFO +24 -34
  22. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract_cli.egg-info/SOURCES.txt +5 -0
  23. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract_cli.egg-info/requires.txt +13 -13
  24. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/pyproject.toml +14 -14
  25. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_api.py +1 -1
  26. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_duckdb_json.py +1 -1
  27. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_complex_data_contract.py +1 -1
  28. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_rdf.py +6 -6
  29. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_sodacl.py +1 -1
  30. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_sql.py +2 -2
  31. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_import_avro.py +5 -5
  32. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_import_csv.py +1 -1
  33. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_import_dbt.py +4 -4
  34. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_import_excel.py +1 -0
  35. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_import_iceberg.py +1 -1
  36. datacontract_cli-0.10.30/tests/test_import_json.py +151 -0
  37. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_import_parquet.py +1 -1
  38. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_import_protobuf.py +1 -1
  39. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_import_sql_postgres.py +2 -2
  40. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_import_sql_sqlserver.py +1 -1
  41. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_resolve.py +7 -7
  42. datacontract_cli-0.10.30/tests/test_test_gcs_csv_remote.py +45 -0
  43. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_s3_csv.py +1 -0
  44. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/LICENSE +0 -0
  45. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/MANIFEST.in +0 -0
  46. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/__init__.py +0 -0
  47. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/breaking/breaking.py +0 -0
  48. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/breaking/breaking_change.py +0 -0
  49. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/breaking/breaking_rules.py +0 -0
  50. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/catalog/catalog.py +0 -0
  51. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/engines/__init__.py +0 -0
  52. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/engines/data_contract_checks.py +0 -0
  53. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/engines/data_contract_test.py +0 -0
  54. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/engines/datacontract/check_that_datacontract_contains_valid_servers_configuration.py +0 -0
  55. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/engines/datacontract/check_that_datacontract_file_exists.py +0 -0
  56. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/engines/fastjsonschema/check_jsonschema.py +0 -0
  57. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/engines/fastjsonschema/s3/s3_read_files.py +0 -0
  58. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/engines/soda/__init__.py +0 -0
  59. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/engines/soda/check_soda_execute.py +0 -0
  60. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/engines/soda/connections/bigquery.py +0 -0
  61. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/engines/soda/connections/databricks.py +0 -0
  62. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/engines/soda/connections/kafka.py +0 -0
  63. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/engines/soda/connections/postgres.py +0 -0
  64. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/engines/soda/connections/snowflake.py +0 -0
  65. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/engines/soda/connections/sqlserver.py +0 -0
  66. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/engines/soda/connections/trino.py +0 -0
  67. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/__init__.py +0 -0
  68. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/avro_converter.py +0 -0
  69. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/avro_idl_converter.py +0 -0
  70. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/bigquery_converter.py +0 -0
  71. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/custom_converter.py +0 -0
  72. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/data_caterer_converter.py +0 -0
  73. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/dbml_converter.py +0 -0
  74. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/dbt_converter.py +0 -0
  75. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/dcs_exporter.py +0 -0
  76. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/duckdb_type_converter.py +0 -0
  77. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/exporter.py +0 -0
  78. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/exporter_factory.py +0 -0
  79. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/go_converter.py +0 -0
  80. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/html_exporter.py +0 -0
  81. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/iceberg_converter.py +0 -0
  82. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/jsonschema_converter.py +0 -0
  83. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/mermaid_exporter.py +0 -0
  84. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/odcs_v3_exporter.py +0 -0
  85. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/pandas_type_converter.py +0 -0
  86. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/protobuf_converter.py +0 -0
  87. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/pydantic_converter.py +0 -0
  88. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/sodacl_converter.py +0 -0
  89. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/spark_converter.py +0 -0
  90. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/sql_converter.py +0 -0
  91. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/sqlalchemy_converter.py +0 -0
  92. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/export/terraform_converter.py +0 -0
  93. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/avro_importer.py +0 -0
  94. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/bigquery_importer.py +0 -0
  95. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/csv_importer.py +0 -0
  96. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/dbml_importer.py +0 -0
  97. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/dbt_importer.py +0 -0
  98. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/glue_importer.py +0 -0
  99. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/iceberg_importer.py +0 -0
  100. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/jsonschema_importer.py +0 -0
  101. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/odcs_importer.py +0 -0
  102. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/odcs_v3_importer.py +0 -0
  103. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/parquet_importer.py +0 -0
  104. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/protobuf_importer.py +0 -0
  105. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/spark_importer.py +0 -0
  106. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/sql_importer.py +0 -0
  107. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/imports/unity_importer.py +0 -0
  108. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/integration/datamesh_manager.py +0 -0
  109. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/lint/files.py +0 -0
  110. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/lint/lint.py +0 -0
  111. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/lint/linters/__init__.py +0 -0
  112. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/lint/linters/description_linter.py +0 -0
  113. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/lint/linters/field_pattern_linter.py +0 -0
  114. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/lint/linters/field_reference_linter.py +0 -0
  115. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/lint/linters/notice_period_linter.py +0 -0
  116. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/lint/linters/valid_constraints_linter.py +0 -0
  117. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/lint/resources.py +0 -0
  118. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/lint/urls.py +0 -0
  119. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/model/data_contract_specification/__init__.py +0 -0
  120. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/model/exceptions.py +0 -0
  121. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/model/odcs.py +0 -0
  122. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/model/run.py +0 -0
  123. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/output/__init__.py +0 -0
  124. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/output/junit_test_results.py +0 -0
  125. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/output/output_format.py +0 -0
  126. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/output/test_results_writer.py +0 -0
  127. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/py.typed +0 -0
  128. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/schemas/datacontract-1.1.0.schema.json +0 -0
  129. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/schemas/odcs-3.0.1.schema.json +0 -0
  130. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/templates/datacontract.html +0 -0
  131. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/templates/datacontract_odcs.html +0 -0
  132. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/templates/index.html +0 -0
  133. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/templates/partials/datacontract_information.html +0 -0
  134. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/templates/partials/datacontract_servicelevels.html +0 -0
  135. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/templates/partials/datacontract_terms.html +0 -0
  136. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/templates/partials/definition.html +0 -0
  137. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/templates/partials/example.html +0 -0
  138. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/templates/partials/model_field.html +0 -0
  139. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/templates/partials/quality.html +0 -0
  140. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/templates/partials/server.html +0 -0
  141. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract/templates/style/output.css +0 -0
  142. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract_cli.egg-info/dependency_links.txt +0 -0
  143. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract_cli.egg-info/entry_points.txt +0 -0
  144. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/datacontract_cli.egg-info/top_level.txt +0 -0
  145. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/setup.cfg +0 -0
  146. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_breaking.py +0 -0
  147. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_catalog.py +0 -0
  148. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_changelog.py +0 -0
  149. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_cli.py +0 -0
  150. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_data_contract_checks.py +0 -0
  151. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_data_contract_specification.py +0 -0
  152. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_description_linter.py +0 -0
  153. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_documentation_linter.py +0 -0
  154. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_download_datacontract_file.py +0 -0
  155. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_avro.py +0 -0
  156. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_avro_idl.py +0 -0
  157. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_bigquery.py +0 -0
  158. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_custom.py +0 -0
  159. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_custom_exporter.py +0 -0
  160. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_data_caterer.py +0 -0
  161. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_dbml.py +0 -0
  162. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_dbt_models.py +0 -0
  163. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_dbt_sources.py +0 -0
  164. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_dbt_staging_sql.py +0 -0
  165. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_go.py +0 -0
  166. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_great_expectations.py +0 -0
  167. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_html.py +0 -0
  168. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_iceberg.py +0 -0
  169. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_jsonschema.py +0 -0
  170. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_markdown.py +0 -0
  171. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_mermaid.py +0 -0
  172. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_odcs_v3.py +0 -0
  173. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_protobuf.py +0 -0
  174. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_pydantic.py +0 -0
  175. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_spark.py +0 -0
  176. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_sql_query.py +0 -0
  177. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_sqlalchemy.py +0 -0
  178. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_export_terraform.py +0 -0
  179. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_field_constraint_linter.py +0 -0
  180. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_field_pattern_linter.py +0 -0
  181. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_field_reference_linter.py +0 -0
  182. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_import_bigquery.py +0 -0
  183. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_import_dbml.py +0 -0
  184. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_import_glue.py +0 -0
  185. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_import_jsonschema.py +0 -0
  186. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_import_odcs_v3.py +0 -0
  187. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_import_spark.py +0 -0
  188. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_import_unity_file.py +0 -0
  189. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_integration_datameshmanager.py +0 -0
  190. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_lint.py +0 -0
  191. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_notice_period_linter.py +0 -0
  192. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_roundtrip_jsonschema.py +0 -0
  193. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_spec_fields_field.py +0 -0
  194. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_spec_ref.py +0 -0
  195. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_azure_remote.py +0 -0
  196. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_bigquery.py +0 -0
  197. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_databricks.py +0 -0
  198. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_dataframe.py +0 -0
  199. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_delta.py +0 -0
  200. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_gcs_json_remote.py +0 -0
  201. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_kafka.py +0 -0
  202. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_kafka_remote.py +0 -0
  203. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_local_json.py +0 -0
  204. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_output_junit.py +0 -0
  205. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_parquet.py +0 -0
  206. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_postgres.py +0 -0
  207. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_quality.py +0 -0
  208. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_s3_delta.py +0 -0
  209. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_s3_json.py +0 -0
  210. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_s3_json_complex.py +0 -0
  211. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_s3_json_multiple_models.py +0 -0
  212. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_s3_json_remote.py +0 -0
  213. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_snowflake.py +0 -0
  214. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/tests/test_test_sqlserver.py +0 -0
  215. {datacontract_cli-0.10.28 → datacontract_cli-0.10.30}/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.28
3
+ Version: 0.10.30
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
@@ -11,7 +11,7 @@ Classifier: Operating System :: OS Independent
11
11
  Requires-Python: >=3.10
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
- Requires-Dist: typer<0.16,>=0.15.1
14
+ Requires-Dist: typer<0.17,>=0.15.1
15
15
  Requires-Dist: pydantic<2.12.0,>=2.8.2
16
16
  Requires-Dist: pyyaml~=6.0.1
17
17
  Requires-Dist: requests<2.33,>=2.31
@@ -28,7 +28,7 @@ Requires-Dist: python-dotenv<2.0.0,>=1.0.0
28
28
  Requires-Dist: boto3<2.0.0,>=1.34.41
29
29
  Requires-Dist: Jinja2<4.0.0,>=3.1.5
30
30
  Requires-Dist: jinja_partials<1.0.0,>=0.2.1
31
- Requires-Dist: datacontract-specification<2.0.0,>=1.1.1
31
+ Requires-Dist: datacontract-specification<2.0.0,>=1.2.0
32
32
  Requires-Dist: open-data-contract-standard<4.0.0,>=3.0.4
33
33
  Provides-Extra: avro
34
34
  Requires-Dist: avro==1.12.0; extra == "avro"
@@ -42,21 +42,21 @@ 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.55.0; extra == "databricks"
46
- Requires-Dist: pyspark==3.5.5; extra == "databricks"
45
+ Requires-Dist: databricks-sdk<0.59.0; extra == "databricks"
46
+ Requires-Dist: pyspark<4.0.0,>=3.5.5; extra == "databricks"
47
47
  Provides-Extra: iceberg
48
- Requires-Dist: pyiceberg==0.8.1; extra == "iceberg"
48
+ Requires-Dist: pyiceberg==0.9.1; extra == "iceberg"
49
49
  Provides-Extra: kafka
50
50
  Requires-Dist: datacontract-cli[avro]; extra == "kafka"
51
51
  Requires-Dist: soda-core-spark-df<3.6.0,>=3.3.20; extra == "kafka"
52
- Requires-Dist: pyspark==3.5.5; extra == "kafka"
52
+ Requires-Dist: pyspark<4.0.0,>=3.5.5; extra == "kafka"
53
53
  Provides-Extra: postgres
54
54
  Requires-Dist: soda-core-postgres<3.6.0,>=3.3.20; extra == "postgres"
55
55
  Provides-Extra: s3
56
56
  Requires-Dist: s3fs<2026.0.0,>=2025.2.0; extra == "s3"
57
- Requires-Dist: aiobotocore<2.23.0,>=2.17.0; extra == "s3"
57
+ Requires-Dist: aiobotocore<2.24.0,>=2.17.0; extra == "s3"
58
58
  Provides-Extra: snowflake
59
- Requires-Dist: snowflake-connector-python[pandas]<3.15,>=3.6; extra == "snowflake"
59
+ Requires-Dist: snowflake-connector-python[pandas]<3.16,>=3.6; extra == "snowflake"
60
60
  Requires-Dist: soda-core-snowflake<3.6.0,>=3.3.20; extra == "snowflake"
61
61
  Provides-Extra: sqlserver
62
62
  Requires-Dist: soda-core-sqlserver<3.6.0,>=3.3.20; extra == "sqlserver"
@@ -71,8 +71,8 @@ Requires-Dist: pyarrow>=18.1.0; extra == "parquet"
71
71
  Provides-Extra: rdf
72
72
  Requires-Dist: rdflib==7.0.0; extra == "rdf"
73
73
  Provides-Extra: api
74
- Requires-Dist: fastapi==0.115.12; extra == "api"
75
- Requires-Dist: uvicorn==0.34.2; extra == "api"
74
+ Requires-Dist: fastapi==0.116.1; extra == "api"
75
+ Requires-Dist: uvicorn==0.35.0; extra == "api"
76
76
  Provides-Extra: protobuf
77
77
  Requires-Dist: grpcio-tools>=1.53; extra == "protobuf"
78
78
  Provides-Extra: all
@@ -81,15 +81,15 @@ Provides-Extra: dev
81
81
  Requires-Dist: datacontract-cli[all]; extra == "dev"
82
82
  Requires-Dist: httpx==0.28.1; extra == "dev"
83
83
  Requires-Dist: kafka-python; extra == "dev"
84
- Requires-Dist: moto==5.1.5; extra == "dev"
84
+ Requires-Dist: moto==5.1.6; extra == "dev"
85
85
  Requires-Dist: pandas>=2.1.0; extra == "dev"
86
86
  Requires-Dist: pre-commit<4.3.0,>=3.7.1; extra == "dev"
87
87
  Requires-Dist: pytest; extra == "dev"
88
88
  Requires-Dist: pytest-xdist; extra == "dev"
89
- Requires-Dist: pymssql==2.3.4; extra == "dev"
89
+ Requires-Dist: pymssql==2.3.7; extra == "dev"
90
90
  Requires-Dist: ruff; extra == "dev"
91
91
  Requires-Dist: testcontainers[kafka,minio,mssql,postgres]==4.10.0; extra == "dev"
92
- Requires-Dist: trino==0.333.0; extra == "dev"
92
+ Requires-Dist: trino==0.335.0; extra == "dev"
93
93
  Dynamic: license-file
94
94
 
95
95
  # Data Contract CLI
@@ -1286,9 +1286,9 @@ FROM
1286
1286
 
1287
1287
  ╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
1288
1288
  │ * --format [sql|avro|dbt|dbml|glue|jsonsc The format of the source file. │
1289
- │ hema|bigquery|odcs|unity|spark [default: None] │
1290
- │ |iceberg|parquet|csv|protobuf| [required] │
1291
- │ excel]
1289
+ │ hema|json|bigquery|odcs|unity| [default: None] │
1290
+ spark|iceberg|parquet|csv|prot [required] │
1291
+ obuf|excel]
1292
1292
  │ --output PATH Specify the file path where │
1293
1293
  │ the Data Contract will be │
1294
1294
  │ saved. If no path is provided, │
@@ -1712,6 +1712,8 @@ datacontract catalog --files "*.odcs.yaml"
1712
1712
  information.
1713
1713
  To connect to servers (such as a Snowflake data source), set the credentials as environment
1714
1714
  variables as documented in https://cli.datacontract.com/#test
1715
+ It is possible to run the API with extra arguments for `uvicorn.run()` as keyword arguments, e.g.:
1716
+ `datacontract api --port 1234 --root_path /datacontract`.
1715
1717
 
1716
1718
  ╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
1717
1719
  │ --port INTEGER Bind socket to this port. [default: 4242] │
@@ -1978,7 +1980,7 @@ if __name__ == "__main__":
1978
1980
  Output
1979
1981
 
1980
1982
  ```yaml
1981
- dataContractSpecification: 1.1.0
1983
+ dataContractSpecification: 1.2.0
1982
1984
  id: uuid-custom
1983
1985
  info:
1984
1986
  title: my_custom_imported_data
@@ -1997,22 +1999,9 @@ models:
1997
1999
  ```
1998
2000
  ## Development Setup
1999
2001
 
2000
- Python base interpreter should be 3.11.x (unless working on 3.12 release candidate).
2001
-
2002
- ```bash
2003
- # create venv
2004
- python3.11 -m venv venv
2005
- source venv/bin/activate
2006
-
2007
- # Install Requirements
2008
- pip install --upgrade pip setuptools wheel
2009
- pip install -e '.[dev]'
2010
- pre-commit install
2011
- pre-commit run --all-files
2012
- pytest
2013
- ```
2014
-
2015
- ### Use uv (recommended)
2002
+ - Install [uv](https://docs.astral.sh/uv/)
2003
+ - Python base interpreter should be 3.11.x .
2004
+ - Docker engine must be running to execute the tests.
2016
2005
 
2017
2006
  ```bash
2018
2007
  # make sure uv is installed
@@ -2094,6 +2083,7 @@ We are happy to receive your contributions. Propose your change in an issue or d
2094
2083
  - [INNOQ](https://innoq.com)
2095
2084
  - [Data Catering](https://data.catering/)
2096
2085
  - [Oliver Wyman](https://www.oliverwyman.com/)
2086
+ - [dmTECH](https://www.dmtech.tech/de)
2097
2087
  - And many more. To add your company, please create a pull request.
2098
2088
 
2099
2089
  ## Related Tools
@@ -1192,9 +1192,9 @@ FROM
1192
1192
 
1193
1193
  ╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
1194
1194
  │ * --format [sql|avro|dbt|dbml|glue|jsonsc The format of the source file. │
1195
- │ hema|bigquery|odcs|unity|spark [default: None] │
1196
- │ |iceberg|parquet|csv|protobuf| [required] │
1197
- │ excel]
1195
+ │ hema|json|bigquery|odcs|unity| [default: None] │
1196
+ spark|iceberg|parquet|csv|prot [required] │
1197
+ obuf|excel]
1198
1198
  │ --output PATH Specify the file path where │
1199
1199
  │ the Data Contract will be │
1200
1200
  │ saved. If no path is provided, │
@@ -1618,6 +1618,8 @@ datacontract catalog --files "*.odcs.yaml"
1618
1618
  information.
1619
1619
  To connect to servers (such as a Snowflake data source), set the credentials as environment
1620
1620
  variables as documented in https://cli.datacontract.com/#test
1621
+ It is possible to run the API with extra arguments for `uvicorn.run()` as keyword arguments, e.g.:
1622
+ `datacontract api --port 1234 --root_path /datacontract`.
1621
1623
 
1622
1624
  ╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
1623
1625
  │ --port INTEGER Bind socket to this port. [default: 4242] │
@@ -1884,7 +1886,7 @@ if __name__ == "__main__":
1884
1886
  Output
1885
1887
 
1886
1888
  ```yaml
1887
- dataContractSpecification: 1.1.0
1889
+ dataContractSpecification: 1.2.0
1888
1890
  id: uuid-custom
1889
1891
  info:
1890
1892
  title: my_custom_imported_data
@@ -1903,22 +1905,9 @@ models:
1903
1905
  ```
1904
1906
  ## Development Setup
1905
1907
 
1906
- Python base interpreter should be 3.11.x (unless working on 3.12 release candidate).
1907
-
1908
- ```bash
1909
- # create venv
1910
- python3.11 -m venv venv
1911
- source venv/bin/activate
1912
-
1913
- # Install Requirements
1914
- pip install --upgrade pip setuptools wheel
1915
- pip install -e '.[dev]'
1916
- pre-commit install
1917
- pre-commit run --all-files
1918
- pytest
1919
- ```
1920
-
1921
- ### Use uv (recommended)
1908
+ - Install [uv](https://docs.astral.sh/uv/)
1909
+ - Python base interpreter should be 3.11.x .
1910
+ - Docker engine must be running to execute the tests.
1922
1911
 
1923
1912
  ```bash
1924
1913
  # make sure uv is installed
@@ -2000,6 +1989,7 @@ We are happy to receive your contributions. Propose your change in an issue or d
2000
1989
  - [INNOQ](https://innoq.com)
2001
1990
  - [Data Catering](https://data.catering/)
2002
1991
  - [Oliver Wyman](https://www.oliverwyman.com/)
1992
+ - [dmTECH](https://www.dmtech.tech/de)
2003
1993
  - And many more. To add your company, please create a pull request.
2004
1994
 
2005
1995
  ## Related Tools
@@ -10,7 +10,7 @@ from fastapi.security.api_key import APIKeyHeader
10
10
  from datacontract.data_contract import DataContract, ExportFormat
11
11
  from datacontract.model.run import Run
12
12
 
13
- DATA_CONTRACT_EXAMPLE_PAYLOAD = """dataContractSpecification: 1.1.0
13
+ DATA_CONTRACT_EXAMPLE_PAYLOAD = """dataContractSpecification: 1.2.0
14
14
  id: urn:datacontract:checkout:orders-latest
15
15
  info:
16
16
  title: Orders Latest
@@ -469,8 +469,26 @@ def diff(
469
469
  console.print(result.changelog_str())
470
470
 
471
471
 
472
- @app.command()
472
+ def _get_uvicorn_arguments(port: int, host: str, context: typer.Context) -> dict:
473
+ """
474
+ Take the default datacontract uvicorn arguments and merge them with the
475
+ extra arguments passed to the command to start the API.
476
+ """
477
+ default_args = {
478
+ "app": "datacontract.api:app",
479
+ "port": port,
480
+ "host": host,
481
+ "reload": True,
482
+ }
483
+
484
+ # 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]))
486
+ # Merge the two dicts and return them as one dict
487
+ return default_args | dict(zip(trimmed_keys, context.args[1::2]))
488
+
489
+ @app.command(context_settings={"allow_extra_args": True, "ignore_unknown_options": True})
473
490
  def api(
491
+ ctx: Annotated[typer.Context, typer.Option(help="Extra arguments to pass to uvicorn.run().")],
474
492
  port: Annotated[int, typer.Option(help="Bind socket to this port.")] = 4242,
475
493
  host: Annotated[
476
494
  str, typer.Option(help="Bind socket to this host. Hint: For running in docker, set it to 0.0.0.0")
@@ -488,6 +506,9 @@ def api(
488
506
 
489
507
  To connect to servers (such as a Snowflake data source), set the credentials as environment variables as documented in
490
508
  https://cli.datacontract.com/#test
509
+
510
+ It is possible to run the API with extra arguments for `uvicorn.run()` as keyword arguments, e.g.:
511
+ `datacontract api --port 1234 --root_path /datacontract`.
491
512
  """
492
513
  import uvicorn
493
514
  from uvicorn.config import LOGGING_CONFIG
@@ -495,7 +516,11 @@ def api(
495
516
  log_config = LOGGING_CONFIG
496
517
  log_config["root"] = {"level": "INFO"}
497
518
 
498
- uvicorn.run(app="datacontract.api:app", port=port, host=host, reload=True, log_config=LOGGING_CONFIG)
519
+ uvicorn_args = _get_uvicorn_arguments(port, host, ctx)
520
+ # Add the log config
521
+ uvicorn_args["log_config"] = log_config
522
+ # Run uvicorn
523
+ uvicorn.run(**uvicorn_args)
499
524
 
500
525
 
501
526
  def _print_logs(run):
@@ -4,7 +4,7 @@ import typing
4
4
  from open_data_contract_standard.model import CustomProperty, OpenDataContractStandard
5
5
 
6
6
  from datacontract.export.odcs_v3_exporter import to_odcs_v3
7
- from datacontract.imports.importer import Spec
7
+ from datacontract.imports.importer import ImportFormat, Spec
8
8
  from datacontract.imports.odcs_v3_importer import import_from_odcs
9
9
 
10
10
  if typing.TYPE_CHECKING:
@@ -300,7 +300,7 @@ class DataContract:
300
300
  id = kwargs.get("id")
301
301
  owner = kwargs.get("owner")
302
302
 
303
- if spec == Spec.odcs:
303
+ if spec == Spec.odcs or format == ImportFormat.excel:
304
304
  data_contract_specification_initial = DataContract.init(template=template, schema=schema)
305
305
 
306
306
  odcs_imported = importer_factory.create(format).import_source(
@@ -132,10 +132,10 @@ def setup_s3_connection(con, server):
132
132
  use_ssl = "true"
133
133
  url_style = "vhost"
134
134
  if server.endpointUrl is not None:
135
+ url_style = "path"
135
136
  s3_endpoint = server.endpointUrl.removeprefix("http://").removeprefix("https://")
136
137
  if server.endpointUrl.startswith("http://"):
137
138
  use_ssl = "false"
138
- url_style = "path"
139
139
 
140
140
  if s3_access_key_id is not None:
141
141
  if s3_session_token is not None:
@@ -14,9 +14,6 @@ from datacontract.export.exporter import (
14
14
  Exporter,
15
15
  _check_models_for_export,
16
16
  )
17
- from datacontract.export.pandas_type_converter import convert_to_pandas_type
18
- from datacontract.export.spark_converter import to_spark_data_type
19
- from datacontract.export.sql_type_converter import convert_to_sql_type
20
17
  from datacontract.model.data_contract_specification import (
21
18
  DataContractSpecification,
22
19
  DeprecatedQuality,
@@ -167,10 +164,16 @@ def add_field_expectations(
167
164
  """
168
165
  if field.type is not None:
169
166
  if engine == GreatExpectationsEngine.spark.value:
167
+ from datacontract.export.spark_converter import to_spark_data_type
168
+
170
169
  field_type = to_spark_data_type(field).__class__.__name__
171
170
  elif engine == GreatExpectationsEngine.pandas.value:
171
+ from datacontract.export.pandas_type_converter import convert_to_pandas_type
172
+
172
173
  field_type = convert_to_pandas_type(field)
173
174
  elif engine == GreatExpectationsEngine.sql.value:
175
+ from datacontract.export.sql_type_converter import convert_to_sql_type
176
+
174
177
  field_type = convert_to_sql_type(field, sql_server_type)
175
178
  else:
176
179
  field_type = field.type
@@ -153,7 +153,7 @@ def field_to_markdown(field_name: str, field: Field, level: int = 0) -> str:
153
153
  Returns:
154
154
  str: A Markdown table rows for the field.
155
155
  """
156
- tabs = "&numsp;" * level
156
+ tabs = "&#x2007;" * level
157
157
  arrow = "&#x21b3;" if level > 0 else ""
158
158
  column_name = f"{tabs}{arrow} {field_name}"
159
159
 
@@ -57,8 +57,8 @@ def to_rdf(data_contract_spec: DataContractSpecification, base) -> Graph:
57
57
  else:
58
58
  g = Graph(base=Namespace(""))
59
59
 
60
- dc = Namespace("https://datacontract.com/DataContractSpecification/1.1.0/")
61
- dcx = Namespace("https://datacontract.com/DataContractSpecification/1.1.0/Extension/")
60
+ dc = Namespace("https://datacontract.com/DataContractSpecification/1.2.0/")
61
+ dcx = Namespace("https://datacontract.com/DataContractSpecification/1.2.0/Extension/")
62
62
 
63
63
  g.bind("dc", dc)
64
64
  g.bind("dcx", dcx)
@@ -194,8 +194,8 @@ def convert_to_databricks(field: Field) -> None | str:
194
194
  nested_fields = []
195
195
  for nested_field_name, nested_field in field.fields.items():
196
196
  nested_field_type = convert_to_databricks(nested_field)
197
- nested_fields.append(f"{nested_field_name} {nested_field_type}")
198
- return f"STRUCT<{', '.join(nested_fields)}>"
197
+ nested_fields.append(f"{nested_field_name}:{nested_field_type}")
198
+ return f"STRUCT<{','.join(nested_fields)}>"
199
199
  if type.lower() in ["bytes"]:
200
200
  return "BINARY"
201
201
  if type.lower() in ["array"]:
@@ -568,6 +568,8 @@ def import_roles(workbook: Workbook) -> Optional[List[Role]]:
568
568
 
569
569
  roles_list = []
570
570
  for row_idx in range(roles_range[0], roles_range[1]):
571
+ if len(list(roles_sheet.rows)) < row_idx + 1:
572
+ break
571
573
  row = list(roles_sheet.rows)[row_idx]
572
574
 
573
575
  role_name = get_cell_value(row, headers.get("role"))
@@ -678,7 +680,7 @@ def import_servers(workbook) -> Optional[List[Server]]:
678
680
  elif server_type == "databricks":
679
681
  server.catalog = get_server_cell_value(workbook, sheet, "servers.databricks.catalog", index)
680
682
  server.host = get_server_cell_value(workbook, sheet, "servers.databricks.host", index)
681
- server.schema = get_server_cell_value(workbook, sheet, "servers.databricks.schema", index)
683
+ server.schema_ = get_server_cell_value(workbook, sheet, "servers.databricks.schema", index)
682
684
  elif server_type == "glue":
683
685
  server.account = get_server_cell_value(workbook, sheet, "servers.glue.account", index)
684
686
  server.database = get_server_cell_value(workbook, sheet, "servers.glue.database", index)
@@ -692,7 +694,7 @@ def import_servers(workbook) -> Optional[List[Server]]:
692
694
  server.database = get_server_cell_value(workbook, sheet, "servers.postgres.database", index)
693
695
  server.host = get_server_cell_value(workbook, sheet, "servers.postgres.host", index)
694
696
  server.port = get_server_cell_value(workbook, sheet, "servers.postgres.port", index)
695
- server.schema = get_server_cell_value(workbook, sheet, "servers.postgres.schema", index)
697
+ server.schema_ = get_server_cell_value(workbook, sheet, "servers.postgres.schema", index)
696
698
  elif server_type == "s3":
697
699
  server.delimiter = get_server_cell_value(workbook, sheet, "servers.s3.delimiter", index)
698
700
  server.endpointUrl = get_server_cell_value(workbook, sheet, "servers.s3.endpointUrl", index)
@@ -703,13 +705,13 @@ def import_servers(workbook) -> Optional[List[Server]]:
703
705
  server.database = get_server_cell_value(workbook, sheet, "servers.snowflake.database", index)
704
706
  server.host = get_server_cell_value(workbook, sheet, "servers.snowflake.host", index)
705
707
  server.port = get_server_cell_value(workbook, sheet, "servers.snowflake.port", index)
706
- server.schema = get_server_cell_value(workbook, sheet, "servers.snowflake.schema", index)
708
+ server.schema_ = get_server_cell_value(workbook, sheet, "servers.snowflake.schema", index)
707
709
  server.warehouse = get_server_cell_value(workbook, sheet, "servers.snowflake.warehouse", index)
708
710
  elif server_type == "sqlserver":
709
711
  server.database = get_server_cell_value(workbook, sheet, "servers.sqlserver.database", index)
710
712
  server.host = get_server_cell_value(workbook, sheet, "servers.sqlserver.host", index)
711
713
  server.port = get_server_cell_value(workbook, sheet, "servers.sqlserver.port", index)
712
- server.schema = get_server_cell_value(workbook, sheet, "servers.sqlserver.schema", index)
714
+ server.schema_ = get_server_cell_value(workbook, sheet, "servers.sqlserver.schema", index)
713
715
  else:
714
716
  # Custom server type - grab all possible fields
715
717
  server.account = get_server_cell_value(workbook, sheet, "servers.custom.account", index)
@@ -724,7 +726,7 @@ def import_servers(workbook) -> Optional[List[Server]]:
724
726
  server.path = get_server_cell_value(workbook, sheet, "servers.custom.path", index)
725
727
  server.port = get_server_cell_value(workbook, sheet, "servers.custom.port", index)
726
728
  server.project = get_server_cell_value(workbook, sheet, "servers.custom.project", index)
727
- server.schema = get_server_cell_value(workbook, sheet, "servers.custom.schema", index)
729
+ server.schema_ = get_server_cell_value(workbook, sheet, "servers.custom.schema", index)
728
730
  server.stagingDir = get_server_cell_value(workbook, sheet, "servers.custom.stagingDir", index)
729
731
  server.table = get_server_cell_value(workbook, sheet, "servers.custom.table", index)
730
732
  server.view = get_server_cell_value(workbook, sheet, "servers.custom.view", index)
@@ -26,6 +26,7 @@ class ImportFormat(str, Enum):
26
26
  dbml = "dbml"
27
27
  glue = "glue"
28
28
  jsonschema = "jsonschema"
29
+ json = "json"
29
30
  bigquery = "bigquery"
30
31
  odcs = "odcs"
31
32
  unity = "unity"
@@ -119,3 +119,10 @@ importer_factory.register_lazy_importer(
119
119
  module_path="datacontract.imports.excel_importer",
120
120
  class_name="ExcelImporter",
121
121
  )
122
+
123
+
124
+ importer_factory.register_lazy_importer(
125
+ name=ImportFormat.json,
126
+ module_path="datacontract.imports.json_importer",
127
+ class_name="JsonImporter",
128
+ )