2121 GetBlock ,
2222 IfBlock ,
2323 IncludeBlock ,
24+ JoinArray ,
25+ JoinLastOf ,
26+ JoinText ,
27+ JoinType ,
2428 LastOfBlock ,
2529 LitellmModelBlock ,
2630 LitellmParameters ,
@@ -76,7 +80,7 @@ def block_to_dict(block: pdl_ast.BlockType, json_compatible: bool) -> DumpedBloc
7680 if not isinstance (block , Block ):
7781 return block
7882 d : dict [str , Any ] = {}
79- d ["kind" ] = block .kind
83+ d ["kind" ] = str ( block .kind )
8084 if block .description is not None :
8185 d ["description" ] = block .description
8286 if block .spec is not None :
@@ -87,7 +91,7 @@ def block_to_dict(block: pdl_ast.BlockType, json_compatible: bool) -> DumpedBloc
8791 }
8892 match block :
8993 case BamModelBlock ():
90- d ["platform" ] = block .platform
94+ d ["platform" ] = str ( block .platform )
9195 d ["model" ] = block .model
9296 if block .input is not None :
9397 d ["input" ] = blocks_to_dict (block .input , json_compatible )
@@ -105,7 +109,7 @@ def block_to_dict(block: pdl_ast.BlockType, json_compatible: bool) -> DumpedBloc
105109 if block .constraints is not None :
106110 d ["constraints" ] = block .constraints
107111 case LitellmModelBlock ():
108- d ["platform" ] = block .platform
112+ d ["platform" ] = str ( block .platform )
109113 d ["model" ] = block .model
110114 if block .input is not None :
111115 d ["input" ] = blocks_to_dict (block .input , json_compatible )
@@ -159,23 +163,23 @@ def block_to_dict(block: pdl_ast.BlockType, json_compatible: bool) -> DumpedBloc
159163 case RepeatBlock ():
160164 d ["repeat" ] = blocks_to_dict (block .repeat , json_compatible )
161165 d ["num_iterations" ] = block .num_iterations
162- d ["join" ] = block .join . model_dump ( by_alias = True )
166+ d ["join" ] = join_to_dict ( block .join )
163167 if block .trace is not None :
164168 d ["trace" ] = [
165169 blocks_to_dict (blocks , json_compatible ) for blocks in block .trace
166170 ]
167171 case RepeatUntilBlock ():
168172 d ["repeat" ] = blocks_to_dict (block .repeat , json_compatible )
169173 d ["until" ] = block .until
170- d ["join" ] = block .join . model_dump ( by_alias = True )
174+ d ["join" ] = join_to_dict ( block .join )
171175 if block .trace is not None :
172176 d ["trace" ] = [
173177 blocks_to_dict (blocks , json_compatible ) for blocks in block .trace
174178 ]
175179 case ForBlock ():
176180 d ["for" ] = block .fors
177181 d ["repeat" ] = blocks_to_dict (block .repeat , json_compatible )
178- d ["join" ] = block .join . model_dump ( by_alias = True )
182+ d ["join" ] = join_to_dict ( block .join )
179183 if block .trace is not None :
180184 d ["trace" ] = [
181185 blocks_to_dict (blocks , json_compatible ) for blocks in block .trace
@@ -217,6 +221,16 @@ def block_to_dict(block: pdl_ast.BlockType, json_compatible: bool) -> DumpedBloc
217221 return d
218222
219223
224+ def join_to_dict (join : JoinType ) -> dict [str , Any ]:
225+ d = {}
226+ match join :
227+ case JoinText ():
228+ d ["with" ] = join .join_string
229+ case JoinArray () | JoinLastOf ():
230+ d ["as" ] = str (join .iteration_type )
231+ return d
232+
233+
220234JsonType : TypeAlias = None | bool | int | float | str | dict [str , "JsonType" ]
221235
222236
0 commit comments