datacontract-cli 0.10.29__py3-none-any.whl → 0.10.30__py3-none-any.whl
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/data_contract.py +2 -2
- datacontract/export/great_expectations_converter.py +6 -3
- datacontract/export/markdown_converter.py +1 -1
- datacontract/imports/excel_importer.py +5 -5
- {datacontract_cli-0.10.29.dist-info → datacontract_cli-0.10.30.dist-info}/METADATA +6 -6
- {datacontract_cli-0.10.29.dist-info → datacontract_cli-0.10.30.dist-info}/RECORD +10 -10
- {datacontract_cli-0.10.29.dist-info → datacontract_cli-0.10.30.dist-info}/WHEEL +0 -0
- {datacontract_cli-0.10.29.dist-info → datacontract_cli-0.10.30.dist-info}/entry_points.txt +0 -0
- {datacontract_cli-0.10.29.dist-info → datacontract_cli-0.10.30.dist-info}/licenses/LICENSE +0 -0
- {datacontract_cli-0.10.29.dist-info → datacontract_cli-0.10.30.dist-info}/top_level.txt +0 -0
datacontract/data_contract.py
CHANGED
|
@@ -4,7 +4,7 @@ import typing
|
|
|
4
4
|
from open_data_contract_standard.model import CustomProperty, OpenDataContractStandard
|
|
5
5
|
|
|
6
6
|
from datacontract.export.odcs_v3_exporter import to_odcs_v3
|
|
7
|
-
from datacontract.imports.importer import Spec
|
|
7
|
+
from datacontract.imports.importer import ImportFormat, Spec
|
|
8
8
|
from datacontract.imports.odcs_v3_importer import import_from_odcs
|
|
9
9
|
|
|
10
10
|
if typing.TYPE_CHECKING:
|
|
@@ -300,7 +300,7 @@ class DataContract:
|
|
|
300
300
|
id = kwargs.get("id")
|
|
301
301
|
owner = kwargs.get("owner")
|
|
302
302
|
|
|
303
|
-
if spec == Spec.odcs:
|
|
303
|
+
if spec == Spec.odcs or format == ImportFormat.excel:
|
|
304
304
|
data_contract_specification_initial = DataContract.init(template=template, schema=schema)
|
|
305
305
|
|
|
306
306
|
odcs_imported = importer_factory.create(format).import_source(
|
|
@@ -14,9 +14,6 @@ from datacontract.export.exporter import (
|
|
|
14
14
|
Exporter,
|
|
15
15
|
_check_models_for_export,
|
|
16
16
|
)
|
|
17
|
-
from datacontract.export.pandas_type_converter import convert_to_pandas_type
|
|
18
|
-
from datacontract.export.spark_converter import to_spark_data_type
|
|
19
|
-
from datacontract.export.sql_type_converter import convert_to_sql_type
|
|
20
17
|
from datacontract.model.data_contract_specification import (
|
|
21
18
|
DataContractSpecification,
|
|
22
19
|
DeprecatedQuality,
|
|
@@ -167,10 +164,16 @@ def add_field_expectations(
|
|
|
167
164
|
"""
|
|
168
165
|
if field.type is not None:
|
|
169
166
|
if engine == GreatExpectationsEngine.spark.value:
|
|
167
|
+
from datacontract.export.spark_converter import to_spark_data_type
|
|
168
|
+
|
|
170
169
|
field_type = to_spark_data_type(field).__class__.__name__
|
|
171
170
|
elif engine == GreatExpectationsEngine.pandas.value:
|
|
171
|
+
from datacontract.export.pandas_type_converter import convert_to_pandas_type
|
|
172
|
+
|
|
172
173
|
field_type = convert_to_pandas_type(field)
|
|
173
174
|
elif engine == GreatExpectationsEngine.sql.value:
|
|
175
|
+
from datacontract.export.sql_type_converter import convert_to_sql_type
|
|
176
|
+
|
|
174
177
|
field_type = convert_to_sql_type(field, sql_server_type)
|
|
175
178
|
else:
|
|
176
179
|
field_type = field.type
|
|
@@ -153,7 +153,7 @@ def field_to_markdown(field_name: str, field: Field, level: int = 0) -> str:
|
|
|
153
153
|
Returns:
|
|
154
154
|
str: A Markdown table rows for the field.
|
|
155
155
|
"""
|
|
156
|
-
tabs = "
|
|
156
|
+
tabs = " " * level
|
|
157
157
|
arrow = "↳" if level > 0 else ""
|
|
158
158
|
column_name = f"{tabs}{arrow} {field_name}"
|
|
159
159
|
|
|
@@ -680,7 +680,7 @@ def import_servers(workbook) -> Optional[List[Server]]:
|
|
|
680
680
|
elif server_type == "databricks":
|
|
681
681
|
server.catalog = get_server_cell_value(workbook, sheet, "servers.databricks.catalog", index)
|
|
682
682
|
server.host = get_server_cell_value(workbook, sheet, "servers.databricks.host", index)
|
|
683
|
-
server.
|
|
683
|
+
server.schema_ = get_server_cell_value(workbook, sheet, "servers.databricks.schema", index)
|
|
684
684
|
elif server_type == "glue":
|
|
685
685
|
server.account = get_server_cell_value(workbook, sheet, "servers.glue.account", index)
|
|
686
686
|
server.database = get_server_cell_value(workbook, sheet, "servers.glue.database", index)
|
|
@@ -694,7 +694,7 @@ def import_servers(workbook) -> Optional[List[Server]]:
|
|
|
694
694
|
server.database = get_server_cell_value(workbook, sheet, "servers.postgres.database", index)
|
|
695
695
|
server.host = get_server_cell_value(workbook, sheet, "servers.postgres.host", index)
|
|
696
696
|
server.port = get_server_cell_value(workbook, sheet, "servers.postgres.port", index)
|
|
697
|
-
server.
|
|
697
|
+
server.schema_ = get_server_cell_value(workbook, sheet, "servers.postgres.schema", index)
|
|
698
698
|
elif server_type == "s3":
|
|
699
699
|
server.delimiter = get_server_cell_value(workbook, sheet, "servers.s3.delimiter", index)
|
|
700
700
|
server.endpointUrl = get_server_cell_value(workbook, sheet, "servers.s3.endpointUrl", index)
|
|
@@ -705,13 +705,13 @@ def import_servers(workbook) -> Optional[List[Server]]:
|
|
|
705
705
|
server.database = get_server_cell_value(workbook, sheet, "servers.snowflake.database", index)
|
|
706
706
|
server.host = get_server_cell_value(workbook, sheet, "servers.snowflake.host", index)
|
|
707
707
|
server.port = get_server_cell_value(workbook, sheet, "servers.snowflake.port", index)
|
|
708
|
-
server.
|
|
708
|
+
server.schema_ = get_server_cell_value(workbook, sheet, "servers.snowflake.schema", index)
|
|
709
709
|
server.warehouse = get_server_cell_value(workbook, sheet, "servers.snowflake.warehouse", index)
|
|
710
710
|
elif server_type == "sqlserver":
|
|
711
711
|
server.database = get_server_cell_value(workbook, sheet, "servers.sqlserver.database", index)
|
|
712
712
|
server.host = get_server_cell_value(workbook, sheet, "servers.sqlserver.host", index)
|
|
713
713
|
server.port = get_server_cell_value(workbook, sheet, "servers.sqlserver.port", index)
|
|
714
|
-
server.
|
|
714
|
+
server.schema_ = get_server_cell_value(workbook, sheet, "servers.sqlserver.schema", index)
|
|
715
715
|
else:
|
|
716
716
|
# Custom server type - grab all possible fields
|
|
717
717
|
server.account = get_server_cell_value(workbook, sheet, "servers.custom.account", index)
|
|
@@ -726,7 +726,7 @@ def import_servers(workbook) -> Optional[List[Server]]:
|
|
|
726
726
|
server.path = get_server_cell_value(workbook, sheet, "servers.custom.path", index)
|
|
727
727
|
server.port = get_server_cell_value(workbook, sheet, "servers.custom.port", index)
|
|
728
728
|
server.project = get_server_cell_value(workbook, sheet, "servers.custom.project", index)
|
|
729
|
-
server.
|
|
729
|
+
server.schema_ = get_server_cell_value(workbook, sheet, "servers.custom.schema", index)
|
|
730
730
|
server.stagingDir = get_server_cell_value(workbook, sheet, "servers.custom.stagingDir", index)
|
|
731
731
|
server.table = get_server_cell_value(workbook, sheet, "servers.custom.table", index)
|
|
732
732
|
server.view = get_server_cell_value(workbook, sheet, "servers.custom.view", index)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: datacontract-cli
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.30
|
|
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
|
|
@@ -11,7 +11,7 @@ Classifier: Operating System :: OS Independent
|
|
|
11
11
|
Requires-Python: >=3.10
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
License-File: LICENSE
|
|
14
|
-
Requires-Dist: typer<0.
|
|
14
|
+
Requires-Dist: typer<0.17,>=0.15.1
|
|
15
15
|
Requires-Dist: pydantic<2.12.0,>=2.8.2
|
|
16
16
|
Requires-Dist: pyyaml~=6.0.1
|
|
17
17
|
Requires-Dist: requests<2.33,>=2.31
|
|
@@ -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.59.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"
|
|
@@ -54,7 +54,7 @@ Provides-Extra: postgres
|
|
|
54
54
|
Requires-Dist: soda-core-postgres<3.6.0,>=3.3.20; extra == "postgres"
|
|
55
55
|
Provides-Extra: s3
|
|
56
56
|
Requires-Dist: s3fs<2026.0.0,>=2025.2.0; extra == "s3"
|
|
57
|
-
Requires-Dist: aiobotocore<2.
|
|
57
|
+
Requires-Dist: aiobotocore<2.24.0,>=2.17.0; extra == "s3"
|
|
58
58
|
Provides-Extra: snowflake
|
|
59
59
|
Requires-Dist: snowflake-connector-python[pandas]<3.16,>=3.6; extra == "snowflake"
|
|
60
60
|
Requires-Dist: soda-core-snowflake<3.6.0,>=3.3.20; extra == "snowflake"
|
|
@@ -71,7 +71,7 @@ Requires-Dist: pyarrow>=18.1.0; extra == "parquet"
|
|
|
71
71
|
Provides-Extra: rdf
|
|
72
72
|
Requires-Dist: rdflib==7.0.0; extra == "rdf"
|
|
73
73
|
Provides-Extra: api
|
|
74
|
-
Requires-Dist: fastapi==0.
|
|
74
|
+
Requires-Dist: fastapi==0.116.1; extra == "api"
|
|
75
75
|
Requires-Dist: uvicorn==0.35.0; extra == "api"
|
|
76
76
|
Provides-Extra: protobuf
|
|
77
77
|
Requires-Dist: grpcio-tools>=1.53; extra == "protobuf"
|
|
@@ -86,7 +86,7 @@ Requires-Dist: pandas>=2.1.0; extra == "dev"
|
|
|
86
86
|
Requires-Dist: pre-commit<4.3.0,>=3.7.1; extra == "dev"
|
|
87
87
|
Requires-Dist: pytest; extra == "dev"
|
|
88
88
|
Requires-Dist: pytest-xdist; extra == "dev"
|
|
89
|
-
Requires-Dist: pymssql==2.3.
|
|
89
|
+
Requires-Dist: pymssql==2.3.7; extra == "dev"
|
|
90
90
|
Requires-Dist: ruff; extra == "dev"
|
|
91
91
|
Requires-Dist: testcontainers[kafka,minio,mssql,postgres]==4.10.0; extra == "dev"
|
|
92
92
|
Requires-Dist: trino==0.335.0; extra == "dev"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
datacontract/__init__.py,sha256=ThDdxDJsd7qNErLoh628nK5M7RzhJNYCmN-C6BAJFoo,405
|
|
2
2
|
datacontract/api.py,sha256=Ze6pVD3Ub0oyMJI3iYSNXH78K2nPKbXKKHA-0DerJ48,8175
|
|
3
3
|
datacontract/cli.py,sha256=KSXii4MsrdmEwFTDN9F7A-OC250gdY0R914FBqA2RuY,18614
|
|
4
|
-
datacontract/data_contract.py,sha256
|
|
4
|
+
datacontract/data_contract.py,sha256=yU0Ys4-MK16tTm5RAnALGaNfqpvFmAjfabZg7ePqV5Y,15074
|
|
5
5
|
datacontract/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
datacontract/breaking/breaking.py,sha256=DnqgxUjD-EAZcg5RBizOP9a2WxsFTaQBik0AB_m3K00,20431
|
|
7
7
|
datacontract/breaking/breaking_change.py,sha256=BIDEUo1U2CQLVT2-I5PyFttxAj6zQPI1UUkEoOOQXMY,2249
|
|
@@ -37,11 +37,11 @@ datacontract/export/duckdb_type_converter.py,sha256=hUAAbImhJUMJOXEG-UoOKQqYGrJM
|
|
|
37
37
|
datacontract/export/exporter.py,sha256=P_6J5d7k5GPm-DUyfrbgEXmU_o45FHu5nlOTT2CdkUk,3049
|
|
38
38
|
datacontract/export/exporter_factory.py,sha256=PWA2j82Vjenj4hXlYXUISTzttrMIILdx8LxNv6hM0cg,6014
|
|
39
39
|
datacontract/export/go_converter.py,sha256=Ttvbfu3YU-3GBwRD6nwCsFyZuc_hiIvJD-Jg2sT5WLw,3331
|
|
40
|
-
datacontract/export/great_expectations_converter.py,sha256=
|
|
40
|
+
datacontract/export/great_expectations_converter.py,sha256=Wx0mESRy4xAf8y7HjESsGsQaaei8k9xOVu3RbC6BlQM,12257
|
|
41
41
|
datacontract/export/html_exporter.py,sha256=EyTMj25_Df3irZiYw1hxVZeLYWp6YSG6z3IuFUviP14,3066
|
|
42
42
|
datacontract/export/iceberg_converter.py,sha256=ArcQ_Y3z_W4_kGDU_8jPRx2-pHpP3Nhx1zYoETOL3c4,6804
|
|
43
43
|
datacontract/export/jsonschema_converter.py,sha256=2MT82MurcQQbrVDRj1kFsxnmFd9scNSfYI1upQSecl4,5631
|
|
44
|
-
datacontract/export/markdown_converter.py,sha256=
|
|
44
|
+
datacontract/export/markdown_converter.py,sha256=ioTFe3mHKLYwpo7wasOr-4TBlHIjowDHSonDgXV4uOQ,6468
|
|
45
45
|
datacontract/export/mermaid_exporter.py,sha256=wBFqRKgy3Y5FZnzD0RCR1UAlT9ZqYW7dkXWSJa6eHiQ,3465
|
|
46
46
|
datacontract/export/odcs_v3_exporter.py,sha256=b__AiPAnCUuFQE5DPHsvXBrMeEl1t_mJ1vzTx84TMlI,13931
|
|
47
47
|
datacontract/export/pandas_type_converter.py,sha256=464pQ3JQKFQa1TO0HBNcEoZvQye_yUbY6jQtiBaphSc,1117
|
|
@@ -59,7 +59,7 @@ datacontract/imports/bigquery_importer.py,sha256=7TcP9FDsIas5LwJZ-HrOPXZ-NuR056s
|
|
|
59
59
|
datacontract/imports/csv_importer.py,sha256=mBsmyTvfB8q64Z3NYqv4zTDUOvoXG896hZvp3oLt5YM,5330
|
|
60
60
|
datacontract/imports/dbml_importer.py,sha256=o0IOgvXN34lU1FICDHm_QUTv0DKsgwbHPHUDxQhIapE,3872
|
|
61
61
|
datacontract/imports/dbt_importer.py,sha256=hQwqD9vbvwLLc6Yj3tQbar5ldI0pV-ynSiz7CZZ0JCc,8290
|
|
62
|
-
datacontract/imports/excel_importer.py,sha256=
|
|
62
|
+
datacontract/imports/excel_importer.py,sha256=TsyGlF4LE3ABps9UJt7ozwEXwHLgmOhqyJhh6l--xk0,37116
|
|
63
63
|
datacontract/imports/glue_importer.py,sha256=fiJPkvfwOCsaKKCGW19-JM5CCGXZ2mkNrVtUzp2iw6g,8370
|
|
64
64
|
datacontract/imports/iceberg_importer.py,sha256=vadGJVqQKgG-j8swUytZALFB8QjbGRqZPCcPcCy0vco,5923
|
|
65
65
|
datacontract/imports/importer.py,sha256=NRhR_9AWPWDNq2ac_DVUHGoJuvkVpwwaao8nDfJG_l0,1257
|
|
@@ -112,9 +112,9 @@ datacontract/templates/partials/model_field.html,sha256=2YBF95ypNCPFYuYKoeilRnDG
|
|
|
112
112
|
datacontract/templates/partials/quality.html,sha256=ynEDWRn8I90Uje-xhGYgFcfwOgKI1R-CDki-EvTsauQ,1785
|
|
113
113
|
datacontract/templates/partials/server.html,sha256=dHFJtonMjhiUHtT69RUgTpkoRwmNdTRzkCdH0LtGg_4,6279
|
|
114
114
|
datacontract/templates/style/output.css,sha256=ioIo1f96VW7LHhDifj6QI8QbRChJl-LlQ59EwM8MEmA,28692
|
|
115
|
-
datacontract_cli-0.10.
|
|
116
|
-
datacontract_cli-0.10.
|
|
117
|
-
datacontract_cli-0.10.
|
|
118
|
-
datacontract_cli-0.10.
|
|
119
|
-
datacontract_cli-0.10.
|
|
120
|
-
datacontract_cli-0.10.
|
|
115
|
+
datacontract_cli-0.10.30.dist-info/licenses/LICENSE,sha256=23h64qnSeIZ0DKeziWAKC-zBCt328iSbRbWBrXoYRb4,2210
|
|
116
|
+
datacontract_cli-0.10.30.dist-info/METADATA,sha256=GCPk_bVyAcEVxIj1redl4F4I8Hwni7CQcnr8jtGbYE4,110311
|
|
117
|
+
datacontract_cli-0.10.30.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
118
|
+
datacontract_cli-0.10.30.dist-info/entry_points.txt,sha256=D3Eqy4q_Z6bHauGd4ppIyQglwbrm1AJnLau4Ppbw9Is,54
|
|
119
|
+
datacontract_cli-0.10.30.dist-info/top_level.txt,sha256=VIRjd8EIUrBYWjEXJJjtdUgc0UAJdPZjmLiOR8BRBYM,13
|
|
120
|
+
datacontract_cli-0.10.30.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|