collate-dbt-artifacts-parser 0.1__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.
Files changed (67) hide show
  1. collate_dbt_artifacts_parser/__init__.py +21 -0
  2. collate_dbt_artifacts_parser/parser.py +390 -0
  3. collate_dbt_artifacts_parser/parsers/__init__.py +16 -0
  4. collate_dbt_artifacts_parser/parsers/base.py +26 -0
  5. collate_dbt_artifacts_parser/parsers/catalog/__init__.py +16 -0
  6. collate_dbt_artifacts_parser/parsers/catalog/catalog_cloud.py +85 -0
  7. collate_dbt_artifacts_parser/parsers/catalog/catalog_v1.py +85 -0
  8. collate_dbt_artifacts_parser/parsers/manifest/__init__.py +16 -0
  9. collate_dbt_artifacts_parser/parsers/manifest/manifest_cloud.py +4172 -0
  10. collate_dbt_artifacts_parser/parsers/manifest/manifest_v1.py +1548 -0
  11. collate_dbt_artifacts_parser/parsers/manifest/manifest_v10.py +1667 -0
  12. collate_dbt_artifacts_parser/parsers/manifest/manifest_v11.py +1449 -0
  13. collate_dbt_artifacts_parser/parsers/manifest/manifest_v12.py +4182 -0
  14. collate_dbt_artifacts_parser/parsers/manifest/manifest_v2.py +1553 -0
  15. collate_dbt_artifacts_parser/parsers/manifest/manifest_v3.py +1565 -0
  16. collate_dbt_artifacts_parser/parsers/manifest/manifest_v4.py +1748 -0
  17. collate_dbt_artifacts_parser/parsers/manifest/manifest_v5.py +1763 -0
  18. collate_dbt_artifacts_parser/parsers/manifest/manifest_v6.py +1799 -0
  19. collate_dbt_artifacts_parser/parsers/manifest/manifest_v7.py +1917 -0
  20. collate_dbt_artifacts_parser/parsers/manifest/manifest_v8.py +1258 -0
  21. collate_dbt_artifacts_parser/parsers/manifest/manifest_v9.py +1431 -0
  22. collate_dbt_artifacts_parser/parsers/run_results/__init__.py +16 -0
  23. collate_dbt_artifacts_parser/parsers/run_results/run_results_cloud.py +90 -0
  24. collate_dbt_artifacts_parser/parsers/run_results/run_results_v1.py +75 -0
  25. collate_dbt_artifacts_parser/parsers/run_results/run_results_v2.py +76 -0
  26. collate_dbt_artifacts_parser/parsers/run_results/run_results_v3.py +147 -0
  27. collate_dbt_artifacts_parser/parsers/run_results/run_results_v4.py +147 -0
  28. collate_dbt_artifacts_parser/parsers/run_results/run_results_v5.py +79 -0
  29. collate_dbt_artifacts_parser/parsers/run_results/run_results_v6.py +89 -0
  30. collate_dbt_artifacts_parser/parsers/sources/__init__.py +16 -0
  31. collate_dbt_artifacts_parser/parsers/sources/sources_cloud.py +107 -0
  32. collate_dbt_artifacts_parser/parsers/sources/sources_v1.py +88 -0
  33. collate_dbt_artifacts_parser/parsers/sources/sources_v2.py +100 -0
  34. collate_dbt_artifacts_parser/parsers/sources/sources_v3.py +107 -0
  35. collate_dbt_artifacts_parser/parsers/utils.py +67 -0
  36. collate_dbt_artifacts_parser/parsers/version_map.py +124 -0
  37. collate_dbt_artifacts_parser/resources/catalog/catalog_cloud.json +425 -0
  38. collate_dbt_artifacts_parser/resources/catalog/catalog_v1.json +425 -0
  39. collate_dbt_artifacts_parser/resources/manifest/manifest_cloud.json +22719 -0
  40. collate_dbt_artifacts_parser/resources/manifest/manifest_v1.json +5074 -0
  41. collate_dbt_artifacts_parser/resources/manifest/manifest_v10.json +5638 -0
  42. collate_dbt_artifacts_parser/resources/manifest/manifest_v11.json +6256 -0
  43. collate_dbt_artifacts_parser/resources/manifest/manifest_v12.json +22727 -0
  44. collate_dbt_artifacts_parser/resources/manifest/manifest_v2.json +5128 -0
  45. collate_dbt_artifacts_parser/resources/manifest/manifest_v3.json +5225 -0
  46. collate_dbt_artifacts_parser/resources/manifest/manifest_v4.json +5939 -0
  47. collate_dbt_artifacts_parser/resources/manifest/manifest_v5.json +5984 -0
  48. collate_dbt_artifacts_parser/resources/manifest/manifest_v6.json +6209 -0
  49. collate_dbt_artifacts_parser/resources/manifest/manifest_v7.json +6575 -0
  50. collate_dbt_artifacts_parser/resources/manifest/manifest_v8.json +4434 -0
  51. collate_dbt_artifacts_parser/resources/manifest/manifest_v9.json +4965 -0
  52. collate_dbt_artifacts_parser/resources/run-results/run-results_cloud.json +265 -0
  53. collate_dbt_artifacts_parser/resources/run-results/run-results_v1.json +183 -0
  54. collate_dbt_artifacts_parser/resources/run-results/run-results_v2.json +190 -0
  55. collate_dbt_artifacts_parser/resources/run-results/run-results_v3.json +381 -0
  56. collate_dbt_artifacts_parser/resources/run-results/run-results_v4.json +400 -0
  57. collate_dbt_artifacts_parser/resources/run-results/run-results_v5.json +229 -0
  58. collate_dbt_artifacts_parser/resources/run-results/run-results_v6.json +264 -0
  59. collate_dbt_artifacts_parser/resources/sources/sources_cloud.json +280 -0
  60. collate_dbt_artifacts_parser/resources/sources/sources_v1.json +212 -0
  61. collate_dbt_artifacts_parser/resources/sources/sources_v2.json +261 -0
  62. collate_dbt_artifacts_parser/resources/sources/sources_v3.json +280 -0
  63. collate_dbt_artifacts_parser/utils.py +27 -0
  64. collate_dbt_artifacts_parser-0.1.dist-info/METADATA +531 -0
  65. collate_dbt_artifacts_parser-0.1.dist-info/RECORD +67 -0
  66. collate_dbt_artifacts_parser-0.1.dist-info/WHEEL +4 -0
  67. collate_dbt_artifacts_parser-0.1.dist-info/licenses/LICENSE +201 -0
