datacontract-cli 0.10.32__tar.gz → 0.10.33__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.32/datacontract_cli.egg-info → datacontract_cli-0.10.33}/PKG-INFO +28 -4
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/README.md +26 -2
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/cli.py +20 -5
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/data_contract.py +8 -2
- datacontract_cli-0.10.33/datacontract/export/excel_exporter.py +922 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/exporter.py +1 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/exporter_factory.py +4 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/excel_importer.py +13 -5
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33/datacontract_cli.egg-info}/PKG-INFO +28 -4
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract_cli.egg-info/SOURCES.txt +2 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract_cli.egg-info/requires.txt +1 -1
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/pyproject.toml +2 -2
- datacontract_cli-0.10.33/tests/test_export_excel.py +104 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/LICENSE +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/MANIFEST.in +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/__init__.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/api.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/breaking/breaking.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/breaking/breaking_change.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/breaking/breaking_rules.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/catalog/catalog.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/__init__.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/data_contract_checks.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/data_contract_test.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/datacontract/check_that_datacontract_contains_valid_servers_configuration.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/datacontract/check_that_datacontract_file_exists.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/fastjsonschema/check_jsonschema.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/fastjsonschema/s3/s3_read_files.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/__init__.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/check_soda_execute.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/connections/bigquery.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/connections/databricks.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/connections/duckdb_connection.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/connections/kafka.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/connections/postgres.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/connections/snowflake.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/connections/sqlserver.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/engines/soda/connections/trino.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/__init__.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/avro_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/avro_idl_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/bigquery_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/custom_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/data_caterer_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/dbml_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/dbt_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/dcs_exporter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/duckdb_type_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/go_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/great_expectations_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/html_exporter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/iceberg_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/jsonschema_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/markdown_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/mermaid_exporter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/odcs_v3_exporter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/pandas_type_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/protobuf_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/pydantic_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/rdf_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/sodacl_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/spark_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/sql_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/sql_type_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/sqlalchemy_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/export/terraform_converter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/avro_importer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/bigquery_importer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/csv_importer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/dbml_importer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/dbt_importer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/glue_importer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/iceberg_importer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/importer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/importer_factory.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/json_importer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/jsonschema_importer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/odcs_importer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/odcs_v3_importer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/parquet_importer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/protobuf_importer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/spark_importer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/sql_importer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/imports/unity_importer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/init/init_template.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/integration/datamesh_manager.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/files.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/lint.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/linters/__init__.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/linters/description_linter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/linters/field_pattern_linter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/linters/field_reference_linter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/linters/notice_period_linter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/linters/valid_constraints_linter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/resolve.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/resources.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/schema.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/lint/urls.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/model/data_contract_specification/__init__.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/model/exceptions.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/model/odcs.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/model/run.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/output/__init__.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/output/junit_test_results.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/output/output_format.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/output/test_results_writer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/py.typed +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/schemas/datacontract-1.1.0.init.yaml +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/schemas/datacontract-1.1.0.schema.json +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/schemas/datacontract-1.2.0.init.yaml +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/schemas/datacontract-1.2.0.schema.json +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/schemas/odcs-3.0.1.schema.json +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/datacontract.html +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/datacontract_odcs.html +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/index.html +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/partials/datacontract_information.html +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/partials/datacontract_servicelevels.html +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/partials/datacontract_terms.html +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/partials/definition.html +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/partials/example.html +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/partials/model_field.html +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/partials/quality.html +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/partials/server.html +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract/templates/style/output.css +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract_cli.egg-info/dependency_links.txt +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract_cli.egg-info/entry_points.txt +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/datacontract_cli.egg-info/top_level.txt +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/setup.cfg +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_api.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_breaking.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_catalog.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_changelog.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_cli.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_data_contract_checks.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_data_contract_specification.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_description_linter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_documentation_linter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_download_datacontract_file.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_duckdb_json.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_avro.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_avro_idl.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_bigquery.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_complex_data_contract.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_custom.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_custom_exporter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_data_caterer.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_dbml.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_dbt_models.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_dbt_sources.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_dbt_staging_sql.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_go.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_great_expectations.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_html.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_iceberg.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_jsonschema.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_markdown.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_mermaid.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_odcs_v3.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_protobuf.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_pydantic.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_rdf.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_sodacl.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_spark.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_sql.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_sql_query.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_sqlalchemy.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_export_terraform.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_field_constraint_linter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_field_pattern_linter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_field_reference_linter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_avro.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_bigquery.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_csv.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_dbml.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_dbt.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_excel.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_glue.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_iceberg.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_json.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_jsonschema.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_odcs_v3.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_parquet.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_protobuf.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_spark.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_sql_postgres.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_sql_sqlserver.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_import_unity_file.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_integration_datameshmanager.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_lint.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_notice_period_linter.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_resolve.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_roundtrip_jsonschema.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_spec_fields_field.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_spec_ref.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_azure_remote.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_bigquery.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_databricks.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_dataframe.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_delta.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_gcs_csv_remote.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_gcs_json_remote.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_kafka.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_kafka_remote.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_local_json.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_output_junit.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_parquet.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_postgres.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_quality.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_s3_csv.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_s3_delta.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_s3_json.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_s3_json_complex.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_s3_json_multiple_models.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_s3_json_remote.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_snowflake.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_sqlserver.py +0 -0
- {datacontract_cli-0.10.32 → datacontract_cli-0.10.33}/tests/test_test_trino.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: datacontract-cli
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.33
|
|
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
|
|
@@ -42,7 +42,7 @@ Provides-Extra: databricks
|
|
|
42
42
|
Requires-Dist: soda-core-spark-df<3.6.0,>=3.3.20; extra == "databricks"
|
|
43
43
|
Requires-Dist: soda-core-spark[databricks]<3.6.0,>=3.3.20; extra == "databricks"
|
|
44
44
|
Requires-Dist: databricks-sql-connector<4.1.0,>=3.7.0; extra == "databricks"
|
|
45
|
-
Requires-Dist: databricks-sdk<0.
|
|
45
|
+
Requires-Dist: databricks-sdk<0.61.0; extra == "databricks"
|
|
46
46
|
Requires-Dist: pyspark<4.0.0,>=3.5.5; extra == "databricks"
|
|
47
47
|
Provides-Extra: iceberg
|
|
48
48
|
Requires-Dist: pyiceberg==0.9.1; extra == "iceberg"
|
|
@@ -214,9 +214,15 @@ $ datacontract export --format odcs datacontract.yaml --output odcs.yaml
|
|
|
214
214
|
# import ODCS to data contract
|
|
215
215
|
$ datacontract import --format odcs odcs.yaml --output datacontract.yaml
|
|
216
216
|
|
|
217
|
-
# import sql (other formats: avro, glue, bigquery, jsonschema ...)
|
|
217
|
+
# import sql (other formats: avro, glue, bigquery, jsonschema, excel ...)
|
|
218
218
|
$ datacontract import --format sql --source my-ddl.sql --dialect postgres --output datacontract.yaml
|
|
219
219
|
|
|
220
|
+
# import from Excel template
|
|
221
|
+
$ datacontract import --format excel --source odcs.xlsx --output datacontract.yaml
|
|
222
|
+
|
|
223
|
+
# export to Excel template
|
|
224
|
+
$ datacontract export --format excel --output odcs.xlsx datacontract.yaml
|
|
225
|
+
|
|
220
226
|
# find differences between two data contracts
|
|
221
227
|
$ datacontract diff datacontract-v1.yaml datacontract-v2.yaml
|
|
222
228
|
|
|
@@ -933,7 +939,7 @@ models:
|
|
|
933
939
|
│ terraform|avro-idl|sql|sql-query|mer │
|
|
934
940
|
│ maid|html|go|bigquery|dbml|spark|sql │
|
|
935
941
|
│ alchemy|data-caterer|dcs|markdown|ic │
|
|
936
|
-
│ eberg|custom]
|
|
942
|
+
│ eberg|custom|excel] │
|
|
937
943
|
│ --output PATH Specify the file path where the │
|
|
938
944
|
│ exported data will be saved. If no │
|
|
939
945
|
│ path is provided, the output will be │
|
|
@@ -1003,6 +1009,7 @@ Available export options:
|
|
|
1003
1009
|
| `dcs` | Export to Data Contract Specification in YAML format | ✅ |
|
|
1004
1010
|
| `markdown` | Export to Markdown | ✅ |
|
|
1005
1011
|
| `iceberg` | Export to an Iceberg JSON Schema Definition | partial |
|
|
1012
|
+
| `excel` | Export to ODCS Excel Template | ✅ |
|
|
1006
1013
|
| `custom` | Export to Custom format with Jinja | ✅ |
|
|
1007
1014
|
| Missing something? | Please create an issue on GitHub | TBD |
|
|
1008
1015
|
|
|
@@ -1274,6 +1281,22 @@ FROM
|
|
|
1274
1281
|
{{ ref('orders') }}
|
|
1275
1282
|
```
|
|
1276
1283
|
|
|
1284
|
+
#### ODCS Excel Templace
|
|
1285
|
+
|
|
1286
|
+
The `export` function converts a data contract into an ODCS (Open Data Contract Standard) Excel template. This creates a user-friendly Excel spreadsheet that can be used for authoring, sharing, and managing data contracts using the familiar Excel interface.
|
|
1287
|
+
|
|
1288
|
+
```shell
|
|
1289
|
+
datacontract export --format excel --output datacontract.xlsx datacontract.yaml
|
|
1290
|
+
```
|
|
1291
|
+
|
|
1292
|
+
The Excel format enables:
|
|
1293
|
+
- **User-friendly authoring**: Create and edit data contracts in Excel's familiar interface
|
|
1294
|
+
- **Easy sharing**: Distribute data contracts as standard Excel files
|
|
1295
|
+
- **Collaboration**: Enable non-technical stakeholders to contribute to data contract definitions
|
|
1296
|
+
- **Round-trip conversion**: Import Excel templates back to YAML data contracts
|
|
1297
|
+
|
|
1298
|
+
For more information about the Excel template structure, visit the [ODCS Excel Template repository](https://github.com/datacontract/open-data-contract-standard-excel-template).
|
|
1299
|
+
|
|
1277
1300
|
### import
|
|
1278
1301
|
```
|
|
1279
1302
|
|
|
@@ -1392,6 +1415,7 @@ Available import options:
|
|
|
1392
1415
|
| `spark` | Import from Spark StructTypes, Variant | ✅ |
|
|
1393
1416
|
| `sql` | Import from SQL DDL | ✅ |
|
|
1394
1417
|
| `unity` | Import from Databricks Unity Catalog | partial |
|
|
1418
|
+
| `excel` | Import from ODCS Excel Template | ✅ |
|
|
1395
1419
|
| Missing something? | Please create an issue on GitHub | TBD |
|
|
1396
1420
|
|
|
1397
1421
|
|
|
@@ -120,9 +120,15 @@ $ datacontract export --format odcs datacontract.yaml --output odcs.yaml
|
|
|
120
120
|
# import ODCS to data contract
|
|
121
121
|
$ datacontract import --format odcs odcs.yaml --output datacontract.yaml
|
|
122
122
|
|
|
123
|
-
# import sql (other formats: avro, glue, bigquery, jsonschema ...)
|
|
123
|
+
# import sql (other formats: avro, glue, bigquery, jsonschema, excel ...)
|
|
124
124
|
$ datacontract import --format sql --source my-ddl.sql --dialect postgres --output datacontract.yaml
|
|
125
125
|
|
|
126
|
+
# import from Excel template
|
|
127
|
+
$ datacontract import --format excel --source odcs.xlsx --output datacontract.yaml
|
|
128
|
+
|
|
129
|
+
# export to Excel template
|
|
130
|
+
$ datacontract export --format excel --output odcs.xlsx datacontract.yaml
|
|
131
|
+
|
|
126
132
|
# find differences between two data contracts
|
|
127
133
|
$ datacontract diff datacontract-v1.yaml datacontract-v2.yaml
|
|
128
134
|
|
|
@@ -839,7 +845,7 @@ models:
|
|
|
839
845
|
│ terraform|avro-idl|sql|sql-query|mer │
|
|
840
846
|
│ maid|html|go|bigquery|dbml|spark|sql │
|
|
841
847
|
│ alchemy|data-caterer|dcs|markdown|ic │
|
|
842
|
-
│ eberg|custom]
|
|
848
|
+
│ eberg|custom|excel] │
|
|
843
849
|
│ --output PATH Specify the file path where the │
|
|
844
850
|
│ exported data will be saved. If no │
|
|
845
851
|
│ path is provided, the output will be │
|
|
@@ -909,6 +915,7 @@ Available export options:
|
|
|
909
915
|
| `dcs` | Export to Data Contract Specification in YAML format | ✅ |
|
|
910
916
|
| `markdown` | Export to Markdown | ✅ |
|
|
911
917
|
| `iceberg` | Export to an Iceberg JSON Schema Definition | partial |
|
|
918
|
+
| `excel` | Export to ODCS Excel Template | ✅ |
|
|
912
919
|
| `custom` | Export to Custom format with Jinja | ✅ |
|
|
913
920
|
| Missing something? | Please create an issue on GitHub | TBD |
|
|
914
921
|
|
|
@@ -1180,6 +1187,22 @@ FROM
|
|
|
1180
1187
|
{{ ref('orders') }}
|
|
1181
1188
|
```
|
|
1182
1189
|
|
|
1190
|
+
#### ODCS Excel Templace
|
|
1191
|
+
|
|
1192
|
+
The `export` function converts a data contract into an ODCS (Open Data Contract Standard) Excel template. This creates a user-friendly Excel spreadsheet that can be used for authoring, sharing, and managing data contracts using the familiar Excel interface.
|
|
1193
|
+
|
|
1194
|
+
```shell
|
|
1195
|
+
datacontract export --format excel --output datacontract.xlsx datacontract.yaml
|
|
1196
|
+
```
|
|
1197
|
+
|
|
1198
|
+
The Excel format enables:
|
|
1199
|
+
- **User-friendly authoring**: Create and edit data contracts in Excel's familiar interface
|
|
1200
|
+
- **Easy sharing**: Distribute data contracts as standard Excel files
|
|
1201
|
+
- **Collaboration**: Enable non-technical stakeholders to contribute to data contract definitions
|
|
1202
|
+
- **Round-trip conversion**: Import Excel templates back to YAML data contracts
|
|
1203
|
+
|
|
1204
|
+
For more information about the Excel template structure, visit the [ODCS Excel Template repository](https://github.com/datacontract/open-data-contract-standard-excel-template).
|
|
1205
|
+
|
|
1183
1206
|
### import
|
|
1184
1207
|
```
|
|
1185
1208
|
|
|
@@ -1298,6 +1321,7 @@ Available import options:
|
|
|
1298
1321
|
| `spark` | Import from Spark StructTypes, Variant | ✅ |
|
|
1299
1322
|
| `sql` | Import from SQL DDL | ✅ |
|
|
1300
1323
|
| `unity` | Import from Databricks Unity Catalog | partial |
|
|
1324
|
+
| `excel` | Import from ODCS Excel Template | ✅ |
|
|
1301
1325
|
| Missing something? | Please create an issue on GitHub | TBD |
|
|
1302
1326
|
|
|
1303
1327
|
|
|
@@ -210,12 +210,21 @@ def export(
|
|
|
210
210
|
# TODO: this should be a subcommand
|
|
211
211
|
template: Annotated[
|
|
212
212
|
Optional[Path],
|
|
213
|
-
typer.Option(
|
|
213
|
+
typer.Option(
|
|
214
|
+
help="The file path or URL of a template. For Excel format: path/URL to custom Excel template. For custom format: path to Jinja template."
|
|
215
|
+
),
|
|
214
216
|
] = None,
|
|
215
217
|
):
|
|
216
218
|
"""
|
|
217
219
|
Convert data contract to a specific format. Saves to file specified by `output` option if present, otherwise prints to stdout.
|
|
218
220
|
"""
|
|
221
|
+
# Validate that Excel format requires an output file path
|
|
222
|
+
if format == ExportFormat.excel and output is None:
|
|
223
|
+
console.print("❌ Error: Excel export requires an output file path.")
|
|
224
|
+
console.print("💡 Hint: Use --output to specify where to save the Excel file, e.g.:")
|
|
225
|
+
console.print(" datacontract export --format excel --output datacontract.xlsx")
|
|
226
|
+
raise typer.Exit(code=1)
|
|
227
|
+
|
|
219
228
|
# TODO exception handling
|
|
220
229
|
result = DataContract(data_contract_file=location, schema_location=schema, server=server).export(
|
|
221
230
|
export_format=format,
|
|
@@ -230,8 +239,13 @@ def export(
|
|
|
230
239
|
if output is None:
|
|
231
240
|
console.print(result, markup=False, soft_wrap=True)
|
|
232
241
|
else:
|
|
233
|
-
|
|
234
|
-
|
|
242
|
+
if isinstance(result, bytes):
|
|
243
|
+
# If the result is bytes, we assume it's a binary file (e.g., Excel, PDF)
|
|
244
|
+
with output.open(mode="wb") as f:
|
|
245
|
+
f.write(result)
|
|
246
|
+
else:
|
|
247
|
+
with output.open(mode="w", encoding="utf-8") as f:
|
|
248
|
+
f.write(result)
|
|
235
249
|
console.print(f"Written result to {output}")
|
|
236
250
|
|
|
237
251
|
|
|
@@ -482,13 +496,14 @@ def _get_uvicorn_arguments(port: int, host: str, context: typer.Context) -> dict
|
|
|
482
496
|
}
|
|
483
497
|
|
|
484
498
|
# Create a list of the extra arguments, remove the leading -- from the cli arguments
|
|
485
|
-
trimmed_keys = list(map(lambda x
|
|
499
|
+
trimmed_keys = list(map(lambda x: str(x).replace("--", ""), context.args[::2]))
|
|
486
500
|
# Merge the two dicts and return them as one dict
|
|
487
501
|
return default_args | dict(zip(trimmed_keys, context.args[1::2]))
|
|
488
502
|
|
|
503
|
+
|
|
489
504
|
@app.command(context_settings={"allow_extra_args": True, "ignore_unknown_options": True})
|
|
490
505
|
def api(
|
|
491
|
-
ctx: Annotated[typer.Context, typer.Option(help="Extra arguments to pass to uvicorn.run().")],
|
|
506
|
+
ctx: Annotated[typer.Context, typer.Option(help="Extra arguments to pass to uvicorn.run().")],
|
|
492
507
|
port: Annotated[int, typer.Option(help="Bind socket to this port.")] = 4242,
|
|
493
508
|
host: Annotated[
|
|
494
509
|
str, typer.Option(help="Bind socket to this host. Hint: For running in docker, set it to 0.0.0.0")
|
|
@@ -250,8 +250,14 @@ class DataContract:
|
|
|
250
250
|
inline_quality=self._inline_quality,
|
|
251
251
|
)
|
|
252
252
|
|
|
253
|
-
def export(
|
|
254
|
-
|
|
253
|
+
def export(
|
|
254
|
+
self, export_format: ExportFormat, model: str = "all", sql_server_type: str = "auto", **kwargs
|
|
255
|
+
) -> str | bytes:
|
|
256
|
+
if (
|
|
257
|
+
export_format == ExportFormat.html
|
|
258
|
+
or export_format == ExportFormat.mermaid
|
|
259
|
+
or export_format == ExportFormat.excel
|
|
260
|
+
):
|
|
255
261
|
data_contract = resolve.resolve_data_contract_v2(
|
|
256
262
|
self._data_contract_file,
|
|
257
263
|
self._data_contract_str,
|