datacontract-cli 0.10.21__tar.gz → 0.10.23__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.
- {datacontract_cli-0.10.21/datacontract_cli.egg-info → datacontract_cli-0.10.23}/PKG-INFO +192 -215
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/README.md +177 -200
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/breaking/breaking.py +1 -1
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/breaking/breaking_rules.py +1 -1
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/cli.py +25 -77
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/data_contract.py +14 -100
- datacontract_cli-0.10.23/datacontract/engines/data_contract_checks.py +735 -0
- datacontract_cli-0.10.23/datacontract/engines/data_contract_test.py +67 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/engines/datacontract/check_that_datacontract_contains_valid_servers_configuration.py +2 -3
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/engines/soda/check_soda_execute.py +37 -31
- datacontract_cli-0.10.21/datacontract/engines/soda/connections/duckdb.py → datacontract_cli-0.10.23/datacontract/engines/soda/connections/duckdb_connection.py +6 -5
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/engines/soda/connections/kafka.py +8 -3
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/avro_converter.py +2 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/dbt_converter.py +13 -10
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/exporter.py +0 -2
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/exporter_factory.py +0 -12
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/odcs_v3_exporter.py +22 -3
- datacontract_cli-0.10.23/datacontract/export/sodacl_converter.py +30 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/sql_type_converter.py +7 -2
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/imports/odcs_importer.py +6 -3
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/imports/odcs_v3_importer.py +3 -1
- datacontract_cli-0.10.23/datacontract/imports/sql_importer.py +286 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/lint/resolve.py +17 -4
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/model/exceptions.py +4 -1
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/model/run.py +11 -4
- datacontract_cli-0.10.23/datacontract/output/junit_test_results.py +135 -0
- datacontract_cli-0.10.23/datacontract/output/output_format.py +10 -0
- datacontract_cli-0.10.23/datacontract/output/test_results_writer.py +79 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23/datacontract_cli.egg-info}/PKG-INFO +192 -215
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract_cli.egg-info/SOURCES.txt +11 -15
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract_cli.egg-info/requires.txt +15 -15
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/pyproject.toml +17 -17
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_api.py +1 -1
- datacontract_cli-0.10.23/tests/test_data_contract_checks.py +10 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_avro.py +11 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_dbt_models.py +57 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_odcs_v3.py +7 -7
- datacontract_cli-0.10.23/tests/test_export_sodacl.py +122 -0
- datacontract_cli-0.10.21/tests/test_import_sql.py → datacontract_cli-0.10.23/tests/test_import_sql_postgres.py +55 -22
- datacontract_cli-0.10.23/tests/test_import_sql_sqlserver.py +178 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_lint.py +1 -1
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_resolve.py +37 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_spec_ref.py +1 -1
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_dataframe.py +23 -0
- datacontract_cli-0.10.23/tests/test_test_output_junit.py +22 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_postgres.py +17 -1
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_quality.py +9 -6
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_s3_json_multiple_models.py +0 -3
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_s3_json_remote.py +1 -1
- datacontract_cli-0.10.21/datacontract/engines/soda/connections/dask.py +0 -28
- datacontract_cli-0.10.21/datacontract/export/odcs_v2_exporter.py +0 -124
- datacontract_cli-0.10.21/datacontract/export/sodacl_converter.py +0 -302
- datacontract_cli-0.10.21/datacontract/imports/odcs_v2_importer.py +0 -177
- datacontract_cli-0.10.21/datacontract/imports/sql_importer.py +0 -86
- datacontract_cli-0.10.21/datacontract/lint/linters/example_model_linter.py +0 -91
- datacontract_cli-0.10.21/tests/test_example_model_linter.py +0 -82
- datacontract_cli-0.10.21/tests/test_export_odcs_v2.py +0 -81
- datacontract_cli-0.10.21/tests/test_export_sodacl.py +0 -91
- datacontract_cli-0.10.21/tests/test_import_odcs_v2.py +0 -50
- datacontract_cli-0.10.21/tests/test_test_examples_csv.py +0 -30
- datacontract_cli-0.10.21/tests/test_test_examples_formats_valid.py +0 -15
- datacontract_cli-0.10.21/tests/test_test_examples_inline.py +0 -20
- datacontract_cli-0.10.21/tests/test_test_examples_json.py +0 -29
- datacontract_cli-0.10.21/tests/test_test_examples_missing.py +0 -23
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/LICENSE +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/MANIFEST.in +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/__init__.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/api.py +0 -0
- {datacontract_cli-0.10.21/datacontract/model → datacontract_cli-0.10.23/datacontract/breaking}/breaking_change.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/catalog/catalog.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/engines/__init__.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/engines/datacontract/check_that_datacontract_file_exists.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/engines/fastjsonschema/check_jsonschema.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/engines/fastjsonschema/s3/s3_read_files.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/engines/soda/__init__.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/engines/soda/connections/bigquery.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/engines/soda/connections/databricks.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/engines/soda/connections/postgres.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/engines/soda/connections/snowflake.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/engines/soda/connections/sqlserver.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/engines/soda/connections/trino.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/__init__.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/avro_idl_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/bigquery_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/csv_type_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/custom_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/data_caterer_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/dbml_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/dcs_exporter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/go_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/great_expectations_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/html_export.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/iceberg_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/jsonschema_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/markdown_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/pandas_type_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/protobuf_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/pydantic_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/rdf_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/spark_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/sql_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/sqlalchemy_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/export/terraform_converter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/imports/avro_importer.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/imports/bigquery_importer.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/imports/csv_importer.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/imports/dbml_importer.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/imports/dbt_importer.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/imports/glue_importer.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/imports/iceberg_importer.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/imports/importer.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/imports/importer_factory.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/imports/jsonschema_importer.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/imports/parquet_importer.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/imports/spark_importer.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/imports/unity_importer.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/init/init_template.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/integration/datamesh_manager.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/lint/files.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/lint/lint.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/lint/linters/__init__.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/lint/linters/description_linter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/lint/linters/field_pattern_linter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/lint/linters/field_reference_linter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/lint/linters/notice_period_linter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/lint/linters/quality_schema_linter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/lint/linters/valid_constraints_linter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/lint/resources.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/lint/schema.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/lint/urls.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/model/data_contract_specification.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/model/odcs.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/py.typed +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/schemas/datacontract-1.1.0.init.yaml +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/schemas/datacontract-1.1.0.schema.json +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/schemas/odcs-3.0.1.schema.json +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/templates/datacontract.html +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/templates/index.html +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/templates/partials/datacontract_information.html +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/templates/partials/datacontract_servicelevels.html +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/templates/partials/datacontract_terms.html +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/templates/partials/definition.html +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/templates/partials/example.html +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/templates/partials/model_field.html +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/templates/partials/quality.html +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/templates/partials/server.html +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract/templates/style/output.css +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract_cli.egg-info/dependency_links.txt +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract_cli.egg-info/entry_points.txt +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/datacontract_cli.egg-info/top_level.txt +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/setup.cfg +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_breaking.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_catalog.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_changelog.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_cli.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_data_contract_specification.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_description_linter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_documentation_linter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_download_datacontract_file.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_avro_idl.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_bigquery.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_complex_data_contract.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_custom.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_custom_exporter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_data_caterer.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_dbml.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_dbt_sources.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_dbt_staging_sql.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_go.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_great_expectations.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_html.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_iceberg.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_jsonschema.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_markdown.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_protobuf.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_pydantic.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_rdf.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_spark.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_sql.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_sql_query.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_sqlalchemy.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_export_terraform.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_field_constraint_linter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_field_pattern_linter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_field_reference_linter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_import_avro.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_import_bigquery.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_import_csv.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_import_dbml.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_import_dbt.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_import_glue.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_import_iceberg.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_import_jsonschema.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_import_odcs_v3.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_import_parquet.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_import_spark.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_import_unity_file.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_integration_datameshmanager.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_notice_period_linter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_quality_schema_linter.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_roundtrip_jsonschema.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_spec_fields_field.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_azure_remote.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_bigquery.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_databricks.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_delta.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_gcs_json_remote.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_kafka.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_kafka_remote.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_local_json.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_parquet.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_s3_csv.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_s3_delta.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_s3_json.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_s3_json_complex.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_snowflake.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_sqlserver.py +0 -0
- {datacontract_cli-0.10.21 → datacontract_cli-0.10.23}/tests/test_test_trino.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: datacontract-cli
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.23
|
|
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
|
Project-URL: Homepage, https://cli.datacontract.com
|
|
@@ -16,17 +16,17 @@ Requires-Dist: pydantic<2.11.0,>=2.8.2
|
|
|
16
16
|
Requires-Dist: pyyaml~=6.0.1
|
|
17
17
|
Requires-Dist: requests<2.33,>=2.31
|
|
18
18
|
Requires-Dist: fastjsonschema<2.22.0,>=2.19.1
|
|
19
|
-
Requires-Dist: fastparquet
|
|
19
|
+
Requires-Dist: fastparquet<2025.0.0,>=2024.5.0
|
|
20
20
|
Requires-Dist: numpy<2.0.0,>=1.26.4
|
|
21
21
|
Requires-Dist: python-multipart==0.0.20
|
|
22
22
|
Requires-Dist: rich<13.10,>=13.7
|
|
23
|
-
Requires-Dist:
|
|
24
|
-
Requires-Dist: duckdb
|
|
25
|
-
Requires-Dist: soda-core-duckdb<3.
|
|
23
|
+
Requires-Dist: sqlglot<27.0.0,>=26.6.0
|
|
24
|
+
Requires-Dist: duckdb<2.0.0,>=1.0.0
|
|
25
|
+
Requires-Dist: soda-core-duckdb<3.5.0,>=3.3.20
|
|
26
26
|
Requires-Dist: setuptools>=60
|
|
27
27
|
Requires-Dist: python-dotenv~=1.0.0
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist:
|
|
28
|
+
Requires-Dist: boto3<1.36.12,>=1.34.41
|
|
29
|
+
Requires-Dist: Jinja2>=3.1.5
|
|
30
30
|
Requires-Dist: jinja_partials>=0.2.1
|
|
31
31
|
Provides-Extra: avro
|
|
32
32
|
Requires-Dist: avro==1.12.0; extra == "avro"
|
|
@@ -39,7 +39,7 @@ Provides-Extra: databricks
|
|
|
39
39
|
Requires-Dist: soda-core-spark-df<3.4.0,>=3.3.20; extra == "databricks"
|
|
40
40
|
Requires-Dist: soda-core-spark[databricks]<3.4.0,>=3.3.20; extra == "databricks"
|
|
41
41
|
Requires-Dist: databricks-sql-connector<3.8.0,>=3.7.0; extra == "databricks"
|
|
42
|
-
Requires-Dist: databricks-sdk<0.
|
|
42
|
+
Requires-Dist: databricks-sdk<0.45.0; extra == "databricks"
|
|
43
43
|
Provides-Extra: iceberg
|
|
44
44
|
Requires-Dist: pyiceberg==0.8.1; extra == "iceberg"
|
|
45
45
|
Provides-Extra: kafka
|
|
@@ -48,11 +48,11 @@ Requires-Dist: soda-core-spark-df<3.4.0,>=3.3.20; extra == "kafka"
|
|
|
48
48
|
Provides-Extra: postgres
|
|
49
49
|
Requires-Dist: soda-core-postgres<3.4.0,>=3.3.20; extra == "postgres"
|
|
50
50
|
Provides-Extra: s3
|
|
51
|
-
Requires-Dist: s3fs==
|
|
51
|
+
Requires-Dist: s3fs==2025.2.0; extra == "s3"
|
|
52
52
|
Requires-Dist: aiobotocore<2.20.0,>=2.17.0; extra == "s3"
|
|
53
53
|
Provides-Extra: snowflake
|
|
54
|
-
Requires-Dist: snowflake-connector-python[pandas]<3.
|
|
55
|
-
Requires-Dist: soda-core-snowflake<3.
|
|
54
|
+
Requires-Dist: snowflake-connector-python[pandas]<3.14,>=3.6; extra == "snowflake"
|
|
55
|
+
Requires-Dist: soda-core-snowflake<3.5.0,>=3.3.20; extra == "snowflake"
|
|
56
56
|
Provides-Extra: sqlserver
|
|
57
57
|
Requires-Dist: soda-core-sqlserver<3.4.0,>=3.3.20; extra == "sqlserver"
|
|
58
58
|
Provides-Extra: trino
|
|
@@ -63,13 +63,13 @@ Provides-Extra: dbml
|
|
|
63
63
|
Requires-Dist: pydbml>=1.1.1; extra == "dbml"
|
|
64
64
|
Provides-Extra: parquet
|
|
65
65
|
Requires-Dist: pyarrow>=18.1.0; extra == "parquet"
|
|
66
|
+
Provides-Extra: rdf
|
|
67
|
+
Requires-Dist: rdflib==7.0.0; extra == "rdf"
|
|
66
68
|
Provides-Extra: api
|
|
67
|
-
Requires-Dist: fastapi==0.115.
|
|
69
|
+
Requires-Dist: fastapi==0.115.8; extra == "api"
|
|
68
70
|
Requires-Dist: uvicorn==0.34.0; extra == "api"
|
|
69
|
-
Provides-Extra: custom
|
|
70
|
-
Requires-Dist: Jinja2>=3.1.5; extra == "custom"
|
|
71
71
|
Provides-Extra: all
|
|
72
|
-
Requires-Dist: datacontract-cli[api,bigquery,csv,
|
|
72
|
+
Requires-Dist: datacontract-cli[api,bigquery,csv,databricks,dbml,dbt,iceberg,kafka,parquet,postgres,rdf,s3,snowflake,sqlserver,trino]; extra == "all"
|
|
73
73
|
Provides-Extra: dev
|
|
74
74
|
Requires-Dist: datacontract-cli[all]; extra == "dev"
|
|
75
75
|
Requires-Dist: httpx==0.28.1; extra == "dev"
|
|
@@ -194,17 +194,20 @@ $ datacontract init datacontract.yaml
|
|
|
194
194
|
# lint the datacontract.yaml
|
|
195
195
|
$ datacontract lint datacontract.yaml
|
|
196
196
|
|
|
197
|
-
# execute schema and quality checks
|
|
197
|
+
# execute schema and quality checks (define credentials as environment variables)
|
|
198
198
|
$ datacontract test datacontract.yaml
|
|
199
199
|
|
|
200
|
-
#
|
|
201
|
-
$ datacontract
|
|
200
|
+
# export data contract as html (other formats: avro, dbt, dbt-sources, dbt-staging-sql, jsonschema, odcs, rdf, sql, sodacl, terraform, ...)
|
|
201
|
+
$ datacontract export --format html datacontract.yaml --output datacontract.html
|
|
202
202
|
|
|
203
|
-
# export data contract
|
|
204
|
-
$ datacontract export --format
|
|
203
|
+
# export data contract to ODCS
|
|
204
|
+
$ datacontract export --format odcs datacontract.yaml --output odcs.yaml
|
|
205
205
|
|
|
206
|
-
# import
|
|
207
|
-
$ datacontract import --format
|
|
206
|
+
# import ODCS to data contract
|
|
207
|
+
$ datacontract import --format odcs odcs.yaml --output datacontract.yaml
|
|
208
|
+
|
|
209
|
+
# import sql (other formats: avro, glue, bigquery, jsonschema ...)
|
|
210
|
+
$ datacontract import --format sql --source my-ddl.sql --dialect postgres --output datacontract.yaml
|
|
208
211
|
|
|
209
212
|
# find differences between two data contracts
|
|
210
213
|
$ datacontract diff datacontract-v1.yaml datacontract-v2.yaml
|
|
@@ -227,6 +230,12 @@ if not run.has_passed():
|
|
|
227
230
|
# Abort pipeline, alert, or take corrective actions...
|
|
228
231
|
```
|
|
229
232
|
|
|
233
|
+
## How to
|
|
234
|
+
|
|
235
|
+
- [How to integrate Data Contract CLI in your CI/CD pipeline as a GitHub Action](https://github.com/datacontract/datacontract-action/)
|
|
236
|
+
- [How to run the Data Contract CLI API to test data contracts with POST requests](https://cli.datacontract.com/API)
|
|
237
|
+
- [How to run Data Contract CLI in a Databricks pipeline](https://www.datamesh-architecture.com/howto/build-a-dataproduct-with-databricks#test-the-data-product)
|
|
238
|
+
|
|
230
239
|
|
|
231
240
|
## Installation
|
|
232
241
|
|
|
@@ -237,12 +246,28 @@ Python 3.10, 3.11, and 3.12 are supported. We recommend to use Python 3.11.
|
|
|
237
246
|
|
|
238
247
|
```bash
|
|
239
248
|
python3 -m pip install 'datacontract-cli[all]'
|
|
249
|
+
datacontract --version
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### pip with venv
|
|
253
|
+
|
|
254
|
+
Typically it is better to install the application in a virtual environment for your projects:
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
cd my-project
|
|
258
|
+
python3.11 -m venv venv
|
|
259
|
+
source venv/bin/activate
|
|
260
|
+
pip install 'datacontract-cli[all]'
|
|
261
|
+
datacontract --version
|
|
240
262
|
```
|
|
241
263
|
|
|
242
264
|
### pipx
|
|
265
|
+
|
|
243
266
|
pipx installs into an isolated environment.
|
|
267
|
+
|
|
244
268
|
```bash
|
|
245
269
|
pipx install 'datacontract-cli[all]'
|
|
270
|
+
datacontract --version
|
|
246
271
|
```
|
|
247
272
|
|
|
248
273
|
### Docker
|
|
@@ -264,7 +289,7 @@ _Note:_ The output of Docker command line messages is limited to 80 columns and
|
|
|
264
289
|
|
|
265
290
|
|
|
266
291
|
|
|
267
|
-
## Optional Dependencies
|
|
292
|
+
## Optional Dependencies (Extras)
|
|
268
293
|
|
|
269
294
|
The CLI tool defines several optional dependencies (also known as extras) that can be installed for using with specific servers types.
|
|
270
295
|
With _all_, all server dependencies are included.
|
|
@@ -275,21 +300,23 @@ pip install datacontract-cli[all]
|
|
|
275
300
|
|
|
276
301
|
A list of available extras:
|
|
277
302
|
|
|
278
|
-
| Dependency
|
|
279
|
-
|
|
280
|
-
| Avro Support
|
|
281
|
-
| Google BigQuery
|
|
282
|
-
| Databricks Integration
|
|
283
|
-
| Iceberg
|
|
284
|
-
| Kafka Integration
|
|
285
|
-
| PostgreSQL Integration
|
|
286
|
-
| S3 Integration
|
|
287
|
-
| Snowflake Integration
|
|
288
|
-
| Microsoft SQL Server
|
|
289
|
-
| Trino
|
|
290
|
-
|
|
|
291
|
-
|
|
|
292
|
-
| Parquet
|
|
303
|
+
| Dependency | Installation Command |
|
|
304
|
+
|-------------------------|--------------------------------------------|
|
|
305
|
+
| Avro Support | `pip install datacontract-cli[avro]` |
|
|
306
|
+
| Google BigQuery | `pip install datacontract-cli[bigquery]` |
|
|
307
|
+
| Databricks Integration | `pip install datacontract-cli[databricks]` |
|
|
308
|
+
| Iceberg | `pip install datacontract-cli[iceberg]` |
|
|
309
|
+
| Kafka Integration | `pip install datacontract-cli[kafka]` |
|
|
310
|
+
| PostgreSQL Integration | `pip install datacontract-cli[postgres]` |
|
|
311
|
+
| S3 Integration | `pip install datacontract-cli[s3]` |
|
|
312
|
+
| Snowflake Integration | `pip install datacontract-cli[snowflake]` |
|
|
313
|
+
| Microsoft SQL Server | `pip install datacontract-cli[sqlserver]` |
|
|
314
|
+
| Trino | `pip install datacontract-cli[trino]` |
|
|
315
|
+
| dbt | `pip install datacontract-cli[dbt]` |
|
|
316
|
+
| DBML | `pip install datacontract-cli[dbml]` |
|
|
317
|
+
| Parquet | `pip install datacontract-cli[parquet]` |
|
|
318
|
+
| RDF | `pip install datacontract-cli[rdf]` |
|
|
319
|
+
| API (run as web server) | `pip install datacontract-cli[api]` |
|
|
293
320
|
|
|
294
321
|
|
|
295
322
|
|
|
@@ -357,54 +384,41 @@ Commands
|
|
|
357
384
|
|
|
358
385
|
### test
|
|
359
386
|
```
|
|
360
|
-
|
|
361
|
-
Usage: datacontract test [OPTIONS] [LOCATION]
|
|
362
|
-
|
|
363
|
-
Run schema and quality tests on configured servers.
|
|
364
|
-
|
|
365
|
-
╭─ Arguments
|
|
366
|
-
│ location [LOCATION] The location (url or path) of the data contract
|
|
367
|
-
│ yaml
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
│
|
|
372
|
-
│
|
|
373
|
-
│
|
|
374
|
-
│
|
|
375
|
-
│
|
|
376
|
-
│
|
|
377
|
-
│
|
|
378
|
-
│
|
|
379
|
-
│
|
|
380
|
-
│
|
|
381
|
-
│
|
|
382
|
-
│
|
|
383
|
-
│
|
|
384
|
-
│
|
|
385
|
-
│
|
|
386
|
-
│
|
|
387
|
-
│
|
|
388
|
-
│
|
|
389
|
-
│ --
|
|
390
|
-
│
|
|
391
|
-
│
|
|
392
|
-
│
|
|
393
|
-
│
|
|
394
|
-
|
|
395
|
-
│ results after the test │
|
|
396
|
-
│ [default: None] │
|
|
397
|
-
│ --logs --no-logs Print logs │
|
|
398
|
-
│ [default: no-logs] │
|
|
399
|
-
│ --ssl-verification --no-ssl-verification SSL verification when │
|
|
400
|
-
│ publishing the data │
|
|
401
|
-
│ contract. │
|
|
402
|
-
│ [default: │
|
|
403
|
-
│ ssl-verification] │
|
|
404
|
-
│ --help Show this message and │
|
|
405
|
-
│ exit. │
|
|
406
|
-
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
407
|
-
|
|
387
|
+
|
|
388
|
+
Usage: datacontract test [OPTIONS] [LOCATION]
|
|
389
|
+
|
|
390
|
+
Run schema and quality tests on configured servers.
|
|
391
|
+
|
|
392
|
+
╭─ Arguments ──────────────────────────────────────────────────────────────────────────────────────╮
|
|
393
|
+
│ location [LOCATION] The location (url or path) of the data contract yaml. │
|
|
394
|
+
│ [default: datacontract.yaml] │
|
|
395
|
+
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
|
|
396
|
+
╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
|
|
397
|
+
│ --schema TEXT The location (url or path) of the Data │
|
|
398
|
+
│ Contract Specification JSON Schema │
|
|
399
|
+
│ [default: None] │
|
|
400
|
+
│ --server TEXT The server configuration to run the │
|
|
401
|
+
│ schema and quality tests. Use the key of │
|
|
402
|
+
│ the server object in the data contract │
|
|
403
|
+
│ yaml file to refer to a server, e.g., │
|
|
404
|
+
│ `production`, or `all` for all servers │
|
|
405
|
+
│ (default). │
|
|
406
|
+
│ [default: all] │
|
|
407
|
+
│ --publish TEXT The url to publish the results after the │
|
|
408
|
+
│ test │
|
|
409
|
+
│ [default: None] │
|
|
410
|
+
│ --output PATH Specify the file path where the test │
|
|
411
|
+
│ results should be written to (e.g., │
|
|
412
|
+
│ './test-results/TEST-datacontract.xml'). │
|
|
413
|
+
│ [default: None] │
|
|
414
|
+
│ --output-format [junit] The target format for the test results. │
|
|
415
|
+
│ [default: None] │
|
|
416
|
+
│ --logs --no-logs Print logs [default: no-logs] │
|
|
417
|
+
│ --ssl-verification --no-ssl-verification SSL verification when publishing the │
|
|
418
|
+
│ data contract. │
|
|
419
|
+
│ [default: ssl-verification] │
|
|
420
|
+
│ --help Show this message and exit. │
|
|
421
|
+
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
|
|
408
422
|
```
|
|
409
423
|
|
|
410
424
|
Data Contract CLI connects to a data source and runs schema and quality tests to verify that the data contract is valid.
|
|
@@ -877,8 +891,8 @@ models:
|
|
|
877
891
|
╭─ Options ────────────────────────────────────────────────────────────────────╮
|
|
878
892
|
│ * --format [jsonschema|pydantic-model| The export format. │
|
|
879
893
|
│ sodacl|dbt|dbt-sources|dbt- [default: None] │
|
|
880
|
-
│ staging-sql|odcs|
|
|
881
|
-
│
|
|
894
|
+
│ staging-sql|odcs| [required] │
|
|
895
|
+
│ rdf|avro|protobuf|gre │
|
|
882
896
|
│ at-expectations|terraform|a │
|
|
883
897
|
│ vro-idl|sql|sql-query|html| │
|
|
884
898
|
│ go|bigquery|dbml|spark|sqla │
|
|
@@ -936,8 +950,6 @@ Available export options:
|
|
|
936
950
|
|----------------------|---------------------------------------------------------|--------|
|
|
937
951
|
| `html` | Export to HTML | ✅ |
|
|
938
952
|
| `jsonschema` | Export to JSON Schema | ✅ |
|
|
939
|
-
| `odcs_v2` | Export to Open Data Contract Standard (ODCS) V2 | ✅ |
|
|
940
|
-
| `odcs_v3` | Export to Open Data Contract Standard (ODCS) V3 | ✅ |
|
|
941
953
|
| `odcs` | Export to Open Data Contract Standard (ODCS) V3 | ✅ |
|
|
942
954
|
| `sodacl` | Export to SodaCL quality checks in YAML format | ✅ |
|
|
943
955
|
| `dbt` | Export to dbt models in YAML format | ✅ |
|
|
@@ -1023,6 +1035,12 @@ The export function converts the logical data types of the datacontract into the
|
|
|
1023
1035
|
if a server is selected via the `--server` option (based on the `type` of that server). If no server is selected, the
|
|
1024
1036
|
logical data types are exported.
|
|
1025
1037
|
|
|
1038
|
+
#### DBT & DBT-SOURCES
|
|
1039
|
+
|
|
1040
|
+
The export funciton converts the datacontract to dbt models in YAML format, with support for SQL dialects.
|
|
1041
|
+
If a server is selected via the `--server` option (based on the `type` of that server) then the DBT column `data_types` match the expected data types of the server.
|
|
1042
|
+
If no server is selected, then it defaults to `snowflake`.
|
|
1043
|
+
|
|
1026
1044
|
#### Spark
|
|
1027
1045
|
|
|
1028
1046
|
The export function converts the data contract specification into a StructType Spark schema. The returned value is a Python code picture of the model schemas.
|
|
@@ -1214,107 +1232,80 @@ FROM
|
|
|
1214
1232
|
|
|
1215
1233
|
### import
|
|
1216
1234
|
```
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
│
|
|
1225
|
-
│
|
|
1226
|
-
│
|
|
1227
|
-
│
|
|
1228
|
-
│
|
|
1229
|
-
│
|
|
1230
|
-
│
|
|
1231
|
-
│
|
|
1232
|
-
│
|
|
1233
|
-
│
|
|
1234
|
-
│
|
|
1235
|
-
│
|
|
1236
|
-
│
|
|
1237
|
-
│
|
|
1238
|
-
│
|
|
1239
|
-
│
|
|
1240
|
-
│
|
|
1241
|
-
│
|
|
1242
|
-
│
|
|
1243
|
-
│
|
|
1244
|
-
│
|
|
1245
|
-
│
|
|
1246
|
-
│
|
|
1247
|
-
│
|
|
1248
|
-
│
|
|
1249
|
-
│
|
|
1250
|
-
│
|
|
1251
|
-
│
|
|
1252
|
-
│
|
|
1253
|
-
│
|
|
1254
|
-
│
|
|
1255
|
-
│
|
|
1256
|
-
│
|
|
1257
|
-
│
|
|
1258
|
-
│
|
|
1259
|
-
│
|
|
1260
|
-
│
|
|
1261
|
-
│
|
|
1262
|
-
│
|
|
1263
|
-
│
|
|
1264
|
-
│
|
|
1265
|
-
│ --
|
|
1266
|
-
│
|
|
1267
|
-
│
|
|
1268
|
-
│
|
|
1269
|
-
│
|
|
1270
|
-
│
|
|
1271
|
-
│
|
|
1272
|
-
│
|
|
1273
|
-
│ --
|
|
1274
|
-
│
|
|
1275
|
-
│
|
|
1276
|
-
│
|
|
1277
|
-
│
|
|
1278
|
-
│
|
|
1279
|
-
│
|
|
1280
|
-
│
|
|
1281
|
-
|
|
1282
|
-
│ to import from the │
|
|
1283
|
-
│ DBML file (repeat for │
|
|
1284
|
-
│ multiple table names, │
|
|
1285
|
-
│ leave empty for all │
|
|
1286
|
-
│ tables in the file). │
|
|
1287
|
-
│ [default: None] │
|
|
1288
|
-
│ --iceberg-table TEXT Table name to assign │
|
|
1289
|
-
│ to the model created │
|
|
1290
|
-
│ from the Iceberg │
|
|
1291
|
-
│ schema. │
|
|
1292
|
-
│ [default: None] │
|
|
1293
|
-
│ --template TEXT The location (url or │
|
|
1294
|
-
│ path) of the Data │
|
|
1295
|
-
│ Contract │
|
|
1296
|
-
│ Specification │
|
|
1297
|
-
│ Template │
|
|
1298
|
-
│ [default: None] │
|
|
1299
|
-
│ --schema TEXT The location (url or │
|
|
1300
|
-
│ path) of the Data │
|
|
1301
|
-
│ Contract │
|
|
1302
|
-
│ Specification JSON │
|
|
1303
|
-
│ Schema │
|
|
1304
|
-
│ [default: │
|
|
1305
|
-
│ https://datacontract… │
|
|
1306
|
-
│ --help Show this message and │
|
|
1307
|
-
│ exit. │
|
|
1308
|
-
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
1235
|
+
Usage: datacontract import [OPTIONS]
|
|
1236
|
+
|
|
1237
|
+
Create a data contract from the given source location. Saves to file specified by `output` option if present,
|
|
1238
|
+
otherwise prints to stdout.
|
|
1239
|
+
|
|
1240
|
+
╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
|
1241
|
+
│ * --format [sql|avro|dbt|dbml|glue|jsonschema|bi The format of the source file. │
|
|
1242
|
+
│ gquery|odcs|unity|spark|iceberg|parqu [default: None] │
|
|
1243
|
+
│ et|csv] [required] │
|
|
1244
|
+
│ --output PATH Specify the file path where the Data │
|
|
1245
|
+
│ Contract will be saved. If no path is │
|
|
1246
|
+
│ provided, the output will be printed │
|
|
1247
|
+
│ to stdout. │
|
|
1248
|
+
│ [default: None] │
|
|
1249
|
+
│ --source TEXT The path to the file or Glue Database │
|
|
1250
|
+
│ that should be imported. │
|
|
1251
|
+
│ [default: None] │
|
|
1252
|
+
│ --dialect TEXT The SQL dialect to use when importing │
|
|
1253
|
+
│ SQL files, e.g., postgres, tsql, │
|
|
1254
|
+
│ bigquery. │
|
|
1255
|
+
│ [default: None] │
|
|
1256
|
+
│ --glue-table TEXT List of table ids to import from the │
|
|
1257
|
+
│ Glue Database (repeat for multiple │
|
|
1258
|
+
│ table ids, leave empty for all tables │
|
|
1259
|
+
│ in the dataset). │
|
|
1260
|
+
│ [default: None] │
|
|
1261
|
+
│ --bigquery-project TEXT The bigquery project id. │
|
|
1262
|
+
│ [default: None] │
|
|
1263
|
+
│ --bigquery-dataset TEXT The bigquery dataset id. │
|
|
1264
|
+
│ [default: None] │
|
|
1265
|
+
│ --bigquery-table TEXT List of table ids to import from the │
|
|
1266
|
+
│ bigquery API (repeat for multiple │
|
|
1267
|
+
│ table ids, leave empty for all tables │
|
|
1268
|
+
│ in the dataset). │
|
|
1269
|
+
│ [default: None] │
|
|
1270
|
+
│ --unity-table-full-name TEXT Full name of a table in the unity │
|
|
1271
|
+
│ catalog │
|
|
1272
|
+
│ [default: None] │
|
|
1273
|
+
│ --dbt-model TEXT List of models names to import from │
|
|
1274
|
+
│ the dbt manifest file (repeat for │
|
|
1275
|
+
│ multiple models names, leave empty │
|
|
1276
|
+
│ for all models in the dataset). │
|
|
1277
|
+
│ [default: None] │
|
|
1278
|
+
│ --dbml-schema TEXT List of schema names to import from │
|
|
1279
|
+
│ the DBML file (repeat for multiple │
|
|
1280
|
+
│ schema names, leave empty for all │
|
|
1281
|
+
│ tables in the file). │
|
|
1282
|
+
│ [default: None] │
|
|
1283
|
+
│ --dbml-table TEXT List of table names to import from │
|
|
1284
|
+
│ the DBML file (repeat for multiple │
|
|
1285
|
+
│ table names, leave empty for all │
|
|
1286
|
+
│ tables in the file). │
|
|
1287
|
+
│ [default: None] │
|
|
1288
|
+
│ --iceberg-table TEXT Table name to assign to the model │
|
|
1289
|
+
│ created from the Iceberg schema. │
|
|
1290
|
+
│ [default: None] │
|
|
1291
|
+
│ --template TEXT The location (url or path) of the │
|
|
1292
|
+
│ Data Contract Specification Template │
|
|
1293
|
+
│ [default: None] │
|
|
1294
|
+
│ --schema TEXT The location (url or path) of the │
|
|
1295
|
+
│ Data Contract Specification JSON │
|
|
1296
|
+
│ Schema │
|
|
1297
|
+
│ [default: None] │
|
|
1298
|
+
│ --help Show this message and exit. │
|
|
1299
|
+
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
|
1309
1300
|
|
|
1310
1301
|
```
|
|
1311
1302
|
|
|
1312
1303
|
Example:
|
|
1313
1304
|
```bash
|
|
1314
1305
|
# Example import from SQL DDL
|
|
1315
|
-
datacontract import --format sql --source my_ddl.sql
|
|
1306
|
+
datacontract import --format sql --source my_ddl.sql --dialect postgres
|
|
1316
1307
|
# To save to file
|
|
1317
|
-
datacontract import --format sql --source my_ddl.sql --output datacontract.yaml
|
|
1308
|
+
datacontract import --format sql --source my_ddl.sql --dialect postgres --output datacontract.yaml
|
|
1318
1309
|
```
|
|
1319
1310
|
|
|
1320
1311
|
Available import options:
|
|
@@ -1669,24 +1660,20 @@ Create a data contract based on the actual data. This is the fastest way to get
|
|
|
1669
1660
|
$ datacontract test
|
|
1670
1661
|
```
|
|
1671
1662
|
|
|
1672
|
-
2. Add
|
|
1673
|
-
|
|
1674
|
-
$ datacontract test --examples
|
|
1675
|
-
```
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
3. Add quality checks and additional type constraints one by one to the contract and make sure the examples and the actual data still adheres to the contract. Check against examples for a very fast feedback loop.
|
|
1663
|
+
2. Add quality checks and additional type constraints one by one to the contract and make sure the
|
|
1664
|
+
data still adheres to the contract.
|
|
1679
1665
|
```bash
|
|
1680
|
-
$ datacontract test --examples
|
|
1681
1666
|
$ datacontract test
|
|
1682
1667
|
```
|
|
1683
1668
|
|
|
1684
|
-
|
|
1669
|
+
3. Make sure that all the best practices for a `datacontract.yaml` are met using the linter. You
|
|
1670
|
+
probably forgot to document some fields and add the terms and conditions.
|
|
1685
1671
|
```bash
|
|
1686
1672
|
$ datacontract lint
|
|
1687
1673
|
```
|
|
1688
1674
|
|
|
1689
|
-
|
|
1675
|
+
4. Set up a CI pipeline that executes daily for continuous quality checks. You can also report the
|
|
1676
|
+
test results to tools like [Data Mesh Manager](https://datamesh-manager.com)
|
|
1690
1677
|
```bash
|
|
1691
1678
|
$ datacontract test --publish https://api.datamesh-manager.com/api/test-results
|
|
1692
1679
|
```
|
|
@@ -1700,30 +1687,15 @@ Create a data contract based on the requirements from use cases.
|
|
|
1700
1687
|
$ datacontract init
|
|
1701
1688
|
```
|
|
1702
1689
|
|
|
1703
|
-
2.
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
```bash
|
|
1707
|
-
$ datacontract test --examples
|
|
1708
|
-
```
|
|
1709
|
-
|
|
1710
|
-
4. Add quality checks and additional type constraints one by one to the contract and make sure the examples and the actual data still adheres to the contract. Check against examples for a very fast feedback loop.
|
|
1711
|
-
```bash
|
|
1712
|
-
$ datacontract test --examples
|
|
1713
|
-
```
|
|
1714
|
-
|
|
1715
|
-
5. Fill in the terms, descriptions, etc. Make sure you follow all best practices for a `datacontract.yaml` using the linter.
|
|
1690
|
+
2. Create the model and quality guarantees based on your business requirements. Fill in the terms,
|
|
1691
|
+
descriptions, etc. Make sure you follow all best practices for a `datacontract.yaml` using the
|
|
1692
|
+
linter.
|
|
1716
1693
|
```bash
|
|
1717
1694
|
$ datacontract lint
|
|
1718
1695
|
```
|
|
1719
1696
|
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
$ datacontract lint
|
|
1723
|
-
$ datacontract test --examples
|
|
1724
|
-
```
|
|
1725
|
-
|
|
1726
|
-
7. Use the export function to start building the providing data product as well as the integration into the consuming data products.
|
|
1697
|
+
3. Use the export function to start building the providing data product as well as the integration
|
|
1698
|
+
into the consuming data products.
|
|
1727
1699
|
```bash
|
|
1728
1700
|
# data provider
|
|
1729
1701
|
$ datacontract export --format dbt
|
|
@@ -1732,6 +1704,11 @@ Create a data contract based on the requirements from use cases.
|
|
|
1732
1704
|
$ datacontract export --format dbt-staging-sql
|
|
1733
1705
|
```
|
|
1734
1706
|
|
|
1707
|
+
4. Test that your data product implementation adheres to the contract.
|
|
1708
|
+
```bash
|
|
1709
|
+
$ datacontract test
|
|
1710
|
+
```
|
|
1711
|
+
|
|
1735
1712
|
### Schema Evolution
|
|
1736
1713
|
|
|
1737
1714
|
#### Non-breaking Changes
|
|
@@ -1929,7 +1906,7 @@ Python base interpreter should be 3.11.x (unless working on 3.12 release candida
|
|
|
1929
1906
|
|
|
1930
1907
|
```bash
|
|
1931
1908
|
# create venv
|
|
1932
|
-
python3 -m venv venv
|
|
1909
|
+
python3.11 -m venv venv
|
|
1933
1910
|
source venv/bin/activate
|
|
1934
1911
|
|
|
1935
1912
|
# Install Requirements
|