@@ -0,0 +1,1449 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: manifest_v11.json
3
+
4
+ from __future__ import annotations
5
+
6
+ from enum import Enum
7
+ from typing import Any, Dict, List, Literal, Optional, Union
8
+ from uuid import UUID
9
+
10
+ from pydantic import ConfigDict, Field, constr
11
+
12
+ from collate_dbt_artifacts_parser.parsers.base import BaseParserModel
13
+
14
+
15
+ class ManifestMetadata(BaseParserModel):
16
+ model_config = ConfigDict(
17
+ extra="forbid",
18
+ )
19
+ dbt_schema_version: Optional[str] = None
20
+ dbt_version: Optional[str] = "1.8.0a1"
21
+ generated_at: Optional[str] = None
22
+ invocation_id: Optional[str] = None
23
+ env: Optional[Dict[str, str]] = None
24
+ project_name: Optional[str] = Field(None, description="Name of the root project")
25
+ project_id: Optional[str] = Field(
26
+ None,
27
+ description="A unique identifier for the project, hashed from the project name",
28
+ )
29
+ user_id: Optional[UUID] = Field(
30
+ None, description="A unique identifier for the user"
31
+ )
32
+ send_anonymous_usage_stats: Optional[bool] = Field(
33
+ None, description="Whether dbt is configured to send anonymous usage statistics"
34
+ )
35
+ adapter_type: Optional[str] = Field(
36
+ None, description="The type name of the adapter"
37
+ )
38
+
39
+
40
+ class FileHash(BaseParserModel):
41
+ model_config = ConfigDict(
42
+ extra="forbid",
43
+ )
44
+ name: str
45
+ checksum: str
46
+
47
+
48
+ class Hook(BaseParserModel):
49
+ model_config = ConfigDict(
50
+ extra="forbid",
51
+ )
52
+ sql: str
53
+ transaction: Optional[bool] = True
54
+ index: Optional[int] = None
55
+
56
+
57
+ class Docs(BaseParserModel):
58
+ model_config = ConfigDict(
59
+ extra="forbid",
60
+ )
61
+ show: Optional[bool] = True
62
+ node_color: Optional[str] = None
63
+
64
+
65
+ class ContractConfig(BaseParserModel):
66
+ model_config = ConfigDict(
67
+ extra="forbid",
68
+ )
69
+ enforced: Optional[bool] = False
70
+ alias_types: Optional[bool] = True
71
+
72
+
73
+ class OnConfigurationChange(Enum):
74
+ apply = "apply"
75
+ continue_ = "continue"
76
+ fail = "fail"
77
+
78
+
79
+ class NodeConfig(BaseParserModel):
80
+ model_config = ConfigDict(
81
+ extra="allow",
82
+ )
83
+ field_extra: Optional[Dict[str, Any]] = Field(None, alias="_extra")
84
+ enabled: Optional[bool] = True
85
+ alias: Optional[str] = None
86
+ schema_: Optional[str] = Field(None, alias="schema")
87
+ database: Optional[str] = None
88
+ tags: Optional[Union[List[str], str]] = None
89
+ meta: Optional[Dict[str, Any]] = None
90
+ group: Optional[str] = None
91
+ materialized: Optional[str] = "view"
92
+ incremental_strategy: Optional[str] = None
93
+ persist_docs: Optional[Dict[str, Any]] = None
94
+ post_hook: Optional[List[Hook]] = Field(None, alias="post-hook")
95
+ pre_hook: Optional[List[Hook]] = Field(None, alias="pre-hook")
96
+ quoting: Optional[Dict[str, Any]] = None
97
+ column_types: Optional[Dict[str, Any]] = None
98
+ full_refresh: Optional[bool] = None
99
+ unique_key: Optional[Union[str, List[str]]] = None
100
+ on_schema_change: Optional[str] = "ignore"
101
+ on_configuration_change: Optional[OnConfigurationChange] = None
102
+ grants: Optional[Dict[str, Any]] = None
103
+ packages: Optional[List[str]] = None
104
+ docs: Optional[Docs] = None
105
+ contract: Optional[ContractConfig] = None
106
+
107
+
108
+ class Type(Enum):
109
+ check = "check"
110
+ not_null = "not_null"
111
+ unique = "unique"
112
+ primary_key = "primary_key"
113
+ foreign_key = "foreign_key"
114
+ custom = "custom"
115
+
116
+
117
+ class ColumnLevelConstraint(BaseParserModel):
118
+ model_config = ConfigDict(
119
+ extra="forbid",
120
+ )
121
+ type: Type
122
+ name: Optional[str] = None
123
+ expression: Optional[str] = None
124
+ warn_unenforced: Optional[bool] = True
125
+ warn_unsupported: Optional[bool] = True
126
+
127
+
128
+ class ColumnInfo(BaseParserModel):
129
+ model_config = ConfigDict(
130
+ extra="allow",
131
+ )
132
+ name: str
133
+ description: Optional[str] = ""
134
+ meta: Optional[Dict[str, Any]] = None
135
+ data_type: Optional[str] = None
136
+ constraints: Optional[List[ColumnLevelConstraint]] = None
137
+ quote: Optional[bool] = None
138
+ tags: Optional[List[str]] = None
139
+ field_extra: Optional[Dict[str, Any]] = Field(None, alias="_extra")
140
+
141
+
142
+ class RefArgs(BaseParserModel):
143
+ model_config = ConfigDict(
144
+ extra="forbid",
145
+ )
146
+ name: str
147
+ package: Optional[str] = None
148
+ version: Optional[Union[str, float]] = None
149
+
150
+
151
+ class DependsOn(BaseParserModel):
152
+ model_config = ConfigDict(
153
+ extra="forbid",
154
+ )
155
+ macros: Optional[List[str]] = None
156
+ nodes: Optional[List[str]] = None
157
+
158
+
159
+ class InjectedCTE(BaseParserModel):
160
+ model_config = ConfigDict(
161
+ extra="forbid",
162
+ )
163
+ id: str
164
+ sql: str
165
+
166
+
167
+ class Contract(BaseParserModel):
168
+ model_config = ConfigDict(
169
+ extra="forbid",
170
+ )
171
+ enforced: Optional[bool] = False
172
+ alias_types: Optional[bool] = True
173
+ checksum: Optional[str] = None
174
+
175
+
176
+ class AnalysisNode(BaseParserModel):
177
+ model_config = ConfigDict(
178
+ extra="forbid",
179
+ )
180
+ database: Optional[str] = None
181
+ schema_: str = Field(..., alias="schema")
182
+ name: str
183
+ resource_type: Literal["analysis"]
184
+ package_name: str
185
+ path: str
186
+ original_file_path: str
187
+ unique_id: str
188
+ fqn: List[str]
189
+ alias: str
190
+ checksum: FileHash
191
+ config: Optional[NodeConfig] = None
192
+ field_event_status: Optional[Dict[str, Any]] = Field(None, alias="_event_status")
193
+ tags: Optional[List[str]] = None
194
+ description: Optional[str] = ""
195
+ columns: Optional[Dict[str, ColumnInfo]] = None
196
+ meta: Optional[Dict[str, Any]] = None
197
+ group: Optional[str] = None
198
+ docs: Optional[Docs] = None
199
+ patch_path: Optional[str] = None
200
+ build_path: Optional[str] = None
201
+ deferred: Optional[bool] = False
202
+ unrendered_config: Optional[Dict[str, Any]] = None
203
+ created_at: Optional[float] = None
204
+ config_call_dict: Optional[Dict[str, Any]] = None
205
+ relation_name: Optional[str] = None
206
+ raw_code: Optional[str] = ""
207
+ language: Optional[str] = "sql"
208
+ refs: Optional[List[RefArgs]] = None
209
+ sources: Optional[List[List[str]]] = None
210
+ metrics: Optional[List[List[str]]] = None
211
+ depends_on: Optional[DependsOn] = None
212
+ compiled_path: Optional[str] = None
213
+ compiled: Optional[bool] = False
214
+ compiled_code: Optional[str] = None
215
+ extra_ctes_injected: Optional[bool] = False
216
+ extra_ctes: Optional[List[InjectedCTE]] = None
217
+ field_pre_injected_sql: Optional[str] = Field(None, alias="_pre_injected_sql")
218
+ contract: Optional[Contract] = None
219
+
220
+
221
+ class TestConfig(BaseParserModel):
222
+ model_config = ConfigDict(
223
+ extra="allow",
224
+ )
225
+ field_extra: Optional[Dict[str, Any]] = Field(None, alias="_extra")
226
+ enabled: Optional[bool] = True
227
+ alias: Optional[str] = None
228
+ schema_: Optional[str] = Field("dbt_test__audit", alias="schema")
229
+ database: Optional[str] = None
230
+ tags: Optional[Union[List[str], str]] = None
231
+ meta: Optional[Dict[str, Any]] = None
232
+ group: Optional[str] = None
233
+ materialized: Optional[str] = "test"
234
+ severity: Optional[constr(pattern=r"^([Ww][Aa][Rr][Nn]|[Ee][Rr][Rr][Oo][Rr])$")] = (
235
+ "ERROR"
236
+ )
237
+ store_failures: Optional[bool] = None
238
+ store_failures_as: Optional[str] = None
239
+ where: Optional[str] = None
240
+ limit: Optional[int] = None
241
+ fail_calc: Optional[str] = "count(*)"
242
+ warn_if: Optional[str] = "!= 0"
243
+ error_if: Optional[str] = "!= 0"
244
+
245
+
246
+ class SingularTestNode(BaseParserModel):
247
+ model_config = ConfigDict(
248
+ extra="forbid",
249
+ )
250
+ database: Optional[str] = None
251
+ schema_: str = Field(..., alias="schema")
252
+ name: str
253
+ resource_type: Literal["test"]
254
+ package_name: str
255
+ path: str
256
+ original_file_path: str
257
+ unique_id: str
258
+ fqn: List[str]
259
+ alias: str
260
+ checksum: FileHash
261
+ config: Optional[TestConfig] = None
262
+ field_event_status: Optional[Dict[str, Any]] = Field(None, alias="_event_status")
263
+ tags: Optional[List[str]] = None
264
+ description: Optional[str] = ""
265
+ columns: Optional[Dict[str, ColumnInfo]] = None
266
+ meta: Optional[Dict[str, Any]] = None
267
+ group: Optional[str] = None
268
+ docs: Optional[Docs] = None
269
+ patch_path: Optional[str] = None
270
+ build_path: Optional[str] = None
271
+ deferred: Optional[bool] = False
272
+ unrendered_config: Optional[Dict[str, Any]] = None
273
+ created_at: Optional[float] = None
274
+ config_call_dict: Optional[Dict[str, Any]] = None
275
+ relation_name: Optional[str] = None
276
+ raw_code: Optional[str] = ""
277
+ language: Optional[str] = "sql"
278
+ refs: Optional[List[RefArgs]] = None
279
+ sources: Optional[List[List[str]]] = None
280
+ metrics: Optional[List[List[str]]] = None
281
+ depends_on: Optional[DependsOn] = None
282
+ compiled_path: Optional[str] = None
283
+ compiled: Optional[bool] = False
284
+ compiled_code: Optional[str] = None
285
+ extra_ctes_injected: Optional[bool] = False
286
+ extra_ctes: Optional[List[InjectedCTE]] = None
287
+ field_pre_injected_sql: Optional[str] = Field(None, alias="_pre_injected_sql")
288
+ contract: Optional[Contract] = None
289
+
290
+
291
+ class HookNode(BaseParserModel):
292
+ model_config = ConfigDict(
293
+ extra="forbid",
294
+ )
295
+ database: Optional[str] = None
296
+ schema_: str = Field(..., alias="schema")
297
+ name: str
298
+ resource_type: Literal["operation"]
299
+ package_name: str
300
+ path: str
301
+ original_file_path: str
302
+ unique_id: str
303
+ fqn: List[str]
304
+ alias: str
305
+ checksum: FileHash
306
+ config: Optional[NodeConfig] = None
307
+ field_event_status: Optional[Dict[str, Any]] = Field(None, alias="_event_status")
308
+ tags: Optional[List[str]] = None
309
+ description: Optional[str] = ""
310
+ columns: Optional[Dict[str, ColumnInfo]] = None
311
+ meta: Optional[Dict[str, Any]] = None
312
+ group: Optional[str] = None
313
+ docs: Optional[Docs] = None
314
+ patch_path: Optional[str] = None
315
+ build_path: Optional[str] = None
316
+ deferred: Optional[bool] = False
317
+ unrendered_config: Optional[Dict[str, Any]] = None
318
+ created_at: Optional[float] = None
319
+ config_call_dict: Optional[Dict[str, Any]] = None
320
+ relation_name: Optional[str] = None
321
+ raw_code: Optional[str] = ""
322
+ language: Optional[str] = "sql"
323
+ refs: Optional[List[RefArgs]] = None
324
+ sources: Optional[List[List[str]]] = None
325
+ metrics: Optional[List[List[str]]] = None
326
+ depends_on: Optional[DependsOn] = None
327
+ compiled_path: Optional[str] = None
328
+ compiled: Optional[bool] = False
329
+ compiled_code: Optional[str] = None
330
+ extra_ctes_injected: Optional[bool] = False
331
+ extra_ctes: Optional[List[InjectedCTE]] = None
332
+ field_pre_injected_sql: Optional[str] = Field(None, alias="_pre_injected_sql")
333
+ contract: Optional[Contract] = None
334
+ index: Optional[int] = None
335
+
336
+
337
+ class Access(Enum):
338
+ private = "private"
339
+ protected = "protected"
340
+ public = "public"
341
+
342
+
343
+ class ModelConfig(BaseParserModel):
344
+ model_config = ConfigDict(
345
+ extra="allow",
346
+ )
347
+ field_extra: Optional[Dict[str, Any]] = Field(None, alias="_extra")
348
+ enabled: Optional[bool] = True
349
+ alias: Optional[str] = None
350
+ schema_: Optional[str] = Field(None, alias="schema")
351
+ database: Optional[str] = None
352
+ tags: Optional[Union[List[str], str]] = None
353
+ meta: Optional[Dict[str, Any]] = None
354
+ group: Optional[str] = None
355
+ materialized: Optional[str] = "view"
356
+ incremental_strategy: Optional[str] = None
357
+ persist_docs: Optional[Dict[str, Any]] = None
358
+ post_hook: Optional[List[Hook]] = Field(None, alias="post-hook")
359
+ pre_hook: Optional[List[Hook]] = Field(None, alias="pre-hook")
360
+ quoting: Optional[Dict[str, Any]] = None
361
+ column_types: Optional[Dict[str, Any]] = None
362
+ full_refresh: Optional[bool] = None
363
+ unique_key: Optional[Union[str, List[str]]] = None
364
+ on_schema_change: Optional[str] = "ignore"
365
+ on_configuration_change: Optional[OnConfigurationChange] = None
366
+ grants: Optional[Dict[str, Any]] = None
367
+ packages: Optional[List[str]] = None
368
+ docs: Optional[Docs] = None
369
+ contract: Optional[ContractConfig] = None
370
+ access: Optional[Access] = "protected"
371
+
372
+
373
+ class ModelLevelConstraint(BaseParserModel):
374
+ model_config = ConfigDict(
375
+ extra="forbid",
376
+ )
377
+ type: Type
378
+ name: Optional[str] = None
379
+ expression: Optional[str] = None
380
+ warn_unenforced: Optional[bool] = True
381
+ warn_unsupported: Optional[bool] = True
382
+ columns: Optional[List[str]] = None
383
+
384
+
385
+ class DeferRelation(BaseParserModel):
386
+ model_config = ConfigDict(
387
+ extra="forbid",
388
+ )
389
+ database: Optional[str] = None
390
+ schema_: str = Field(..., alias="schema")
391
+ alias: str
392
+ relation_name: Optional[str] = None
393
+
394
+
395
+ class ModelNode(BaseParserModel):
396
+ model_config = ConfigDict(
397
+ extra="forbid",
398
+ )
399
+ database: Optional[str] = None
400
+ schema_: str = Field(..., alias="schema")
401
+ name: str
402
+ resource_type: Literal["model"]
403
+ package_name: str
404
+ path: str
405
+ original_file_path: str
406
+ unique_id: str
407
+ fqn: List[str]
408
+ alias: str
409
+ checksum: FileHash
410
+ config: Optional[ModelConfig] = None
411
+ field_event_status: Optional[Dict[str, Any]] = Field(None, alias="_event_status")
412
+ tags: Optional[List[str]] = None
413
+ description: Optional[str] = ""
414
+ columns: Optional[Dict[str, ColumnInfo]] = None
415
+ meta: Optional[Dict[str, Any]] = None
416
+ group: Optional[str] = None
417
+ docs: Optional[Docs] = None
418
+ patch_path: Optional[str] = None
419
+ build_path: Optional[str] = None
420
+ deferred: Optional[bool] = False
421
+ unrendered_config: Optional[Dict[str, Any]] = None
422
+ created_at: Optional[float] = None
423
+ config_call_dict: Optional[Dict[str, Any]] = None
424
+ relation_name: Optional[str] = None
425
+ raw_code: Optional[str] = ""
426
+ language: Optional[str] = "sql"
427
+ refs: Optional[List[RefArgs]] = None
428
+ sources: Optional[List[List[str]]] = None
429
+ metrics: Optional[List[List[str]]] = None
430
+ depends_on: Optional[DependsOn] = None
431
+ compiled_path: Optional[str] = None
432
+ compiled: Optional[bool] = False
433
+ compiled_code: Optional[str] = None
434
+ extra_ctes_injected: Optional[bool] = False
435
+ extra_ctes: Optional[List[InjectedCTE]] = None
436
+ field_pre_injected_sql: Optional[str] = Field(None, alias="_pre_injected_sql")
437
+ contract: Optional[Contract] = None
438
+ access: Optional[Access] = "protected"
439
+ constraints: Optional[List[ModelLevelConstraint]] = None
440
+ version: Optional[Union[str, float]] = None
441
+ latest_version: Optional[Union[str, float]] = None
442
+ deprecation_date: Optional[str] = None
443
+ defer_relation: Optional[DeferRelation] = None
444
+
445
+
446
+ class RPCNode(BaseParserModel):
447
+ model_config = ConfigDict(
448
+ extra="forbid",
449
+ )
450
+ database: Optional[str] = None
451
+ schema_: str = Field(..., alias="schema")
452
+ name: str
453
+ resource_type: Literal["rpc"]
454
+ package_name: str
455
+ path: str
456
+ original_file_path: str
457
+ unique_id: str
458
+ fqn: List[str]
459
+ alias: str
460
+ checksum: FileHash
461
+ config: Optional[NodeConfig] = None
462
+ field_event_status: Optional[Dict[str, Any]] = Field(None, alias="_event_status")
463
+ tags: Optional[List[str]] = None
464
+ description: Optional[str] = ""
465
+ columns: Optional[Dict[str, ColumnInfo]] = None
466
+ meta: Optional[Dict[str, Any]] = None
467
+ group: Optional[str] = None
468
+ docs: Optional[Docs] = None
469
+ patch_path: Optional[str] = None
470
+ build_path: Optional[str] = None
471
+ deferred: Optional[bool] = False
472
+ unrendered_config: Optional[Dict[str, Any]] = None
473
+ created_at: Optional[float] = None
474
+ config_call_dict: Optional[Dict[str, Any]] = None
475
+ relation_name: Optional[str] = None
476
+ raw_code: Optional[str] = ""
477
+ language: Optional[str] = "sql"
478
+ refs: Optional[List[RefArgs]] = None
479
+ sources: Optional[List[List[str]]] = None
480
+ metrics: Optional[List[List[str]]] = None
481
+ depends_on: Optional[DependsOn] = None
482
+ compiled_path: Optional[str] = None
483
+ compiled: Optional[bool] = False
484
+ compiled_code: Optional[str] = None
485
+ extra_ctes_injected: Optional[bool] = False
486
+ extra_ctes: Optional[List[InjectedCTE]] = None
487
+ field_pre_injected_sql: Optional[str] = Field(None, alias="_pre_injected_sql")
488
+ contract: Optional[Contract] = None
489
+
490
+
491
+ class SqlNode(BaseParserModel):
492
+ model_config = ConfigDict(
493
+ extra="forbid",
494
+ )
495
+ database: Optional[str] = None
496
+ schema_: str = Field(..., alias="schema")
497
+ name: str
498
+ resource_type: Literal["sql_operation"]
499
+ package_name: str
500
+ path: str
501
+ original_file_path: str
502
+ unique_id: str
503
+ fqn: List[str]
504
+ alias: str
505
+ checksum: FileHash
506
+ config: Optional[NodeConfig] = None
507
+ field_event_status: Optional[Dict[str, Any]] = Field(None, alias="_event_status")
508
+ tags: Optional[List[str]] = None
509
+ description: Optional[str] = ""
510
+ columns: Optional[Dict[str, ColumnInfo]] = None
511
+ meta: Optional[Dict[str, Any]] = None
512
+ group: Optional[str] = None
513
+ docs: Optional[Docs] = None
514
+ patch_path: Optional[str] = None
515
+ build_path: Optional[str] = None
516
+ deferred: Optional[bool] = False
517
+ unrendered_config: Optional[Dict[str, Any]] = None
518
+ created_at: Optional[float] = None
519
+ config_call_dict: Optional[Dict[str, Any]] = None
520
+ relation_name: Optional[str] = None
521
+ raw_code: Optional[str] = ""
522
+ language: Optional[str] = "sql"
523
+ refs: Optional[List[RefArgs]] = None
524
+ sources: Optional[List[List[str]]] = None
525
+ metrics: Optional[List[List[str]]] = None
526
+ depends_on: Optional[DependsOn] = None
527
+ compiled_path: Optional[str] = None
528
+ compiled: Optional[bool] = False
529
+ compiled_code: Optional[str] = None
530
+ extra_ctes_injected: Optional[bool] = False
531
+ extra_ctes: Optional[List[InjectedCTE]] = None
532
+ field_pre_injected_sql: Optional[str] = Field(None, alias="_pre_injected_sql")
533
+ contract: Optional[Contract] = None
534
+
535
+
536
+ class TestMetadata(BaseParserModel):
537
+ model_config = ConfigDict(
538
+ extra="forbid",
539
+ )
540
+ name: str
541
+ kwargs: Optional[Dict[str, Any]] = None
542
+ namespace: Optional[str] = None
543
+
544
+
545
+ class GenericTestNode(BaseParserModel):
546
+ model_config = ConfigDict(
547
+ extra="forbid",
548
+ )
549
+ test_metadata: TestMetadata
550
+ database: Optional[str] = None
551
+ schema_: str = Field(..., alias="schema")
552
+ name: str
553
+ resource_type: Literal["test"]
554
+ package_name: str
555
+ path: str
556
+ original_file_path: str
557
+ unique_id: str
558
+ fqn: List[str]
559
+ alias: str
560
+ checksum: FileHash
561
+ config: Optional[TestConfig] = None
562
+ field_event_status: Optional[Dict[str, Any]] = Field(None, alias="_event_status")
563
+ tags: Optional[List[str]] = None
564
+ description: Optional[str] = ""
565
+ columns: Optional[Dict[str, ColumnInfo]] = None
566
+ meta: Optional[Dict[str, Any]] = None
567
+ group: Optional[str] = None
568
+ docs: Optional[Docs] = None
569
+ patch_path: Optional[str] = None
570
+ build_path: Optional[str] = None
571
+ deferred: Optional[bool] = False
572
+ unrendered_config: Optional[Dict[str, Any]] = None
573
+ created_at: Optional[float] = None
574
+ config_call_dict: Optional[Dict[str, Any]] = None
575
+ relation_name: Optional[str] = None
576
+ raw_code: Optional[str] = ""
577
+ language: Optional[str] = "sql"
578
+ refs: Optional[List[RefArgs]] = None
579
+ sources: Optional[List[List[str]]] = None
580
+ metrics: Optional[List[List[str]]] = None
581
+ depends_on: Optional[DependsOn] = None
582
+ compiled_path: Optional[str] = None
583
+ compiled: Optional[bool] = False
584
+ compiled_code: Optional[str] = None
585
+ extra_ctes_injected: Optional[bool] = False
586
+ extra_ctes: Optional[List[InjectedCTE]] = None
587
+ field_pre_injected_sql: Optional[str] = Field(None, alias="_pre_injected_sql")
588
+ contract: Optional[Contract] = None
589
+ column_name: Optional[str] = None
590
+ file_key_name: Optional[str] = None
591
+ attached_node: Optional[str] = None
592
+
593
+
594
+ class SnapshotConfig(BaseParserModel):
595
+ model_config = ConfigDict(
596
+ extra="allow",
597
+ )
598
+ field_extra: Optional[Dict[str, Any]] = Field(None, alias="_extra")
599
+ enabled: Optional[bool] = True
600
+ alias: Optional[str] = None
601
+ schema_: Optional[str] = Field(None, alias="schema")
602
+ database: Optional[str] = None
603
+ tags: Optional[Union[List[str], str]] = None
604
+ meta: Optional[Dict[str, Any]] = None
605
+ group: Optional[str] = None
606
+ materialized: Optional[str] = "snapshot"
607
+ incremental_strategy: Optional[str] = None
608
+ persist_docs: Optional[Dict[str, Any]] = None
609
+ post_hook: Optional[List[Hook]] = Field(None, alias="post-hook")
610
+ pre_hook: Optional[List[Hook]] = Field(None, alias="pre-hook")
611
+ quoting: Optional[Dict[str, Any]] = None
612
+ column_types: Optional[Dict[str, Any]] = None
613
+ full_refresh: Optional[bool] = None
614
+ unique_key: Optional[str] = None
615
+ on_schema_change: Optional[str] = "ignore"
616
+ on_configuration_change: Optional[OnConfigurationChange] = None
617
+ grants: Optional[Dict[str, Any]] = None
618
+ packages: Optional[List[str]] = None
619
+ docs: Optional[Docs] = None
620
+ contract: Optional[ContractConfig] = None
621
+ strategy: Optional[str] = None
622
+ target_schema: Optional[str] = None
623
+ target_database: Optional[str] = None
624
+ updated_at: Optional[str] = None
625
+ check_cols: Optional[Union[str, List[str]]] = None
626
+
627
+
628
+ class SnapshotNode(BaseParserModel):
629
+ model_config = ConfigDict(
630
+ extra="forbid",
631
+ )
632
+ database: Optional[str] = None
633
+ schema_: str = Field(..., alias="schema")
634
+ name: str
635
+ resource_type: Literal["snapshot"]
636
+ package_name: str
637
+ path: str
638
+ original_file_path: str
639
+ unique_id: str
640
+ fqn: List[str]
641
+ alias: str
642
+ checksum: FileHash
643
+ config: SnapshotConfig
644
+ field_event_status: Optional[Dict[str, Any]] = Field(None, alias="_event_status")
645
+ tags: Optional[List[str]] = None
646
+ description: Optional[str] = ""
647
+ columns: Optional[Dict[str, ColumnInfo]] = None
648
+ meta: Optional[Dict[str, Any]] = None
649
+ group: Optional[str] = None
650
+ docs: Optional[Docs] = None
651
+ patch_path: Optional[str] = None
652
+ build_path: Optional[str] = None
653
+ deferred: Optional[bool] = False
654
+ unrendered_config: Optional[Dict[str, Any]] = None
655
+ created_at: Optional[float] = None
656
+ config_call_dict: Optional[Dict[str, Any]] = None
657
+ relation_name: Optional[str] = None
658
+ raw_code: Optional[str] = ""
659
+ language: Optional[str] = "sql"
660
+ refs: Optional[List[RefArgs]] = None
661
+ sources: Optional[List[List[str]]] = None
662
+ metrics: Optional[List[List[str]]] = None
663
+ depends_on: Optional[DependsOn] = None
664
+ compiled_path: Optional[str] = None
665
+ compiled: Optional[bool] = False
666
+ compiled_code: Optional[str] = None
667
+ extra_ctes_injected: Optional[bool] = False
668
+ extra_ctes: Optional[List[InjectedCTE]] = None
669
+ field_pre_injected_sql: Optional[str] = Field(None, alias="_pre_injected_sql")
670
+ contract: Optional[Contract] = None
671
+ defer_relation: Optional[DeferRelation] = None
672
+
673
+
674
+ class SeedConfig(BaseParserModel):
675
+ model_config = ConfigDict(
676
+ extra="allow",
677
+ )
678
+ field_extra: Optional[Dict[str, Any]] = Field(None, alias="_extra")
679
+ enabled: Optional[bool] = True
680
+ alias: Optional[str] = None
681
+ schema_: Optional[str] = Field(None, alias="schema")
682
+ database: Optional[str] = None
683
+ tags: Optional[Union[List[str], str]] = None
684
+ meta: Optional[Dict[str, Any]] = None
685
+ group: Optional[str] = None
686
+ materialized: Optional[str] = "seed"
687
+ incremental_strategy: Optional[str] = None
688
+ persist_docs: Optional[Dict[str, Any]] = None
689
+ post_hook: Optional[List[Hook]] = Field(None, alias="post-hook")
690
+ pre_hook: Optional[List[Hook]] = Field(None, alias="pre-hook")
691
+ quoting: Optional[Dict[str, Any]] = None
692
+ column_types: Optional[Dict[str, Any]] = None
693
+ full_refresh: Optional[bool] = None
694
+ unique_key: Optional[Union[str, List[str]]] = None
695
+ on_schema_change: Optional[str] = "ignore"
696
+ on_configuration_change: Optional[OnConfigurationChange] = None
697
+ grants: Optional[Dict[str, Any]] = None
698
+ packages: Optional[List[str]] = None
699
+ docs: Optional[Docs] = None
700
+ contract: Optional[ContractConfig] = None
701
+ delimiter: Optional[str] = ","
702
+ quote_columns: Optional[bool] = None
703
+
704
+
705
+ class MacroDependsOn(BaseParserModel):
706
+ model_config = ConfigDict(
707
+ extra="forbid",
708
+ )
709
+ macros: Optional[List[str]] = None
710
+
711
+
712
+ class SeedNode(BaseParserModel):
713
+ model_config = ConfigDict(
714
+ extra="forbid",
715
+ )
716
+ database: Optional[str] = None
717
+ schema_: str = Field(..., alias="schema")
718
+ name: str
719
+ resource_type: Literal["seed"]
720
+ package_name: str
721
+ path: str
722
+ original_file_path: str
723
+ unique_id: str
724
+ fqn: List[str]
725
+ alias: str
726
+ checksum: FileHash
727
+ config: Optional[SeedConfig] = None
728
+ field_event_status: Optional[Dict[str, Any]] = Field(None, alias="_event_status")
729
+ tags: Optional[List[str]] = None
730
+ description: Optional[str] = ""
731
+ columns: Optional[Dict[str, ColumnInfo]] = None
732
+ meta: Optional[Dict[str, Any]] = None
733
+ group: Optional[str] = None
734
+ docs: Optional[Docs] = None
735
+ patch_path: Optional[str] = None
736
+ build_path: Optional[str] = None
737
+ deferred: Optional[bool] = False
738
+ unrendered_config: Optional[Dict[str, Any]] = None
739
+ created_at: Optional[float] = None
740
+ config_call_dict: Optional[Dict[str, Any]] = None
741
+ relation_name: Optional[str] = None
742
+ raw_code: Optional[str] = ""
743
+ root_path: Optional[str] = None
744
+ depends_on: Optional[MacroDependsOn] = None
745
+ defer_relation: Optional[DeferRelation] = None
746
+
747
+
748
+ class Quoting(BaseParserModel):
749
+ model_config = ConfigDict(
750
+ extra="forbid",
751
+ )
752
+ database: Optional[bool] = None
753
+ schema_: Optional[bool] = Field(None, alias="schema")
754
+ identifier: Optional[bool] = None
755
+ column: Optional[bool] = None
756
+
757
+
758
+ class Period(Enum):
759
+ minute = "minute"
760
+ hour = "hour"
761
+ day = "day"
762
+
763
+
764
+ class Time(BaseParserModel):
765
+ model_config = ConfigDict(
766
+ extra="forbid",
767
+ )
768
+ count: Optional[int] = None
769
+ period: Optional[Period] = None
770
+
771
+
772
+ class FreshnessThreshold(BaseParserModel):
773
+ model_config = ConfigDict(
774
+ extra="forbid",
775
+ )
776
+ warn_after: Optional[Time] = None
777
+ error_after: Optional[Time] = None
778
+ filter: Optional[str] = None
779
+
780
+
781
+ class ExternalPartition(BaseParserModel):
782
+ model_config = ConfigDict(
783
+ extra="allow",
784
+ )
785
+ field_extra: Optional[Dict[str, Any]] = Field(None, alias="_extra")
786
+ name: Optional[str] = ""
787
+ description: Optional[str] = ""
788
+ data_type: Optional[str] = ""
789
+ meta: Optional[Dict[str, Any]] = None
790
+
791
+
792
+ class ExternalTable(BaseParserModel):
793
+ model_config = ConfigDict(
794
+ extra="allow",
795
+ )
796
+ field_extra: Optional[Dict[str, Any]] = Field(None, alias="_extra")
797
+ location: Optional[str] = None
798
+ file_format: Optional[str] = None
799
+ row_format: Optional[str] = None
800
+ tbl_properties: Optional[str] = None
801
+ partitions: Optional[Union[List[str], List[ExternalPartition]]] = None
802
+
803
+
804
+ class SourceConfig(BaseParserModel):
805
+ model_config = ConfigDict(
806
+ extra="allow",
807
+ )
808
+ field_extra: Optional[Dict[str, Any]] = Field(None, alias="_extra")
809
+ enabled: Optional[bool] = True
810
+
811
+
812
+ class SourceDefinition(BaseParserModel):
813
+ model_config = ConfigDict(
814
+ extra="forbid",
815
+ )
816
+ database: Optional[str] = None
817
+ schema_: str = Field(..., alias="schema")
818
+ name: str
819
+ resource_type: Literal["source"]
820
+ package_name: str
821
+ path: str
822
+ original_file_path: str
823
+ unique_id: str
824
+ fqn: List[str]
825
+ source_name: str
826
+ source_description: str
827
+ loader: str
828
+ identifier: str
829
+ field_event_status: Optional[Dict[str, Any]] = Field(None, alias="_event_status")
830
+ quoting: Optional[Quoting] = None
831
+ loaded_at_field: Optional[str] = None
832
+ freshness: Optional[FreshnessThreshold] = None
833
+ external: Optional[ExternalTable] = None
834
+ description: Optional[str] = ""
835
+ columns: Optional[Dict[str, ColumnInfo]] = None
836
+ meta: Optional[Dict[str, Any]] = None
837
+ source_meta: Optional[Dict[str, Any]] = None
838
+ tags: Optional[List[str]] = None
839
+ config: Optional[SourceConfig] = None
840
+ patch_path: Optional[str] = None
841
+ unrendered_config: Optional[Dict[str, Any]] = None
842
+ relation_name: Optional[str] = None
843
+ created_at: Optional[float] = None
844
+
845
+
846
+ class MacroArgument(BaseParserModel):
847
+ model_config = ConfigDict(
848
+ extra="forbid",
849
+ )
850
+ name: str
851
+ type: Optional[str] = None
852
+ description: Optional[str] = ""
853
+
854
+
855
+ class SupportedLanguage(Enum):
856
+ python = "python"
857
+ sql = "sql"
858
+
859
+
860
+ class Macro(BaseParserModel):
861
+ model_config = ConfigDict(
862
+ extra="forbid",
863
+ )
864
+ name: str
865
+ resource_type: Literal["macro"]
866
+ package_name: str
867
+ path: str
868
+ original_file_path: str
869
+ unique_id: str
870
+ macro_sql: str
871
+ depends_on: Optional[MacroDependsOn] = None
872
+ description: Optional[str] = ""
873
+ meta: Optional[Dict[str, Any]] = None
874
+ docs: Optional[Docs] = None
875
+ patch_path: Optional[str] = None
876
+ arguments: Optional[List[MacroArgument]] = None
877
+ created_at: Optional[float] = None
878
+ supported_languages: Optional[List[SupportedLanguage]] = None
879
+
880
+
881
+ class Documentation(BaseParserModel):
882
+ model_config = ConfigDict(
883
+ extra="forbid",
884
+ )
885
+ name: str
886
+ resource_type: Literal["doc"]
887
+ package_name: str
888
+ path: str
889
+ original_file_path: str
890
+ unique_id: str
891
+ block_contents: str
892
+
893
+
894
+ class Owner(BaseParserModel):
895
+ model_config = ConfigDict(
896
+ extra="allow",
897
+ )
898
+ field_extra: Optional[Dict[str, Any]] = Field(None, alias="_extra")
899
+ email: Optional[str] = None
900
+ name: Optional[str] = None
901
+
902
+
903
+ class ExposureConfig(BaseParserModel):
904
+ model_config = ConfigDict(
905
+ extra="allow",
906
+ )
907
+ field_extra: Optional[Dict[str, Any]] = Field(None, alias="_extra")
908
+ enabled: Optional[bool] = True
909
+
910
+
911
+ class Type2(Enum):
912
+ dashboard = "dashboard"
913
+ notebook = "notebook"
914
+ analysis = "analysis"
915
+ ml = "ml"
916
+ application = "application"
917
+
918
+
919
+ class Maturity(Enum):
920
+ low = "low"
921
+ medium = "medium"
922
+ high = "high"
923
+
924
+
925
+ class Exposure(BaseParserModel):
926
+ model_config = ConfigDict(
927
+ extra="forbid",
928
+ )
929
+ name: str
930
+ resource_type: Literal["exposure"]
931
+ package_name: str
932
+ path: str
933
+ original_file_path: str
934
+ unique_id: str
935
+ fqn: List[str]
936
+ type: Type2
937
+ owner: Owner
938
+ description: Optional[str] = ""
939
+ label: Optional[str] = None
940
+ maturity: Optional[Maturity] = None
941
+ meta: Optional[Dict[str, Any]] = None
942
+ tags: Optional[List[str]] = None
943
+ config: Optional[ExposureConfig] = None
944
+ unrendered_config: Optional[Dict[str, Any]] = None
945
+ url: Optional[str] = None
946
+ depends_on: Optional[DependsOn] = None
947
+ refs: Optional[List[RefArgs]] = None
948
+ sources: Optional[List[List[str]]] = None
949
+ metrics: Optional[List[List[str]]] = None
950
+ created_at: Optional[float] = None
951
+
952
+
953
+ class WhereFilter(BaseParserModel):
954
+ model_config = ConfigDict(
955
+ extra="forbid",
956
+ )
957
+ where_sql_template: str
958
+
959
+
960
+ class WhereFilterIntersection(BaseParserModel):
961
+ model_config = ConfigDict(
962
+ extra="forbid",
963
+ )
964
+ where_filters: List[WhereFilter]
965
+
966
+
967
+ class MetricInputMeasure(BaseParserModel):
968
+ model_config = ConfigDict(
969
+ extra="forbid",
970
+ )
971
+ name: str
972
+ filter: Optional[WhereFilterIntersection] = None
973
+ alias: Optional[str] = None
974
+ join_to_timespine: Optional[bool] = False
975
+ fill_nulls_with: Optional[int] = None
976
+
977
+
978
+ class Granularity(Enum):
979
+ day = "day"
980
+ week = "week"
981
+ month = "month"
982
+ quarter = "quarter"
983
+ year = "year"
984
+
985
+
986
+ class MetricTimeWindow(BaseParserModel):
987
+ model_config = ConfigDict(
988
+ extra="forbid",
989
+ )
990
+ count: int
991
+ granularity: Granularity
992
+
993
+
994
+ class OffsetToGrain(Enum):
995
+ day = "day"
996
+ week = "week"
997
+ month = "month"
998
+ quarter = "quarter"
999
+ year = "year"
1000
+
1001
+
1002
+ class MetricInput(BaseParserModel):
1003
+ model_config = ConfigDict(
1004
+ extra="forbid",
1005
+ )
1006
+ name: str
1007
+ filter: Optional[WhereFilterIntersection] = None
1008
+ alias: Optional[str] = None
1009
+ offset_window: Optional[MetricTimeWindow] = None
1010
+ offset_to_grain: Optional[OffsetToGrain] = None
1011
+
1012
+
1013
+ class GrainToDate(Enum):
1014
+ day = "day"
1015
+ week = "week"
1016
+ month = "month"
1017
+ quarter = "quarter"
1018
+ year = "year"
1019
+
1020
+
1021
+ class MetricTypeParams(BaseParserModel):
1022
+ model_config = ConfigDict(
1023
+ extra="forbid",
1024
+ )
1025
+ measure: Optional[MetricInputMeasure] = None
1026
+ input_measures: Optional[List[MetricInputMeasure]] = None
1027
+ numerator: Optional[MetricInput] = None
1028
+ denominator: Optional[MetricInput] = None
1029
+ expr: Optional[str] = None
1030
+ window: Optional[MetricTimeWindow] = None
1031
+ grain_to_date: Optional[GrainToDate] = None
1032
+ metrics: Optional[List[MetricInput]] = None
1033
+
1034
+
1035
+ class FileSlice(BaseParserModel):
1036
+ model_config = ConfigDict(
1037
+ extra="forbid",
1038
+ )
1039
+ filename: str
1040
+ content: str
1041
+ start_line_number: int
1042
+ end_line_number: int
1043
+
1044
+
1045
+ class SourceFileMetadata(BaseParserModel):
1046
+ model_config = ConfigDict(
1047
+ extra="forbid",
1048
+ )
1049
+ repo_file_path: str
1050
+ file_slice: FileSlice
1051
+
1052
+
1053
+ class MetricConfig(BaseParserModel):
1054
+ model_config = ConfigDict(
1055
+ extra="allow",
1056
+ )
1057
+ field_extra: Optional[Dict[str, Any]] = Field(None, alias="_extra")
1058
+ enabled: Optional[bool] = True
1059
+ group: Optional[str] = None
1060
+
1061
+
1062
+ class Type3(Enum):
1063
+ simple = "simple"
1064
+ ratio = "ratio"
1065
+ cumulative = "cumulative"
1066
+ derived = "derived"
1067
+
1068
+
1069
+ class Metric(BaseParserModel):
1070
+ model_config = ConfigDict(
1071
+ extra="forbid",
1072
+ )
1073
+ name: str
1074
+ resource_type: Literal["metric"]
1075
+ package_name: str
1076
+ path: str
1077
+ original_file_path: str
1078
+ unique_id: str
1079
+ fqn: List[str]
1080
+ description: str
1081
+ label: str
1082
+ type: Type3
1083
+ type_params: MetricTypeParams
1084
+ filter: Optional[WhereFilterIntersection] = None
1085
+ metadata: Optional[SourceFileMetadata] = None
1086
+ meta: Optional[Dict[str, Any]] = None
1087
+ tags: Optional[List[str]] = None
1088
+ config: Optional[MetricConfig] = None
1089
+ unrendered_config: Optional[Dict[str, Any]] = None
1090
+ sources: Optional[List[List[str]]] = None
1091
+ depends_on: Optional[DependsOn] = None
1092
+ refs: Optional[List[RefArgs]] = None
1093
+ metrics: Optional[List[List[str]]] = None
1094
+ created_at: Optional[float] = None
1095
+ group: Optional[str] = None
1096
+
1097
+
1098
+ class Group(BaseParserModel):
1099
+ model_config = ConfigDict(
1100
+ extra="forbid",
1101
+ )
1102
+ name: str
1103
+ resource_type: Literal["group"]
1104
+ package_name: str
1105
+ path: str
1106
+ original_file_path: str
1107
+ unique_id: str
1108
+ owner: Owner
1109
+
1110
+
1111
+ class QueryParams(BaseParserModel):
1112
+ model_config = ConfigDict(
1113
+ extra="forbid",
1114
+ )
1115
+ metrics: List[str]
1116
+ group_by: List[str]
1117
+ where: Optional[WhereFilterIntersection] = None
1118
+
1119
+
1120
+ class ExportAs(Enum):
1121
+ table = "table"
1122
+ view = "view"
1123
+
1124
+
1125
+ class ExportConfig(BaseParserModel):
1126
+ model_config = ConfigDict(
1127
+ extra="forbid",
1128
+ )
1129
+ export_as: ExportAs
1130
+ schema_name: Optional[str] = None
1131
+ alias: Optional[str] = None
1132
+
1133
+
1134
+ class Export(BaseParserModel):
1135
+ model_config = ConfigDict(
1136
+ extra="forbid",
1137
+ )
1138
+ name: str
1139
+ config: ExportConfig
1140
+
1141
+
1142
+ class SavedQueryConfig(BaseParserModel):
1143
+ model_config = ConfigDict(
1144
+ extra="allow",
1145
+ )
1146
+ field_extra: Optional[Dict[str, Any]] = Field(None, alias="_extra")
1147
+ enabled: Optional[bool] = True
1148
+ group: Optional[str] = None
1149
+ meta: Optional[Dict[str, Any]] = None
1150
+
1151
+
1152
+ class ResourceType(Enum):
1153
+ model = "model"
1154
+ analysis = "analysis"
1155
+ test = "test"
1156
+ snapshot = "snapshot"
1157
+ operation = "operation"
1158
+ seed = "seed"
1159
+ rpc = "rpc"
1160
+ sql_operation = "sql_operation"
1161
+ doc = "doc"
1162
+ source = "source"
1163
+ macro = "macro"
1164
+ exposure = "exposure"
1165
+ metric = "metric"
1166
+ group = "group"
1167
+ saved_query = "saved_query"
1168
+ semantic_model = "semantic_model"
1169
+
1170
+
1171
+ class SavedQuery(BaseParserModel):
1172
+ model_config = ConfigDict(
1173
+ extra="forbid",
1174
+ )
1175
+ name: str
1176
+ resource_type: ResourceType
1177
+ package_name: str
1178
+ path: str
1179
+ original_file_path: str
1180
+ unique_id: str
1181
+ fqn: List[str]
1182
+ query_params: QueryParams
1183
+ exports: List[Export]
1184
+ description: Optional[str] = None
1185
+ label: Optional[str] = None
1186
+ metadata: Optional[SourceFileMetadata] = None
1187
+ config: Optional[SavedQueryConfig] = None
1188
+ unrendered_config: Optional[Dict[str, Any]] = None
1189
+ group: Optional[str] = None
1190
+ depends_on: Optional[DependsOn] = None
1191
+ created_at: Optional[float] = None
1192
+ refs: Optional[List[RefArgs]] = None
1193
+
1194
+
1195
+ class NodeRelation(BaseParserModel):
1196
+ model_config = ConfigDict(
1197
+ extra="forbid",
1198
+ )
1199
+ alias: str
1200
+ schema_name: str
1201
+ database: Optional[str] = None
1202
+ relation_name: Optional[str] = None
1203
+
1204
+
1205
+ class Defaults(BaseParserModel):
1206
+ model_config = ConfigDict(
1207
+ extra="forbid",
1208
+ )
1209
+ agg_time_dimension: Optional[str] = None
1210
+
1211
+
1212
+ class Type4(Enum):
1213
+ foreign = "foreign"
1214
+ natural = "natural"
1215
+ primary = "primary"
1216
+ unique = "unique"
1217
+
1218
+
1219
+ class Entity(BaseParserModel):
1220
+ model_config = ConfigDict(
1221
+ extra="forbid",
1222
+ )
1223
+ name: str
1224
+ type: Type4
1225
+ description: Optional[str] = None
1226
+ label: Optional[str] = None
1227
+ role: Optional[str] = None
1228
+ expr: Optional[str] = None
1229
+
1230
+
1231
+ class MeasureAggregationParameters(BaseParserModel):
1232
+ model_config = ConfigDict(
1233
+ extra="forbid",
1234
+ )
1235
+ percentile: Optional[float] = None
1236
+ use_discrete_percentile: Optional[bool] = False
1237
+ use_approximate_percentile: Optional[bool] = False
1238
+
1239
+
1240
+ class WindowChoice(Enum):
1241
+ sum = "sum"
1242
+ min = "min"
1243
+ max = "max"
1244
+ count_distinct = "count_distinct"
1245
+ sum_boolean = "sum_boolean"
1246
+ average = "average"
1247
+ percentile = "percentile"
1248
+ median = "median"
1249
+ count = "count"
1250
+
1251
+
1252
+ class NonAdditiveDimension(BaseParserModel):
1253
+ model_config = ConfigDict(
1254
+ extra="forbid",
1255
+ )
1256
+ name: str
1257
+ window_choice: WindowChoice
1258
+ window_groupings: List[str]
1259
+
1260
+
1261
+ class Agg(Enum):
1262
+ sum = "sum"
1263
+ min = "min"
1264
+ max = "max"
1265
+ count_distinct = "count_distinct"
1266
+ sum_boolean = "sum_boolean"
1267
+ average = "average"
1268
+ percentile = "percentile"
1269
+ median = "median"
1270
+ count = "count"
1271
+
1272
+
1273
+ class Measure(BaseParserModel):
1274
+ model_config = ConfigDict(
1275
+ extra="forbid",
1276
+ )
1277
+ name: str
1278
+ agg: Agg
1279
+ description: Optional[str] = None
1280
+ label: Optional[str] = None
1281
+ create_metric: Optional[bool] = False
1282
+ expr: Optional[str] = None
1283
+ agg_params: Optional[MeasureAggregationParameters] = None
1284
+ non_additive_dimension: Optional[NonAdditiveDimension] = None
1285
+ agg_time_dimension: Optional[str] = None
1286
+
1287
+
1288
+ class DimensionValidityParams(BaseParserModel):
1289
+ model_config = ConfigDict(
1290
+ extra="forbid",
1291
+ )
1292
+ is_start: Optional[bool] = False
1293
+ is_end: Optional[bool] = False
1294
+
1295
+
1296
+ class TimeGranularity(Enum):
1297
+ day = "day"
1298
+ week = "week"
1299
+ month = "month"
1300
+ quarter = "quarter"
1301
+ year = "year"
1302
+
1303
+
1304
+ class DimensionTypeParams(BaseParserModel):
1305
+ model_config = ConfigDict(
1306
+ extra="forbid",
1307
+ )
1308
+ time_granularity: TimeGranularity
1309
+ validity_params: Optional[DimensionValidityParams] = None
1310
+
1311
+
1312
+ class Type5(Enum):
1313
+ categorical = "categorical"
1314
+ time = "time"
1315
+
1316
+
1317
+ class Dimension(BaseParserModel):
1318
+ model_config = ConfigDict(
1319
+ extra="forbid",
1320
+ )
1321
+ name: str
1322
+ type: Type5
1323
+ description: Optional[str] = None
1324
+ label: Optional[str] = None
1325
+ is_partition: Optional[bool] = False
1326
+ type_params: Optional[DimensionTypeParams] = None
1327
+ expr: Optional[str] = None
1328
+ metadata: Optional[SourceFileMetadata] = None
1329
+
1330
+
1331
+ class SemanticModelConfig(BaseParserModel):
1332
+ model_config = ConfigDict(
1333
+ extra="allow",
1334
+ )
1335
+ field_extra: Optional[Dict[str, Any]] = Field(None, alias="_extra")
1336
+ enabled: Optional[bool] = True
1337
+ group: Optional[str] = None
1338
+ meta: Optional[Dict[str, Any]] = None
1339
+
1340
+
1341
+ class SemanticModel(BaseParserModel):
1342
+ model_config = ConfigDict(
1343
+ extra="forbid",
1344
+ )
1345
+ name: str
1346
+ resource_type: ResourceType
1347
+ package_name: str
1348
+ path: str
1349
+ original_file_path: str
1350
+ unique_id: str
1351
+ fqn: List[str]
1352
+ model: str
1353
+ node_relation: Optional[NodeRelation] = None
1354
+ description: Optional[str] = None
1355
+ label: Optional[str] = None
1356
+ defaults: Optional[Defaults] = None
1357
+ entities: Optional[List[Entity]] = None
1358
+ measures: Optional[List[Measure]] = None
1359
+ dimensions: Optional[List[Dimension]] = None
1360
+ metadata: Optional[SourceFileMetadata] = None
1361
+ depends_on: Optional[DependsOn] = None
1362
+ refs: Optional[List[RefArgs]] = None
1363
+ created_at: Optional[float] = None
1364
+ config: Optional[SemanticModelConfig] = None
1365
+ unrendered_config: Optional[Dict[str, Any]] = None
1366
+ primary_entity: Optional[str] = None
1367
+ group: Optional[str] = None
1368
+
1369
+
1370
+ class ManifestV11(BaseParserModel):
1371
+ model_config = ConfigDict(
1372
+ extra="forbid",
1373
+ )
1374
+ metadata: ManifestMetadata = Field(..., description="Metadata about the manifest")
1375
+ nodes: Dict[
1376
+ str,
1377
+ Union[
1378
+ AnalysisNode,
1379
+ SingularTestNode,
1380
+ HookNode,
1381
+ ModelNode,
1382
+ RPCNode,
1383
+ SqlNode,
1384
+ GenericTestNode,
1385
+ SnapshotNode,
1386
+ SeedNode,
1387
+ ],
1388
+ ] = Field(
1389
+ ..., description="The nodes defined in the dbt project and its dependencies"
1390
+ )
1391
+ sources: Dict[str, SourceDefinition] = Field(
1392
+ ..., description="The sources defined in the dbt project and its dependencies"
1393
+ )
1394
+ macros: Dict[str, Macro] = Field(
1395
+ ..., description="The macros defined in the dbt project and its dependencies"
1396
+ )
1397
+ docs: Dict[str, Documentation] = Field(
1398
+ ..., description="The docs defined in the dbt project and its dependencies"
1399
+ )
1400
+ exposures: Dict[str, Exposure] = Field(
1401
+ ..., description="The exposures defined in the dbt project and its dependencies"
1402
+ )
1403
+ metrics: Dict[str, Metric] = Field(
1404
+ ..., description="The metrics defined in the dbt project and its dependencies"
1405
+ )
1406
+ groups: Dict[str, Group] = Field(
1407
+ ..., description="The groups defined in the dbt project"
1408
+ )
1409
+ selectors: Dict[str, Any] = Field(
1410
+ ..., description="The selectors defined in selectors.yml"
1411
+ )
1412
+ disabled: Optional[
1413
+ Dict[
1414
+ str,
1415
+ List[
1416
+ Union[
1417
+ AnalysisNode,
1418
+ SingularTestNode,
1419
+ HookNode,
1420
+ ModelNode,
1421
+ RPCNode,
1422
+ SqlNode,
1423
+ GenericTestNode,
1424
+ SnapshotNode,
1425
+ SeedNode,
1426
+ SourceDefinition,
1427
+ Exposure,
1428
+ Metric,
1429
+ SavedQuery,
1430
+ SemanticModel,
1431
+ ]
1432
+ ],
1433
+ ]
1434
+ ] = Field(..., description="A mapping of the disabled nodes in the target")
1435
+ parent_map: Optional[Dict[str, List[str]]] = Field(
1436
+ ..., description="A mapping from\xa0child nodes to their dependencies"
1437
+ )
1438
+ child_map: Optional[Dict[str, List[str]]] = Field(
1439
+ ..., description="A mapping from parent nodes to their dependents"
1440
+ )
1441
+ group_map: Optional[Dict[str, List[str]]] = Field(
1442
+ ..., description="A mapping from group names to their nodes"
1443
+ )
1444
+ saved_queries: Dict[str, SavedQuery] = Field(
1445
+ ..., description="The saved queries defined in the dbt project"
1446
+ )
1447
+ semantic_models: Dict[str, SemanticModel] = Field(
1448
+ ..., description="The semantic models defined in the dbt project"
1449
+ )