datacontract-cli 0.12.3__tar.gz → 0.12.4__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.
- {datacontract_cli-0.12.3/datacontract_cli.egg-info → datacontract_cli-0.12.4}/PKG-INFO +4 -4
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/api.py +5 -2
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/data_contract.py +15 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/data_contract_checks.py +5 -1
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4/datacontract_cli.egg-info}/PKG-INFO +4 -4
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract_cli.egg-info/requires.txt +3 -3
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/pyproject.toml +10 -4
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_data_contract_checks.py +44 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/LICENSE +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/MANIFEST.in +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/README.md +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/__init__.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/catalog/catalog.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/changelog/__init__.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/changelog/changelog.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/changelog/normalize.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/cli.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/command_api.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/command_catalog.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/command_changelog.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/command_ci.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/command_dbt.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/command_export.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/command_import.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/command_init.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/command_lint.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/command_publish.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/command_test.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/__init__.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/data_contract_test.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/datacontract/check_that_datacontract_contains_valid_servers_configuration.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/datacontract/check_that_datacontract_file_exists.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/fastjsonschema/check_jsonschema.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/fastjsonschema/s3/s3_read_files.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/__init__.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/check_soda_execute.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/athena.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/bigquery.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/databricks.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/duckdb_connection.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/impala.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/kafka.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/mysql.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/oracle.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/postgres.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/redshift.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/snowflake.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/sqlserver.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/trino.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/__init__.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/avro_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/avro_idl_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/bigquery_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/custom_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/data_caterer_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/dbml_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/dbt_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/dcs_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/dqx_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/duckdb_type_converter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/excel_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/exporter_factory.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/go_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/great_expectations_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/html_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/iceberg_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/jsonschema_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/markdown_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/mermaid_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/odcs_export_helper.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/odcs_v3_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/pandas_type_converter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/protobuf_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/pydantic_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/rdf_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/sodacl_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/spark_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/sql_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/sql_type_converter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/sqlalchemy_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/avro_importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/bigquery_importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/csv_importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/dbml_importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/dbt_importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/dcs_importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/excel_importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/glue_importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/iceberg_importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/importer_factory.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/json_importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/jsonschema_importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/odcs_helper.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/odcs_importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/parquet_importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/protobuf_importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/spark_importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/sql_importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/unity_importer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/init/init_template.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/integration/dbt_sync.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/integration/dbt_test_mapping.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/integration/entropy_data.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/lint/files.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/lint/resolve.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/lint/resources.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/lint/schema.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/lint/urls.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/model/changelog.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/model/exceptions.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/model/odcs.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/model/run.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/output/__init__.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/output/ci_output.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/output/json_test_results.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/output/junit_test_results.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/output/output_format.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/output/test_results_writer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/output/text_changelog_results.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/py.typed +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/schemas/datacontract-1.1.0.init.yaml +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/schemas/datacontract-1.1.0.schema.json +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/schemas/datacontract-1.2.0.init.yaml +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/schemas/datacontract-1.2.0.schema.json +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/schemas/datacontract-1.2.1.init.yaml +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/schemas/datacontract-1.2.1.schema.json +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/schemas/odcs-3.0.1.schema.json +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/schemas/odcs-3.0.2.schema.json +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/schemas/odcs-3.1.0.init.yaml +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/schemas/odcs-3.1.0.schema.json +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/templates/datacontract.html +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/templates/datacontract_odcs.html +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/templates/index.html +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/templates/partials/datacontract_information.html +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/templates/partials/datacontract_servicelevels.html +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/templates/partials/datacontract_terms.html +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/templates/partials/definition.html +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/templates/partials/example.html +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/templates/partials/model_field.html +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/templates/partials/quality.html +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/templates/partials/server.html +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/templates/style/output.css +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract_cli.egg-info/SOURCES.txt +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract_cli.egg-info/dependency_links.txt +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract_cli.egg-info/entry_points.txt +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract_cli.egg-info/top_level.txt +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/setup.cfg +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_api.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_bigquery_soda_connection.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_catalog.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_changelog.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_changelog_engine.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_changelog_normalize.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_changelog_output_text.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_ci_output.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_cli.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_data_contract.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_data_contract_specification.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_dbt_sync.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_dbt_test_mapping.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_description_linter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_download_datacontract_file.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_duckdb_json.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_avro.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_avro_idl.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_bigquery.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_complex_data_contract.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_custom.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_custom_exporter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_custom_model.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_data_caterer.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_dbml.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_dbt_models.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_dbt_sources.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_dbt_staging_sql.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_dqx.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_excel.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_go.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_great_expectations.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_html.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_iceberg.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_jsonschema.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_markdown.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_mermaid.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_odcs_v3.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_protobuf.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_pydantic.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_rdf.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_sodacl.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_spark.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_sql.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_sql_query.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_export_sqlalchemy.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_avro.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_bigquery.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_csv.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_dbml.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_dbt.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_excel.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_glue.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_iceberg.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_json.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_jsonschema.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_odcs_v3.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_parquet.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_protobuf.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_spark.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_sql_oracle.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_sql_postgres.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_sql_snowflake.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_sql_sqlserver.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_import_unity_file.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_integration_entropydata.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_lint.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_redshift_soda_configuration.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_require_env.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_resolve.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_roundtrip_jsonschema.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_sql_type_converter_physicaltype.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_sqlserver_soda_connection.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_api.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_athena_iceberg.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_azure_remote.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_bigquery.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_checks_filter.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_databricks.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_dataframe.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_delta.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_gcs_csv_remote.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_gcs_json_remote.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_kafka.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_kafka_remote.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_local_json.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_local_json_nd.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_mysql.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_oracle.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_output_json.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_output_junit.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_parquet.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_postgres.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_quality.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_s3_csv.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_s3_delta.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_s3_json.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_s3_json_complex.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_s3_json_multiple_models.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_s3_json_remote.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_schema_evolution.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_server_not_found.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_snowflake.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_soda_connection_error.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/tests/test_test_sqlserver.py +0 -0
- {datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/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.12.
|
|
3
|
+
Version: 0.12.4
|
|
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
|
|
@@ -41,7 +41,7 @@ Provides-Extra: databricks
|
|
|
41
41
|
Requires-Dist: soda-core-spark-df<3.6.0,>=3.3.20; extra == "databricks"
|
|
42
42
|
Requires-Dist: soda-core-spark[databricks]<3.6.0,>=3.3.20; extra == "databricks"
|
|
43
43
|
Requires-Dist: databricks-sql-connector<4.3.0,>=3.7.0; extra == "databricks"
|
|
44
|
-
Requires-Dist: databricks-sdk<0.
|
|
44
|
+
Requires-Dist: databricks-sdk<0.110.0; extra == "databricks"
|
|
45
45
|
Requires-Dist: pyspark<5.0.0,>=3.5.0; extra == "databricks"
|
|
46
46
|
Provides-Extra: iceberg
|
|
47
47
|
Requires-Dist: pyiceberg==0.11.1; extra == "iceberg"
|
|
@@ -83,7 +83,7 @@ Provides-Extra: rdf
|
|
|
83
83
|
Requires-Dist: rdflib==7.6.0; extra == "rdf"
|
|
84
84
|
Provides-Extra: api
|
|
85
85
|
Requires-Dist: fastapi==0.136.1; extra == "api"
|
|
86
|
-
Requires-Dist: uvicorn<0.
|
|
86
|
+
Requires-Dist: uvicorn<0.48.0,>=0.44.0; extra == "api"
|
|
87
87
|
Provides-Extra: protobuf
|
|
88
88
|
Requires-Dist: protobuf<8.0,>=3.20; extra == "protobuf"
|
|
89
89
|
Provides-Extra: all
|
|
@@ -99,7 +99,7 @@ Requires-Dist: pre-commit<4.7.0,>=3.7.1; extra == "dev"
|
|
|
99
99
|
Requires-Dist: pytest; extra == "dev"
|
|
100
100
|
Requires-Dist: pytest-xdist; extra == "dev"
|
|
101
101
|
Requires-Dist: pymssql==2.3.13; extra == "dev"
|
|
102
|
-
Requires-Dist: ruff==0.15.
|
|
102
|
+
Requires-Dist: ruff==0.15.13; extra == "dev"
|
|
103
103
|
Requires-Dist: testcontainers[kafka,minio,mssql,mysql,postgres]==4.14.2; extra == "dev"
|
|
104
104
|
Requires-Dist: trino==0.337.0; extra == "dev"
|
|
105
105
|
Dynamic: license-file
|
|
@@ -6,7 +6,7 @@ from typing import Annotated, Optional
|
|
|
6
6
|
import pydantic
|
|
7
7
|
import typer
|
|
8
8
|
import yaml
|
|
9
|
-
from fastapi import Body, Depends, FastAPI, HTTPException, Query, status
|
|
9
|
+
from fastapi import Body, Depends, FastAPI, HTTPException, Query, Request, status
|
|
10
10
|
from fastapi.middleware.cors import CORSMiddleware
|
|
11
11
|
from fastapi.responses import PlainTextResponse
|
|
12
12
|
from fastapi.security.api_key import APIKeyHeader
|
|
@@ -305,6 +305,7 @@ def check_api_key(api_key_header: str | None):
|
|
|
305
305
|
response_model_exclude_unset=True,
|
|
306
306
|
)
|
|
307
307
|
async def test(
|
|
308
|
+
request: Request,
|
|
308
309
|
body: Annotated[
|
|
309
310
|
str,
|
|
310
311
|
Body(
|
|
@@ -332,7 +333,9 @@ async def test(
|
|
|
332
333
|
check_api_key(api_key)
|
|
333
334
|
logging.info("Testing data contract...")
|
|
334
335
|
logging.info(body)
|
|
335
|
-
return DataContract(
|
|
336
|
+
return DataContract(
|
|
337
|
+
data_contract_str=body, server=server, publish_url=publish_url, fastapi_url=str(request.url)
|
|
338
|
+
).test()
|
|
336
339
|
|
|
337
340
|
|
|
338
341
|
@app.post(
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import typing
|
|
3
|
+
from importlib import metadata
|
|
3
4
|
|
|
4
5
|
from open_data_contract_standard.model import OpenDataContractStandard, Team
|
|
5
6
|
|
|
@@ -36,6 +37,7 @@ class DataContract:
|
|
|
36
37
|
publish_test_results: bool = False,
|
|
37
38
|
all_errors: bool = False,
|
|
38
39
|
check_categories: set[str] | None = None,
|
|
40
|
+
fastapi_url: str = None,
|
|
39
41
|
):
|
|
40
42
|
self._data_contract_file = data_contract_file
|
|
41
43
|
self._data_contract_str = data_contract_str
|
|
@@ -51,6 +53,7 @@ class DataContract:
|
|
|
51
53
|
self._ssl_verification = ssl_verification
|
|
52
54
|
self._all_errors = all_errors
|
|
53
55
|
self._check_categories = check_categories
|
|
56
|
+
self._fastapi_url = fastapi_url
|
|
54
57
|
|
|
55
58
|
@classmethod
|
|
56
59
|
def init(cls, template: typing.Optional[str], schema: typing.Optional[str] = None) -> OpenDataContractStandard:
|
|
@@ -112,10 +115,22 @@ class DataContract:
|
|
|
112
115
|
run.finish()
|
|
113
116
|
return run
|
|
114
117
|
|
|
118
|
+
def _runtime_info(self) -> str:
|
|
119
|
+
try:
|
|
120
|
+
version = metadata.version("datacontract-cli")
|
|
121
|
+
except metadata.PackageNotFoundError:
|
|
122
|
+
version = "unknown"
|
|
123
|
+
if self._fastapi_url is not None:
|
|
124
|
+
execution = f"running through FastAPI at {self._fastapi_url}"
|
|
125
|
+
else:
|
|
126
|
+
execution = "running as CLI locally"
|
|
127
|
+
return f"Data Contract CLI {version} {execution}"
|
|
128
|
+
|
|
115
129
|
def test(self) -> Run:
|
|
116
130
|
run = Run.create_run()
|
|
117
131
|
try:
|
|
118
132
|
run.log_info("Testing data contract")
|
|
133
|
+
run.log_info(self._runtime_info())
|
|
119
134
|
data_contract = resolve.resolve_data_contract(
|
|
120
135
|
self._data_contract_file,
|
|
121
136
|
self._data_contract_str,
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/data_contract_checks.py
RENAMED
|
@@ -130,7 +130,11 @@ def to_schema_checks(schema_object: SchemaObject, server: Server) -> List[Check]
|
|
|
130
130
|
quoting_config = config
|
|
131
131
|
|
|
132
132
|
for prop in properties:
|
|
133
|
-
|
|
133
|
+
# ODCS: physicalName is the actual column name in the system under
|
|
134
|
+
# test. to_schema_name() already prefers schema_object.physicalName at
|
|
135
|
+
# the table level — mirror that at the field level so checks target the
|
|
136
|
+
# real column when the logical `name` differs from the physical one.
|
|
137
|
+
property_name = prop.physicalName or prop.name
|
|
134
138
|
|
|
135
139
|
checks.append(check_property_is_present(schema_name, property_name, quoting_config))
|
|
136
140
|
if check_types and (prop.physicalType is not None or prop.logicalType is not None):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: datacontract-cli
|
|
3
|
-
Version: 0.12.
|
|
3
|
+
Version: 0.12.4
|
|
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
|
|
@@ -41,7 +41,7 @@ Provides-Extra: databricks
|
|
|
41
41
|
Requires-Dist: soda-core-spark-df<3.6.0,>=3.3.20; extra == "databricks"
|
|
42
42
|
Requires-Dist: soda-core-spark[databricks]<3.6.0,>=3.3.20; extra == "databricks"
|
|
43
43
|
Requires-Dist: databricks-sql-connector<4.3.0,>=3.7.0; extra == "databricks"
|
|
44
|
-
Requires-Dist: databricks-sdk<0.
|
|
44
|
+
Requires-Dist: databricks-sdk<0.110.0; extra == "databricks"
|
|
45
45
|
Requires-Dist: pyspark<5.0.0,>=3.5.0; extra == "databricks"
|
|
46
46
|
Provides-Extra: iceberg
|
|
47
47
|
Requires-Dist: pyiceberg==0.11.1; extra == "iceberg"
|
|
@@ -83,7 +83,7 @@ Provides-Extra: rdf
|
|
|
83
83
|
Requires-Dist: rdflib==7.6.0; extra == "rdf"
|
|
84
84
|
Provides-Extra: api
|
|
85
85
|
Requires-Dist: fastapi==0.136.1; extra == "api"
|
|
86
|
-
Requires-Dist: uvicorn<0.
|
|
86
|
+
Requires-Dist: uvicorn<0.48.0,>=0.44.0; extra == "api"
|
|
87
87
|
Provides-Extra: protobuf
|
|
88
88
|
Requires-Dist: protobuf<8.0,>=3.20; extra == "protobuf"
|
|
89
89
|
Provides-Extra: all
|
|
@@ -99,7 +99,7 @@ Requires-Dist: pre-commit<4.7.0,>=3.7.1; extra == "dev"
|
|
|
99
99
|
Requires-Dist: pytest; extra == "dev"
|
|
100
100
|
Requires-Dist: pytest-xdist; extra == "dev"
|
|
101
101
|
Requires-Dist: pymssql==2.3.13; extra == "dev"
|
|
102
|
-
Requires-Dist: ruff==0.15.
|
|
102
|
+
Requires-Dist: ruff==0.15.13; extra == "dev"
|
|
103
103
|
Requires-Dist: testcontainers[kafka,minio,mssql,mysql,postgres]==4.14.2; extra == "dev"
|
|
104
104
|
Requires-Dist: trino==0.337.0; extra == "dev"
|
|
105
105
|
Dynamic: license-file
|
|
@@ -22,7 +22,7 @@ datacontract-cli[api,athena,bigquery,csv,databricks,dbml,duckdb,excel,iceberg,im
|
|
|
22
22
|
|
|
23
23
|
[api]
|
|
24
24
|
fastapi==0.136.1
|
|
25
|
-
uvicorn<0.
|
|
25
|
+
uvicorn<0.48.0,>=0.44.0
|
|
26
26
|
|
|
27
27
|
[athena]
|
|
28
28
|
soda-core-athena<3.6.0,>=3.3.20
|
|
@@ -40,7 +40,7 @@ pandas>=2.0.0
|
|
|
40
40
|
soda-core-spark-df<3.6.0,>=3.3.20
|
|
41
41
|
soda-core-spark[databricks]<3.6.0,>=3.3.20
|
|
42
42
|
databricks-sql-connector<4.3.0,>=3.7.0
|
|
43
|
-
databricks-sdk<0.
|
|
43
|
+
databricks-sdk<0.110.0
|
|
44
44
|
pyspark<5.0.0,>=3.5.0
|
|
45
45
|
|
|
46
46
|
[dbml]
|
|
@@ -57,7 +57,7 @@ pre-commit<4.7.0,>=3.7.1
|
|
|
57
57
|
pytest
|
|
58
58
|
pytest-xdist
|
|
59
59
|
pymssql==2.3.13
|
|
60
|
-
ruff==0.15.
|
|
60
|
+
ruff==0.15.13
|
|
61
61
|
testcontainers[kafka,minio,mssql,mysql,postgres]==4.14.2
|
|
62
62
|
trino==0.337.0
|
|
63
63
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "datacontract-cli"
|
|
3
|
-
version = "0.12.
|
|
3
|
+
version = "0.12.4"
|
|
4
4
|
description = "The datacontract CLI is an open source command-line tool for working with Data Contracts. It uses data contract YAML files to lint the data contract, connect to data sources and execute schema and quality tests, detect breaking changes, and export to different formats. The tool is written in Python. It can be used as a standalone CLI tool, in a CI/CD pipeline, or directly as a Python library."
|
|
5
5
|
license = "MIT"
|
|
6
6
|
readme = "README.md"
|
|
@@ -64,7 +64,7 @@ databricks = [
|
|
|
64
64
|
"soda-core-spark-df>=3.3.20,<3.6.0",
|
|
65
65
|
"soda-core-spark[databricks]>=3.3.20,<3.6.0",
|
|
66
66
|
"databricks-sql-connector>=3.7.0,<4.3.0",
|
|
67
|
-
"databricks-sdk<0.
|
|
67
|
+
"databricks-sdk<0.110.0",
|
|
68
68
|
"pyspark>=3.5.0,<5.0.0",
|
|
69
69
|
]
|
|
70
70
|
|
|
@@ -140,7 +140,7 @@ rdf = [
|
|
|
140
140
|
|
|
141
141
|
api = [
|
|
142
142
|
"fastapi==0.136.1",
|
|
143
|
-
"uvicorn>=0.44.0,<0.
|
|
143
|
+
"uvicorn>=0.44.0,<0.48.0",
|
|
144
144
|
]
|
|
145
145
|
|
|
146
146
|
protobuf = [
|
|
@@ -165,7 +165,7 @@ dev = [
|
|
|
165
165
|
"pytest",
|
|
166
166
|
"pytest-xdist",
|
|
167
167
|
"pymssql==2.3.13",
|
|
168
|
-
"ruff==0.15.
|
|
168
|
+
"ruff==0.15.13",
|
|
169
169
|
"testcontainers[minio,postgres,kafka,mssql,mysql]==4.14.2",
|
|
170
170
|
"trino==0.337.0",
|
|
171
171
|
]
|
|
@@ -188,8 +188,14 @@ build-backend = "setuptools.build_meta"
|
|
|
188
188
|
# "Character set 'utf8' unsupported". Override to allow newer
|
|
189
189
|
# mysql-connector-python releases that know about the current charsets.
|
|
190
190
|
# See: https://github.com/sodadata/soda-core/issues/2515
|
|
191
|
+
#
|
|
192
|
+
# yarl 1.24.0 and 1.24.1 were published to PyPI with cp310-only wheels and no
|
|
193
|
+
# sdist, so `uv sync` fails on Python 3.11/3.12/3.13 ("no wheel for the current
|
|
194
|
+
# platform"). The whole 1.24.x line is affected; pin below it (resolves to the
|
|
195
|
+
# last good 1.23.0) until a 1.24.x with full wheels is available.
|
|
191
196
|
override-dependencies = [
|
|
192
197
|
"mysql-connector-python>=8.0.30,<9.7.0",
|
|
198
|
+
"yarl<1.24",
|
|
193
199
|
]
|
|
194
200
|
|
|
195
201
|
[tool.pytest.ini_options]
|
|
@@ -526,3 +526,47 @@ def test_freshness_check_backticks_special_field_on_databricks():
|
|
|
526
526
|
impl = yaml.safe_load(check.implementation)
|
|
527
527
|
keys = list(impl["checks for events"][0].keys())
|
|
528
528
|
assert keys == ["freshness(`$file_modified_time`) < 24h"]
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
# --- Field-level physicalName resolution (ODCS) ---
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
def test_field_checks_use_physical_name_when_set():
|
|
535
|
+
"""When a property declares a physicalName, field checks must target it.
|
|
536
|
+
|
|
537
|
+
physicalName is the actual column name in the system under test. The
|
|
538
|
+
table level already prefers physicalName (to_schema_name); the field
|
|
539
|
+
level must do the same, otherwise a contract with a logical name like
|
|
540
|
+
`brand` and physicalName `BRAND` fails "required column missing" even
|
|
541
|
+
though the BRAND column exists.
|
|
542
|
+
"""
|
|
543
|
+
schema_object = SchemaObject(
|
|
544
|
+
name="orders",
|
|
545
|
+
properties=[SchemaProperty(name="brand", physicalName="BRAND", logicalType="string")],
|
|
546
|
+
)
|
|
547
|
+
|
|
548
|
+
checks = to_schema_checks(schema_object=schema_object, server=Server(type="snowflake"))
|
|
549
|
+
|
|
550
|
+
present = next(c for c in checks if c.type == "field_is_present")
|
|
551
|
+
assert present.field == "BRAND"
|
|
552
|
+
# Key is "checks for <model>" (model name may be quoted per dialect) — read
|
|
553
|
+
# it positionally rather than hardcoding the dialect-specific spelling.
|
|
554
|
+
impl = yaml.safe_load(present.implementation)
|
|
555
|
+
(sodacl_checks,) = impl.values()
|
|
556
|
+
assert sodacl_checks[0]["schema"]["fail"]["when required column missing"] == ["BRAND"]
|
|
557
|
+
|
|
558
|
+
type_check = next(c for c in checks if c.type == "field_type")
|
|
559
|
+
assert type_check.field == "BRAND"
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
def test_field_checks_fall_back_to_name_without_physical_name():
|
|
563
|
+
"""Without physicalName, field checks use the logical name (unchanged)."""
|
|
564
|
+
schema_object = SchemaObject(
|
|
565
|
+
name="orders",
|
|
566
|
+
properties=[SchemaProperty(name="sku", logicalType="string")],
|
|
567
|
+
)
|
|
568
|
+
|
|
569
|
+
checks = to_schema_checks(schema_object=schema_object, server=Server(type="snowflake"))
|
|
570
|
+
|
|
571
|
+
present = next(c for c in checks if c.type == "field_is_present")
|
|
572
|
+
assert present.field == "sku"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/data_contract_test.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/check_soda_execute.py
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/athena.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/impala.py
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/kafka.py
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/mysql.py
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/oracle.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/engines/soda/connections/trino.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/avro_idl_exporter.py
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/bigquery_exporter.py
RENAMED
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/data_caterer_exporter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/duckdb_type_converter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/jsonschema_exporter.py
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/markdown_exporter.py
RENAMED
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/odcs_export_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/pandas_type_converter.py
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/protobuf_exporter.py
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/pydantic_exporter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/sql_type_converter.py
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/export/sqlalchemy_exporter.py
RENAMED
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/bigquery_importer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/iceberg_importer.py
RENAMED
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/importer_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/jsonschema_importer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/parquet_importer.py
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/imports/protobuf_importer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/integration/dbt_test_mapping.py
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/integration/entropy_data.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/output/json_test_results.py
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/output/junit_test_results.py
RENAMED
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/output/test_results_writer.py
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/output/text_changelog_results.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/schemas/odcs-3.0.1.schema.json
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/schemas/odcs-3.0.2.schema.json
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/schemas/odcs-3.1.0.init.yaml
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/schemas/odcs-3.1.0.schema.json
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/templates/datacontract.html
RENAMED
|
File without changes
|
{datacontract_cli-0.12.3 → datacontract_cli-0.12.4}/datacontract/templates/datacontract_odcs.html
RENAMED
|
File without changes
|