datacontract-cli 1.0.14__tar.gz → 1.0.16__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-1.0.14/datacontract_cli.egg-info → datacontract_cli-1.0.16}/PKG-INFO +38 -15
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/README.md +21 -6
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/api.py +22 -1
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/cli.py +14 -3
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_catalog.py +1 -1
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_import.py +369 -14
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_publish.py +1 -1
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_test.py +72 -14
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/data_contract.py +9 -0
- datacontract_cli-1.0.16/datacontract/engines/checks/check_filter.py +50 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/checks/check_spec.py +15 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/checks/create_checks.py +145 -63
- datacontract_cli-1.0.16/datacontract/engines/checks/dimensions.py +53 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/checks/physical_type_match.py +106 -12
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/data_contract_test.py +80 -2
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/datacontract/check_azure_blob_file.py +42 -17
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/fastjsonschema/s3/s3_read_files.py +5 -4
- datacontract_cli-1.0.16/datacontract/engines/ibis/connections/aws_credentials.py +90 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/connections/connect.py +153 -36
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/connections/duckdb_connection.py +74 -27
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/connections/kafka.py +131 -12
- datacontract_cli-1.0.16/datacontract/engines/ibis/connections/redshift_credentials.py +244 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/connections/redshift_patch.py +7 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/ibis_check_execute.py +17 -2
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/native_type.py +133 -20
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/protobuf_exporter.py +16 -24
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/sodacl_check_builder.py +3 -3
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/sql_type_converter.py +9 -4
- datacontract_cli-1.0.16/datacontract/imports/athena_importer.py +114 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/bigquery_importer.py +11 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/csv_importer.py +1 -6
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/dbt_importer.py +6 -2
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/glue_importer.py +30 -18
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/importer.py +11 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/importer_factory.py +48 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/json_importer.py +1 -5
- datacontract_cli-1.0.16/datacontract/imports/mysql_importer.py +217 -0
- datacontract_cli-1.0.16/datacontract/imports/object_storage_importer.py +182 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/odcs_helper.py +9 -0
- datacontract_cli-1.0.16/datacontract/imports/oracle_importer.py +247 -0
- datacontract_cli-1.0.16/datacontract/imports/postgres_importer.py +245 -0
- datacontract_cli-1.0.16/datacontract/imports/redshift_importer.py +264 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/sql_importer.py +4 -1
- datacontract_cli-1.0.16/datacontract/imports/sqlserver_importer.py +246 -0
- datacontract_cli-1.0.16/datacontract/imports/trino_importer.py +193 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/integration/dbt_sync.py +172 -41
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/model/run.py +5 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16/datacontract_cli.egg-info}/PKG-INFO +38 -15
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract_cli.egg-info/SOURCES.txt +36 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract_cli.egg-info/requires.txt +18 -8
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/pyproject.toml +51 -10
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_api.py +40 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_cli.py +14 -0
- datacontract_cli-1.0.16/tests/test_connect_athena.py +107 -0
- datacontract_cli-1.0.16/tests/test_connect_bigquery.py +95 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_connect_databricks.py +67 -0
- datacontract_cli-1.0.16/tests/test_connect_impala.py +103 -0
- datacontract_cli-1.0.16/tests/test_connect_redshift.py +80 -0
- datacontract_cli-1.0.16/tests/test_connect_s3_credentials.py +187 -0
- datacontract_cli-1.0.16/tests/test_connect_snowflake.py +104 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_connect_sqlserver.py +28 -3
- datacontract_cli-1.0.16/tests/test_create_checks_primary_key.py +84 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_dbt_sync.py +198 -2
- datacontract_cli-1.0.16/tests/test_docs_commands.py +105 -0
- datacontract_cli-1.0.16/tests/test_docs_ordering.py +125 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_dbml.py +1 -1
- datacontract_cli-1.0.16/tests/test_ibis_mssql_schema.py +61 -0
- datacontract_cli-1.0.16/tests/test_import_athena.py +209 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_csv.py +2 -3
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_dbt.py +27 -1
- datacontract_cli-1.0.16/tests/test_import_mysql.py +199 -0
- datacontract_cli-1.0.16/tests/test_import_object_storage.py +192 -0
- datacontract_cli-1.0.16/tests/test_import_oracle.py +160 -0
- datacontract_cli-1.0.16/tests/test_import_postgres.py +186 -0
- datacontract_cli-1.0.16/tests/test_import_redshift.py +258 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_sql_snowflake.py +13 -0
- datacontract_cli-1.0.16/tests/test_import_sqlserver.py +115 -0
- datacontract_cli-1.0.16/tests/test_import_trino.py +139 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_unity_file.py +25 -0
- datacontract_cli-1.0.16/tests/test_install_extras.py +72 -0
- datacontract_cli-1.0.16/tests/test_native_type_schema_scope.py +102 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_physical_type_match.py +129 -0
- datacontract_cli-1.0.16/tests/test_redshift_credentials.py +273 -0
- datacontract_cli-1.0.16/tests/test_server_type_mssql.py +77 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_sql_type_converter_physicaltype.py +2 -1
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_azure_blob_file.py +90 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_checks_filter.py +32 -0
- datacontract_cli-1.0.16/tests/test_test_dimension_filter.py +288 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_kafka.py +121 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_parquet.py +11 -0
- datacontract_cli-1.0.16/tests/test_test_quality_id_and_tag_filter.py +164 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/LICENSE +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/MANIFEST.in +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/__init__.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/catalog/catalog.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/changelog/__init__.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/changelog/changelog.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/changelog/normalize.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_api.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_changelog.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_ci.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_dbt.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_edit.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_export.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_init.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/command_lint.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/VERSION +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/abap-Bs8kvjsq.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/apex-Dspwrl5m.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/assets/editor.worker-4.7.0.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/assets/yaml.worker-4.7.0.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/azcli-k1BiOau1.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/bat-BIP72KWc.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/bicep-VhQeYhS3.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/cameligo-DnuAXtHg.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/clojure-BAuDPsal.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/coffee-BV06qSnj.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/cpp-Cz8Jeyrf.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/csharp-F6hhlXFb.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/csp-KzlEHCyI.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/css-e4FKntZ3.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/cssMode-BNkTa2xp.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/cypher-CpvDGKRr.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/dart-DdHeFWR0.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/datacontract-editor.css +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/datacontract-editor.es.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/dockerfile-aoNXDcio.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/ecl-C4Q0DYuA.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/elixir-C9X42b0T.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/flow9-Bff42pfB.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/freemarker2-Dyfzmb5A.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/fsharp-C6vPAsHG.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/go-DEr8zx9f.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/graphql-BiNBBRFh.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/handlebars-BtDNI-uC.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/hcl-2T9lKuFg.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/html-Cn4TGw_o.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/htmlMode-Bf84vbo2.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/index.html +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/ini-CZGtssYM.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/java-B260NeH3.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/javascript-B86Kac07.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/jsonMode-Ckgg5lAE.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/julia-kuNLM9c5.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/kotlin-Bz6kAefA.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/less-AZUtS89I.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/lexon-BcmgnyRb.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/liquid-D0NPwuu_.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/logo_fuchsia_v2.svg +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/lua-Dz1RbATg.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/m3-CIMooLFn.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/markdown-C1BsCK9P.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/mdx-QFRSBtVQ.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/mips-BovsnfLQ.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/monaco-4.7.0.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/msdax-CiRB2ZB-.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/mysql-BwdpPE19.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/objective-c-D4nfHfso.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/odcs.svg +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/pascal--j5-PYtz.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/pascaligo-C7TcJxNL.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/perl-BzEWqUb5.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/pgsql-B_KZ0mGX.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/php-A19QHzQV.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/pla-COeKY1hA.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/postiats-BfMp7zJL.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/powerquery-B0TS_5Gb.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/powershell-5jSbKdYB.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/protobuf-YgnOutn3.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/pug-DLej6kn5.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/python-C8RW9B6A.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/qsharp-AhjqtSHB.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/r-D-F4P80w.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/razor-CLZqdY_r.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/redis-hwwIlMnV.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/redshift-Bcm_kjEG.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/restructuredtext-CrdzfPP-.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/ruby-QC2UNm1s.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/rust-5aqiQ3L5.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/sb-B1g1ZfLJ.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/scala-C2U4R5Gb.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/scheme-DeFRbslr.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/scss-RSTCiCmI.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/shell-BpF-iNu8.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/solidity-C00r2mbQ.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/sophia-DVW5ZKDB.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/sparql-B0nmpxeX.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/sql-CJwKPERn.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/st-DPlKG5DT.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/swift-YZBAbVHV.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/systemverilog-CDQSaH63.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/tcl-Dlu8sp6Q.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/tsMode-yleMwhPq.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/twig-C5TO7-kw.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/typescript-CJBeebKU.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/typespec-BsmjDEu7.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/vb-ChHvIDrk.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/wgsl-XEp1ju8c.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/xml-vC-NMVX1.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/editor_assets/yaml-Dlf2VF-T.js +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/__init__.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/checks/__init__.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/checks/type_normalize.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/datacontract/check_that_datacontract_contains_valid_servers_configuration.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/datacontract/check_that_datacontract_file_exists.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/fastjsonschema/check_jsonschema.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/__init__.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/connections/__init__.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/connections/oracle_patch.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/dtype_category.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/engines/ibis/snowflake_structured_types.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/__init__.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/avro_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/avro_idl_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/bigquery_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/custom_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/data_caterer_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/dbml_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/dbt_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/dcs_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/dqx_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/duckdb_type_converter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/excel_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/exporter_factory.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/go_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/great_expectations_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/html_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/iceberg_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/jsonschema_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/markdown_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/mermaid_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/odcs_export_helper.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/odcs_v3_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/pandas_type_converter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/pydantic_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/rdf_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/sodacl_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/spark_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/sql_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/export/sqlalchemy_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/avro_importer.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/dbml_importer.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/dcs_importer.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/excel_importer.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/iceberg_importer.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/jsonschema_importer.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/odcs_importer.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/parquet_importer.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/powerbi_importer.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/protobuf_importer.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/snowflake_importer.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/spark_importer.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/imports/unity_importer.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/init/init_template.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/integration/dbt_test_mapping.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/integration/entropy_data.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/lint/files.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/lint/resolve.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/lint/resources.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/lint/schema.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/lint/urls.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/model/changelog.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/model/exceptions.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/model/odcs.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/model/server.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/output/__init__.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/output/ci_output.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/output/json_test_results.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/output/junit_test_results.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/output/output_format.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/output/test_results_writer.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/output/text_changelog_results.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/py.typed +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/datacontract-1.1.0.init.yaml +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/datacontract-1.1.0.schema.json +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/datacontract-1.2.0.init.yaml +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/datacontract-1.2.0.schema.json +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/datacontract-1.2.1.init.yaml +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/datacontract-1.2.1.schema.json +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/odcs-3.0.1.schema.json +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/odcs-3.0.2.schema.json +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/odcs-3.1.0.init.yaml +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/schemas/odcs-3.1.0.schema.json +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/datacontract.html +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/datacontract_odcs.html +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/index.html +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/partials/datacontract_information.html +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/partials/datacontract_servicelevels.html +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/partials/datacontract_terms.html +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/partials/definition.html +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/partials/example.html +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/partials/model_field.html +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/partials/quality.html +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/partials/server.html +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract/templates/style/output.css +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract_cli.egg-info/dependency_links.txt +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract_cli.egg-info/entry_points.txt +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/datacontract_cli.egg-info/top_level.txt +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/setup.cfg +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_catalog.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_changelog.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_changelog_engine.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_changelog_normalize.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_changelog_output_text.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_ci_output.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_connect_trino.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_create_checks_nested_type.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_create_checks_physical_type.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_data_contract.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_data_contract_checks.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_data_contract_specification.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_dbt_test_mapping.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_description_linter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_download_datacontract_file.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_dtype_category.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_duckdb_json.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_edit.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_avro.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_avro_idl.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_bigquery.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_complex_data_contract.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_custom.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_custom_exporter.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_custom_model.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_data_caterer.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_dbt_models.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_dbt_sources.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_dbt_staging_sql.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_dqx.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_excel.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_go.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_great_expectations.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_html.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_iceberg.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_jsonschema.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_markdown.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_mermaid.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_odcs_v3.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_protobuf.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_pydantic.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_rdf.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_sodacl.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_spark.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_sql.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_sql_clickhouse.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_sql_query.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_export_sqlalchemy.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_ibis_mssql_pattern.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_ibis_oracle_schema.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_avro.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_bigquery.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_dbml.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_excel.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_glue.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_iceberg.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_json.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_jsonschema.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_odcs_v3.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_parquet.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_powerbi.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_protobuf.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_snowflake.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_spark.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_sql_oracle.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_sql_postgres.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_import_sql_sqlserver.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_integration_entropydata.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_lint.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_oracle_patch.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_redshift_patch.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_require_env.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_resolve.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_resolve_definitions.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_roundtrip_jsonschema.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_snowflake_structured_types.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_api.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_athena_iceberg.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_azure_remote.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_bigquery.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_databricks.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_dataframe.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_delta.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_diagnostics.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_failed_samples.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_gcs_csv_remote.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_gcs_json_remote.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_kafka_remote.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_local_json.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_local_json_nd.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_mysql.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_oracle.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_oracle_xe.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_output_json.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_output_junit.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_postgres.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_quality.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_quality_local_fallback.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_quality_percent_severity.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_redshift.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_s3_csv.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_s3_delta.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_s3_json.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_s3_json_complex.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_s3_json_multiple_models.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_s3_json_remote.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_schema_evolution.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_server_not_found.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_snowflake.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_soda_connection_error.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_sqlserver.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_test_trino.py +0 -0
- {datacontract_cli-1.0.14 → datacontract_cli-1.0.16}/tests/test_type_normalize.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: datacontract-cli
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.16
|
|
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
|
|
@@ -18,7 +18,7 @@ Requires-Dist: pyyaml~=6.0.1
|
|
|
18
18
|
Requires-Dist: ruamel.yaml<0.20,>=0.17
|
|
19
19
|
Requires-Dist: requests<2.35,>=2.31
|
|
20
20
|
Requires-Dist: truststore<1.0,>=0.10
|
|
21
|
-
Requires-Dist: fastjsonschema<2.
|
|
21
|
+
Requires-Dist: fastjsonschema<2.23.0,>=2.19.1
|
|
22
22
|
Requires-Dist: jsonschema<5.0.0,>=4.23.0
|
|
23
23
|
Requires-Dist: pytz>=2024.1
|
|
24
24
|
Requires-Dist: python-multipart<1.0.0,>=0.0.20
|
|
@@ -39,11 +39,19 @@ Provides-Extra: csv
|
|
|
39
39
|
Requires-Dist: pandas>=2.0.0; extra == "csv"
|
|
40
40
|
Provides-Extra: excel
|
|
41
41
|
Requires-Dist: openpyxl<4.0.0,>=3.1.5; extra == "excel"
|
|
42
|
+
Provides-Extra: dataframe
|
|
43
|
+
Requires-Dist: ibis-framework[pyspark]<13.0.0,>=10.0.0; extra == "dataframe"
|
|
44
|
+
Requires-Dist: pyspark<5.0.0,>=3.5.0; extra == "dataframe"
|
|
42
45
|
Provides-Extra: databricks
|
|
43
46
|
Requires-Dist: ibis-framework[databricks,pyspark]<13.0.0,>=10.0.0; extra == "databricks"
|
|
44
|
-
Requires-Dist: databricks-sql-connector<4.
|
|
45
|
-
Requires-Dist: databricks-sdk<0.
|
|
47
|
+
Requires-Dist: databricks-sql-connector<4.5.0,>=3.7.0; extra == "databricks"
|
|
48
|
+
Requires-Dist: databricks-sdk<0.123.0; extra == "databricks"
|
|
46
49
|
Requires-Dist: pyspark<5.0.0,>=3.5.0; extra == "databricks"
|
|
50
|
+
Provides-Extra: databricks-runtime
|
|
51
|
+
Requires-Dist: ibis-framework[databricks]<13.0.0,>=10.0.0; extra == "databricks-runtime"
|
|
52
|
+
Requires-Dist: databricks-sql-connector<4.5.0,>=3.7.0; extra == "databricks-runtime"
|
|
53
|
+
Requires-Dist: databricks-sdk<0.123.0; extra == "databricks-runtime"
|
|
54
|
+
Requires-Dist: packaging<27.0,>=21.3; extra == "databricks-runtime"
|
|
47
55
|
Provides-Extra: iceberg
|
|
48
56
|
Requires-Dist: pyiceberg==0.11.1; extra == "iceberg"
|
|
49
57
|
Provides-Extra: kafka
|
|
@@ -61,12 +69,12 @@ Requires-Dist: ibis-framework[postgres]<13.0.0,>=10.0.0; extra == "redshift"
|
|
|
61
69
|
Requires-Dist: psycopg[binary]<4.0,>=3.1; extra == "redshift"
|
|
62
70
|
Requires-Dist: packaging<27.0,>=21.3; extra == "redshift"
|
|
63
71
|
Provides-Extra: s3
|
|
72
|
+
Requires-Dist: datacontract-cli[duckdb]; extra == "s3"
|
|
64
73
|
Requires-Dist: s3fs<2027.0.0,>=2025.2.0; extra == "s3"
|
|
65
74
|
Requires-Dist: duckdb-extension-httpfs<1.6.0,>=1.5.0; extra == "s3"
|
|
66
75
|
Requires-Dist: duckdb-extension-aws<1.6.0,>=1.5.0; extra == "s3"
|
|
67
76
|
Provides-Extra: gcs
|
|
68
|
-
Requires-Dist: datacontract-cli[
|
|
69
|
-
Requires-Dist: duckdb-extension-httpfs<1.6.0,>=1.5.0; extra == "gcs"
|
|
77
|
+
Requires-Dist: datacontract-cli[s3]; extra == "gcs"
|
|
70
78
|
Provides-Extra: azure
|
|
71
79
|
Requires-Dist: datacontract-cli[duckdb]; extra == "azure"
|
|
72
80
|
Requires-Dist: duckdb-extension-azure<1.6.0,>=1.5.0; extra == "azure"
|
|
@@ -100,12 +108,12 @@ Requires-Dist: pyarrow>=18.1.0; extra == "parquet"
|
|
|
100
108
|
Provides-Extra: rdf
|
|
101
109
|
Requires-Dist: rdflib==7.6.0; extra == "rdf"
|
|
102
110
|
Provides-Extra: api
|
|
103
|
-
Requires-Dist: fastapi<0.
|
|
111
|
+
Requires-Dist: fastapi<0.141.0,>=0.115.0; extra == "api"
|
|
104
112
|
Requires-Dist: uvicorn<0.52.0,>=0.44.0; extra == "api"
|
|
105
113
|
Provides-Extra: protobuf
|
|
106
114
|
Requires-Dist: proto-schema-parser<3.0,>=1.0; extra == "protobuf"
|
|
107
115
|
Provides-Extra: all
|
|
108
|
-
Requires-Dist: datacontract-cli[api,athena,azure,bigquery,csv,databricks,dbml,duckdb,excel,gcs,iceberg,impala,kafka,mysql,oracle,parquet,postgres,protobuf,rdf,redshift,s3,snowflake,sqlserver,trino]; extra == "all"
|
|
116
|
+
Requires-Dist: datacontract-cli[api,athena,azure,bigquery,csv,databricks,dataframe,dbml,duckdb,excel,gcs,iceberg,impala,kafka,mysql,oracle,parquet,postgres,protobuf,rdf,redshift,s3,snowflake,sqlserver,trino]; extra == "all"
|
|
109
117
|
Provides-Extra: dev
|
|
110
118
|
Requires-Dist: datacontract-cli[all]; extra == "dev"
|
|
111
119
|
Requires-Dist: httpx==0.28.1; extra == "dev"
|
|
@@ -119,7 +127,7 @@ Requires-Dist: pytest-xdist; extra == "dev"
|
|
|
119
127
|
Requires-Dist: pymssql==2.3.13; extra == "dev"
|
|
120
128
|
Requires-Dist: psycopg2-binary<3.0,>=2.9; extra == "dev"
|
|
121
129
|
Requires-Dist: mysql-connector-python<9.7.0,>=8.0.30; extra == "dev"
|
|
122
|
-
Requires-Dist: ruff==0.
|
|
130
|
+
Requires-Dist: ruff==0.16.0; extra == "dev"
|
|
123
131
|
Requires-Dist: testcontainers[kafka,minio,mssql,mysql,postgres]==4.14.2; extra == "dev"
|
|
124
132
|
Requires-Dist: trino==0.338.0; extra == "dev"
|
|
125
133
|
Dynamic: license-file
|
|
@@ -131,6 +139,8 @@ Dynamic: license-file
|
|
|
131
139
|
<img alt="Test Workflow" src="https://img.shields.io/github/actions/workflow/status/datacontract/datacontract-cli/ci.yaml?branch=main"></a>
|
|
132
140
|
<a href="https://pypi.org/project/datacontract-cli/">
|
|
133
141
|
<img alt="PyPI Version" src="https://img.shields.io/pypi/v/datacontract-cli" /></a>
|
|
142
|
+
<a href="https://pypistats.org/packages/datacontract-cli">
|
|
143
|
+
<img alt="PyPI Monthly Downloads" src="https://img.shields.io/badge/downloads-1.4M%2Fmonth-brightgreen" /></a>
|
|
134
144
|
<a href="https://github.com/datacontract/datacontract-cli">
|
|
135
145
|
<img alt="Stars" src="https://img.shields.io/github/stars/datacontract/datacontract-cli" /></a>
|
|
136
146
|
<a href="https://datacontract.com/slack" rel="nofollow"><img src="https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&style=social" alt="Slack Status" data-canonical-src="https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&style=social" style="max-width: 100%;"></a>
|
|
@@ -145,7 +155,9 @@ It can be used as a standalone CLI tool, in a CI/CD pipeline, or directly as a P
|
|
|
145
155
|
|
|
146
156
|
> 📖 **Full documentation: [docs.datacontract.com](https://docs.datacontract.com)**
|
|
147
157
|
>
|
|
148
|
-
> Quick links: [Quickstart](https://docs.datacontract.com/quickstart) · [Commands](https://docs.datacontract.com/commands) · [Best Practices](https://docs.datacontract.com/best-practices) · [Custom Export and Import](https://docs.datacontract.com/extending) · [Development Setup](#development-setup)
|
|
158
|
+
> Quick links: [Quickstart](https://docs.datacontract.com/quickstart) · [Commands](https://docs.datacontract.com/commands) · [Best Practices](https://docs.datacontract.com/best-practices) · [Custom Export and Import](https://docs.datacontract.com/extending) · [Release Notes](https://docs.datacontract.com/release-notes) · [Development Setup](#development-setup)
|
|
159
|
+
>
|
|
160
|
+
> For LLMs: [cli.datacontract.com/llms.txt](https://cli.datacontract.com/llms.txt) · [docs.datacontract.com/llms.txt](https://docs.datacontract.com/llms.txt) · [docs.datacontract.com/llms-full.txt](https://docs.datacontract.com/llms-full.txt)
|
|
149
161
|
|
|
150
162
|
## Getting started
|
|
151
163
|
|
|
@@ -207,6 +219,15 @@ Server: production (type=postgres, host=aws-1-eu-central-2.pooler.supabase.com,
|
|
|
207
219
|
|
|
208
220
|
Voilà, the CLI tested that the YAML itself is valid, all records comply with the schema, and all quality attributes are met.
|
|
209
221
|
|
|
222
|
+
To test your own data, import a contract straight from an existing table (this also generates the `servers` block) and run the tests against the actual data:
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
$ datacontract import snowflake --source <account> --database ORDER_DB --schema PUBLIC --output datacontract.yaml
|
|
226
|
+
$ datacontract test datacontract.yaml
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Copy-paste guides with credentials setup are available for [Snowflake](https://docs.datacontract.com/testing/snowflake), [BigQuery](https://docs.datacontract.com/testing/bigquery), [Databricks](https://docs.datacontract.com/testing/databricks), and [15+ other sources](https://docs.datacontract.com/testing).
|
|
230
|
+
|
|
210
231
|
We can also use the data contract metadata to export in many [formats](https://docs.datacontract.com/exports), e.g., to generate a SQL DDL:
|
|
211
232
|
|
|
212
233
|
```bash
|
|
@@ -216,17 +237,17 @@ $ datacontract export sql https://datacontract.com/orders-v1.odcs.yaml
|
|
|
216
237
|
-- Data Contract: orders
|
|
217
238
|
-- SQL Dialect: postgres
|
|
218
239
|
CREATE TABLE orders (
|
|
219
|
-
order_id
|
|
240
|
+
order_id UUID not null primary key,
|
|
220
241
|
customer_id text not null,
|
|
221
242
|
order_total integer not null,
|
|
222
|
-
order_timestamp
|
|
243
|
+
order_timestamp TIMESTAMPTZ,
|
|
223
244
|
order_status text
|
|
224
245
|
);
|
|
225
246
|
CREATE TABLE line_items (
|
|
226
|
-
line_item_id
|
|
247
|
+
line_item_id UUID not null primary key,
|
|
227
248
|
sku text not null,
|
|
228
249
|
price integer not null,
|
|
229
|
-
order_id
|
|
250
|
+
order_id UUID
|
|
230
251
|
);
|
|
231
252
|
```
|
|
232
253
|
|
|
@@ -380,6 +401,8 @@ A list of available extras:
|
|
|
380
401
|
| Google BigQuery | `pip install datacontract-cli[bigquery]` |
|
|
381
402
|
| CSV | `pip install datacontract-cli[csv]` |
|
|
382
403
|
| Databricks Integration | `pip install datacontract-cli[databricks]` |
|
|
404
|
+
| Databricks Runtime | `pip install datacontract-cli[databricks-runtime]` (inside Databricks, where the cluster provides PySpark) |
|
|
405
|
+
| DataFrame (Spark) | `pip install datacontract-cli[dataframe]` |
|
|
383
406
|
| DBML | `pip install datacontract-cli[dbml]` |
|
|
384
407
|
| DuckDB (local/S3/GCS/Azure file testing) | `pip install datacontract-cli[duckdb]` |
|
|
385
408
|
| Excel | `pip install datacontract-cli[excel]` |
|
|
@@ -409,7 +432,7 @@ It covers everything in depth, including the complete command reference:
|
|
|
409
432
|
|
|
410
433
|
- [Quickstart](https://docs.datacontract.com/quickstart) — install and run your first test
|
|
411
434
|
- [Open Data Contract Standard](https://docs.datacontract.com/open-data-contract-standard) — the contract format
|
|
412
|
-
- [Test your
|
|
435
|
+
- [Test your Data](https://docs.datacontract.com/testing) — schema & quality tests against 18+ data sources
|
|
413
436
|
- [Define your Quality Rules](https://docs.datacontract.com/quality-rules) — SQL, library, text, and custom checks
|
|
414
437
|
- [Sync with dbt](https://docs.datacontract.com/dbt) · [Edit your contract](https://docs.datacontract.com/editor)
|
|
415
438
|
- [Imports](https://docs.datacontract.com/imports) and [Exports](https://docs.datacontract.com/exports) — convert to/from 25+ formats
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
<img alt="Test Workflow" src="https://img.shields.io/github/actions/workflow/status/datacontract/datacontract-cli/ci.yaml?branch=main"></a>
|
|
6
6
|
<a href="https://pypi.org/project/datacontract-cli/">
|
|
7
7
|
<img alt="PyPI Version" src="https://img.shields.io/pypi/v/datacontract-cli" /></a>
|
|
8
|
+
<a href="https://pypistats.org/packages/datacontract-cli">
|
|
9
|
+
<img alt="PyPI Monthly Downloads" src="https://img.shields.io/badge/downloads-1.4M%2Fmonth-brightgreen" /></a>
|
|
8
10
|
<a href="https://github.com/datacontract/datacontract-cli">
|
|
9
11
|
<img alt="Stars" src="https://img.shields.io/github/stars/datacontract/datacontract-cli" /></a>
|
|
10
12
|
<a href="https://datacontract.com/slack" rel="nofollow"><img src="https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&style=social" alt="Slack Status" data-canonical-src="https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&style=social" style="max-width: 100%;"></a>
|
|
@@ -19,7 +21,9 @@ It can be used as a standalone CLI tool, in a CI/CD pipeline, or directly as a P
|
|
|
19
21
|
|
|
20
22
|
> 📖 **Full documentation: [docs.datacontract.com](https://docs.datacontract.com)**
|
|
21
23
|
>
|
|
22
|
-
> Quick links: [Quickstart](https://docs.datacontract.com/quickstart) · [Commands](https://docs.datacontract.com/commands) · [Best Practices](https://docs.datacontract.com/best-practices) · [Custom Export and Import](https://docs.datacontract.com/extending) · [Development Setup](#development-setup)
|
|
24
|
+
> Quick links: [Quickstart](https://docs.datacontract.com/quickstart) · [Commands](https://docs.datacontract.com/commands) · [Best Practices](https://docs.datacontract.com/best-practices) · [Custom Export and Import](https://docs.datacontract.com/extending) · [Release Notes](https://docs.datacontract.com/release-notes) · [Development Setup](#development-setup)
|
|
25
|
+
>
|
|
26
|
+
> For LLMs: [cli.datacontract.com/llms.txt](https://cli.datacontract.com/llms.txt) · [docs.datacontract.com/llms.txt](https://docs.datacontract.com/llms.txt) · [docs.datacontract.com/llms-full.txt](https://docs.datacontract.com/llms-full.txt)
|
|
23
27
|
|
|
24
28
|
## Getting started
|
|
25
29
|
|
|
@@ -81,6 +85,15 @@ Server: production (type=postgres, host=aws-1-eu-central-2.pooler.supabase.com,
|
|
|
81
85
|
|
|
82
86
|
Voilà, the CLI tested that the YAML itself is valid, all records comply with the schema, and all quality attributes are met.
|
|
83
87
|
|
|
88
|
+
To test your own data, import a contract straight from an existing table (this also generates the `servers` block) and run the tests against the actual data:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
$ datacontract import snowflake --source <account> --database ORDER_DB --schema PUBLIC --output datacontract.yaml
|
|
92
|
+
$ datacontract test datacontract.yaml
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Copy-paste guides with credentials setup are available for [Snowflake](https://docs.datacontract.com/testing/snowflake), [BigQuery](https://docs.datacontract.com/testing/bigquery), [Databricks](https://docs.datacontract.com/testing/databricks), and [15+ other sources](https://docs.datacontract.com/testing).
|
|
96
|
+
|
|
84
97
|
We can also use the data contract metadata to export in many [formats](https://docs.datacontract.com/exports), e.g., to generate a SQL DDL:
|
|
85
98
|
|
|
86
99
|
```bash
|
|
@@ -90,17 +103,17 @@ $ datacontract export sql https://datacontract.com/orders-v1.odcs.yaml
|
|
|
90
103
|
-- Data Contract: orders
|
|
91
104
|
-- SQL Dialect: postgres
|
|
92
105
|
CREATE TABLE orders (
|
|
93
|
-
order_id
|
|
106
|
+
order_id UUID not null primary key,
|
|
94
107
|
customer_id text not null,
|
|
95
108
|
order_total integer not null,
|
|
96
|
-
order_timestamp
|
|
109
|
+
order_timestamp TIMESTAMPTZ,
|
|
97
110
|
order_status text
|
|
98
111
|
);
|
|
99
112
|
CREATE TABLE line_items (
|
|
100
|
-
line_item_id
|
|
113
|
+
line_item_id UUID not null primary key,
|
|
101
114
|
sku text not null,
|
|
102
115
|
price integer not null,
|
|
103
|
-
order_id
|
|
116
|
+
order_id UUID
|
|
104
117
|
);
|
|
105
118
|
```
|
|
106
119
|
|
|
@@ -254,6 +267,8 @@ A list of available extras:
|
|
|
254
267
|
| Google BigQuery | `pip install datacontract-cli[bigquery]` |
|
|
255
268
|
| CSV | `pip install datacontract-cli[csv]` |
|
|
256
269
|
| Databricks Integration | `pip install datacontract-cli[databricks]` |
|
|
270
|
+
| Databricks Runtime | `pip install datacontract-cli[databricks-runtime]` (inside Databricks, where the cluster provides PySpark) |
|
|
271
|
+
| DataFrame (Spark) | `pip install datacontract-cli[dataframe]` |
|
|
257
272
|
| DBML | `pip install datacontract-cli[dbml]` |
|
|
258
273
|
| DuckDB (local/S3/GCS/Azure file testing) | `pip install datacontract-cli[duckdb]` |
|
|
259
274
|
| Excel | `pip install datacontract-cli[excel]` |
|
|
@@ -283,7 +298,7 @@ It covers everything in depth, including the complete command reference:
|
|
|
283
298
|
|
|
284
299
|
- [Quickstart](https://docs.datacontract.com/quickstart) — install and run your first test
|
|
285
300
|
- [Open Data Contract Standard](https://docs.datacontract.com/open-data-contract-standard) — the contract format
|
|
286
|
-
- [Test your
|
|
301
|
+
- [Test your Data](https://docs.datacontract.com/testing) — schema & quality tests against 18+ data sources
|
|
287
302
|
- [Define your Quality Rules](https://docs.datacontract.com/quality-rules) — SQL, library, text, and custom checks
|
|
288
303
|
- [Sync with dbt](https://docs.datacontract.com/dbt) · [Edit your contract](https://docs.datacontract.com/editor)
|
|
289
304
|
- [Imports](https://docs.datacontract.com/imports) and [Exports](https://docs.datacontract.com/exports) — convert to/from 25+ formats
|
|
@@ -204,6 +204,25 @@ customProperties:
|
|
|
204
204
|
contractCreatedTs: "2025-01-15T10:00:00Z"
|
|
205
205
|
"""
|
|
206
206
|
|
|
207
|
+
|
|
208
|
+
def _require_schema_url(schema: str | None) -> str | None:
|
|
209
|
+
"""Reject anything that is not an http(s) URL.
|
|
210
|
+
|
|
211
|
+
The parameter is documented as a URL, but `fetch_schema` falls through to the
|
|
212
|
+
filesystem for anything else — so without this an unauthenticated caller could
|
|
213
|
+
have the server open its own files, and tell existing paths from missing ones
|
|
214
|
+
by the error it got back.
|
|
215
|
+
"""
|
|
216
|
+
if schema is None:
|
|
217
|
+
return None
|
|
218
|
+
if not schema.startswith(("http://", "https://")):
|
|
219
|
+
raise HTTPException(
|
|
220
|
+
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
|
221
|
+
detail="The schema parameter must be an http:// or https:// URL.",
|
|
222
|
+
)
|
|
223
|
+
return schema
|
|
224
|
+
|
|
225
|
+
|
|
207
226
|
app = FastAPI(
|
|
208
227
|
docs_url="/",
|
|
209
228
|
title="Data Contract CLI API",
|
|
@@ -365,7 +384,9 @@ async def lint(
|
|
|
365
384
|
Query(description="Report all JSON Schema validation errors instead of only the first one."),
|
|
366
385
|
] = False,
|
|
367
386
|
):
|
|
368
|
-
data_contract = DataContract(
|
|
387
|
+
data_contract = DataContract(
|
|
388
|
+
data_contract_str=body, schema_location=_require_schema_url(schema), all_errors=all_errors
|
|
389
|
+
)
|
|
369
390
|
lint_result = data_contract.lint()
|
|
370
391
|
return {"result": lint_result.result, "checks": lint_result.checks}
|
|
371
392
|
|
|
@@ -9,6 +9,7 @@ import typer
|
|
|
9
9
|
from click import Context
|
|
10
10
|
from dotenv import find_dotenv, load_dotenv
|
|
11
11
|
from rich.console import Console
|
|
12
|
+
from rich.markup import escape
|
|
12
13
|
from typer.core import TyperGroup
|
|
13
14
|
from typing_extensions import Annotated
|
|
14
15
|
|
|
@@ -47,6 +48,10 @@ class OrderedCommands(TyperGroup):
|
|
|
47
48
|
class OrderedCommandsWithMigrationHints(OrderedCommands):
|
|
48
49
|
"""Intercepts removed or renamed options on import/export and points the user to the v0.12.0 migration notes."""
|
|
49
50
|
|
|
51
|
+
# Import formats where `--schema` still means the database schema, so it must
|
|
52
|
+
# not be rewritten to the v0.12.0 `--json-schema`.
|
|
53
|
+
DATABASE_SCHEMA_IMPORTS = {"snowflake", "redshift", "postgres", "athena", "sqlserver", "oracle", "trino"}
|
|
54
|
+
|
|
50
55
|
RENAMED_FLAGS = {
|
|
51
56
|
"--format": None,
|
|
52
57
|
"--rdf-base": "--base",
|
|
@@ -65,13 +70,17 @@ class OrderedCommandsWithMigrationHints(OrderedCommands):
|
|
|
65
70
|
subcommand = positionals[0] if positionals else None
|
|
66
71
|
|
|
67
72
|
# this function is called by both `datacontract` and `datacontract import`
|
|
68
|
-
|
|
73
|
+
if subcommand == "import":
|
|
74
|
+
import_format = positionals[1] if len(positionals) > 1 else None
|
|
75
|
+
else:
|
|
76
|
+
import_format = subcommand
|
|
77
|
+
takes_database_schema = import_format in self.DATABASE_SCHEMA_IMPORTS
|
|
69
78
|
|
|
70
79
|
rewritten_args = []
|
|
71
80
|
for arg in args:
|
|
72
81
|
if isinstance(arg, str) and arg.startswith("--"):
|
|
73
82
|
flag, _, value = arg.partition("=")
|
|
74
|
-
if flag == "--schema" and not
|
|
83
|
+
if flag == "--schema" and not takes_database_schema:
|
|
75
84
|
typer.secho(
|
|
76
85
|
"Warning: --schema was replaced with --json-schema in v0.12.0 and will be removed in v0.13.0.",
|
|
77
86
|
err=True,
|
|
@@ -261,7 +270,9 @@ def main():
|
|
|
261
270
|
from datacontract.model.exceptions import DataContractException
|
|
262
271
|
|
|
263
272
|
message = e.reason if isinstance(e, DataContractException) else str(e)
|
|
264
|
-
|
|
273
|
+
# Escape the message: bracketed text in an exception (e.g. a driver's
|
|
274
|
+
# `pip install "botocore[crt]"` hint) would otherwise be eaten as rich markup.
|
|
275
|
+
console.print(f"[red]Error:[/red] {escape(message)}")
|
|
265
276
|
console.print("[dim]Pass --debug (or set DATACONTRACT_CLI_DEBUG=1) for the full traceback.[/dim]")
|
|
266
277
|
sys.exit(1)
|
|
267
278
|
|