Skip to content

Commit 8e748bb

Browse files
fix(parsing): don't default to an empty array (#2106)
1 parent a2c6da0 commit 8e748bb

File tree

3 files changed

+22
-22
lines changed

3 files changed

+22
-22
lines changed

src/openai/lib/_parsing/_completions.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ def parse_chat_completion(
111111
response_format=response_format,
112112
message=message,
113113
),
114-
"tool_calls": tool_calls,
114+
"tool_calls": tool_calls if tool_calls else None,
115115
},
116116
},
117117
)

tests/lib/chat/test_completions.py

+11-11
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def test_parse_nothing(client: OpenAI, respx_mock: MockRouter, monkeypatch: pyte
6565
parsed=None,
6666
refusal=None,
6767
role='assistant',
68-
tool_calls=[]
68+
tool_calls=None
6969
)
7070
)
7171
],
@@ -132,7 +132,7 @@ class Location(BaseModel):
132132
parsed=Location(city='San Francisco', temperature=65.0, units='f'),
133133
refusal=None,
134134
role='assistant',
135-
tool_calls=[]
135+
tool_calls=None
136136
)
137137
)
138138
],
@@ -201,7 +201,7 @@ class Location(BaseModel):
201201
parsed=Location(city='San Francisco', temperature=65.0, units='f'),
202202
refusal=None,
203203
role='assistant',
204-
tool_calls=[]
204+
tool_calls=None
205205
)
206206
)
207207
],
@@ -272,7 +272,7 @@ class ColorDetection(BaseModel):
272272
parsed=ColorDetection(color=<Color.RED: 'red'>, hex_color_code='#FF0000'),
273273
refusal=None,
274274
role='assistant',
275-
tool_calls=[]
275+
tool_calls=None
276276
)
277277
)
278278
"""
@@ -321,7 +321,7 @@ class Location(BaseModel):
321321
parsed=Location(city='San Francisco', temperature=64.0, units='f'),
322322
refusal=None,
323323
role='assistant',
324-
tool_calls=[]
324+
tool_calls=None
325325
)
326326
),
327327
ParsedChoice[Location](
@@ -335,7 +335,7 @@ class Location(BaseModel):
335335
parsed=Location(city='San Francisco', temperature=65.0, units='f'),
336336
refusal=None,
337337
role='assistant',
338-
tool_calls=[]
338+
tool_calls=None
339339
)
340340
),
341341
ParsedChoice[Location](
@@ -349,7 +349,7 @@ class Location(BaseModel):
349349
parsed=Location(city='San Francisco', temperature=63.0, units='f'),
350350
refusal=None,
351351
role='assistant',
352-
tool_calls=[]
352+
tool_calls=None
353353
)
354354
)
355355
]
@@ -399,7 +399,7 @@ class CalendarEvent:
399399
parsed=CalendarEvent(name='Science Fair', date='Friday', participants=['Alice', 'Bob']),
400400
refusal=None,
401401
role='assistant',
402-
tool_calls=[]
402+
tool_calls=None
403403
)
404404
)
405405
],
@@ -571,7 +571,7 @@ class Location(BaseModel):
571571
parsed=None,
572572
refusal="I'm very sorry, but I can't assist with that.",
573573
role='assistant',
574-
tool_calls=[]
574+
tool_calls=None
575575
)
576576
)
577577
]
@@ -855,7 +855,7 @@ class Location(BaseModel):
855855
parsed=Location(city='San Francisco', temperature=58.0, units='f'),
856856
refusal=None,
857857
role='assistant',
858-
tool_calls=[]
858+
tool_calls=None
859859
)
860860
)
861861
],
@@ -930,7 +930,7 @@ class Location(BaseModel):
930930
parsed=Location(city='San Francisco', temperature=65.0, units='f'),
931931
refusal=None,
932932
role='assistant',
933-
tool_calls=[]
933+
tool_calls=None
934934
)
935935
)
936936
],

tests/lib/chat/test_completions_streaming.py

+10-10
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def test_parse_nothing(client: OpenAI, respx_mock: MockRouter, monkeypatch: pyte
7070
parsed=None,
7171
refusal=None,
7272
role='assistant',
73-
tool_calls=[]
73+
tool_calls=None
7474
)
7575
)
7676
]
@@ -147,7 +147,7 @@ def on_event(stream: ChatCompletionStream[Location], event: ChatCompletionStream
147147
parsed=Location(city='San Francisco', temperature=61.0, units='f'),
148148
refusal=None,
149149
role='assistant',
150-
tool_calls=[]
150+
tool_calls=None
151151
)
152152
)
153153
],
@@ -324,7 +324,7 @@ class Location(BaseModel):
324324
parsed=Location(city='San Francisco', temperature=65.0, units='f'),
325325
refusal=None,
326326
role='assistant',
327-
tool_calls=[]
327+
tool_calls=None
328328
)
329329
),
330330
ParsedChoice[Location](
@@ -338,7 +338,7 @@ class Location(BaseModel):
338338
parsed=Location(city='San Francisco', temperature=61.0, units='f'),
339339
refusal=None,
340340
role='assistant',
341-
tool_calls=[]
341+
tool_calls=None
342342
)
343343
),
344344
ParsedChoice[Location](
@@ -352,7 +352,7 @@ class Location(BaseModel):
352352
parsed=Location(city='San Francisco', temperature=59.0, units='f'),
353353
refusal=None,
354354
role='assistant',
355-
tool_calls=[]
355+
tool_calls=None
356356
)
357357
)
358358
]
@@ -427,7 +427,7 @@ class Location(BaseModel):
427427
parsed=None,
428428
refusal="I'm sorry, I can't assist with that request.",
429429
role='assistant',
430-
tool_calls=[]
430+
tool_calls=None
431431
)
432432
)
433433
]
@@ -501,7 +501,7 @@ def test_content_logprobs_events(client: OpenAI, respx_mock: MockRouter, monkeyp
501501
parsed=None,
502502
refusal=None,
503503
role='assistant',
504-
tool_calls=[]
504+
tool_calls=None
505505
)
506506
)
507507
]
@@ -612,7 +612,7 @@ class Location(BaseModel):
612612
parsed=None,
613613
refusal="I'm very sorry, but I can't assist with that.",
614614
role='assistant',
615-
tool_calls=[]
615+
tool_calls=None
616616
)
617617
)
618618
]
@@ -925,7 +925,7 @@ def test_non_pydantic_response_format(client: OpenAI, respx_mock: MockRouter, mo
925925
parsed=None,
926926
refusal=None,
927927
role='assistant',
928-
tool_calls=[]
928+
tool_calls=None
929929
)
930930
)
931931
]
@@ -1040,7 +1040,7 @@ def streamer(client: OpenAI) -> Iterator[ChatCompletionChunk]:
10401040
parsed=None,
10411041
refusal=None,
10421042
role='assistant',
1043-
tool_calls=[]
1043+
tool_calls=None
10441044
)
10451045
)
10461046
]

0 commit comments

Comments
 (0)