altimate-datapilot-cli 0.0.8__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 (139) hide show
  1. altimate_datapilot_cli-0.0.8.dist-info/AUTHORS.rst +5 -0
  2. altimate_datapilot_cli-0.0.8.dist-info/LICENSE +9 -0
  3. altimate_datapilot_cli-0.0.8.dist-info/METADATA +102 -0
  4. altimate_datapilot_cli-0.0.8.dist-info/RECORD +139 -0
  5. altimate_datapilot_cli-0.0.8.dist-info/WHEEL +5 -0
  6. altimate_datapilot_cli-0.0.8.dist-info/entry_points.txt +4 -0
  7. altimate_datapilot_cli-0.0.8.dist-info/top_level.txt +1 -0
  8. datapilot/__init__.py +1 -0
  9. datapilot/__main__.py +14 -0
  10. datapilot/cli/__init__.py +0 -0
  11. datapilot/cli/main.py +11 -0
  12. datapilot/clients/__init__.py +0 -0
  13. datapilot/clients/altimate/__init__.py +0 -0
  14. datapilot/clients/altimate/client.py +85 -0
  15. datapilot/clients/altimate/utils.py +75 -0
  16. datapilot/config/__init__.py +0 -0
  17. datapilot/config/config.py +16 -0
  18. datapilot/config/utils.py +32 -0
  19. datapilot/core/__init__.py +0 -0
  20. datapilot/core/insights/__init__.py +2 -0
  21. datapilot/core/insights/base/__init__.py +0 -0
  22. datapilot/core/insights/base/insight.py +34 -0
  23. datapilot/core/insights/report.py +16 -0
  24. datapilot/core/insights/schema.py +24 -0
  25. datapilot/core/insights/sql/__init__.py +0 -0
  26. datapilot/core/insights/sql/base/__init__.py +0 -0
  27. datapilot/core/insights/sql/base/insight.py +18 -0
  28. datapilot/core/insights/sql/runtime/__init__.py +0 -0
  29. datapilot/core/insights/sql/static/__init__.py +0 -0
  30. datapilot/core/insights/utils.py +20 -0
  31. datapilot/core/platforms/__init__.py +0 -0
  32. datapilot/core/platforms/dbt/__init__.py +0 -0
  33. datapilot/core/platforms/dbt/cli/__init__.py +0 -0
  34. datapilot/core/platforms/dbt/cli/cli.py +112 -0
  35. datapilot/core/platforms/dbt/constants.py +34 -0
  36. datapilot/core/platforms/dbt/exceptions.py +6 -0
  37. datapilot/core/platforms/dbt/executor.py +157 -0
  38. datapilot/core/platforms/dbt/factory.py +22 -0
  39. datapilot/core/platforms/dbt/formatting.py +45 -0
  40. datapilot/core/platforms/dbt/hooks/__init__.py +0 -0
  41. datapilot/core/platforms/dbt/hooks/executor_hook.py +86 -0
  42. datapilot/core/platforms/dbt/insights/__init__.py +115 -0
  43. datapilot/core/platforms/dbt/insights/base.py +133 -0
  44. datapilot/core/platforms/dbt/insights/checks/__init__.py +0 -0
  45. datapilot/core/platforms/dbt/insights/checks/base.py +26 -0
  46. datapilot/core/platforms/dbt/insights/checks/check_column_desc_are_same.py +105 -0
  47. datapilot/core/platforms/dbt/insights/checks/check_column_name_contract.py +154 -0
  48. datapilot/core/platforms/dbt/insights/checks/check_macro_args_have_desc.py +75 -0
  49. datapilot/core/platforms/dbt/insights/checks/check_macro_has_desc.py +63 -0
  50. datapilot/core/platforms/dbt/insights/checks/check_model_has_all_columns.py +96 -0
  51. datapilot/core/platforms/dbt/insights/checks/check_model_has_labels_keys.py +112 -0
  52. datapilot/core/platforms/dbt/insights/checks/check_model_has_meta_keys.py +108 -0
  53. datapilot/core/platforms/dbt/insights/checks/check_model_has_properties_file.py +64 -0
  54. datapilot/core/platforms/dbt/insights/checks/check_model_has_tests_by_group.py +118 -0
  55. datapilot/core/platforms/dbt/insights/checks/check_model_has_tests_by_name.py +114 -0
  56. datapilot/core/platforms/dbt/insights/checks/check_model_has_tests_by_type.py +119 -0
  57. datapilot/core/platforms/dbt/insights/checks/check_model_materialization_by_childs.py +129 -0
  58. datapilot/core/platforms/dbt/insights/checks/check_model_name_contract.py +132 -0
  59. datapilot/core/platforms/dbt/insights/checks/check_model_parents_and_childs.py +135 -0
  60. datapilot/core/platforms/dbt/insights/checks/check_model_parents_database.py +109 -0
  61. datapilot/core/platforms/dbt/insights/checks/check_model_parents_schema.py +109 -0
  62. datapilot/core/platforms/dbt/insights/checks/check_model_tags.py +87 -0
  63. datapilot/core/platforms/dbt/insights/checks/check_source_childs.py +97 -0
  64. datapilot/core/platforms/dbt/insights/checks/check_source_columns_have_desc.py +96 -0
  65. datapilot/core/platforms/dbt/insights/checks/check_source_has_all_columns.py +103 -0
  66. datapilot/core/platforms/dbt/insights/checks/check_source_has_freshness.py +94 -0
  67. datapilot/core/platforms/dbt/insights/checks/check_source_has_labels_keys.py +110 -0
  68. datapilot/core/platforms/dbt/insights/checks/check_source_has_loader.py +62 -0
  69. datapilot/core/platforms/dbt/insights/checks/check_source_has_meta_keys.py +117 -0
  70. datapilot/core/platforms/dbt/insights/checks/check_source_has_tests.py +82 -0
  71. datapilot/core/platforms/dbt/insights/checks/check_source_has_tests_by_group.py +117 -0
  72. datapilot/core/platforms/dbt/insights/checks/check_source_has_tests_by_name.py +113 -0
  73. datapilot/core/platforms/dbt/insights/checks/check_source_has_tests_by_type.py +119 -0
  74. datapilot/core/platforms/dbt/insights/checks/check_source_table_has_description.py +62 -0
  75. datapilot/core/platforms/dbt/insights/checks/check_source_tags.py +76 -0
  76. datapilot/core/platforms/dbt/insights/dbt_test/__init__.py +0 -0
  77. datapilot/core/platforms/dbt/insights/dbt_test/base.py +23 -0
  78. datapilot/core/platforms/dbt/insights/dbt_test/missing_primary_key_tests.py +130 -0
  79. datapilot/core/platforms/dbt/insights/dbt_test/test_coverage.py +118 -0
  80. datapilot/core/platforms/dbt/insights/governance/__init__.py +0 -0
  81. datapilot/core/platforms/dbt/insights/governance/base.py +23 -0
  82. datapilot/core/platforms/dbt/insights/governance/documentation_on_stale_columns.py +130 -0
  83. datapilot/core/platforms/dbt/insights/governance/exposures_dependent_on_private_models.py +90 -0
  84. datapilot/core/platforms/dbt/insights/governance/public_models_without_contracts.py +89 -0
  85. datapilot/core/platforms/dbt/insights/governance/undocumented_columns.py +148 -0
  86. datapilot/core/platforms/dbt/insights/governance/undocumented_public_models.py +110 -0
  87. datapilot/core/platforms/dbt/insights/modelling/README.md +15 -0
  88. datapilot/core/platforms/dbt/insights/modelling/__init__.py +0 -0
  89. datapilot/core/platforms/dbt/insights/modelling/base.py +31 -0
  90. datapilot/core/platforms/dbt/insights/modelling/direct_join_to_source.py +125 -0
  91. datapilot/core/platforms/dbt/insights/modelling/downstream_models_dependent_on_source.py +113 -0
  92. datapilot/core/platforms/dbt/insights/modelling/duplicate_sources.py +85 -0
  93. datapilot/core/platforms/dbt/insights/modelling/hard_coded_references.py +80 -0
  94. datapilot/core/platforms/dbt/insights/modelling/joining_of_upstream_concepts.py +79 -0
  95. datapilot/core/platforms/dbt/insights/modelling/model_fanout.py +126 -0
  96. datapilot/core/platforms/dbt/insights/modelling/multiple_sources_joined.py +83 -0
  97. datapilot/core/platforms/dbt/insights/modelling/root_model.py +82 -0
  98. datapilot/core/platforms/dbt/insights/modelling/source_fanout.py +102 -0
  99. datapilot/core/platforms/dbt/insights/modelling/staging_model_dependent_on_downstream_models.py +103 -0
  100. datapilot/core/platforms/dbt/insights/modelling/staging_model_dependent_on_staging_models.py +89 -0
  101. datapilot/core/platforms/dbt/insights/modelling/unused_sources.py +59 -0
  102. datapilot/core/platforms/dbt/insights/performance/__init__.py +0 -0
  103. datapilot/core/platforms/dbt/insights/performance/base.py +26 -0
  104. datapilot/core/platforms/dbt/insights/performance/chain_view_linking.py +92 -0
  105. datapilot/core/platforms/dbt/insights/performance/exposure_parent_materializations.py +104 -0
  106. datapilot/core/platforms/dbt/insights/schema.py +72 -0
  107. datapilot/core/platforms/dbt/insights/structure/__init__.py +0 -0
  108. datapilot/core/platforms/dbt/insights/structure/base.py +33 -0
  109. datapilot/core/platforms/dbt/insights/structure/model_directories_structure.py +92 -0
  110. datapilot/core/platforms/dbt/insights/structure/model_naming_conventions.py +97 -0
  111. datapilot/core/platforms/dbt/insights/structure/source_directories_structure.py +80 -0
  112. datapilot/core/platforms/dbt/insights/structure/test_directory_structure.py +74 -0
  113. datapilot/core/platforms/dbt/insights/utils.py +9 -0
  114. datapilot/core/platforms/dbt/schemas/__init__.py +0 -0
  115. datapilot/core/platforms/dbt/schemas/catalog.py +73 -0
  116. datapilot/core/platforms/dbt/schemas/manifest.py +462 -0
  117. datapilot/core/platforms/dbt/utils.py +525 -0
  118. datapilot/core/platforms/dbt/wrappers/__init__.py +0 -0
  119. datapilot/core/platforms/dbt/wrappers/catalog/__init__.py +0 -0
  120. datapilot/core/platforms/dbt/wrappers/catalog/v1/__init__.py +0 -0
  121. datapilot/core/platforms/dbt/wrappers/catalog/v1/wrapper.py +18 -0
  122. datapilot/core/platforms/dbt/wrappers/catalog/wrapper.py +9 -0
  123. datapilot/core/platforms/dbt/wrappers/manifest/__init__.py +0 -0
  124. datapilot/core/platforms/dbt/wrappers/manifest/v11/__init__.py +0 -0
  125. datapilot/core/platforms/dbt/wrappers/manifest/v11/schemas.py +47 -0
  126. datapilot/core/platforms/dbt/wrappers/manifest/v11/wrapper.py +396 -0
  127. datapilot/core/platforms/dbt/wrappers/manifest/wrapper.py +35 -0
  128. datapilot/core/platforms/dbt/wrappers/run_results/__init__.py +0 -0
  129. datapilot/core/platforms/dbt/wrappers/run_results/run_results.py +39 -0
  130. datapilot/exceptions/__init__.py +0 -0
  131. datapilot/exceptions/exceptions.py +10 -0
  132. datapilot/schemas/__init__.py +0 -0
  133. datapilot/schemas/constants.py +5 -0
  134. datapilot/schemas/nodes.py +19 -0
  135. datapilot/schemas/sql.py +10 -0
  136. datapilot/utils/__init__.py +0 -0
  137. datapilot/utils/formatting/__init__.py +0 -0
  138. datapilot/utils/formatting/utils.py +59 -0
  139. datapilot/utils/utils.py +317 -0
