collate-dbt-artifacts-parser 0.1__tar.gz → 0.1.2__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.
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/.gitignore +2 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/PKG-INFO +3 -2
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/__init__.py +1 -1
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parser.py +77 -57
- collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/catalog/catalog_cloud_v1.py +71 -0
- collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/catalog/catalog_cloud_v2.py +72 -0
- collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/manifest/manifest_cloud_v1.py +3694 -0
- collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/manifest/manifest_cloud_v2.py +3731 -0
- collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/run_results/run_results_cloud_v1.py +80 -0
- collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/run_results/run_results_cloud_v2.py +81 -0
- collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/sources/sources_cloud_v1.py +91 -0
- collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/sources/sources_cloud_v2.py +92 -0
- collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/resources/catalog/catalog_cloud_v2.json +435 -0
- collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/resources/manifest/manifest_cloud_v2.json +22963 -0
- collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/resources/run-results/run-results_cloud_v2.json +275 -0
- collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/resources/sources/sources_cloud_v2.json +290 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/pyproject.toml +2 -1
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/CONTRIBUTING.md +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/LICENSE +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/README.md +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/__init__.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/base.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/catalog/__init__.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/catalog/catalog_cloud.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/catalog/catalog_v1.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/__init__.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_cloud.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v1.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v10.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v11.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v12.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v2.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v3.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v4.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v5.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v6.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v7.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v8.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v9.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/run_results/__init__.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/run_results/run_results_cloud.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/run_results/run_results_v1.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/run_results/run_results_v2.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/run_results/run_results_v3.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/run_results/run_results_v4.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/run_results/run_results_v5.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/run_results/run_results_v6.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/sources/__init__.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/sources/sources_cloud.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/sources/sources_v1.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/sources/sources_v2.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/sources/sources_v3.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/utils.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/version_map.py +0 -0
- /collate_dbt_artifacts_parser-0.1/collate_dbt_artifacts_parser/resources/catalog/catalog_cloud.json → /collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/resources/catalog/catalog_cloud_v1.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/catalog/catalog_v1.json +0 -0
- /collate_dbt_artifacts_parser-0.1/collate_dbt_artifacts_parser/resources/manifest/manifest_cloud.json → /collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/resources/manifest/manifest_cloud_v1.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v1.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v10.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v11.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v12.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v2.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v3.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v4.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v5.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v6.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v7.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v8.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v9.json +0 -0
- /collate_dbt_artifacts_parser-0.1/collate_dbt_artifacts_parser/resources/run-results/run-results_cloud.json → /collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/resources/run-results/run-results_cloud_v1.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/run-results/run-results_v1.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/run-results/run-results_v2.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/run-results/run-results_v3.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/run-results/run-results_v4.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/run-results/run-results_v5.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/run-results/run-results_v6.json +0 -0
- /collate_dbt_artifacts_parser-0.1/collate_dbt_artifacts_parser/resources/sources/sources_cloud.json → /collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/resources/sources/sources_cloud_v1.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/sources/sources_v1.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/sources/sources_v2.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/sources/sources_v3.json +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/utils.py +0 -0
- {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/requirements.setup.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: collate-dbt-artifacts-parser
|
|
3
|
-
Version: 0.1
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: A dbt artifacts parser in python
|
|
5
5
|
Project-URL: Home, https://github.com/open-metadata/collate-dbt-artifacts-parser
|
|
6
6
|
Author: open-metadata
|
|
@@ -214,6 +214,7 @@ Classifier: Operating System :: OS Independent
|
|
|
214
214
|
Classifier: Programming Language :: Python
|
|
215
215
|
Classifier: Programming Language :: Python :: 3
|
|
216
216
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
217
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
217
218
|
Classifier: Programming Language :: Python :: 3.9
|
|
218
219
|
Classifier: Programming Language :: Python :: 3.10
|
|
219
220
|
Classifier: Programming Language :: Python :: 3.11
|
|
@@ -221,7 +222,7 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
221
222
|
Classifier: Topic :: Software Development :: Libraries
|
|
222
223
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
223
224
|
Classifier: Typing :: Typed
|
|
224
|
-
Requires-Python: >=3.
|
|
225
|
+
Requires-Python: >=3.8.0
|
|
225
226
|
Requires-Dist: pydantic<3.0,>=2.0
|
|
226
227
|
Provides-Extra: dev
|
|
227
228
|
Requires-Dist: black==24.8.0; extra == 'dev'
|
|
@@ -18,9 +18,15 @@ from typing import Union
|
|
|
18
18
|
|
|
19
19
|
from pydantic import ValidationError
|
|
20
20
|
|
|
21
|
-
from collate_dbt_artifacts_parser.parsers.catalog.
|
|
21
|
+
from collate_dbt_artifacts_parser.parsers.catalog.catalog_cloud_v1 import CatalogCLOUDV1
|
|
22
|
+
from collate_dbt_artifacts_parser.parsers.catalog.catalog_cloud_v2 import CatalogCLOUDV2
|
|
22
23
|
from collate_dbt_artifacts_parser.parsers.catalog.catalog_v1 import CatalogV1
|
|
23
|
-
from collate_dbt_artifacts_parser.parsers.manifest.
|
|
24
|
+
from collate_dbt_artifacts_parser.parsers.manifest.manifest_cloud_v1 import (
|
|
25
|
+
ManifestCLOUDV1,
|
|
26
|
+
)
|
|
27
|
+
from collate_dbt_artifacts_parser.parsers.manifest.manifest_cloud_v2 import (
|
|
28
|
+
ManifestCLOUDV2,
|
|
29
|
+
)
|
|
24
30
|
from collate_dbt_artifacts_parser.parsers.manifest.manifest_v1 import ManifestV1
|
|
25
31
|
from collate_dbt_artifacts_parser.parsers.manifest.manifest_v2 import ManifestV2
|
|
26
32
|
from collate_dbt_artifacts_parser.parsers.manifest.manifest_v3 import ManifestV3
|
|
@@ -33,8 +39,11 @@ from collate_dbt_artifacts_parser.parsers.manifest.manifest_v9 import ManifestV9
|
|
|
33
39
|
from collate_dbt_artifacts_parser.parsers.manifest.manifest_v10 import ManifestV10
|
|
34
40
|
from collate_dbt_artifacts_parser.parsers.manifest.manifest_v11 import ManifestV11
|
|
35
41
|
from collate_dbt_artifacts_parser.parsers.manifest.manifest_v12 import ManifestV12
|
|
36
|
-
from collate_dbt_artifacts_parser.parsers.run_results.
|
|
37
|
-
|
|
42
|
+
from collate_dbt_artifacts_parser.parsers.run_results.run_results_cloud_v1 import (
|
|
43
|
+
RunResultsCLOUDV1,
|
|
44
|
+
)
|
|
45
|
+
from collate_dbt_artifacts_parser.parsers.run_results.run_results_cloud_v2 import (
|
|
46
|
+
RunResultsCLOUDV2,
|
|
38
47
|
)
|
|
39
48
|
from collate_dbt_artifacts_parser.parsers.run_results.run_results_v1 import RunResultsV1
|
|
40
49
|
from collate_dbt_artifacts_parser.parsers.run_results.run_results_v2 import RunResultsV2
|
|
@@ -42,7 +51,8 @@ from collate_dbt_artifacts_parser.parsers.run_results.run_results_v3 import RunR
|
|
|
42
51
|
from collate_dbt_artifacts_parser.parsers.run_results.run_results_v4 import RunResultsV4
|
|
43
52
|
from collate_dbt_artifacts_parser.parsers.run_results.run_results_v5 import RunResultsV5
|
|
44
53
|
from collate_dbt_artifacts_parser.parsers.run_results.run_results_v6 import RunResultsV6
|
|
45
|
-
from collate_dbt_artifacts_parser.parsers.sources.
|
|
54
|
+
from collate_dbt_artifacts_parser.parsers.sources.sources_cloud_v1 import SourcesCLOUDV1
|
|
55
|
+
from collate_dbt_artifacts_parser.parsers.sources.sources_cloud_v2 import SourcesCLOUDV2
|
|
46
56
|
from collate_dbt_artifacts_parser.parsers.sources.sources_v1 import SourcesV1
|
|
47
57
|
from collate_dbt_artifacts_parser.parsers.sources.sources_v2 import SourcesV2
|
|
48
58
|
from collate_dbt_artifacts_parser.parsers.sources.sources_v3 import SourcesV3
|
|
@@ -53,7 +63,8 @@ from collate_dbt_artifacts_parser.parsers.version_map import ArtifactTypes
|
|
|
53
63
|
#
|
|
54
64
|
# catalog
|
|
55
65
|
#
|
|
56
|
-
def parse_catalog(
|
|
66
|
+
def parse_catalog(
|
|
67
|
+
catalog: dict) -> Union[CatalogV1, CatalogCLOUDV1, CatalogCLOUDV2]:
|
|
57
68
|
"""Parse catalog.json
|
|
58
69
|
|
|
59
70
|
Args:
|
|
@@ -67,40 +78,56 @@ def parse_catalog(catalog: dict) -> Union[CatalogV1, CatalogCLOUD]:
|
|
|
67
78
|
try:
|
|
68
79
|
return CatalogV1(**catalog)
|
|
69
80
|
except ValidationError:
|
|
70
|
-
|
|
81
|
+
try:
|
|
82
|
+
return CatalogCLOUDV1(**catalog)
|
|
83
|
+
except ValidationError:
|
|
84
|
+
return CatalogCLOUDV2(**catalog)
|
|
71
85
|
raise ValueError("Not a catalog.json")
|
|
72
86
|
|
|
73
87
|
|
|
74
|
-
def parse_catalog_v1(catalog: dict) -> Union[CatalogV1,
|
|
88
|
+
def parse_catalog_v1(catalog: dict) -> Union[CatalogV1, CatalogCLOUDV1]:
|
|
75
89
|
"""Parse catalog.json v1"""
|
|
76
90
|
dbt_schema_version = get_dbt_schema_version(artifact_json=catalog)
|
|
77
91
|
if dbt_schema_version == ArtifactTypes.CATALOG_V1.value.dbt_schema_version:
|
|
78
92
|
try:
|
|
79
93
|
return CatalogV1(**catalog)
|
|
80
94
|
except ValidationError:
|
|
81
|
-
return
|
|
95
|
+
return CatalogCLOUDV1(**catalog)
|
|
82
96
|
raise ValueError("Not a catalog.json v1")
|
|
83
97
|
|
|
84
98
|
|
|
85
99
|
#
|
|
86
100
|
# manifest
|
|
87
101
|
#
|
|
102
|
+
def _try_parsers(data: dict, parsers: list):
|
|
103
|
+
"""Helper function to try multiple parsers in sequence.
|
|
104
|
+
Returns the first successful parse result or raises the last ValidationError."""
|
|
105
|
+
last_error = None
|
|
106
|
+
for parser in parsers:
|
|
107
|
+
try:
|
|
108
|
+
return parser(**data)
|
|
109
|
+
except ValidationError as e:
|
|
110
|
+
last_error = e
|
|
111
|
+
raise last_error
|
|
112
|
+
|
|
113
|
+
|
|
88
114
|
def parse_manifest(
|
|
89
115
|
manifest: dict,
|
|
90
116
|
) -> Union[
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
117
|
+
ManifestV1,
|
|
118
|
+
ManifestV2,
|
|
119
|
+
ManifestV3,
|
|
120
|
+
ManifestV4,
|
|
121
|
+
ManifestV5,
|
|
122
|
+
ManifestV6,
|
|
123
|
+
ManifestV7,
|
|
124
|
+
ManifestV8,
|
|
125
|
+
ManifestV9,
|
|
126
|
+
ManifestV10,
|
|
127
|
+
ManifestV11,
|
|
128
|
+
ManifestV12,
|
|
129
|
+
ManifestCLOUDV1,
|
|
130
|
+
ManifestCLOUDV2,
|
|
104
131
|
]:
|
|
105
132
|
"""Parse manifest.json
|
|
106
133
|
|
|
@@ -138,10 +165,8 @@ def parse_manifest(
|
|
|
138
165
|
elif dbt_schema_version == ArtifactTypes.MANIFEST_V11.value.dbt_schema_version:
|
|
139
166
|
return ManifestV11(**manifest)
|
|
140
167
|
elif dbt_schema_version == ArtifactTypes.MANIFEST_V12.value.dbt_schema_version:
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
except ValidationError:
|
|
144
|
-
return ManifestCLOUD(**manifest)
|
|
168
|
+
return _try_parsers(manifest,
|
|
169
|
+
[ManifestV12, ManifestCLOUDV1, ManifestCLOUDV2])
|
|
145
170
|
raise ValueError("Not a manifest.json")
|
|
146
171
|
|
|
147
172
|
|
|
@@ -233,14 +258,13 @@ def parse_manifest_v11(manifest: dict) -> ManifestV11:
|
|
|
233
258
|
raise ValueError("Not a manifest.json v11")
|
|
234
259
|
|
|
235
260
|
|
|
236
|
-
def parse_manifest_v12(
|
|
261
|
+
def parse_manifest_v12(
|
|
262
|
+
manifest: dict) -> Union[ManifestV12, ManifestCLOUDV1, ManifestCLOUDV2]:
|
|
237
263
|
"""Parse manifest.json ver.12"""
|
|
238
264
|
dbt_schema_version = get_dbt_schema_version(artifact_json=manifest)
|
|
239
265
|
if dbt_schema_version == ArtifactTypes.MANIFEST_V12.value.dbt_schema_version:
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
except ValidationError:
|
|
243
|
-
return ManifestCLOUD(**manifest)
|
|
266
|
+
return _try_parsers(manifest,
|
|
267
|
+
[ManifestV12, ManifestCLOUDV1, ManifestCLOUDV2])
|
|
244
268
|
raise ValueError("Not a manifest.json v12")
|
|
245
269
|
|
|
246
270
|
|
|
@@ -250,13 +274,14 @@ def parse_manifest_v12(manifest: dict) -> Union[ManifestV12, ManifestCLOUD]:
|
|
|
250
274
|
def parse_run_results(
|
|
251
275
|
run_results: dict,
|
|
252
276
|
) -> Union[
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
277
|
+
RunResultsV1,
|
|
278
|
+
RunResultsV2,
|
|
279
|
+
RunResultsV3,
|
|
280
|
+
RunResultsV4,
|
|
281
|
+
RunResultsV5,
|
|
282
|
+
RunResultsV6,
|
|
283
|
+
RunResultsCLOUDV1,
|
|
284
|
+
RunResultsCLOUDV2,
|
|
260
285
|
]:
|
|
261
286
|
"""Parse run-results.json
|
|
262
287
|
|
|
@@ -278,10 +303,8 @@ def parse_run_results(
|
|
|
278
303
|
elif dbt_schema_version == ArtifactTypes.RUN_RESULTS_V5.value.dbt_schema_version:
|
|
279
304
|
return RunResultsV5(**run_results)
|
|
280
305
|
elif dbt_schema_version == ArtifactTypes.RUN_RESULTS_V6.value.dbt_schema_version:
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
except ValidationError:
|
|
284
|
-
return RunResultsCLOUD(**run_results)
|
|
306
|
+
return _try_parsers(
|
|
307
|
+
run_results, [RunResultsV6, RunResultsCLOUDV1, RunResultsCLOUDV2])
|
|
285
308
|
raise ValueError("Not a run_results.json")
|
|
286
309
|
|
|
287
310
|
|
|
@@ -325,14 +348,14 @@ def parse_run_results_v5(run_results: dict) -> RunResultsV5:
|
|
|
325
348
|
raise ValueError("Not a run-results.json v5")
|
|
326
349
|
|
|
327
350
|
|
|
328
|
-
def parse_run_results_v6(
|
|
351
|
+
def parse_run_results_v6(
|
|
352
|
+
run_results: dict
|
|
353
|
+
) -> Union[RunResultsV6, RunResultsCLOUDV1, RunResultsCLOUDV2]:
|
|
329
354
|
"""Parse run-results.json v6"""
|
|
330
355
|
dbt_schema_version = get_dbt_schema_version(artifact_json=run_results)
|
|
331
356
|
if dbt_schema_version == ArtifactTypes.RUN_RESULTS_V6.value.dbt_schema_version:
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
except ValidationError:
|
|
335
|
-
return RunResultsCLOUD(**run_results)
|
|
357
|
+
return _try_parsers(
|
|
358
|
+
run_results, [RunResultsV6, RunResultsCLOUDV1, RunResultsCLOUDV2])
|
|
336
359
|
raise ValueError("Not a run-results.json v6")
|
|
337
360
|
|
|
338
361
|
|
|
@@ -341,7 +364,7 @@ def parse_run_results_v6(run_results: dict) -> Union[RunResultsV6, RunResultsCLO
|
|
|
341
364
|
#
|
|
342
365
|
def parse_sources(
|
|
343
366
|
sources: dict,
|
|
344
|
-
) -> Union[SourcesV1, SourcesV2, SourcesV3,
|
|
367
|
+
) -> Union[SourcesV1, SourcesV2, SourcesV3, SourcesCLOUDV1, SourcesCLOUDV2]:
|
|
345
368
|
"""Parse sources.json
|
|
346
369
|
|
|
347
370
|
Args:
|
|
@@ -356,10 +379,8 @@ def parse_sources(
|
|
|
356
379
|
elif dbt_schema_version == ArtifactTypes.SOURCES_V2.value.dbt_schema_version:
|
|
357
380
|
return SourcesV2(**sources)
|
|
358
381
|
elif dbt_schema_version == ArtifactTypes.SOURCES_V3.value.dbt_schema_version:
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
except ValidationError:
|
|
362
|
-
return SourcesCLOUD(**sources)
|
|
382
|
+
return _try_parsers(sources,
|
|
383
|
+
[SourcesV3, SourcesCLOUDV1, SourcesCLOUDV2])
|
|
363
384
|
raise ValueError("Not a sources.json")
|
|
364
385
|
|
|
365
386
|
|
|
@@ -379,12 +400,11 @@ def parse_sources_v2(sources: dict) -> SourcesV2:
|
|
|
379
400
|
raise ValueError("Not a sources.json v2")
|
|
380
401
|
|
|
381
402
|
|
|
382
|
-
def parse_sources_v3(
|
|
403
|
+
def parse_sources_v3(
|
|
404
|
+
sources: dict) -> Union[SourcesV3, SourcesCLOUDV1, SourcesCLOUDV2]:
|
|
383
405
|
"""Parse sources.json v3"""
|
|
384
406
|
dbt_schema_version = get_dbt_schema_version(artifact_json=sources)
|
|
385
407
|
if dbt_schema_version == ArtifactTypes.SOURCES_V3.value.dbt_schema_version:
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
except ValidationError:
|
|
389
|
-
return SourcesCLOUD(**sources)
|
|
408
|
+
return _try_parsers(sources,
|
|
409
|
+
[SourcesV3, SourcesCLOUDV1, SourcesCLOUDV2])
|
|
390
410
|
raise ValueError("Not a sources.json v3")
|
collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/catalog/catalog_cloud_v1.py
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: catalog_cloud_v1.json
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
from typing import Any, Dict, List, Optional, Union
|
|
7
|
+
|
|
8
|
+
from pydantic import ConfigDict, Field
|
|
9
|
+
|
|
10
|
+
from collate_dbt_artifacts_parser.parsers.base import BaseParserModel
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Metadata(BaseParserModel):
|
|
14
|
+
model_config = ConfigDict(extra='forbid',)
|
|
15
|
+
dbt_schema_version: Optional[str] = None
|
|
16
|
+
dbt_version: Optional[str] = '1.10.0a1'
|
|
17
|
+
generated_at: Optional[str] = None
|
|
18
|
+
invocation_id: Optional[str] = None
|
|
19
|
+
env: Optional[Dict[str, str]] = None
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class Metadata1(BaseParserModel):
|
|
23
|
+
model_config = ConfigDict(extra='forbid',)
|
|
24
|
+
type: str
|
|
25
|
+
schema_: str = Field(..., alias='schema')
|
|
26
|
+
name: str
|
|
27
|
+
database: Optional[str] = None
|
|
28
|
+
comment: Optional[str] = None
|
|
29
|
+
owner: Optional[str] = None
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class Columns(BaseParserModel):
|
|
33
|
+
model_config = ConfigDict(extra='forbid',)
|
|
34
|
+
type: str
|
|
35
|
+
index: int
|
|
36
|
+
name: str
|
|
37
|
+
comment: Optional[str] = None
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class Stats(BaseParserModel):
|
|
41
|
+
model_config = ConfigDict(extra='forbid',)
|
|
42
|
+
id: str
|
|
43
|
+
label: str
|
|
44
|
+
value: Optional[Union[bool, str, float]] = None
|
|
45
|
+
include: bool
|
|
46
|
+
description: Optional[str] = None
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class Nodes(BaseParserModel):
|
|
50
|
+
model_config = ConfigDict(extra='forbid',)
|
|
51
|
+
metadata: Metadata1 = Field(..., title='TableMetadata')
|
|
52
|
+
columns: Dict[str, Columns]
|
|
53
|
+
stats: Dict[str, Stats]
|
|
54
|
+
unique_id: Optional[str] = None
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class Sources(BaseParserModel):
|
|
58
|
+
model_config = ConfigDict(extra='forbid',)
|
|
59
|
+
metadata: Metadata1 = Field(..., title='TableMetadata')
|
|
60
|
+
columns: Dict[str, Columns]
|
|
61
|
+
stats: Dict[str, Stats]
|
|
62
|
+
unique_id: Optional[str] = None
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class CatalogCLOUDV1(BaseParserModel):
|
|
66
|
+
model_config = ConfigDict(extra='forbid',)
|
|
67
|
+
metadata: Metadata = Field(..., title='CatalogMetadata')
|
|
68
|
+
nodes: Dict[str, Nodes]
|
|
69
|
+
sources: Dict[str, Sources]
|
|
70
|
+
errors: Optional[List[str]] = None
|
|
71
|
+
field_compile_results: Any = Field(None, alias='_compile_results')
|
collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/catalog/catalog_cloud_v2.py
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: catalog_cloud_v2.json
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
from typing import Any, Dict, List, Optional, Union
|
|
7
|
+
|
|
8
|
+
from pydantic import ConfigDict, Field
|
|
9
|
+
|
|
10
|
+
from collate_dbt_artifacts_parser.parsers.base import BaseParserModel
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Metadata(BaseParserModel):
|
|
14
|
+
model_config = ConfigDict(extra='forbid',)
|
|
15
|
+
dbt_schema_version: Optional[str] = None
|
|
16
|
+
dbt_version: Optional[str] = '1.10.0a1'
|
|
17
|
+
generated_at: Optional[str] = None
|
|
18
|
+
invocation_id: Optional[str] = None
|
|
19
|
+
invocation_started_at: Optional[str] = None
|
|
20
|
+
env: Optional[Dict[str, str]] = None
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class Metadata1(BaseParserModel):
|
|
24
|
+
model_config = ConfigDict(extra='forbid',)
|
|
25
|
+
type: str
|
|
26
|
+
schema_: str = Field(..., alias='schema')
|
|
27
|
+
name: str
|
|
28
|
+
database: Optional[str] = None
|
|
29
|
+
comment: Optional[str] = None
|
|
30
|
+
owner: Optional[str] = None
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class Columns(BaseParserModel):
|
|
34
|
+
model_config = ConfigDict(extra='forbid',)
|
|
35
|
+
type: str
|
|
36
|
+
index: int
|
|
37
|
+
name: str
|
|
38
|
+
comment: Optional[str] = None
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class Stats(BaseParserModel):
|
|
42
|
+
model_config = ConfigDict(extra='forbid',)
|
|
43
|
+
id: str
|
|
44
|
+
label: str
|
|
45
|
+
value: Optional[Union[bool, str, float]] = None
|
|
46
|
+
include: bool
|
|
47
|
+
description: Optional[str] = None
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class Nodes(BaseParserModel):
|
|
51
|
+
model_config = ConfigDict(extra='forbid',)
|
|
52
|
+
metadata: Metadata1 = Field(..., title='TableMetadata')
|
|
53
|
+
columns: Dict[str, Columns]
|
|
54
|
+
stats: Dict[str, Stats]
|
|
55
|
+
unique_id: Optional[str] = None
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class Sources(BaseParserModel):
|
|
59
|
+
model_config = ConfigDict(extra='forbid',)
|
|
60
|
+
metadata: Metadata1 = Field(..., title='TableMetadata')
|
|
61
|
+
columns: Dict[str, Columns]
|
|
62
|
+
stats: Dict[str, Stats]
|
|
63
|
+
unique_id: Optional[str] = None
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class CatalogCLOUDV2(BaseParserModel):
|
|
67
|
+
model_config = ConfigDict(extra='forbid',)
|
|
68
|
+
metadata: Metadata = Field(..., title='CatalogMetadata')
|
|
69
|
+
nodes: Dict[str, Nodes]
|
|
70
|
+
sources: Dict[str, Sources]
|
|
71
|
+
errors: Optional[List[str]] = None
|
|
72
|
+
field_compile_results: Any = Field(None, alias='_compile_results')
|