-
Notifications
You must be signed in to change notification settings - Fork 1.5k
/
node_types.py
92 lines (77 loc) · 1.84 KB
/
node_types.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
from typing import List
from dbt.dataclass_schema import StrEnum
class AccessType(StrEnum):
Private = "private"
Protected = "protected"
Public = "public"
@classmethod
def is_valid(cls, item):
try:
cls(item)
except ValueError:
return False
return True
class NodeType(StrEnum):
Model = "model"
Analysis = "analysis"
Test = "test"
Snapshot = "snapshot"
Operation = "operation"
Seed = "seed"
# TODO: rm?
RPCCall = "rpc"
SqlOperation = "sql_operation"
Documentation = "doc"
Source = "source"
Macro = "macro"
Exposure = "exposure"
Metric = "metric"
Group = "group"
SemanticModel = "semantic_model"
@classmethod
def executable(cls) -> List["NodeType"]:
return [
cls.Model,
cls.Test,
cls.Snapshot,
cls.Analysis,
cls.Operation,
cls.Seed,
cls.Documentation,
cls.RPCCall,
cls.SqlOperation,
]
@classmethod
def refable(cls) -> List["NodeType"]:
return [
cls.Model,
cls.Seed,
cls.Snapshot,
]
@classmethod
def versioned(cls) -> List["NodeType"]:
return [
cls.Model,
]
@classmethod
def documentable(cls) -> List["NodeType"]:
return [
cls.Model,
cls.Seed,
cls.Snapshot,
cls.Source,
cls.Macro,
cls.Analysis,
cls.Exposure,
cls.Metric,
]
def pluralize(self) -> str:
if self is self.Analysis:
return "analyses"
return f"{self}s"
class RunHookType(StrEnum):
Start = "on-run-start"
End = "on-run-end"
class ModelLanguage(StrEnum):
python = "python"
sql = "sql"