1313 DataConverter ,
1414 DefaultPayloadConverter ,
1515 EncodingPayloadConverter ,
16+ JSONPlainPayloadConverter ,
1617 SerializationContext ,
1718 WithSerializationContext ,
1819 WorkflowSerializationContext ,
2223
2324@dataclass
2425class PayloadConverterTraceData :
25- to_payload : Optional [WorkflowSerializationContext ] = None
26- from_payload : Optional [WorkflowSerializationContext ] = None
26+ to_payload : list [WorkflowSerializationContext ] = field ( default_factory = list )
27+ from_payload : list [WorkflowSerializationContext ] = field ( default_factory = list )
2728
2829
2930@dataclass
@@ -33,7 +34,7 @@ class TraceData:
3334 )
3435
3536
36- @workflow .defn
37+ @workflow .defn ( sandboxed = False ) # we want to use isinstance
3738class SerializationContextTestWorkflow :
3839 @workflow .run
3940 async def run (self , input : TraceData ) -> TraceData :
@@ -61,12 +62,17 @@ def with_context(
6162 return converter
6263
6364 def to_payload (self , value : Any ) -> Optional [Payload ]:
64- value .workflow_context .to_payload = self .context
65+ assert isinstance (value , TraceData )
66+ assert isinstance (self .context , WorkflowSerializationContext )
67+ value .workflow_context .to_payload .append (self .context )
6568 return None
6669
6770 def from_payload (self , payload : Payload , type_hint : Optional [Type ] = None ) -> Any :
68- raise RuntimeError ("Not implemented" )
69- # return payload.data.decode()
71+ value = JSONPlainPayloadConverter ().from_payload (payload , type_hint )
72+ assert isinstance (value , TraceData )
73+ assert isinstance (self .context , WorkflowSerializationContext )
74+ value .workflow_context .from_payload .append (self .context )
75+ return value
7076
7177
7278class SerializationContextTestPayloadConverter (
@@ -108,7 +114,9 @@ async def test_workflow_payload_conversion_can_be_given_access_to_serialization_
108114 task_queue = task_queue ,
109115 )
110116
111- assert result . workflow_context . to_payload = = WorkflowSerializationContext (
117+ workflow_context = WorkflowSerializationContext (
112118 namespace = "default" ,
113119 workflow_id = workflow_id ,
114120 )
121+ assert result .workflow_context .to_payload == [workflow_context ] * 2
122+ # assert result.workflow_context.from_payload == [workflow_context] * 2
0 commit comments