|
34 | 34 | from temporalio.contrib.opentelemetry._tracer_provider import ReplaySafeTracerProvider |
35 | 35 | from temporalio.contrib.pydantic import ( |
36 | 36 | PydanticJSONPlainPayloadConverter, |
37 | | - PydanticPayloadConverter, |
38 | 37 | ToJsonOptions, |
39 | 38 | ) |
40 | 39 | from temporalio.converter import ( |
| 40 | + CompositePayloadConverter, |
41 | 41 | DataConverter, |
42 | 42 | DefaultPayloadConverter, |
| 43 | + JSONPlainPayloadConverter, |
43 | 44 | ) |
44 | 45 | from temporalio.plugin import SimplePlugin |
45 | 46 | from temporalio.worker import WorkflowRunner |
@@ -123,14 +124,22 @@ def from_payload( |
123 | 124 | return _lenient_construct(type_hint, json.loads(payload.data)) |
124 | 125 |
|
125 | 126 |
|
126 | | -class OpenAIPayloadConverter(PydanticPayloadConverter): |
| 127 | +class OpenAIPayloadConverter(CompositePayloadConverter): |
127 | 128 | """PayloadConverter for OpenAI agents.""" |
128 | 129 |
|
129 | 130 | def __init__(self) -> None: |
130 | 131 | """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 | + ) |
134 | 143 |
|
135 | 144 |
|
136 | 145 | def _data_converter(converter: DataConverter | None) -> DataConverter: |
|
0 commit comments