1919from temporalio .runtime import Runtime , TelemetryConfig , OpenTelemetryConfig
2020from temporalio .converter import (
2121 DataConverter ,
22+ PayloadCodec ,
2223 JSONTypeConverter ,
2324 AdvancedJSONEncoder ,
2425 DefaultPayloadConverter ,
@@ -89,7 +90,12 @@ def _validate_interceptors(interceptors: list) -> None:
8990 )
9091
9192
92- async def get_temporal_client (temporal_address : str , metrics_url : str | None = None , plugins : list = []) -> Client :
93+ async def get_temporal_client (
94+ temporal_address : str ,
95+ metrics_url : str | None = None ,
96+ plugins : list = [],
97+ payload_codec : PayloadCodec | None = None ,
98+ ) -> Client :
9399 if plugins != []: # We don't need to validate the plugins if they are empty
94100 _validate_plugins (plugins )
95101
@@ -108,7 +114,10 @@ async def get_temporal_client(temporal_address: str, metrics_url: str | None = N
108114
109115 # Only set data_converter if OpenAI plugin is not present
110116 if not has_openai_plugin :
111- connect_kwargs ["data_converter" ] = custom_data_converter
117+ data_converter = custom_data_converter
118+ if payload_codec :
119+ data_converter = dataclasses .replace (data_converter , payload_codec = payload_codec )
120+ connect_kwargs ["data_converter" ] = data_converter
112121
113122 if not metrics_url :
114123 client = await Client .connect (** connect_kwargs )
@@ -129,6 +138,7 @@ def __init__(
129138 plugins : list = [],
130139 interceptors : list = [],
131140 metrics_url : str | None = None ,
141+ payload_codec : PayloadCodec | None = None ,
132142 ):
133143 self .task_queue = task_queue
134144 self .activity_handles = []
@@ -140,6 +150,7 @@ def __init__(
140150 self .plugins = plugins
141151 self .interceptors = interceptors
142152 self .metrics_url = metrics_url
153+ self .payload_codec = payload_codec
143154
144155 @overload
145156 async def run (
@@ -175,6 +186,7 @@ async def run(
175186 temporal_address = os .environ .get ("TEMPORAL_ADDRESS" , "localhost:7233" ),
176187 plugins = self .plugins ,
177188 metrics_url = self .metrics_url ,
189+ payload_codec = self .payload_codec ,
178190 )
179191
180192 # Enable debug mode if AgentEx debug is enabled (disables deadlock detection)
0 commit comments