@@ -0,0 +1,462 @@
1
+ from enum import Enum
2
+ from typing import Any
3
+ from typing import Dict
4
+ from typing import List
5
+ from typing import Optional
6
+ from typing import Union
7
+
8
+ from dbt_artifacts_parser.parsers.catalog.catalog_v1 import CatalogV1
9
+ from dbt_artifacts_parser.parsers.manifest.manifest_v1 import ManifestV1
10
+ from dbt_artifacts_parser.parsers.manifest.manifest_v2 import ManifestV2
11
+ from dbt_artifacts_parser.parsers.manifest.manifest_v3 import ManifestV3
12
+ from dbt_artifacts_parser.parsers.manifest.manifest_v4 import ManifestV4
13
+ from dbt_artifacts_parser.parsers.manifest.manifest_v5 import ManifestV5
14
+ from dbt_artifacts_parser.parsers.manifest.manifest_v6 import ManifestV6
15
+ from dbt_artifacts_parser.parsers.manifest.manifest_v7 import ManifestV7
16
+ from dbt_artifacts_parser.parsers.manifest.manifest_v8 import ManifestV8
17
+ from dbt_artifacts_parser.parsers.manifest.manifest_v9 import ManifestV9
18
+ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import ManifestV10
19
+ from dbt_artifacts_parser.parsers.manifest.manifest_v11 import ManifestV11
20
+ from dbt_artifacts_parser.parsers.manifest.manifest_v11 import SupportedLanguage
21
+ from pydantic import BaseModel
22
+ from pydantic import Extra
23
+
24
+
25
+ class DBTVersion(BaseModel):
26
+ MAJOR: int
27
+ MINOR: int
28
+ PATCH: Optional[int]
29
+
30
+
31
+ Manifest = Union[
32
+ ManifestV11,
33
+ ManifestV10,
34
+ ManifestV9,
35
+ ManifestV8,
36
+ ManifestV7,
37
+ ManifestV6,
38
+ ManifestV5,
39
+ ManifestV4,
40
+ ManifestV3,
41
+ ManifestV2,
42
+ ManifestV1,
43
+ ]
44
+
45
+ Catalog = CatalogV1
46
+
47
+
48
+ class AltimateDocs(BaseModel):
49
+ class Config:
50
+ extra = Extra.forbid
51
+
52
+ show: Optional[bool] = True
53
+ node_color: Optional[Optional[str]] = None
54
+
55
+
56
+ class AltimateDependsOn(BaseModel):
57
+ nodes: Optional[List[str]]
58
+ macros: Optional[List[str]]
59
+
60
+
61
+ class AltimateManifestColumnInfo(BaseModel):
62
+ name: str
63
+ description: Optional[str] = ""
64
+ meta: Optional[Dict[str, Any]] = {}
65
+ data_type: Optional[Optional[str]] = None
66
+ quote: Optional[Optional[bool]] = None
67
+ tags: Optional[List[str]] = []
68
+
69
+
70
+ class AltimateFileHash(BaseModel):
71
+ name: Optional[str]
72
+ checksum: Optional[str]
73
+
74
+
75
+ class AltimateResourceType(Enum):
76
+ source = "source"
77
+ seed = "seed"
78
+ snapshot = "snapshot"
79
+ analysis = "analysis"
80
+ model = "model"
81
+ test = "test"
82
+ doc = "doc"
83
+ operation = "operation"
84
+ macro = "macro"
85
+ rpc = "rpc"
86
+ single_run_operation = "single_run_operation"
87
+ hook = "hook"
88
+ sql_operation = "sql_operation"
89
+ metric = "metric"
90
+ exposure = "exposure"
91
+ group = "group"
92
+
93
+
94
+ class AltimateAccess(Enum):
95
+ private = "private"
96
+ public = "public"
97
+ protected = "protected"
98
+
99
+
100
+ class AltimateDBTContract(BaseModel):
101
+ class Config:
102
+ extra = Extra.forbid
103
+
104
+ enforced: Optional[bool] = False
105
+ alias_types: Optional[bool] = True
106
+ checksum: Optional[Optional[str]] = None
107
+
108
+
109
+ class AltimateHook(BaseModel):
110
+ class Config:
111
+ extra = Extra.forbid
112
+
113
+ sql: str
114
+ transaction: Optional[bool] = True
115
+ index: Optional[Optional[int]] = None
116
+
117
+
118
+ # TODO: Need to add the rest of the fields
119
+ class AltimateNodeConfig(BaseModel):
120
+ class Config:
121
+ extra = Extra.allow
122
+
123
+ _extra: Optional[Dict[str, Any]] = None
124
+ enabled: Optional[bool] = True
125
+ alias: Optional[Optional[str]] = None
126
+ schema_: Optional[Optional[str]] = None
127
+ database: Optional[Optional[str]] = None
128
+ tags: Optional[Union[List[str], str]] = None
129
+ meta: Optional[Dict[str, Any]] = None
130
+ group: Optional[Optional[str]] = None
131
+ materialized: Optional[str] = "view"
132
+ incremental_strategy: Optional[Optional[str]] = None
133
+ persist_docs: Optional[Dict[str, Any]] = None
134
+ post_hook: Optional[List[AltimateHook]]
135
+ pre_hook: Optional[List[AltimateHook]]
136
+ quoting: Optional[Dict[str, Any]] = None
137
+ column_types: Optional[Dict[str, Any]] = None
138
+ full_refresh: Optional[Optional[bool]] = None
139
+ unique_key: Optional[Optional[Union[str, List[str]]]] = None
140
+ on_schema_change: Optional[Optional[str]] = "ignore"
141
+
142
+
143
+ class AltimateManifestNode(BaseModel):
144
+ database: Optional[str]
145
+ resource_type: AltimateResourceType
146
+ schema_name: str
147
+ name: str
148
+ package_name: str
149
+ path: str
150
+ original_file_path: str
151
+ unique_id: str
152
+ fqn: List[str]
153
+ alias: str
154
+ config: Optional[AltimateNodeConfig] = None
155
+ raw_code: Optional[str] = ""
156
+ language: Optional[str] = "sql"
157
+ checksum: Optional[AltimateFileHash]
158
+ description: Optional[str] = ""
159
+ columns: Optional[Dict[str, AltimateManifestColumnInfo]] = None
160
+ relation_name: Optional[Optional[str]] = None
161
+ sources: Optional[List[List[str]]] = None
162
+ metrics: Optional[List[List[str]]] = None
163
+ depends_on: Optional[AltimateDependsOn] = None
164
+ compiled_path: Optional[Optional[str]] = None
165
+ compiled: Optional[bool] = False
166
+ compiled_code: Optional[Optional[str]] = None
167
+ access: Optional[AltimateAccess]
168
+ contract: Optional[AltimateDBTContract] = None
169
+ meta: Optional[Dict[str, Any]] = None
170
+ patch_path: Optional[Optional[str]] = None
171
+
172
+
173
+ class AltimateQuoting(BaseModel):
174
+ database: Optional[Optional[bool]] = None
175
+ schema_: Optional[Optional[bool]] = None
176
+ identifier: Optional[Optional[bool]] = None
177
+ column: Optional[Optional[bool]] = None
178
+
179
+
180
+ class AltimateFreshnessThreshold(BaseModel):
181
+ warn_after: Optional[Dict] = None
182
+ error_after: Optional[Dict] = None
183
+ filter: Optional[str] = None
184
+
185
+
186
+ class AltimateExternalPartition(BaseModel):
187
+ name: Optional[str] = ""
188
+ description: Optional[str] = ""
189
+ data_type: Optional[str] = ""
190
+ meta: Optional[Dict[str, Any]] = {}
191
+
192
+
193
+ class AltimateExternalTable(BaseModel):
194
+ location: Optional[Optional[str]] = None
195
+ file_format: Optional[Optional[str]] = None
196
+ row_format: Optional[Optional[str]] = None
197
+ tbl_properties: Optional[Optional[str]] = None
198
+ partitions: Optional[Optional[List[AltimateExternalPartition]]] = None
199
+
200
+
201
+ class AltimateSourceConfig(BaseModel):
202
+ enabled: Optional[bool] = True
203
+
204
+
205
+ class AltimateDeferRelation(BaseModel):
206
+ class Config:
207
+ extra = Extra.forbid
208
+
209
+ database: Optional[str]
210
+ schema_name: str
211
+ alias: str
212
+ relation_name: Optional[str]
213
+
214
+
215
+ class AltimateSeedConfig(BaseModel):
216
+ class Config:
217
+ extra = Extra.allow
218
+
219
+ _extra: Optional[Dict[str, Any]] = None
220
+ enabled: Optional[bool] = True
221
+ alias: Optional[Optional[str]] = None
222
+ schema_: Optional[Optional[str]] = None
223
+ database: Optional[Optional[str]] = None
224
+ tags: Optional[Union[List[str], str]] = None
225
+ meta: Optional[Dict[str, Any]] = None
226
+ group: Optional[Optional[str]] = None
227
+ materialized: Optional[str] = "seed"
228
+ incremental_strategy: Optional[Optional[str]] = None
229
+ persist_docs: Optional[Dict[str, Any]] = None
230
+ post_hook: Optional[List[AltimateHook]]
231
+ pre_hook: Optional[List[AltimateHook]]
232
+ quoting: Optional[Dict[str, Any]] = None
233
+ column_types: Optional[Dict[str, Any]] = None
234
+ full_refresh: Optional[Optional[bool]] = None
235
+ unique_key: Optional[Optional[Union[str, List[str]]]] = None
236
+ on_schema_change: Optional[Optional[str]] = "ignore"
237
+ on_configuration_change: Optional[Any] = None
238
+ grants: Optional[Dict[str, Any]] = None
239
+ packages: Optional[List[str]] = None
240
+ docs: Optional[AltimateDocs] = None
241
+ contract: Optional[Any] = None
242
+ delimiter: Optional[str] = ","
243
+ quote_columns: Optional[Optional[bool]] = None
244
+
245
+
246
+ class AltimateSeedNode(BaseModel):
247
+ database: Optional[str]
248
+ schema_name: str
249
+ name: str
250
+ resource_type: AltimateResourceType
251
+ package_name: str
252
+ path: str
253
+ original_file_path: str
254
+ unique_id: str
255
+ fqn: List[str]
256
+ alias: str
257
+ checksum: Optional[AltimateFileHash]
258
+ config: Optional[AltimateSeedConfig] = None
259
+ tags: Optional[List[str]] = None
260
+ description: Optional[str] = ""
261
+ columns: Optional[Dict[str, AltimateManifestColumnInfo]] = None
262
+ meta: Optional[Dict[str, Any]] = None
263
+ group: Optional[Optional[str]] = None
264
+ docs: Optional[Any] = None
265
+ patch_path: Optional[Optional[str]] = None
266
+ build_path: Optional[Optional[str]] = None
267
+ deferred: Optional[bool] = False
268
+ unrendered_config: Optional[Dict[str, Any]] = None
269
+ created_at: Optional[float] = None
270
+ config_call_dict: Optional[Dict[str, Any]] = None
271
+ relation_name: Optional[Optional[str]] = None
272
+ raw_code: Optional[str] = ""
273
+ root_path: Optional[Optional[str]] = None
274
+ depends_on: Optional[AltimateDependsOn] = None
275
+ defer_relation: Optional[Optional[AltimateDeferRelation]] = None
276
+
277
+
278
+ class AltimateManifestSourceNode(BaseModel):
279
+ database: Optional[str]
280
+ resource_type: AltimateResourceType
281
+ schema_name: str
282
+ name: str
283
+ package_name: str
284
+ path: str
285
+ original_file_path: str
286
+ unique_id: str
287
+ fqn: List[str]
288
+ source_name: str
289
+ source_description: str
290
+ loader: str
291
+ identifier: str
292
+ quoting: Optional[AltimateQuoting] = None
293
+ loaded_at_field: Optional[Optional[str]] = None
294
+ freshness: Optional[Optional[AltimateFreshnessThreshold]] = None
295
+ external: Optional[Optional[AltimateExternalTable]] = None
296
+ description: Optional[str] = ""
297
+ columns: Optional[Dict[str, AltimateManifestColumnInfo]] = None
298
+ meta: Optional[Dict[str, Any]] = None
299
+ relation_name: Optional[Optional[str]] = None
300
+ source_meta: Optional[Dict[str, Any]] = None
301
+ tags: Optional[List[str]] = None
302
+ config: Optional[AltimateSourceConfig] = None
303
+ patch_path: Optional[Optional[str]] = None
304
+ unrendered_config: Optional[Dict[str, Any]] = None
305
+ created_at: Optional[float] = None
306
+
307
+
308
+ class AltimateExposureType(Enum):
309
+ dashboard = "dashboard"
310
+ notebook = "notebook"
311
+ analysis = "analysis"
312
+ ml = "ml"
313
+ application = "application"
314
+
315
+
316
+ class AltimateOwner(BaseModel):
317
+ class Config:
318
+ extra = Extra.allow
319
+
320
+ _extra: Optional[Dict[str, Any]] = None
321
+ email: Optional[Optional[str]] = None
322
+ name: Optional[Optional[str]] = None
323
+
324
+
325
+ class AltimateMaturityEnum(Enum):
326
+ low = "low"
327
+ medium = "medium"
328
+ high = "high"
329
+
330
+
331
+ class AltimateRefArgs(BaseModel):
332
+ class Config:
333
+ extra = Extra.forbid
334
+
335
+ name: str
336
+ package: Optional[Optional[str]] = None
337
+ version: Optional[Optional[Union[str, float]]] = None
338
+
339
+
340
+ class AltimateExposureConfig(BaseModel):
341
+ class Config:
342
+ extra = Extra.allow
343
+
344
+ _extra: Optional[Dict[str, Any]] = None
345
+ enabled: Optional[bool] = True
346
+
347
+
348
+ class AltimateManifestExposureNode(BaseModel):
349
+ name: str
350
+ resource_type: AltimateResourceType
351
+ package_name: str
352
+ path: str
353
+ original_file_path: str
354
+ unique_id: str
355
+ fqn: List[str]
356
+ type: AltimateExposureType
357
+ owner: AltimateOwner
358
+ description: Optional[str] = ""
359
+ label: Optional[Optional[str]] = None
360
+ maturity: Optional[Optional[AltimateMaturityEnum]] = None
361
+ meta: Optional[Dict[str, Any]] = None
362
+ tags: Optional[List[str]] = None
363
+ config: Optional[AltimateExposureConfig] = None
364
+ unrendered_config: Optional[Dict[str, Any]] = None
365
+ url: Optional[Optional[str]] = None
366
+ depends_on: Optional[AltimateDependsOn] = None
367
+ refs: Optional[List[AltimateRefArgs]] = None
368
+ sources: Optional[List[List[str]]] = None
369
+ metrics: Optional[List[List[str]]] = None
370
+ created_at: Optional[float] = None
371
+
372
+
373
+ class AltimateTestMetadata(BaseModel):
374
+ class Config:
375
+ extra = Extra.forbid
376
+
377
+ name: str
378
+ kwargs: Optional[Dict[str, Any]] = None
379
+ namespace: Optional[Optional[str]] = None
380
+
381
+
382
+ class AltimateTestConfig(BaseModel):
383
+ class Config:
384
+ extra = Extra.allow
385
+
386
+ _extra: Optional[Dict[str, Any]] = None
387
+ enabled: Optional[bool] = True
388
+ alias: Optional[Optional[str]] = None
389
+ schema_: Optional[Optional[str]] = None
390
+ database: Optional[Optional[str]] = None
391
+ tags: Optional[Union[List[str], str]] = None
392
+ meta: Optional[Dict[str, Any]] = None
393
+ group: Optional[Optional[str]] = None
394
+ materialized: Optional[str] = "test"
395
+ severity: Optional[str] = "ERROR"
396
+ store_failures: Optional[Optional[bool]] = None
397
+ store_failures_as: Optional[Optional[str]] = None
398
+ where: Optional[Optional[str]] = None
399
+ limit: Optional[Optional[int]] = None
400
+ fail_calc: Optional[str] = "count(*)"
401
+ warn_if: Optional[str] = "!= 0"
402
+ error_if: Optional[str] = "!= 0"
403
+
404
+
405
+ class AltimateManifestTestNode(BaseModel):
406
+ test_metadata: Optional[AltimateTestMetadata] = None
407
+ test_type: Optional[str] = None
408
+ name: str
409
+ resource_type: AltimateResourceType
410
+ package_name: str
411
+ path: str
412
+ original_file_path: str
413
+ unique_id: str
414
+ fqn: List[str]
415
+ alias: str
416
+ checksum: Optional[AltimateFileHash]
417
+ config: Optional[AltimateTestConfig] = None
418
+ _event_status: Optional[Dict[str, Any]] = None
419
+ tags: Optional[List[str]] = None
420
+ description: Optional[str] = ""
421
+ columns: Optional[Dict[str, AltimateManifestColumnInfo]] = None
422
+ meta: Optional[Dict[str, Any]] = None
423
+ group: Optional[Optional[str]] = None
424
+ raw_code: Optional[str] = ""
425
+ language: Optional[str] = "sql"
426
+ refs: Optional[List[AltimateRefArgs]] = None
427
+ sources: Optional[List[List[str]]] = None
428
+ metrics: Optional[List[List[str]]] = None
429
+ depends_on: Optional[AltimateDependsOn] = None
430
+ compiled_path: Optional[Optional[str]] = None
431
+ compiled: Optional[bool] = False
432
+ compiled_code: Optional[Optional[str]] = None
433
+
434
+
435
+ class AltimateMacroArgument(BaseModel):
436
+ class Config:
437
+ extra = Extra.forbid
438
+
439
+ name: str
440
+ type: Optional[Optional[str]] = None
441
+ description: Optional[str] = ""
442
+
443
+
444
+ AltimateSupportedLanguage = SupportedLanguage
445
+
446
+
447
+ class AltimateManifestMacroNode(BaseModel):
448
+ name: str
449
+ resource_type: AltimateResourceType
450
+ package_name: str
451
+ path: str
452
+ original_file_path: str
453
+ unique_id: str
454
+ macro_sql: str
455
+ depends_on: Optional[AltimateDependsOn] = None
456
+ description: Optional[str] = ""
457
+ meta: Optional[Dict[str, Any]] = None
458
+ docs: Optional[AltimateDocs] = None
459
+ patch_path: Optional[Optional[str]] = None
460
+ arguments: Optional[List[AltimateMacroArgument]] = None
461
+ created_at: Optional[float] = None
462
+ supported_languages: Optional[Optional[List[AltimateSupportedLanguage]]] = None