datacontract-cli 0.10.8__py3-none-any.whl → 0.10.10__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/catalog/catalog.py +4 -2
- datacontract/cli.py +36 -18
- datacontract/data_contract.py +13 -53
- datacontract/engines/soda/check_soda_execute.py +10 -2
- datacontract/engines/soda/connections/duckdb.py +32 -12
- datacontract/engines/soda/connections/trino.py +26 -0
- datacontract/export/avro_converter.py +1 -1
- datacontract/export/exporter.py +3 -2
- datacontract/export/exporter_factory.py +132 -39
- datacontract/export/jsonschema_converter.py +7 -7
- datacontract/export/sodacl_converter.py +17 -12
- datacontract/export/spark_converter.py +211 -0
- datacontract/export/sql_type_converter.py +28 -0
- datacontract/imports/avro_importer.py +149 -7
- datacontract/imports/bigquery_importer.py +17 -0
- datacontract/imports/dbt_importer.py +117 -0
- datacontract/imports/glue_importer.py +116 -33
- datacontract/imports/importer.py +34 -0
- datacontract/imports/importer_factory.py +90 -0
- datacontract/imports/jsonschema_importer.py +14 -3
- datacontract/imports/odcs_importer.py +8 -0
- datacontract/imports/spark_importer.py +134 -0
- datacontract/imports/sql_importer.py +8 -0
- datacontract/imports/unity_importer.py +23 -9
- datacontract/integration/publish_datamesh_manager.py +10 -5
- datacontract/lint/resolve.py +87 -21
- datacontract/lint/schema.py +24 -4
- datacontract/model/data_contract_specification.py +37 -4
- datacontract/templates/datacontract.html +18 -3
- datacontract/templates/index.html +1 -1
- datacontract/templates/partials/datacontract_information.html +20 -0
- datacontract/templates/partials/datacontract_terms.html +7 -0
- datacontract/templates/partials/definition.html +9 -1
- datacontract/templates/partials/model_field.html +23 -6
- datacontract/templates/partials/server.html +49 -16
- datacontract/templates/style/output.css +42 -0
- {datacontract_cli-0.10.8.dist-info → datacontract_cli-0.10.10.dist-info}/METADATA +310 -122
- {datacontract_cli-0.10.8.dist-info → datacontract_cli-0.10.10.dist-info}/RECORD +42 -36
- {datacontract_cli-0.10.8.dist-info → datacontract_cli-0.10.10.dist-info}/WHEEL +1 -1
- {datacontract_cli-0.10.8.dist-info → datacontract_cli-0.10.10.dist-info}/LICENSE +0 -0
- {datacontract_cli-0.10.8.dist-info → datacontract_cli-0.10.10.dist-info}/entry_points.txt +0 -0
- {datacontract_cli-0.10.8.dist-info → datacontract_cli-0.10.10.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<li class="relative flex gap-x-6 px-4 py-5 sm:px-6">
|
|
2
2
|
<div class="flex items-center gap-x-4">
|
|
3
|
-
<div class="
|
|
3
|
+
<div class="sm:flex sm:flex-col">
|
|
4
4
|
<div class="flex flex-col">
|
|
5
5
|
<dt class="text-sm font-medium text-gray-500">Server</dt>
|
|
6
6
|
<dd class="mt-1 text-sm text-gray-900">{{server_name}}</dd>
|
|
@@ -8,9 +8,20 @@
|
|
|
8
8
|
</div>
|
|
9
9
|
</div>
|
|
10
10
|
|
|
11
|
+
{% if server.environment %}
|
|
12
|
+
<div class="flex items-center gap-x-4">
|
|
13
|
+
<div class="sm:flex sm:flex-col">
|
|
14
|
+
<div class="flex flex-col">
|
|
15
|
+
<dt class="text-sm font-medium text-gray-500">Environment</dt>
|
|
16
|
+
<dd class="mt-1 text-sm text-gray-900">{{server.environment}}</dd>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
{% endif %}
|
|
21
|
+
|
|
11
22
|
{% if server.type %}
|
|
12
23
|
<div class="flex items-center gap-x-4">
|
|
13
|
-
<div class="
|
|
24
|
+
<div class="sm:flex sm:flex-col">
|
|
14
25
|
<div class="flex flex-col">
|
|
15
26
|
<dt class="text-sm font-medium text-gray-500">Type</dt>
|
|
16
27
|
<dd class="mt-1 text-sm text-gray-900">{{server.type}}</dd>
|
|
@@ -21,7 +32,7 @@
|
|
|
21
32
|
|
|
22
33
|
{% if server.project %}
|
|
23
34
|
<div class="flex items-center gap-x-4">
|
|
24
|
-
<div class="
|
|
35
|
+
<div class="sm:flex sm:flex-col">
|
|
25
36
|
<div class="flex flex-col">
|
|
26
37
|
<dt class="text-sm font-medium text-gray-500">Project</dt>
|
|
27
38
|
<dd class="mt-1 text-sm text-gray-900">{{server.project}}</dd>
|
|
@@ -32,7 +43,7 @@
|
|
|
32
43
|
|
|
33
44
|
{% if server.dataset %}
|
|
34
45
|
<div class="flex items-center gap-x-4">
|
|
35
|
-
<div class="
|
|
46
|
+
<div class="sm:flex sm:flex-col">
|
|
36
47
|
<div class="flex flex-col">
|
|
37
48
|
<dt class="text-sm font-medium text-gray-500">Dataset</dt>
|
|
38
49
|
<dd class="mt-1 text-sm text-gray-900">{{server.dataset}}</dd>
|
|
@@ -43,7 +54,7 @@
|
|
|
43
54
|
|
|
44
55
|
{% if server.location %}
|
|
45
56
|
<div class="flex items-center gap-x-4">
|
|
46
|
-
<div class="
|
|
57
|
+
<div class="sm:flex sm:flex-col">
|
|
47
58
|
<div class="flex flex-col">
|
|
48
59
|
<dt class="text-sm font-medium text-gray-500">Location</dt>
|
|
49
60
|
<dd class="mt-1 text-sm text-gray-900">{{server.location}}</dd>
|
|
@@ -54,7 +65,7 @@
|
|
|
54
65
|
|
|
55
66
|
{% if server.endpointUrl %}
|
|
56
67
|
<div class="flex items-center gap-x-4">
|
|
57
|
-
<div class="
|
|
68
|
+
<div class="sm:flex sm:flex-col">
|
|
58
69
|
<div class="flex flex-col">
|
|
59
70
|
<dt class="text-sm font-medium text-gray-500">Endpoint URL</dt>
|
|
60
71
|
<dd class="mt-1 text-sm text-gray-900">{{server.endpointUrl}}</dd>
|
|
@@ -65,7 +76,7 @@
|
|
|
65
76
|
|
|
66
77
|
{% if server.account %}
|
|
67
78
|
<div class="flex items-center gap-x-4">
|
|
68
|
-
<div class="
|
|
79
|
+
<div class="sm:flex sm:flex-col">
|
|
69
80
|
<div class="flex flex-col">
|
|
70
81
|
<dt class="text-sm font-medium text-gray-500">Account</dt>
|
|
71
82
|
<dd class="mt-1 text-sm text-gray-900">{{server.account}}</dd>
|
|
@@ -76,7 +87,7 @@
|
|
|
76
87
|
|
|
77
88
|
{% if server.host %}
|
|
78
89
|
<div class="flex items-center gap-x-4">
|
|
79
|
-
<div class="
|
|
90
|
+
<div class="sm:flex sm:flex-col">
|
|
80
91
|
<div class="flex flex-col">
|
|
81
92
|
<dt class="text-sm font-medium text-gray-500">Host</dt>
|
|
82
93
|
<dd class="mt-1 text-sm text-gray-900">{{server.host}}</dd>
|
|
@@ -87,7 +98,7 @@
|
|
|
87
98
|
|
|
88
99
|
{% if server.port %}
|
|
89
100
|
<div class="flex items-center gap-x-4">
|
|
90
|
-
<div class="
|
|
101
|
+
<div class="sm:flex sm:flex-col">
|
|
91
102
|
<div class="flex flex-col">
|
|
92
103
|
<dt class="text-sm font-medium text-gray-500">Port</dt>
|
|
93
104
|
<dd class="mt-1 text-sm text-gray-900">{{server.port}}</dd>
|
|
@@ -98,7 +109,7 @@
|
|
|
98
109
|
|
|
99
110
|
{% if server.catalog %}
|
|
100
111
|
<div class="flex items-center gap-x-4">
|
|
101
|
-
<div class="
|
|
112
|
+
<div class="sm:flex sm:flex-col">
|
|
102
113
|
<div class="flex flex-col">
|
|
103
114
|
<dt class="text-sm font-medium text-gray-500">Catalog</dt>
|
|
104
115
|
<dd class="mt-1 text-sm text-gray-900">{{server.catalog}}</dd>
|
|
@@ -109,7 +120,7 @@
|
|
|
109
120
|
|
|
110
121
|
{% if server.database %}
|
|
111
122
|
<div class="flex items-center gap-x-4">
|
|
112
|
-
<div class="
|
|
123
|
+
<div class="sm:flex sm:flex-col">
|
|
113
124
|
<div class="flex flex-col">
|
|
114
125
|
<dt class="text-sm font-medium text-gray-500">Database</dt>
|
|
115
126
|
<dd class="mt-1 text-sm text-gray-900">{{server.database}}</dd>
|
|
@@ -120,7 +131,7 @@
|
|
|
120
131
|
|
|
121
132
|
{% if server.schema_ %}
|
|
122
133
|
<div class="flex items-center gap-x-4">
|
|
123
|
-
<div class="
|
|
134
|
+
<div class="sm:flex sm:flex-col">
|
|
124
135
|
<div class="flex flex-col">
|
|
125
136
|
<dt class="text-sm font-medium text-gray-500">Schema</dt>
|
|
126
137
|
<dd class="mt-1 text-sm text-gray-900">{{server.schema_}}</dd>
|
|
@@ -131,7 +142,7 @@
|
|
|
131
142
|
|
|
132
143
|
{% if server.topic %}
|
|
133
144
|
<div class="flex items-center gap-x-4">
|
|
134
|
-
<div class="
|
|
145
|
+
<div class="sm:flex sm:flex-col">
|
|
135
146
|
<div class="flex flex-col">
|
|
136
147
|
<dt class="text-sm font-medium text-gray-500">Topic</dt>
|
|
137
148
|
<dd class="mt-1 text-sm text-gray-900">{{server.topic}}</dd>
|
|
@@ -142,7 +153,7 @@
|
|
|
142
153
|
|
|
143
154
|
{% if server.path %}
|
|
144
155
|
<div class="flex items-center gap-x-4">
|
|
145
|
-
<div class="
|
|
156
|
+
<div class="sm:flex sm:flex-col">
|
|
146
157
|
<div class="flex flex-col">
|
|
147
158
|
<dt class="text-sm font-medium text-gray-500">Path</dt>
|
|
148
159
|
<dd class="mt-1 text-sm text-gray-900">{{server.path}}</dd>
|
|
@@ -153,7 +164,7 @@
|
|
|
153
164
|
|
|
154
165
|
{% if server.format %}
|
|
155
166
|
<div class="flex items-center gap-x-4">
|
|
156
|
-
<div class="
|
|
167
|
+
<div class="sm:flex sm:flex-col">
|
|
157
168
|
<div class="flex flex-col">
|
|
158
169
|
<dt class="text-sm font-medium text-gray-500">Format</dt>
|
|
159
170
|
<dd class="mt-1 text-sm text-gray-900">{{server.format}}</dd>
|
|
@@ -164,7 +175,7 @@
|
|
|
164
175
|
|
|
165
176
|
{% if server.delimiter %}
|
|
166
177
|
<div class="flex items-center gap-x-4">
|
|
167
|
-
<div class="
|
|
178
|
+
<div class="sm:flex sm:flex-col">
|
|
168
179
|
<div class="flex flex-col">
|
|
169
180
|
<dt class="text-sm font-medium text-gray-500">Delimiter</dt>
|
|
170
181
|
<dd class="mt-1 text-sm text-gray-900">{{server.delimiter}}</dd>
|
|
@@ -173,4 +184,26 @@
|
|
|
173
184
|
</div>
|
|
174
185
|
{% endif %}
|
|
175
186
|
|
|
187
|
+
{% if server.description %}
|
|
188
|
+
<div class="flex items-center gap-x-4">
|
|
189
|
+
<div class="sm:flex sm:flex-col">
|
|
190
|
+
<div class="flex flex-col">
|
|
191
|
+
<dt class="text-sm font-medium text-gray-500">Description</dt>
|
|
192
|
+
<dd class="mt-1 text-sm text-gray-900">{{server.description}}</dd>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
</div>
|
|
196
|
+
{% endif %}
|
|
197
|
+
|
|
198
|
+
{% for key, value in server.model_extra.items() %}
|
|
199
|
+
<div class="flex items-center gap-x-4">
|
|
200
|
+
<div class="sm:flex sm:flex-col">
|
|
201
|
+
<div class="flex flex-col">
|
|
202
|
+
<dt class="text-sm font-medium text-gray-500">{{ key }}</dt>
|
|
203
|
+
<dd class="mt-1 text-sm text-gray-900">{{ value }}</dd>
|
|
204
|
+
</div>
|
|
205
|
+
</div>
|
|
206
|
+
</div>
|
|
207
|
+
{% endfor %}
|
|
208
|
+
|
|
176
209
|
</li>
|
|
@@ -630,6 +630,11 @@ video {
|
|
|
630
630
|
margin-right: auto;
|
|
631
631
|
}
|
|
632
632
|
|
|
633
|
+
.my-2 {
|
|
634
|
+
margin-top: 0.5rem;
|
|
635
|
+
margin-bottom: 0.5rem;
|
|
636
|
+
}
|
|
637
|
+
|
|
633
638
|
.-ml-0 {
|
|
634
639
|
margin-left: -0px;
|
|
635
640
|
}
|
|
@@ -642,6 +647,10 @@ video {
|
|
|
642
647
|
margin-bottom: 0.75rem;
|
|
643
648
|
}
|
|
644
649
|
|
|
650
|
+
.mb-6 {
|
|
651
|
+
margin-bottom: 1.5rem;
|
|
652
|
+
}
|
|
653
|
+
|
|
645
654
|
.mr-1 {
|
|
646
655
|
margin-right: 0.25rem;
|
|
647
656
|
}
|
|
@@ -741,6 +750,10 @@ video {
|
|
|
741
750
|
height: 1.5rem;
|
|
742
751
|
}
|
|
743
752
|
|
|
753
|
+
.h-8 {
|
|
754
|
+
height: 2rem;
|
|
755
|
+
}
|
|
756
|
+
|
|
744
757
|
.h-full {
|
|
745
758
|
height: 100%;
|
|
746
759
|
}
|
|
@@ -781,6 +794,10 @@ video {
|
|
|
781
794
|
width: 58.333333%;
|
|
782
795
|
}
|
|
783
796
|
|
|
797
|
+
.w-8 {
|
|
798
|
+
width: 2rem;
|
|
799
|
+
}
|
|
800
|
+
|
|
784
801
|
.w-9\/12 {
|
|
785
802
|
width: 75%;
|
|
786
803
|
}
|
|
@@ -988,6 +1005,11 @@ video {
|
|
|
988
1005
|
background-color: rgb(107 114 128 / var(--tw-bg-opacity));
|
|
989
1006
|
}
|
|
990
1007
|
|
|
1008
|
+
.bg-indigo-100 {
|
|
1009
|
+
--tw-bg-opacity: 1;
|
|
1010
|
+
background-color: rgb(224 231 255 / var(--tw-bg-opacity));
|
|
1011
|
+
}
|
|
1012
|
+
|
|
991
1013
|
.bg-indigo-600 {
|
|
992
1014
|
--tw-bg-opacity: 1;
|
|
993
1015
|
background-color: rgb(79 70 229 / var(--tw-bg-opacity));
|
|
@@ -1030,6 +1052,11 @@ video {
|
|
|
1030
1052
|
padding-right: 0.5rem;
|
|
1031
1053
|
}
|
|
1032
1054
|
|
|
1055
|
+
.px-2\.5 {
|
|
1056
|
+
padding-left: 0.625rem;
|
|
1057
|
+
padding-right: 0.625rem;
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1033
1060
|
.px-3 {
|
|
1034
1061
|
padding-left: 0.75rem;
|
|
1035
1062
|
padding-right: 0.75rem;
|
|
@@ -1045,6 +1072,16 @@ video {
|
|
|
1045
1072
|
padding-right: 1.5rem;
|
|
1046
1073
|
}
|
|
1047
1074
|
|
|
1075
|
+
.py-0 {
|
|
1076
|
+
padding-top: 0px;
|
|
1077
|
+
padding-bottom: 0px;
|
|
1078
|
+
}
|
|
1079
|
+
|
|
1080
|
+
.py-0\.5 {
|
|
1081
|
+
padding-top: 0.125rem;
|
|
1082
|
+
padding-bottom: 0.125rem;
|
|
1083
|
+
}
|
|
1084
|
+
|
|
1048
1085
|
.py-1 {
|
|
1049
1086
|
padding-top: 0.25rem;
|
|
1050
1087
|
padding-bottom: 0.25rem;
|
|
@@ -1198,6 +1235,11 @@ video {
|
|
|
1198
1235
|
color: rgb(75 85 99 / var(--tw-text-opacity));
|
|
1199
1236
|
}
|
|
1200
1237
|
|
|
1238
|
+
.text-gray-800 {
|
|
1239
|
+
--tw-text-opacity: 1;
|
|
1240
|
+
color: rgb(31 41 55 / var(--tw-text-opacity));
|
|
1241
|
+
}
|
|
1242
|
+
|
|
1201
1243
|
.text-gray-900 {
|
|
1202
1244
|
--tw-text-opacity: 1;
|
|
1203
1245
|
color: rgb(17 24 39 / var(--tw-text-opacity));
|