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.
Files changed (82) hide show
  1. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/.gitignore +2 -0
  2. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/PKG-INFO +3 -2
  3. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/__init__.py +1 -1
  4. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parser.py +77 -57
  5. collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/catalog/catalog_cloud_v1.py +71 -0
  6. collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/catalog/catalog_cloud_v2.py +72 -0
  7. collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/manifest/manifest_cloud_v1.py +3694 -0
  8. collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/manifest/manifest_cloud_v2.py +3731 -0
  9. collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/run_results/run_results_cloud_v1.py +80 -0
  10. collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/run_results/run_results_cloud_v2.py +81 -0
  11. collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/sources/sources_cloud_v1.py +91 -0
  12. collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/parsers/sources/sources_cloud_v2.py +92 -0
  13. collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/resources/catalog/catalog_cloud_v2.json +435 -0
  14. collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/resources/manifest/manifest_cloud_v2.json +22963 -0
  15. collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/resources/run-results/run-results_cloud_v2.json +275 -0
  16. collate_dbt_artifacts_parser-0.1.2/collate_dbt_artifacts_parser/resources/sources/sources_cloud_v2.json +290 -0
  17. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/pyproject.toml +2 -1
  18. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/CONTRIBUTING.md +0 -0
  19. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/LICENSE +0 -0
  20. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/README.md +0 -0
  21. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/__init__.py +0 -0
  22. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/base.py +0 -0
  23. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/catalog/__init__.py +0 -0
  24. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/catalog/catalog_cloud.py +0 -0
  25. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/catalog/catalog_v1.py +0 -0
  26. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/__init__.py +0 -0
  27. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_cloud.py +0 -0
  28. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v1.py +0 -0
  29. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v10.py +0 -0
  30. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v11.py +0 -0
  31. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v12.py +0 -0
  32. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v2.py +0 -0
  33. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v3.py +0 -0
  34. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v4.py +0 -0
  35. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v5.py +0 -0
  36. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v6.py +0 -0
  37. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v7.py +0 -0
  38. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v8.py +0 -0
  39. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/manifest/manifest_v9.py +0 -0
  40. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/run_results/__init__.py +0 -0
  41. {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
  42. {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
  43. {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
  44. {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
  45. {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
  46. {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
  47. {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
  48. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/sources/__init__.py +0 -0
  49. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/sources/sources_cloud.py +0 -0
  50. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/sources/sources_v1.py +0 -0
  51. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/sources/sources_v2.py +0 -0
  52. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/sources/sources_v3.py +0 -0
  53. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/utils.py +0 -0
  54. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/parsers/version_map.py +0 -0
  55. /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
  56. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/catalog/catalog_v1.json +0 -0
  57. /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
  58. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v1.json +0 -0
  59. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v10.json +0 -0
  60. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v11.json +0 -0
  61. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v12.json +0 -0
  62. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v2.json +0 -0
  63. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v3.json +0 -0
  64. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v4.json +0 -0
  65. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v5.json +0 -0
  66. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v6.json +0 -0
  67. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v7.json +0 -0
  68. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v8.json +0 -0
  69. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/manifest/manifest_v9.json +0 -0
  70. /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
  71. {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
  72. {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
  73. {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
  74. {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
  75. {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
  76. {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
  77. /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
  78. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/sources/sources_v1.json +0 -0
  79. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/sources/sources_v2.json +0 -0
  80. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/resources/sources/sources_v3.json +0 -0
  81. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/collate_dbt_artifacts_parser/utils.py +0 -0
  82. {collate_dbt_artifacts_parser-0.1 → collate_dbt_artifacts_parser-0.1.2}/requirements.setup.txt +0 -0
@@ -7,6 +7,7 @@ __pycache__/
7
7
  *.so
8
8
 
9
9
  # Distribution / packaging
10
+ .DS_Store
10
11
  .Python
11
12
  build/
12
13
  develop-eggs/
@@ -111,6 +112,7 @@ venv/
111
112
  ENV/
112
113
  env.bak/
113
114
  venv.bak/
115
+ test_parser/
114
116
 
115
117
  # Spyder project settings
116
118
  .spyderproject
@@ -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.9.0
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,4 +18,4 @@
18
18
  A dbt artifacts parser in python
19
19
  """
20
20
 
21
- __version__ = "0.1"
21
+ __version__ = "0.1.2"
@@ -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.catalog_cloud import CatalogCLOUD
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.manifest_cloud import ManifestCLOUD
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.run_results_cloud import (
37
- RunResultsCLOUD,
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.sources_cloud import SourcesCLOUD
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(catalog: dict) -> Union[CatalogV1, CatalogCLOUD]:
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
- return CatalogCLOUD(**catalog)
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, CatalogCLOUD]:
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 CatalogCLOUD(**catalog)
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
- ManifestV1,
92
- ManifestV2,
93
- ManifestV3,
94
- ManifestV4,
95
- ManifestV5,
96
- ManifestV6,
97
- ManifestV7,
98
- ManifestV8,
99
- ManifestV9,
100
- ManifestV10,
101
- ManifestV11,
102
- ManifestV12,
103
- ManifestCLOUD,
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
- try:
142
- return ManifestV12(**manifest)
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(manifest: dict) -> Union[ManifestV12, ManifestCLOUD]:
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
- try:
241
- return ManifestV12(**manifest)
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
- RunResultsV1,
254
- RunResultsV2,
255
- RunResultsV3,
256
- RunResultsV4,
257
- RunResultsV5,
258
- RunResultsV6,
259
- RunResultsCLOUD,
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
- try:
282
- return RunResultsV6(**run_results)
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(run_results: dict) -> Union[RunResultsV6, RunResultsCLOUD]:
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
- try:
333
- return RunResultsV6(**run_results)
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, SourcesCLOUD]:
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
- try:
360
- return SourcesV3(**sources)
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(sources: dict) -> Union[SourcesV3, SourcesCLOUD]:
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
- try:
387
- return SourcesV3(**sources)
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")
@@ -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')
@@ -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')