datacontract-cli 0.10.24__tar.gz → 0.10.26__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.24/datacontract_cli.egg-info → datacontract_cli-0.10.26}/PKG-INFO +59 -18
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/README.md +49 -12
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/api.py +3 -3
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/cli.py +1 -1
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/engines/soda/connections/kafka.py +2 -1
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/great_expectations_converter.py +49 -2
- datacontract_cli-0.10.26/datacontract/export/odcs_v3_exporter.py +377 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/spark_converter.py +1 -1
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/sql_converter.py +4 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/sql_type_converter.py +2 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/imports/avro_importer.py +23 -23
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/imports/csv_importer.py +2 -2
- datacontract_cli-0.10.26/datacontract/imports/excel_importer.py +850 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/imports/importer.py +4 -2
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/imports/importer_factory.py +5 -0
- datacontract_cli-0.10.26/datacontract/imports/odcs_v3_importer.py +415 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/imports/protobuf_importer.py +0 -2
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/imports/spark_importer.py +2 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/lint/linters/description_linter.py +1 -3
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/lint/linters/field_reference_linter.py +1 -2
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/lint/linters/notice_period_linter.py +2 -2
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/lint/linters/valid_constraints_linter.py +3 -3
- datacontract_cli-0.10.26/datacontract/model/data_contract_specification/__init__.py +1 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26/datacontract_cli.egg-info}/PKG-INFO +59 -18
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract_cli.egg-info/SOURCES.txt +3 -1
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract_cli.egg-info/requires.txt +9 -4
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/pyproject.toml +16 -6
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_great_expectations.py +103 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_odcs_v3.py +11 -6
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_sql.py +11 -11
- datacontract_cli-0.10.26/tests/test_import_excel.py +40 -0
- datacontract_cli-0.10.24/datacontract/export/odcs_v3_exporter.py +0 -334
- datacontract_cli-0.10.24/datacontract/imports/odcs_v3_importer.py +0 -358
- datacontract_cli-0.10.24/datacontract/model/data_contract_specification.py +0 -327
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/LICENSE +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/MANIFEST.in +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/__init__.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/breaking/breaking.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/breaking/breaking_change.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/breaking/breaking_rules.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/catalog/catalog.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/data_contract.py +0 -0
- {datacontract_cli-0.10.24/datacontract/output → datacontract_cli-0.10.26/datacontract/engines}/__init__.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/engines/data_contract_checks.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/engines/data_contract_test.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/engines/datacontract/check_that_datacontract_contains_valid_servers_configuration.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/engines/datacontract/check_that_datacontract_file_exists.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/engines/fastjsonschema/check_jsonschema.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/engines/fastjsonschema/s3/s3_read_files.py +0 -0
- {datacontract_cli-0.10.24/datacontract/lint/linters → datacontract_cli-0.10.26/datacontract/engines/soda}/__init__.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/engines/soda/check_soda_execute.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/engines/soda/connections/bigquery.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/engines/soda/connections/databricks.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/engines/soda/connections/duckdb_connection.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/engines/soda/connections/postgres.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/engines/soda/connections/snowflake.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/engines/soda/connections/sqlserver.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/engines/soda/connections/trino.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/__init__.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/avro_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/avro_idl_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/bigquery_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/custom_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/data_caterer_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/dbml_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/dbt_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/dcs_exporter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/duckdb_type_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/exporter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/exporter_factory.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/go_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/html_export.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/iceberg_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/jsonschema_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/markdown_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/pandas_type_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/protobuf_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/pydantic_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/rdf_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/sodacl_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/sqlalchemy_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/export/terraform_converter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/imports/bigquery_importer.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/imports/dbml_importer.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/imports/dbt_importer.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/imports/glue_importer.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/imports/iceberg_importer.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/imports/jsonschema_importer.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/imports/odcs_importer.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/imports/parquet_importer.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/imports/sql_importer.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/imports/unity_importer.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/init/init_template.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/integration/datamesh_manager.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/lint/files.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/lint/lint.py +0 -0
- {datacontract_cli-0.10.24/datacontract/engines/soda → datacontract_cli-0.10.26/datacontract/lint/linters}/__init__.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/lint/linters/field_pattern_linter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/lint/resolve.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/lint/resources.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/lint/schema.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/lint/urls.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/model/exceptions.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/model/odcs.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/model/run.py +0 -0
- {datacontract_cli-0.10.24/datacontract/engines → datacontract_cli-0.10.26/datacontract/output}/__init__.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/output/junit_test_results.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/output/output_format.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/output/test_results_writer.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/py.typed +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/schemas/datacontract-1.1.0.init.yaml +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/schemas/datacontract-1.1.0.schema.json +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/schemas/odcs-3.0.1.schema.json +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/templates/datacontract.html +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/templates/index.html +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/templates/partials/datacontract_information.html +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/templates/partials/datacontract_servicelevels.html +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/templates/partials/datacontract_terms.html +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/templates/partials/definition.html +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/templates/partials/example.html +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/templates/partials/model_field.html +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/templates/partials/quality.html +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/templates/partials/server.html +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/templates/style/output.css +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract_cli.egg-info/dependency_links.txt +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract_cli.egg-info/entry_points.txt +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract_cli.egg-info/top_level.txt +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/setup.cfg +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_api.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_breaking.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_catalog.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_changelog.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_cli.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_data_contract_checks.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_data_contract_specification.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_description_linter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_documentation_linter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_download_datacontract_file.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_duckdb_json.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_avro.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_avro_idl.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_bigquery.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_complex_data_contract.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_custom.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_custom_exporter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_data_caterer.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_dbml.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_dbt_models.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_dbt_sources.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_dbt_staging_sql.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_go.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_html.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_iceberg.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_jsonschema.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_markdown.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_protobuf.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_pydantic.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_rdf.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_sodacl.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_spark.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_sql_query.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_sqlalchemy.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_export_terraform.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_field_constraint_linter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_field_pattern_linter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_field_reference_linter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_import_avro.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_import_bigquery.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_import_csv.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_import_dbml.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_import_dbt.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_import_glue.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_import_iceberg.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_import_jsonschema.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_import_odcs_v3.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_import_parquet.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_import_protobuf.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_import_spark.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_import_sql_postgres.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_import_sql_sqlserver.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_import_unity_file.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_integration_datameshmanager.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_lint.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_notice_period_linter.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_resolve.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_roundtrip_jsonschema.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_spec_fields_field.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_spec_ref.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_azure_remote.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_bigquery.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_databricks.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_dataframe.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_delta.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_gcs_json_remote.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_kafka.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_kafka_remote.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_local_json.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_output_junit.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_parquet.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_postgres.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_quality.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_s3_csv.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_s3_delta.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_s3_json.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_s3_json_complex.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_s3_json_multiple_models.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_s3_json_remote.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_snowflake.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_sqlserver.py +0 -0
- {datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/tests/test_test_trino.py +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: datacontract-cli
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.26
|
|
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
|
+
License-Expression: MIT
|
|
6
7
|
Project-URL: Homepage, https://cli.datacontract.com
|
|
7
8
|
Project-URL: Issues, https://github.com/datacontract/datacontract-cli/issues
|
|
8
9
|
Classifier: Programming Language :: Python :: 3
|
|
9
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
11
|
Requires-Python: >=3.10
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
@@ -28,17 +28,21 @@ Requires-Dist: python-dotenv<2.0.0,>=1.0.0
|
|
|
28
28
|
Requires-Dist: boto3<2.0.0,>=1.34.41
|
|
29
29
|
Requires-Dist: Jinja2<4.0.0,>=3.1.5
|
|
30
30
|
Requires-Dist: jinja_partials<1.0.0,>=0.2.1
|
|
31
|
+
Requires-Dist: datacontract-specification<2.0.0,>=1.1.1
|
|
32
|
+
Requires-Dist: open-data-contract-standard<4.0.0,>=3.0.4
|
|
31
33
|
Provides-Extra: avro
|
|
32
34
|
Requires-Dist: avro==1.12.0; extra == "avro"
|
|
33
35
|
Provides-Extra: bigquery
|
|
34
36
|
Requires-Dist: soda-core-bigquery<3.6.0,>=3.3.20; extra == "bigquery"
|
|
35
37
|
Provides-Extra: csv
|
|
36
38
|
Requires-Dist: pandas>=2.0.0; extra == "csv"
|
|
39
|
+
Provides-Extra: excel
|
|
40
|
+
Requires-Dist: openpyxl<4.0.0,>=3.1.5; extra == "excel"
|
|
37
41
|
Provides-Extra: databricks
|
|
38
42
|
Requires-Dist: soda-core-spark-df<3.6.0,>=3.3.20; extra == "databricks"
|
|
39
43
|
Requires-Dist: soda-core-spark[databricks]<3.6.0,>=3.3.20; extra == "databricks"
|
|
40
44
|
Requires-Dist: databricks-sql-connector<4.1.0,>=3.7.0; extra == "databricks"
|
|
41
|
-
Requires-Dist: databricks-sdk<0.
|
|
45
|
+
Requires-Dist: databricks-sdk<0.51.0; extra == "databricks"
|
|
42
46
|
Provides-Extra: iceberg
|
|
43
47
|
Requires-Dist: pyiceberg==0.8.1; extra == "iceberg"
|
|
44
48
|
Provides-Extra: kafka
|
|
@@ -66,11 +70,11 @@ Provides-Extra: rdf
|
|
|
66
70
|
Requires-Dist: rdflib==7.0.0; extra == "rdf"
|
|
67
71
|
Provides-Extra: api
|
|
68
72
|
Requires-Dist: fastapi==0.115.12; extra == "api"
|
|
69
|
-
Requires-Dist: uvicorn==0.34.
|
|
73
|
+
Requires-Dist: uvicorn==0.34.2; extra == "api"
|
|
70
74
|
Provides-Extra: protobuf
|
|
71
75
|
Requires-Dist: grpcio-tools>=1.53; extra == "protobuf"
|
|
72
76
|
Provides-Extra: all
|
|
73
|
-
Requires-Dist: datacontract-cli[api,bigquery,csv,databricks,dbml,dbt,iceberg,kafka,parquet,postgres,protobuf,rdf,s3,snowflake,sqlserver,trino]; extra == "all"
|
|
77
|
+
Requires-Dist: datacontract-cli[api,bigquery,csv,databricks,dbml,dbt,excel,iceberg,kafka,parquet,postgres,protobuf,rdf,s3,snowflake,sqlserver,trino]; extra == "all"
|
|
74
78
|
Provides-Extra: dev
|
|
75
79
|
Requires-Dist: datacontract-cli[all]; extra == "dev"
|
|
76
80
|
Requires-Dist: httpx==0.28.1; extra == "dev"
|
|
@@ -80,7 +84,7 @@ Requires-Dist: pandas>=2.1.0; extra == "dev"
|
|
|
80
84
|
Requires-Dist: pre-commit<4.3.0,>=3.7.1; extra == "dev"
|
|
81
85
|
Requires-Dist: pytest; extra == "dev"
|
|
82
86
|
Requires-Dist: pytest-xdist; extra == "dev"
|
|
83
|
-
Requires-Dist: pymssql==2.3.
|
|
87
|
+
Requires-Dist: pymssql==2.3.4; extra == "dev"
|
|
84
88
|
Requires-Dist: ruff; extra == "dev"
|
|
85
89
|
Requires-Dist: testcontainers[kafka,minio,mssql,postgres]==4.9.2; extra == "dev"
|
|
86
90
|
Requires-Dist: trino==0.333.0; extra == "dev"
|
|
@@ -900,6 +904,29 @@ models:
|
|
|
900
904
|
| `DATACONTRACT_TRINO_PASSWORD` | `mysecretpassword` | Password |
|
|
901
905
|
|
|
902
906
|
|
|
907
|
+
#### Local
|
|
908
|
+
|
|
909
|
+
Data Contract CLI can test local files in parquet, json, csv, or delta format.
|
|
910
|
+
|
|
911
|
+
##### Example
|
|
912
|
+
|
|
913
|
+
datacontract.yaml
|
|
914
|
+
```yaml
|
|
915
|
+
servers:
|
|
916
|
+
local:
|
|
917
|
+
type: local
|
|
918
|
+
path: ./*.parquet
|
|
919
|
+
format: parquet
|
|
920
|
+
models:
|
|
921
|
+
my_table_1: # corresponds to a table
|
|
922
|
+
type: table
|
|
923
|
+
fields:
|
|
924
|
+
my_column_1: # corresponds to a column
|
|
925
|
+
type: varchar
|
|
926
|
+
my_column_2: # corresponds to a column
|
|
927
|
+
type: string
|
|
928
|
+
```
|
|
929
|
+
|
|
903
930
|
|
|
904
931
|
### export
|
|
905
932
|
```
|
|
@@ -1370,20 +1397,21 @@ Available import options:
|
|
|
1370
1397
|
|
|
1371
1398
|
| Type | Description | Status |
|
|
1372
1399
|
|--------------------|------------------------------------------------|--------|
|
|
1373
|
-
| `sql` | Import from SQL DDL | ✅ |
|
|
1374
1400
|
| `avro` | Import from AVRO schemas | ✅ |
|
|
1375
|
-
| `glue` | Import from AWS Glue DataCatalog | ✅ |
|
|
1376
|
-
| `jsonschema` | Import from JSON Schemas | ✅ |
|
|
1377
1401
|
| `bigquery` | Import from BigQuery Schemas | ✅ |
|
|
1378
|
-
| `
|
|
1402
|
+
| `csv` | Import from CSV File | ✅ |
|
|
1403
|
+
| `dbml` | Import from DBML models | ✅ |
|
|
1379
1404
|
| `dbt` | Import from dbt models | ✅ |
|
|
1405
|
+
| `excel` | Import from ODCS Excel Template | ✅ |
|
|
1406
|
+
| `glue` | Import from AWS Glue DataCatalog | ✅ |
|
|
1407
|
+
| `iceberg` | Import from an Iceberg JSON Schema Definition | partial |
|
|
1408
|
+
| `jsonschema` | Import from JSON Schemas | ✅ |
|
|
1380
1409
|
| `odcs` | Import from Open Data Contract Standard (ODCS) | ✅ |
|
|
1381
|
-
| `
|
|
1382
|
-
| `dbml` | Import from DBML models | ✅ |
|
|
1383
|
-
| `csv` | Import from CSV File | ✅ |
|
|
1410
|
+
| `parquet` | Import from Parquet File Metadata | ✅ |
|
|
1384
1411
|
| `protobuf` | Import from Protobuf schemas | ✅ |
|
|
1385
|
-
| `
|
|
1386
|
-
| `
|
|
1412
|
+
| `spark` | Import from Spark StructTypes | ✅ |
|
|
1413
|
+
| `sql` | Import from SQL DDL | ✅ |
|
|
1414
|
+
| `unity` | Import from Databricks Unity Catalog | partial |
|
|
1387
1415
|
| Missing something? | Please create an issue on GitHub | TBD |
|
|
1388
1416
|
|
|
1389
1417
|
|
|
@@ -1433,8 +1461,9 @@ datacontract import --format unity --source my_unity_table.json
|
|
|
1433
1461
|
|
|
1434
1462
|
```bash
|
|
1435
1463
|
# Example import single table from Unity Catalog via HTTP endpoint
|
|
1436
|
-
export
|
|
1437
|
-
export
|
|
1464
|
+
export DATACONTRACT_DATABRICKS_SERVER_HOSTNAME="https://xyz.cloud.databricks.com"
|
|
1465
|
+
export DATACONTRACT_DATABRICKS_HTTP_PATH="/sql/1.0/warehouses/b053a331fa014fb4"
|
|
1466
|
+
export DATACONTRACT_DATABRICKS_TOKEN=<token>
|
|
1438
1467
|
datacontract import --format unity --unity-table-full-name <table_full_name>
|
|
1439
1468
|
```
|
|
1440
1469
|
|
|
@@ -1455,6 +1484,17 @@ datacontract import --format dbt --source <manifest_path> --dbt-model <model_nam
|
|
|
1455
1484
|
datacontract import --format dbt --source <manifest_path>
|
|
1456
1485
|
```
|
|
1457
1486
|
|
|
1487
|
+
### Excel
|
|
1488
|
+
|
|
1489
|
+
Importing from [ODCS Excel Template](https://github.com/datacontract/open-data-contract-standard-excel-template).
|
|
1490
|
+
|
|
1491
|
+
Examples:
|
|
1492
|
+
|
|
1493
|
+
```bash
|
|
1494
|
+
# Example import from ODCS Excel Template
|
|
1495
|
+
datacontract import --format excel --source odcs.xlsx
|
|
1496
|
+
```
|
|
1497
|
+
|
|
1458
1498
|
#### Glue
|
|
1459
1499
|
|
|
1460
1500
|
Importing from Glue reads the necessary Data directly off of the AWS API.
|
|
@@ -1994,7 +2034,8 @@ pytest
|
|
|
1994
2034
|
```bash
|
|
1995
2035
|
# make sure uv is installed
|
|
1996
2036
|
uv python pin 3.11
|
|
1997
|
-
uv
|
|
2037
|
+
uv pip install -e '.[dev]'
|
|
2038
|
+
uv run ruff check
|
|
1998
2039
|
uv run pytest
|
|
1999
2040
|
```
|
|
2000
2041
|
|
|
@@ -812,6 +812,29 @@ models:
|
|
|
812
812
|
| `DATACONTRACT_TRINO_PASSWORD` | `mysecretpassword` | Password |
|
|
813
813
|
|
|
814
814
|
|
|
815
|
+
#### Local
|
|
816
|
+
|
|
817
|
+
Data Contract CLI can test local files in parquet, json, csv, or delta format.
|
|
818
|
+
|
|
819
|
+
##### Example
|
|
820
|
+
|
|
821
|
+
datacontract.yaml
|
|
822
|
+
```yaml
|
|
823
|
+
servers:
|
|
824
|
+
local:
|
|
825
|
+
type: local
|
|
826
|
+
path: ./*.parquet
|
|
827
|
+
format: parquet
|
|
828
|
+
models:
|
|
829
|
+
my_table_1: # corresponds to a table
|
|
830
|
+
type: table
|
|
831
|
+
fields:
|
|
832
|
+
my_column_1: # corresponds to a column
|
|
833
|
+
type: varchar
|
|
834
|
+
my_column_2: # corresponds to a column
|
|
835
|
+
type: string
|
|
836
|
+
```
|
|
837
|
+
|
|
815
838
|
|
|
816
839
|
### export
|
|
817
840
|
```
|
|
@@ -1282,20 +1305,21 @@ Available import options:
|
|
|
1282
1305
|
|
|
1283
1306
|
| Type | Description | Status |
|
|
1284
1307
|
|--------------------|------------------------------------------------|--------|
|
|
1285
|
-
| `sql` | Import from SQL DDL | ✅ |
|
|
1286
1308
|
| `avro` | Import from AVRO schemas | ✅ |
|
|
1287
|
-
| `glue` | Import from AWS Glue DataCatalog | ✅ |
|
|
1288
|
-
| `jsonschema` | Import from JSON Schemas | ✅ |
|
|
1289
1309
|
| `bigquery` | Import from BigQuery Schemas | ✅ |
|
|
1290
|
-
| `
|
|
1310
|
+
| `csv` | Import from CSV File | ✅ |
|
|
1311
|
+
| `dbml` | Import from DBML models | ✅ |
|
|
1291
1312
|
| `dbt` | Import from dbt models | ✅ |
|
|
1313
|
+
| `excel` | Import from ODCS Excel Template | ✅ |
|
|
1314
|
+
| `glue` | Import from AWS Glue DataCatalog | ✅ |
|
|
1315
|
+
| `iceberg` | Import from an Iceberg JSON Schema Definition | partial |
|
|
1316
|
+
| `jsonschema` | Import from JSON Schemas | ✅ |
|
|
1292
1317
|
| `odcs` | Import from Open Data Contract Standard (ODCS) | ✅ |
|
|
1293
|
-
| `
|
|
1294
|
-
| `dbml` | Import from DBML models | ✅ |
|
|
1295
|
-
| `csv` | Import from CSV File | ✅ |
|
|
1318
|
+
| `parquet` | Import from Parquet File Metadata | ✅ |
|
|
1296
1319
|
| `protobuf` | Import from Protobuf schemas | ✅ |
|
|
1297
|
-
| `
|
|
1298
|
-
| `
|
|
1320
|
+
| `spark` | Import from Spark StructTypes | ✅ |
|
|
1321
|
+
| `sql` | Import from SQL DDL | ✅ |
|
|
1322
|
+
| `unity` | Import from Databricks Unity Catalog | partial |
|
|
1299
1323
|
| Missing something? | Please create an issue on GitHub | TBD |
|
|
1300
1324
|
|
|
1301
1325
|
|
|
@@ -1345,8 +1369,9 @@ datacontract import --format unity --source my_unity_table.json
|
|
|
1345
1369
|
|
|
1346
1370
|
```bash
|
|
1347
1371
|
# Example import single table from Unity Catalog via HTTP endpoint
|
|
1348
|
-
export
|
|
1349
|
-
export
|
|
1372
|
+
export DATACONTRACT_DATABRICKS_SERVER_HOSTNAME="https://xyz.cloud.databricks.com"
|
|
1373
|
+
export DATACONTRACT_DATABRICKS_HTTP_PATH="/sql/1.0/warehouses/b053a331fa014fb4"
|
|
1374
|
+
export DATACONTRACT_DATABRICKS_TOKEN=<token>
|
|
1350
1375
|
datacontract import --format unity --unity-table-full-name <table_full_name>
|
|
1351
1376
|
```
|
|
1352
1377
|
|
|
@@ -1367,6 +1392,17 @@ datacontract import --format dbt --source <manifest_path> --dbt-model <model_nam
|
|
|
1367
1392
|
datacontract import --format dbt --source <manifest_path>
|
|
1368
1393
|
```
|
|
1369
1394
|
|
|
1395
|
+
### Excel
|
|
1396
|
+
|
|
1397
|
+
Importing from [ODCS Excel Template](https://github.com/datacontract/open-data-contract-standard-excel-template).
|
|
1398
|
+
|
|
1399
|
+
Examples:
|
|
1400
|
+
|
|
1401
|
+
```bash
|
|
1402
|
+
# Example import from ODCS Excel Template
|
|
1403
|
+
datacontract import --format excel --source odcs.xlsx
|
|
1404
|
+
```
|
|
1405
|
+
|
|
1370
1406
|
#### Glue
|
|
1371
1407
|
|
|
1372
1408
|
Importing from Glue reads the necessary Data directly off of the AWS API.
|
|
@@ -1906,7 +1942,8 @@ pytest
|
|
|
1906
1942
|
```bash
|
|
1907
1943
|
# make sure uv is installed
|
|
1908
1944
|
uv python pin 3.11
|
|
1909
|
-
uv
|
|
1945
|
+
uv pip install -e '.[dev]'
|
|
1946
|
+
uv run ruff check
|
|
1910
1947
|
uv run pytest
|
|
1911
1948
|
```
|
|
1912
1949
|
|
|
@@ -162,7 +162,7 @@ async def test(
|
|
|
162
162
|
server: Annotated[
|
|
163
163
|
str | None,
|
|
164
164
|
Query(
|
|
165
|
-
|
|
165
|
+
examples=["production"],
|
|
166
166
|
description="The server name to test. Optional, if there is only one server.",
|
|
167
167
|
),
|
|
168
168
|
] = None,
|
|
@@ -191,7 +191,7 @@ async def lint(
|
|
|
191
191
|
schema: Annotated[
|
|
192
192
|
str | None,
|
|
193
193
|
Query(
|
|
194
|
-
|
|
194
|
+
examples=["https://datacontract.com/datacontract.schema.json"],
|
|
195
195
|
description="The schema to use for validation. This must be a URL.",
|
|
196
196
|
),
|
|
197
197
|
] = None,
|
|
@@ -220,7 +220,7 @@ def export(
|
|
|
220
220
|
server: Annotated[
|
|
221
221
|
str | None,
|
|
222
222
|
Query(
|
|
223
|
-
|
|
223
|
+
examples=["production"],
|
|
224
224
|
description="The server name to export. Optional, if there is only one server.",
|
|
225
225
|
),
|
|
226
226
|
] = None,
|
|
@@ -244,7 +244,7 @@ def import_(
|
|
|
244
244
|
] = None,
|
|
245
245
|
source: Annotated[
|
|
246
246
|
Optional[str],
|
|
247
|
-
typer.Option(help="The path to the file
|
|
247
|
+
typer.Option(help="The path to the file that should be imported."),
|
|
248
248
|
] = None,
|
|
249
249
|
dialect: Annotated[
|
|
250
250
|
Optional[str],
|
{datacontract_cli-0.10.24 → datacontract_cli-0.10.26}/datacontract/engines/soda/connections/kafka.py
RENAMED
|
@@ -27,6 +27,7 @@ def create_spark_session():
|
|
|
27
27
|
tmp_dir = tempfile.TemporaryDirectory(prefix="datacontract-cli-spark")
|
|
28
28
|
atexit.register(tmp_dir.cleanup)
|
|
29
29
|
|
|
30
|
+
pyspark_version = "3.5.5" # MUST be the same as in the pyproject.toml
|
|
30
31
|
spark = (
|
|
31
32
|
SparkSession.builder.appName("datacontract")
|
|
32
33
|
.config("spark.sql.warehouse.dir", f"{tmp_dir}/spark-warehouse")
|
|
@@ -34,7 +35,7 @@ def create_spark_session():
|
|
|
34
35
|
.config("spark.ui.enabled", "false")
|
|
35
36
|
.config(
|
|
36
37
|
"spark.jars.packages",
|
|
37
|
-
"org.apache.spark:spark-sql-kafka-0-10_2.12:
|
|
38
|
+
f"org.apache.spark:spark-sql-kafka-0-10_2.12:{pyspark_version},org.apache.spark:spark-avro_2.12:{pyspark_version}",
|
|
38
39
|
)
|
|
39
40
|
.getOrCreate()
|
|
40
41
|
)
|
|
@@ -19,6 +19,7 @@ from datacontract.export.spark_converter import to_spark_data_type
|
|
|
19
19
|
from datacontract.export.sql_type_converter import convert_to_sql_type
|
|
20
20
|
from datacontract.model.data_contract_specification import (
|
|
21
21
|
DataContractSpecification,
|
|
22
|
+
DeprecatedQuality,
|
|
22
23
|
Field,
|
|
23
24
|
Quality,
|
|
24
25
|
)
|
|
@@ -91,8 +92,14 @@ def to_great_expectations(
|
|
|
91
92
|
model_key=model_key, contract_version=data_contract_spec.info.version
|
|
92
93
|
)
|
|
93
94
|
model_value = data_contract_spec.models.get(model_key)
|
|
94
|
-
|
|
95
|
+
|
|
96
|
+
# Support for Deprecated Quality
|
|
97
|
+
quality_checks = get_deprecated_quality_checks(data_contract_spec.quality)
|
|
98
|
+
|
|
99
|
+
expectations.extend(get_quality_checks(model_value.quality))
|
|
100
|
+
|
|
95
101
|
expectations.extend(model_to_expectations(model_value.fields, engine, sql_server_type))
|
|
102
|
+
|
|
96
103
|
expectations.extend(checks_to_expectations(quality_checks, model_key))
|
|
97
104
|
model_expectation_suite = to_suite(expectations, expectation_suite_name)
|
|
98
105
|
|
|
@@ -135,6 +142,7 @@ def model_to_expectations(fields: Dict[str, Field], engine: str | None, sql_serv
|
|
|
135
142
|
add_column_order_exp(fields, expectations)
|
|
136
143
|
for field_name, field in fields.items():
|
|
137
144
|
add_field_expectations(field_name, field, expectations, engine, sql_server_type)
|
|
145
|
+
expectations.extend(get_quality_checks(field.quality, field_name))
|
|
138
146
|
return expectations
|
|
139
147
|
|
|
140
148
|
|
|
@@ -173,6 +181,8 @@ def add_field_expectations(
|
|
|
173
181
|
expectations.append(to_column_length_exp(field_name, field.minLength, field.maxLength))
|
|
174
182
|
if field.minimum is not None or field.maximum is not None:
|
|
175
183
|
expectations.append(to_column_min_max_exp(field_name, field.minimum, field.maximum))
|
|
184
|
+
if field.enum is not None and len(field.enum) != 0:
|
|
185
|
+
expectations.append(to_column_enum_exp(field_name, field.enum))
|
|
176
186
|
|
|
177
187
|
return expectations
|
|
178
188
|
|
|
@@ -266,7 +276,24 @@ def to_column_min_max_exp(field_name, minimum, maximum) -> Dict[str, Any]:
|
|
|
266
276
|
}
|
|
267
277
|
|
|
268
278
|
|
|
269
|
-
def
|
|
279
|
+
def to_column_enum_exp(field_name, enum_list: List[str]) -> Dict[str, Any]:
|
|
280
|
+
"""Creates a expect_column_values_to_be_in_set expectation.
|
|
281
|
+
|
|
282
|
+
Args:
|
|
283
|
+
field_name (str): The name of the field.
|
|
284
|
+
enum_list (Set[str]): enum list of value.
|
|
285
|
+
|
|
286
|
+
Returns:
|
|
287
|
+
Dict[str, Any]: Column value in set expectation.
|
|
288
|
+
"""
|
|
289
|
+
return {
|
|
290
|
+
"expectation_type": "expect_column_values_to_be_in_set",
|
|
291
|
+
"kwargs": {"column": field_name, "value_set": enum_list},
|
|
292
|
+
"meta": {},
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
def get_deprecated_quality_checks(quality: DeprecatedQuality) -> Dict[str, Any]:
|
|
270
297
|
"""Retrieves quality checks defined in a data contract.
|
|
271
298
|
|
|
272
299
|
Args:
|
|
@@ -288,6 +315,26 @@ def get_quality_checks(quality: Quality) -> Dict[str, Any]:
|
|
|
288
315
|
return quality_specification
|
|
289
316
|
|
|
290
317
|
|
|
318
|
+
def get_quality_checks(qualities: List[Quality], field_name: str | None = None) -> List[Dict[str, Any]]:
|
|
319
|
+
"""Retrieves quality checks defined in a data contract.
|
|
320
|
+
|
|
321
|
+
Args:
|
|
322
|
+
qualities (List[Quality]): List of quality object from the model specification.
|
|
323
|
+
field_name (str | None): field name if the quality list is attached to a specific field
|
|
324
|
+
|
|
325
|
+
Returns:
|
|
326
|
+
Dict[str, Any]: Dictionary of quality checks.
|
|
327
|
+
"""
|
|
328
|
+
quality_specification = []
|
|
329
|
+
for quality in qualities:
|
|
330
|
+
if quality is not None and quality.engine is not None and quality.engine.lower() == "great-expectations":
|
|
331
|
+
ge_expectation = quality.implementation
|
|
332
|
+
if field_name is not None:
|
|
333
|
+
ge_expectation["column"] = field_name
|
|
334
|
+
quality_specification.append(ge_expectation)
|
|
335
|
+
return quality_specification
|
|
336
|
+
|
|
337
|
+
|
|
291
338
|
def checks_to_expectations(quality_checks: Dict[str, Any], model_key: str) -> List[Dict[str, Any]]:
|
|
292
339
|
"""Converts quality checks to a list of expectations.
|
|
293
340
|
|