1616
1717ScopeType: TypeAlias = dict[str, Any]
1818
19- ExpressionType: TypeAlias = Any
20- # (
21- # str
22- # | int
23- # | float
24- # | bool
25- # | None
26- # | list["ExpressionType"]
27- # | dict[str, "ExpressionType"]
28- # )
29-
3019
3120Message: TypeAlias = dict[str, Any]
3221Messages: TypeAlias = list[Message]
@@ -64,6 +53,28 @@ class LocationType(BaseModel):
6453empty_block_location = LocationType(file="", path=[], table={})
6554
6655
56+ class LocalizedExpression(BaseModel):
57+ """Expression with location information"""
58+
59+ model_config = ConfigDict(
60+ extra="forbid", use_attribute_docstrings=True, arbitrary_types_allowed=True
61+ )
62+ expr: Any
63+ location: Optional[LocationType] = None
64+
65+
66+ ExpressionType: TypeAlias = Any | LocalizedExpression
67+ # (
68+ # str
69+ # | int
70+ # | float
71+ # | bool
72+ # | None
73+ # | list["ExpressionType"]
74+ # | dict[str, "ExpressionType"]
75+ # )
76+
77+
6778class Parser(BaseModel):
6879 model_config = ConfigDict(extra="forbid")
6980 description: Optional[str] = None
@@ -96,7 +107,11 @@ class ContributeValue(BaseModel):
96107class Block(BaseModel):
97108 """Common fields for all PDL blocks."""
98109
99- model_config = ConfigDict(extra="forbid", use_attribute_docstrings=True)
110+ model_config = ConfigDict(
111+ extra="forbid",
112+ use_attribute_docstrings=True,
113+ arbitrary_types_allowed=True,
114+ )
100115
101116 description: Optional[str] = None
102117 """Documentation associated to the block.
@@ -265,7 +280,7 @@ class ModelBlock(Block):
265280class BamModelBlock(ModelBlock):
266281 platform: Literal[ModelPlatform.BAM]
267282 prompt_id: Optional[str] = None
268- parameters: Optional[BamTextGenerationParameters | dict ] = None
283+ parameters: Optional[BamTextGenerationParameters | ExpressionType ] = None
269284 moderations: Optional[ModerationParameters] = None
270285 data: Optional[PromptTemplateData] = None
271286 constraints: Any = None # TODO
@@ -275,7 +290,7 @@ class LitellmModelBlock(ModelBlock):
275290 """Call a LLM through the LiteLLM API: https://docs.litellm.ai/."""
276291
277292 platform: Literal[ModelPlatform.LITELLM] = ModelPlatform.LITELLM
278- parameters: Optional[LitellmParameters | dict ] = None
293+ parameters: Optional[LitellmParameters | ExpressionType ] = None
279294
280295
281296class CodeBlock(Block):
0 commit comments