datacontract-cli 0.9.9__tar.gz → 0.10.1__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.1/MANIFEST.in +2 -0
- {datacontract_cli-0.9.9/datacontract_cli.egg-info → datacontract_cli-0.10.1}/PKG-INFO +24 -24
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/README.md +23 -23
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/export/html_export.py +21 -1
- datacontract_cli-0.10.1/datacontract/templates/datacontract.html +502 -0
- datacontract_cli-0.10.1/datacontract/templates/style/output.css +1332 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1/datacontract_cli.egg-info}/PKG-INFO +24 -24
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract_cli.egg-info/SOURCES.txt +3 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/pyproject.toml +1 -1
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/LICENSE +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/__init__.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/breaking/breaking.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/breaking/breaking_rules.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/cli.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/data_contract.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/engines/__init__.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/engines/datacontract/check_that_datacontract_contains_valid_servers_configuration.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/engines/datacontract/check_that_datacontract_file_exists.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/engines/datacontract/check_that_datacontract_str_is_valid.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/engines/fastjsonschema/check_jsonschema.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/engines/fastjsonschema/s3/s3_read_files.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/engines/soda/__init__.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/engines/soda/check_soda_execute.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/engines/soda/connections/bigquery.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/engines/soda/connections/dask.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/engines/soda/connections/databricks.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/engines/soda/connections/duckdb.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/engines/soda/connections/kafka.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/engines/soda/connections/postgres.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/engines/soda/connections/snowflake.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/export/avro_converter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/export/avro_idl_converter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/export/csv_type_converter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/export/dbt_converter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/export/great_expectations_converter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/export/jsonschema_converter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/export/odcs_converter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/export/protobuf_converter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/export/pydantic_converter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/export/rdf_converter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/export/sodacl_converter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/export/sql_converter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/export/sql_type_converter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/export/terraform_converter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/imports/avro_importer.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/imports/sql_importer.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/init/download_datacontract_file.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/integration/publish_datamesh_manager.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/integration/publish_opentelemetry.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/lint/files.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/lint/lint.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/lint/linters/__init__.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/lint/linters/description_linter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/lint/linters/example_model_linter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/lint/linters/field_pattern_linter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/lint/linters/field_reference_linter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/lint/linters/notice_period_linter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/lint/linters/quality_schema_linter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/lint/linters/valid_constraints_linter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/lint/resolve.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/lint/schema.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/lint/urls.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/model/breaking_change.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/model/data_contract_specification.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/model/exceptions.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/model/run.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract/web.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract_cli.egg-info/dependency_links.txt +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract_cli.egg-info/entry_points.txt +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract_cli.egg-info/requires.txt +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/datacontract_cli.egg-info/top_level.txt +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/setup.cfg +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_breaking.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_changelog.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_cli.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_description_linter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_documentation_linter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_download_datacontract_file.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_example_model_linter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_export_avro.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_export_avro_idl.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_export_dbt_models.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_export_dbt_sources.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_export_dbt_staging_sql.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_export_great_expectations.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_export_html.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_export_jsonschema.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_export_odcs.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_export_protobuf.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_export_pydantic.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_export_rdf.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_export_sodacl.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_export_sql.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_export_sql_query.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_export_terraform.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_field_constraint_linter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_field_pattern_linter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_field_reference_linter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_import_avro.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_import_sql.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_integration_datameshmanager.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_integration_opentelemetry.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_lint.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_notice_period_linter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_quality_schema_linter.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_schema.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_bigquery.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_databricks.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_examples_csv.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_examples_formats_valid.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_examples_inline.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_examples_json.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_examples_missing.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_kafka.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_kafka_remote.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_local_json.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_parquet.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_postgres.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_s3_csv.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_s3_json.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_s3_json_complex.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_s3_json_multiple_models.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_s3_json_remote.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_test_snowflake.py +0 -0
- {datacontract_cli-0.9.9 → datacontract_cli-0.10.1}/tests/test_web.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: datacontract-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.10.1
|
|
4
4
|
Summary: Test data contracts
|
|
5
5
|
Author-email: Jochen Christ <jochen.christ@innoq.com>, Stefan Negele <stefan.negele@innoq.com>
|
|
6
6
|
Project-URL: Homepage, https://cli.datacontract.com
|
|
@@ -48,10 +48,10 @@ Requires-Dist: testcontainers-kafka; extra == "dev"
|
|
|
48
48
|
# Data Contract CLI
|
|
49
49
|
|
|
50
50
|
<p>
|
|
51
|
-
<a href="https://github.com/datacontract/cli/actions/workflows/ci.yaml?query=branch%3Amain">
|
|
52
|
-
<img alt="Test Workflow" src="https://img.shields.io/github/actions/workflow/status/datacontract/cli/ci.yaml?branch=main"></a>
|
|
53
|
-
<a href="https://github.com/datacontract/cli">
|
|
54
|
-
<img alt="Stars" src="https://img.shields.io/github/stars/datacontract/cli" /></a>
|
|
51
|
+
<a href="https://github.com/datacontract/datacontract-cli/actions/workflows/ci.yaml?query=branch%3Amain">
|
|
52
|
+
<img alt="Test Workflow" src="https://img.shields.io/github/actions/workflow/status/datacontract/datacontract-cli/ci.yaml?branch=main"></a>
|
|
53
|
+
<a href="https://github.com/datacontract/datacontract-cli">
|
|
54
|
+
<img alt="Stars" src="https://img.shields.io/github/stars/datacontract/datacontract-cli" /></a>
|
|
55
55
|
<a href="https://datacontract.com/slack" rel="nofollow"><img src="https://camo.githubusercontent.com/5ade1fd1e76a6ab860802cdd2941fe2501e2ca2cb534e5d8968dbf864c13d33d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f736c61636b2d6a6f696e5f636861742d77686974652e7376673f6c6f676f3d736c61636b267374796c653d736f6369616c" 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>
|
|
56
56
|
</p>
|
|
57
57
|
|
|
@@ -310,24 +310,24 @@ Credentials are read from the environment variables.
|
|
|
310
310
|
|
|
311
311
|
Supported server types:
|
|
312
312
|
|
|
313
|
-
| Type | Format | Status
|
|
314
|
-
|
|
315
|
-
| `s3` | `parquet` | ✅
|
|
316
|
-
| `s3` | `json` | ✅
|
|
317
|
-
| `s3` | `csv` | ✅
|
|
318
|
-
| `s3` | `delta` | Coming soon ([#24](https://github.com/datacontract/cli/issues/24)) |
|
|
319
|
-
| `s3` | `iceberg` | Coming soon
|
|
320
|
-
| `postgres` | n/a | ✅
|
|
321
|
-
| `snowflake` | n/a | ✅
|
|
322
|
-
| `bigquery` | n/a | ✅
|
|
323
|
-
| `redshift` | n/a | Coming soon
|
|
324
|
-
| `databricks` | n/a | ✅
|
|
325
|
-
| `kafka` | `json` | ✅
|
|
326
|
-
| `kafka` | `avro` | Coming soon
|
|
327
|
-
| `kafka` | `protobuf` | Coming soon
|
|
328
|
-
| `local` | `parquet` | ✅
|
|
329
|
-
| `local` | `json` | ✅
|
|
330
|
-
| `local` | `csv` | ✅
|
|
313
|
+
| Type | Format | Status |
|
|
314
|
+
|--------------|------------|---------------------------------------------------------------------------------|
|
|
315
|
+
| `s3` | `parquet` | ✅ |
|
|
316
|
+
| `s3` | `json` | ✅ |
|
|
317
|
+
| `s3` | `csv` | ✅ |
|
|
318
|
+
| `s3` | `delta` | Coming soon ([#24](https://github.com/datacontract/datacontract-cli/issues/24)) |
|
|
319
|
+
| `s3` | `iceberg` | Coming soon |
|
|
320
|
+
| `postgres` | n/a | ✅ |
|
|
321
|
+
| `snowflake` | n/a | ✅ |
|
|
322
|
+
| `bigquery` | n/a | ✅ |
|
|
323
|
+
| `redshift` | n/a | Coming soon |
|
|
324
|
+
| `databricks` | n/a | ✅ |
|
|
325
|
+
| `kafka` | `json` | ✅ |
|
|
326
|
+
| `kafka` | `avro` | Coming soon |
|
|
327
|
+
| `kafka` | `protobuf` | Coming soon |
|
|
328
|
+
| `local` | `parquet` | ✅ |
|
|
329
|
+
| `local` | `json` | ✅ |
|
|
330
|
+
| `local` | `csv` | ✅ |
|
|
331
331
|
|
|
332
332
|
Feel free to create an issue, if you need support for an additional type.
|
|
333
333
|
|
|
@@ -948,4 +948,4 @@ Created by [Stefan Negele](https://www.linkedin.com/in/stefan-negele-573153112/)
|
|
|
948
948
|
|
|
949
949
|
|
|
950
950
|
|
|
951
|
-
<a href="https://github.com/datacontract/cli" class="github-corner" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
|
951
|
+
<a href="https://github.com/datacontract/datacontract-cli" class="github-corner" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Data Contract CLI
|
|
2
2
|
|
|
3
3
|
<p>
|
|
4
|
-
<a href="https://github.com/datacontract/cli/actions/workflows/ci.yaml?query=branch%3Amain">
|
|
5
|
-
<img alt="Test Workflow" src="https://img.shields.io/github/actions/workflow/status/datacontract/cli/ci.yaml?branch=main"></a>
|
|
6
|
-
<a href="https://github.com/datacontract/cli">
|
|
7
|
-
<img alt="Stars" src="https://img.shields.io/github/stars/datacontract/cli" /></a>
|
|
4
|
+
<a href="https://github.com/datacontract/datacontract-cli/actions/workflows/ci.yaml?query=branch%3Amain">
|
|
5
|
+
<img alt="Test Workflow" src="https://img.shields.io/github/actions/workflow/status/datacontract/datacontract-cli/ci.yaml?branch=main"></a>
|
|
6
|
+
<a href="https://github.com/datacontract/datacontract-cli">
|
|
7
|
+
<img alt="Stars" src="https://img.shields.io/github/stars/datacontract/datacontract-cli" /></a>
|
|
8
8
|
<a href="https://datacontract.com/slack" rel="nofollow"><img src="https://camo.githubusercontent.com/5ade1fd1e76a6ab860802cdd2941fe2501e2ca2cb534e5d8968dbf864c13d33d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f736c61636b2d6a6f696e5f636861742d77686974652e7376673f6c6f676f3d736c61636b267374796c653d736f6369616c" 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>
|
|
9
9
|
</p>
|
|
10
10
|
|
|
@@ -263,24 +263,24 @@ Credentials are read from the environment variables.
|
|
|
263
263
|
|
|
264
264
|
Supported server types:
|
|
265
265
|
|
|
266
|
-
| Type | Format | Status
|
|
267
|
-
|
|
268
|
-
| `s3` | `parquet` | ✅
|
|
269
|
-
| `s3` | `json` | ✅
|
|
270
|
-
| `s3` | `csv` | ✅
|
|
271
|
-
| `s3` | `delta` | Coming soon ([#24](https://github.com/datacontract/cli/issues/24)) |
|
|
272
|
-
| `s3` | `iceberg` | Coming soon
|
|
273
|
-
| `postgres` | n/a | ✅
|
|
274
|
-
| `snowflake` | n/a | ✅
|
|
275
|
-
| `bigquery` | n/a | ✅
|
|
276
|
-
| `redshift` | n/a | Coming soon
|
|
277
|
-
| `databricks` | n/a | ✅
|
|
278
|
-
| `kafka` | `json` | ✅
|
|
279
|
-
| `kafka` | `avro` | Coming soon
|
|
280
|
-
| `kafka` | `protobuf` | Coming soon
|
|
281
|
-
| `local` | `parquet` | ✅
|
|
282
|
-
| `local` | `json` | ✅
|
|
283
|
-
| `local` | `csv` | ✅
|
|
266
|
+
| Type | Format | Status |
|
|
267
|
+
|--------------|------------|---------------------------------------------------------------------------------|
|
|
268
|
+
| `s3` | `parquet` | ✅ |
|
|
269
|
+
| `s3` | `json` | ✅ |
|
|
270
|
+
| `s3` | `csv` | ✅ |
|
|
271
|
+
| `s3` | `delta` | Coming soon ([#24](https://github.com/datacontract/datacontract-cli/issues/24)) |
|
|
272
|
+
| `s3` | `iceberg` | Coming soon |
|
|
273
|
+
| `postgres` | n/a | ✅ |
|
|
274
|
+
| `snowflake` | n/a | ✅ |
|
|
275
|
+
| `bigquery` | n/a | ✅ |
|
|
276
|
+
| `redshift` | n/a | Coming soon |
|
|
277
|
+
| `databricks` | n/a | ✅ |
|
|
278
|
+
| `kafka` | `json` | ✅ |
|
|
279
|
+
| `kafka` | `avro` | Coming soon |
|
|
280
|
+
| `kafka` | `protobuf` | Coming soon |
|
|
281
|
+
| `local` | `parquet` | ✅ |
|
|
282
|
+
| `local` | `json` | ✅ |
|
|
283
|
+
| `local` | `csv` | ✅ |
|
|
284
284
|
|
|
285
285
|
Feel free to create an issue, if you need support for an additional type.
|
|
286
286
|
|
|
@@ -901,4 +901,4 @@ Created by [Stefan Negele](https://www.linkedin.com/in/stefan-negele-573153112/)
|
|
|
901
901
|
|
|
902
902
|
|
|
903
903
|
|
|
904
|
-
<a href="https://github.com/datacontract/cli" class="github-corner" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
|
904
|
+
<a href="https://github.com/datacontract/datacontract-cli" class="github-corner" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
import logging
|
|
3
|
+
from importlib.metadata import version
|
|
4
|
+
|
|
5
|
+
import pytz
|
|
1
6
|
import yaml
|
|
2
7
|
from jinja2 import Environment, PackageLoader, select_autoescape
|
|
3
8
|
|
|
@@ -11,7 +16,7 @@ def to_html(data_contract_spec: DataContractSpecification) -> str:
|
|
|
11
16
|
env = Environment(
|
|
12
17
|
loader=package_loader,
|
|
13
18
|
autoescape=select_autoescape(
|
|
14
|
-
enabled_extensions=
|
|
19
|
+
enabled_extensions="html",
|
|
15
20
|
default_for_string=True,
|
|
16
21
|
),
|
|
17
22
|
)
|
|
@@ -35,12 +40,27 @@ def to_html(data_contract_spec: DataContractSpecification) -> str:
|
|
|
35
40
|
|
|
36
41
|
datacontract_yaml = data_contract_spec.to_yaml()
|
|
37
42
|
|
|
43
|
+
tz = pytz.timezone('UTC')
|
|
44
|
+
now = datetime.datetime.now(tz)
|
|
45
|
+
formatted_date = now.strftime('%d %b %Y %H:%M:%S UTC')
|
|
46
|
+
datacontract_cli_version = get_version()
|
|
47
|
+
|
|
38
48
|
# Render the template with necessary data
|
|
39
49
|
html_string = template.render(
|
|
40
50
|
datacontract=data_contract_spec,
|
|
41
51
|
quality_specification=quality_specification,
|
|
42
52
|
style=style_content,
|
|
43
53
|
datacontract_yaml=datacontract_yaml,
|
|
54
|
+
formatted_date=formatted_date,
|
|
55
|
+
datacontract_cli_version=datacontract_cli_version,
|
|
44
56
|
)
|
|
45
57
|
|
|
46
58
|
return html_string
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def get_version() -> str:
|
|
62
|
+
try:
|
|
63
|
+
return version("datacontract_cli")
|
|
64
|
+
except Exception as e:
|
|
65
|
+
logging.debug("Ignoring exception", e)
|
|
66
|
+
return ""
|