Skip to content

Commit 63e4616

Browse files
fix(api): handle omission markers in queued WebSocket events (openai#3944)
## Summary Fixes serialization errors when WebSocket events containing `omit` or `not_given` are queued before the connection opens. ## Changes - Support omission markers in dictionary events queued by synchronous and asynchronous WebSocket connection managers. Co-authored-by: marcuswood-oai <323319819+marcuswood-oai@users.noreply.github.com>
1 parent d12d60f commit 63e4616

7 files changed

Lines changed: 16 additions & 16 deletions

File tree

‎.castiron.stats.yml‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
schema_version: 1
2-
generation_id: 85ad4660-a311-4438-9c8d-cdca0ec0f76a
2+
generation_id: ec3bb85c-c75f-4b0b-8713-a9377f2068d9
33
openapi_spec_hash: 6ffdf0b6c2bafb456b14fda3f7231658
44
openapi_transformed_spec_hash: d6d1e240c0615a9349169c2f2d04c388
55
config_hash: 84cdcc959ee7140cc9a65e9b642c097b
6-
codegen_sha: 2284ccaf093c393669ee50253d011bb2a12c9f69
7-
codegen_hash: 70eb364ca64eb34fc66bed39b8f693f90c75dcd0c307489373cf360dcf3a2269
8-
public_codegen_sha: 75504785271618f32f21c7948959b7a390faf4f5
6+
codegen_sha: 878642b3dcf465c78f575b8e49ebc181b58fc5ce
7+
codegen_hash: 614193cc88f476d3dbfe7d149d8adf21489f235af4454fb1e93628fe43e1e351
8+
public_codegen_sha: 9a6784d449a729fc0e8d97a4947a8fa858a0041f

‎src/openai/resources/beta/responses/responses.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4561,7 +4561,7 @@ def send(self, event: BetaResponsesClientEvent | BetaResponsesClientEventParam)
45614561
data = (
45624562
event.to_json(use_api_names=True, exclude_defaults=True, exclude_unset=True)
45634563
if isinstance(event, BaseModel)
4564-
else json.dumps(event)
4564+
else json.dumps(maybe_transform(event, BetaResponsesClientEventParam))
45654565
)
45664566
self.__send_queue.enqueue(data)
45674567

@@ -5047,7 +5047,7 @@ def send(self, event: BetaResponsesClientEvent | BetaResponsesClientEventParam)
50475047
data = (
50485048
event.to_json(use_api_names=True, exclude_defaults=True, exclude_unset=True)
50495049
if isinstance(event, BaseModel)
5050-
else json.dumps(event)
5050+
else json.dumps(maybe_transform(event, BetaResponsesClientEventParam))
50515051
)
50525052
self.__send_queue.enqueue(data)
50535053

‎src/openai/resources/live/forks.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ def send(self, event: ForkClientEvent | ForkClientEventParam) -> None:
465465
data = (
466466
event.to_json(use_api_names=True, exclude_defaults=True, exclude_unset=True)
467467
if isinstance(event, BaseModel)
468-
else json.dumps(event)
468+
else json.dumps(maybe_transform(event, ForkClientEventParam))
469469
)
470470
self.__send_queue.enqueue(data)
471471

@@ -952,7 +952,7 @@ def send(self, event: ForkClientEvent | ForkClientEventParam) -> None:
952952
data = (
953953
event.to_json(use_api_names=True, exclude_defaults=True, exclude_unset=True)
954954
if isinstance(event, BaseModel)
955-
else json.dumps(event)
955+
else json.dumps(maybe_transform(event, ForkClientEventParam))
956956
)
957957
self.__send_queue.enqueue(data)
958958

‎src/openai/resources/live/live.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,7 @@ def send(self, event: ClientEvent | ClientEventParam) -> None:
684684
data = (
685685
event.to_json(use_api_names=True, exclude_defaults=True, exclude_unset=True)
686686
if isinstance(event, BaseModel)
687-
else json.dumps(event)
687+
else json.dumps(maybe_transform(event, ClientEventParam))
688688
)
689689
self.__send_queue.enqueue(data)
690690

@@ -1166,7 +1166,7 @@ def send(self, event: ClientEvent | ClientEventParam) -> None:
11661166
data = (
11671167
event.to_json(use_api_names=True, exclude_defaults=True, exclude_unset=True)
11681168
if isinstance(event, BaseModel)
1169-
else json.dumps(event)
1169+
else json.dumps(maybe_transform(event, ClientEventParam))
11701170
)
11711171
self.__send_queue.enqueue(data)
11721172

‎src/openai/resources/live/sideband.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,7 @@ def send(self, event: ConnectClientEvent | ConnectClientEventParam) -> None:
472472
data = (
473473
event.to_json(use_api_names=True, exclude_defaults=True, exclude_unset=True)
474474
if isinstance(event, BaseModel)
475-
else json.dumps(event)
475+
else json.dumps(maybe_transform(event, ConnectClientEventParam))
476476
)
477477
self.__send_queue.enqueue(data)
478478

@@ -964,7 +964,7 @@ def send(self, event: ConnectClientEvent | ConnectClientEventParam) -> None:
964964
data = (
965965
event.to_json(use_api_names=True, exclude_defaults=True, exclude_unset=True)
966966
if isinstance(event, BaseModel)
967-
else json.dumps(event)
967+
else json.dumps(maybe_transform(event, ConnectClientEventParam))
968968
)
969969
self.__send_queue.enqueue(data)
970970

‎src/openai/resources/realtime/realtime.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -627,7 +627,7 @@ def send(self, event: RealtimeClientEvent | RealtimeClientEventParam) -> None:
627627
data = (
628628
event.to_json(use_api_names=True, exclude_defaults=True, exclude_unset=True)
629629
if isinstance(event, BaseModel)
630-
else json.dumps(event)
630+
else json.dumps(maybe_transform(event, RealtimeClientEventParam))
631631
)
632632
self.__send_queue.enqueue(data)
633633

@@ -1138,7 +1138,7 @@ def send(self, event: RealtimeClientEvent | RealtimeClientEventParam) -> None:
11381138
data = (
11391139
event.to_json(use_api_names=True, exclude_defaults=True, exclude_unset=True)
11401140
if isinstance(event, BaseModel)
1141-
else json.dumps(event)
1141+
else json.dumps(maybe_transform(event, RealtimeClientEventParam))
11421142
)
11431143
self.__send_queue.enqueue(data)
11441144

‎src/openai/resources/responses/responses.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4408,7 +4408,7 @@ def send(self, event: ResponsesClientEvent | ResponsesClientEventParam) -> None:
44084408
data = (
44094409
event.to_json(use_api_names=True, exclude_defaults=True, exclude_unset=True)
44104410
if isinstance(event, BaseModel)
4411-
else json.dumps(event)
4411+
else json.dumps(maybe_transform(event, ResponsesClientEventParam))
44124412
)
44134413
self.__send_queue.enqueue(data)
44144414

@@ -4906,7 +4906,7 @@ def send(self, event: ResponsesClientEvent | ResponsesClientEventParam) -> None:
49064906
data = (
49074907
event.to_json(use_api_names=True, exclude_defaults=True, exclude_unset=True)
49084908
if isinstance(event, BaseModel)
4909-
else json.dumps(event)
4909+
else json.dumps(maybe_transform(event, ResponsesClientEventParam))
49104910
)
49114911
self.__send_queue.enqueue(data)
49124912

0 commit comments

Comments
 (0)