10
10
from dagster_pipes import (
11
11
DAGSTER_PIPES_CONTEXT_ENV_VAR ,
12
12
DAGSTER_PIPES_MESSAGES_ENV_VAR ,
13
- PIPES_METADATA_TYPE_INFER ,
14
13
Method ,
15
14
PipesContextData ,
16
15
PipesDataProvenance ,
17
16
PipesException ,
18
17
PipesExtras ,
19
18
PipesMessage ,
20
- PipesMetadataType ,
21
- PipesMetadataValue ,
22
19
PipesOpenedData ,
23
20
PipesParams ,
24
21
PipesTimeWindow ,
34
31
from dagster ._core .definitions .asset_check_spec import AssetCheckSeverity
35
32
from dagster ._core .definitions .data_version import DataProvenance , DataVersion
36
33
from dagster ._core .definitions .events import AssetKey
37
- from dagster ._core .definitions .metadata import MetadataValue , normalize_metadata_value
38
- from dagster ._core .definitions .metadata .table import (
39
- TableColumn ,
40
- TableColumnConstraints ,
41
- TableColumnDep ,
42
- TableColumnLineage ,
43
- TableRecord ,
44
- TableSchema ,
34
+ from dagster ._core .definitions .metadata import (
35
+ ExternalMetadataValue ,
36
+ MetadataValue ,
37
+ metadata_map_from_external ,
45
38
)
46
39
from dagster ._core .definitions .partition_key_range import PartitionKeyRange
47
40
from dagster ._core .definitions .result import MaterializeResult
@@ -123,91 +116,9 @@ def received_closed_message(self) -> bool:
123
116
return self ._received_closed_msg
124
117
125
118
def _resolve_metadata (
126
- self , metadata : Mapping [str , PipesMetadataValue ]
119
+ self , metadata : Mapping [str , ExternalMetadataValue ]
127
120
) -> Mapping [str , MetadataValue ]:
128
- return {
129
- k : self ._resolve_metadata_value (v ["raw_value" ], v ["type" ]) for k , v in metadata .items ()
130
- }
131
-
132
- @staticmethod
133
- def _resolve_metadata_value (value : Any , metadata_type : PipesMetadataType ) -> MetadataValue :
134
- if metadata_type == PIPES_METADATA_TYPE_INFER :
135
- return normalize_metadata_value (value )
136
- elif metadata_type == "text" :
137
- return MetadataValue .text (value )
138
- elif metadata_type == "url" :
139
- return MetadataValue .url (value )
140
- elif metadata_type == "path" :
141
- return MetadataValue .path (value )
142
- elif metadata_type == "notebook" :
143
- return MetadataValue .notebook (value )
144
- elif metadata_type == "json" :
145
- return MetadataValue .json (value )
146
- elif metadata_type == "md" :
147
- return MetadataValue .md (value )
148
- elif metadata_type == "float" :
149
- return MetadataValue .float (value )
150
- elif metadata_type == "int" :
151
- return MetadataValue .int (value )
152
- elif metadata_type == "bool" :
153
- return MetadataValue .bool (value )
154
- elif metadata_type == "dagster_run" :
155
- return MetadataValue .dagster_run (value )
156
- elif metadata_type == "asset" :
157
- return MetadataValue .asset (AssetKey .from_user_string (value ))
158
- elif metadata_type == "table" :
159
- value = check .mapping_param (value , "table_value" , key_type = str )
160
- return MetadataValue .table (
161
- records = [TableRecord (record ) for record in value ["records" ]],
162
- schema = TableSchema (
163
- columns = [
164
- TableColumn (
165
- name = column ["name" ],
166
- type = column ["type" ],
167
- description = column .get ("description" ),
168
- tags = column .get ("tags" ),
169
- constraints = TableColumnConstraints (** column ["constraints" ])
170
- if column .get ("constraints" )
171
- else None ,
172
- )
173
- for column in value ["schema" ]
174
- ]
175
- ),
176
- )
177
- elif metadata_type == "table_schema" :
178
- value = check .mapping_param (value , "table_schema_value" , key_type = str )
179
- return MetadataValue .table_schema (
180
- schema = TableSchema (
181
- columns = [
182
- TableColumn (
183
- name = column ["name" ],
184
- type = column ["type" ],
185
- description = column .get ("description" ),
186
- tags = column .get ("tags" ),
187
- constraints = TableColumnConstraints (** column ["constraints" ])
188
- if column .get ("constraints" )
189
- else None ,
190
- )
191
- for column in value ["columns" ]
192
- ]
193
- )
194
- )
195
- elif metadata_type == "table_column_lineage" :
196
- value = check .mapping_param (value , "table_column_value" , key_type = str )
197
- return MetadataValue .column_lineage (
198
- lineage = TableColumnLineage (
199
- deps_by_column = {
200
- column : [TableColumnDep (** dep ) for dep in deps ]
201
- for column , deps in value ["deps_by_column" ].items ()
202
- }
203
- )
204
- )
205
- elif metadata_type == "timestamp" :
206
- return MetadataValue .timestamp (float (check .numeric_param (value , "timestamp" )))
207
- elif metadata_type == "null" :
208
- return MetadataValue .null ()
209
- else :
210
- check .failed (f"Unexpected metadata type { metadata_type } " )
121
+ return metadata_map_from_external (metadata )
211
122
212
123
# Type ignores because we currently validate in individual handlers
213
124
def handle_message (self , message : PipesMessage ) -> None :
@@ -253,7 +164,7 @@ def _handle_closed(self, params: Optional[Mapping[str, Any]]) -> None:
253
164
def _handle_report_asset_materialization (
254
165
self ,
255
166
asset_key : str ,
256
- metadata : Optional [Mapping [str , PipesMetadataValue ]],
167
+ metadata : Optional [Mapping [str , ExternalMetadataValue ]],
257
168
data_version : Optional [str ],
258
169
) -> None :
259
170
check .str_param (asset_key , "asset_key" )
@@ -275,7 +186,7 @@ def _handle_report_asset_check(
275
186
check_name : str ,
276
187
passed : bool ,
277
188
severity : str ,
278
- metadata : Mapping [str , PipesMetadataValue ],
189
+ metadata : Mapping [str , ExternalMetadataValue ],
279
190
) -> None :
280
191
check .str_param (asset_key , "asset_key" )
281
192
check .str_param (check_name , "check_name" )
0 commit comments