Skip to content

Commit 6062c0e

Browse files
committed
Reimplement OpenAIPayloadConverter as a CompositePayloadConverter
Build the converter tuple directly instead of mutating self.converters after super().__init__().
1 parent 03bd2d0 commit 6062c0e

1 file changed

Lines changed: 14 additions & 5 deletions

File tree

temporalio/contrib/openai_agents/_temporal_openai_agents.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,13 @@
3434
from temporalio.contrib.opentelemetry._tracer_provider import ReplaySafeTracerProvider
3535
from temporalio.contrib.pydantic import (
3636
PydanticJSONPlainPayloadConverter,
37-
PydanticPayloadConverter,
3837
ToJsonOptions,
3938
)
4039
from temporalio.converter import (
40+
CompositePayloadConverter,
4141
DataConverter,
4242
DefaultPayloadConverter,
43+
JSONPlainPayloadConverter,
4344
)
4445
from temporalio.plugin import SimplePlugin
4546
from temporalio.worker import WorkflowRunner
@@ -123,14 +124,22 @@ def from_payload(
123124
return _lenient_construct(type_hint, json.loads(payload.data))
124125

125126

126-
class OpenAIPayloadConverter(PydanticPayloadConverter):
127+
class OpenAIPayloadConverter(CompositePayloadConverter):
127128
"""PayloadConverter for OpenAI agents."""
128129

129130
def __init__(self) -> None:
130131
"""Initialize a payload converter."""
131-
super().__init__(ToJsonOptions(exclude_unset=True))
132-
lenient = _OpenAIJSONPlainPayloadConverter(ToJsonOptions(exclude_unset=True))
133-
self.converters = {**self.converters, lenient.encoding.encode(): lenient}
132+
json_payload_converter = _OpenAIJSONPlainPayloadConverter(
133+
ToJsonOptions(exclude_unset=True)
134+
)
135+
super().__init__(
136+
*(
137+
c
138+
if not isinstance(c, JSONPlainPayloadConverter)
139+
else json_payload_converter
140+
for c in DefaultPayloadConverter.default_encoding_payload_converters
141+
)
142+
)
134143

135144

136145
def _data_converter(converter: DataConverter | None) -> DataConverter:

0 commit comments

Comments
 (0)