Skip to content

Commit 5d68a25

Browse files
committed
Fix analysis and dumper
1 parent a6e9f56 commit 5d68a25

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

src/pdl/pdl_analysis.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ def unused_advanced_block(state: UnusedConfig, block: AdvancedBlockType) -> None
105105
| ModelBlock()
106106
| CallBlock()
107107
| CodeBlock()
108-
| EmptyBlock()
109108
| ReadBlock()
110109
):
111110
if state.implicit_ignore:
@@ -118,6 +117,15 @@ def unused_advanced_block(state: UnusedConfig, block: AdvancedBlockType) -> None
118117
),
119118
block,
120119
)
120+
case EmptyBlock():
121+
iter_block_children(
122+
(
123+
lambda blocks: unused_blocks(
124+
state.with_implicit_ignore(False), blocks
125+
)
126+
),
127+
block,
128+
)
121129
case ErrorBlock():
122130
pass
123131
# Non-leaf blocks

src/pdl/pdl_dumper.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
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+
220234
JsonType: TypeAlias = None | bool | int | float | str | dict[str, "JsonType"]
221235

222236

0 commit comments

Comments
 (0)