@@ -125,9 +125,21 @@ class ParallelConfig:
125125 Default is CompletionConfig.all_successful() which requires all branches
126126 to succeed. Other options include first_successful() and all_completed().
127127
128- serdes: Custom serialization/deserialization configuration for parallel results.
129- If None, uses the default serializer. This allows custom handling of
130- complex result types or optimization for large result sets.
128+ serdes: Custom serialization/deserialization configuration for BatchResult.
129+ Applied at the handler level to serialize the entire BatchResult object.
130+ If None, uses the default JSON serializer for BatchResult.
131+
132+ Backward Compatibility: If only 'serdes' is provided (no item_serdes),
133+ it will be used for both individual functions AND BatchResult serialization
134+ to maintain existing behavior.
135+
136+ item_serdes: Custom serialization/deserialization configuration for individual functions.
137+ Applied to each function's result as tasks complete in child contexts.
138+ If None, uses the default JSON serializer for individual function results.
139+
140+ When both 'serdes' and 'item_serdes' are provided:
141+ - item_serdes: Used for individual function results in child contexts
142+ - serdes: Used for the entire BatchResult at handler level
131143
132144 summary_generator: Function to generate compact summaries for large results (>256KB).
133145 When the serialized result exceeds CHECKPOINT_SIZE_LIMIT, this generator
@@ -150,6 +162,7 @@ class ParallelConfig:
150162 default_factory = CompletionConfig .all_successful
151163 )
152164 serdes : SerDes | None = None
165+ item_serdes : SerDes | None = None
153166 summary_generator : SummaryGenerator | None = None
154167
155168
@@ -181,9 +194,21 @@ class ChildConfig(Generic[T]):
181194 matching the TypeScript ChildConfig interface behavior.
182195
183196 Args:
184- serdes: Custom serialization/deserialization configuration for the child context data.
185- If None, uses the default serializer. This allows different serialization
186- strategies for child operations vs parent operations.
197+ serdes: Custom serialization/deserialization configuration for BatchResult.
198+ Applied at the handler level to serialize the entire BatchResult object.
199+ If None, uses the default JSON serializer for BatchResult.
200+
201+ Backward Compatibility: If only 'serdes' is provided (no item_serdes),
202+ it will be used for both individual items AND BatchResult serialization
203+ to maintain existing behavior.
204+
205+ item_serdes: Custom serialization/deserialization configuration for individual items.
206+ Applied to each item's result as tasks complete in child contexts.
207+ If None, uses the default JSON serializer for individual items.
208+
209+ When both 'serdes' and 'item_serdes' are provided:
210+ - item_serdes: Used for individual item results in child contexts
211+ - serdes: Used for the entire BatchResult at handler level
187212
188213 sub_type: Operation subtype identifier used for tracking and debugging.
189214 Examples: OperationSubType.MAP_ITERATION, OperationSubType.PARALLEL_BRANCH.
@@ -208,6 +233,7 @@ class ChildConfig(Generic[T]):
208233
209234 # checkpoint_mode: CheckpointMode = CheckpointMode.CHECKPOINT_AT_START_AND_FINISH
210235 serdes : SerDes | None = None
236+ item_serdes : SerDes | None = None
211237 sub_type : OperationSubType | None = None
212238 summary_generator : SummaryGenerator | None = None
213239
@@ -273,9 +299,21 @@ class MapConfig:
273299 Default allows any number of failures. Use CompletionConfig.all_successful()
274300 to require all items to succeed.
275301
276- serdes: Custom serialization/deserialization configuration for map results.
277- If None, uses the default serializer. This allows custom handling of
278- complex item types or optimization for large result collections.
302+ serdes: Custom serialization/deserialization configuration for BatchResult.
303+ Applied at the handler level to serialize the entire BatchResult object.
304+ If None, uses the default JSON serializer for BatchResult.
305+
306+ Backward Compatibility: If only 'serdes' is provided (no item_serdes),
307+ it will be used for both individual items AND BatchResult serialization
308+ to maintain existing behavior.
309+
310+ item_serdes: Custom serialization/deserialization configuration for individual items.
311+ Applied to each item's result as tasks complete in child contexts.
312+ If None, uses the default JSON serializer for individual items.
313+
314+ When both 'serdes' and 'item_serdes' are provided:
315+ - item_serdes: Used for individual item results in child contexts
316+ - serdes: Used for the entire BatchResult at handler level
279317
280318 summary_generator: Function to generate compact summaries for large results (>256KB).
281319 When the serialized result exceeds CHECKPOINT_SIZE_LIMIT, this generator
@@ -298,6 +336,7 @@ class MapConfig:
298336 item_batcher : ItemBatcher = field (default_factory = ItemBatcher )
299337 completion_config : CompletionConfig = field (default_factory = CompletionConfig )
300338 serdes : SerDes | None = None
339+ item_serdes : SerDes | None = None
301340 summary_generator : SummaryGenerator | None = None
302341
303342
0 commit comments