From 8e748bb08d9c0d1f7e8a1af31452e25eb7154f55 Mon Sep 17 00:00:00 2001 From: Robert Craigie Date: Mon, 10 Feb 2025 18:08:55 +0000 Subject: [PATCH] fix(parsing): don't default to an empty array (#2106) --- src/openai/lib/_parsing/_completions.py | 2 +- tests/lib/chat/test_completions.py | 22 ++++++++++---------- tests/lib/chat/test_completions_streaming.py | 20 +++++++++--------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/openai/lib/_parsing/_completions.py b/src/openai/lib/_parsing/_completions.py index 33c4ccb946..14b1745d3d 100644 --- a/src/openai/lib/_parsing/_completions.py +++ b/src/openai/lib/_parsing/_completions.py @@ -111,7 +111,7 @@ def parse_chat_completion( response_format=response_format, message=message, ), - "tool_calls": tool_calls, + "tool_calls": tool_calls if tool_calls else None, }, }, ) diff --git a/tests/lib/chat/test_completions.py b/tests/lib/chat/test_completions.py index 48f41eb221..74cee27b93 100644 --- a/tests/lib/chat/test_completions.py +++ b/tests/lib/chat/test_completions.py @@ -65,7 +65,7 @@ def test_parse_nothing(client: OpenAI, respx_mock: MockRouter, monkeypatch: pyte parsed=None, refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ) ], @@ -132,7 +132,7 @@ class Location(BaseModel): parsed=Location(city='San Francisco', temperature=65.0, units='f'), refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ) ], @@ -201,7 +201,7 @@ class Location(BaseModel): parsed=Location(city='San Francisco', temperature=65.0, units='f'), refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ) ], @@ -272,7 +272,7 @@ class ColorDetection(BaseModel): parsed=ColorDetection(color=, hex_color_code='#FF0000'), refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ) """ @@ -321,7 +321,7 @@ class Location(BaseModel): parsed=Location(city='San Francisco', temperature=64.0, units='f'), refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ), ParsedChoice[Location]( @@ -335,7 +335,7 @@ class Location(BaseModel): parsed=Location(city='San Francisco', temperature=65.0, units='f'), refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ), ParsedChoice[Location]( @@ -349,7 +349,7 @@ class Location(BaseModel): parsed=Location(city='San Francisco', temperature=63.0, units='f'), refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ) ] @@ -399,7 +399,7 @@ class CalendarEvent: parsed=CalendarEvent(name='Science Fair', date='Friday', participants=['Alice', 'Bob']), refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ) ], @@ -571,7 +571,7 @@ class Location(BaseModel): parsed=None, refusal="I'm very sorry, but I can't assist with that.", role='assistant', - tool_calls=[] + tool_calls=None ) ) ] @@ -855,7 +855,7 @@ class Location(BaseModel): parsed=Location(city='San Francisco', temperature=58.0, units='f'), refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ) ], @@ -930,7 +930,7 @@ class Location(BaseModel): parsed=Location(city='San Francisco', temperature=65.0, units='f'), refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ) ], diff --git a/tests/lib/chat/test_completions_streaming.py b/tests/lib/chat/test_completions_streaming.py index 1eed031af7..71b4173738 100644 --- a/tests/lib/chat/test_completions_streaming.py +++ b/tests/lib/chat/test_completions_streaming.py @@ -70,7 +70,7 @@ def test_parse_nothing(client: OpenAI, respx_mock: MockRouter, monkeypatch: pyte parsed=None, refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ) ] @@ -147,7 +147,7 @@ def on_event(stream: ChatCompletionStream[Location], event: ChatCompletionStream parsed=Location(city='San Francisco', temperature=61.0, units='f'), refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ) ], @@ -324,7 +324,7 @@ class Location(BaseModel): parsed=Location(city='San Francisco', temperature=65.0, units='f'), refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ), ParsedChoice[Location]( @@ -338,7 +338,7 @@ class Location(BaseModel): parsed=Location(city='San Francisco', temperature=61.0, units='f'), refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ), ParsedChoice[Location]( @@ -352,7 +352,7 @@ class Location(BaseModel): parsed=Location(city='San Francisco', temperature=59.0, units='f'), refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ) ] @@ -427,7 +427,7 @@ class Location(BaseModel): parsed=None, refusal="I'm sorry, I can't assist with that request.", role='assistant', - tool_calls=[] + tool_calls=None ) ) ] @@ -501,7 +501,7 @@ def test_content_logprobs_events(client: OpenAI, respx_mock: MockRouter, monkeyp parsed=None, refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ) ] @@ -612,7 +612,7 @@ class Location(BaseModel): parsed=None, refusal="I'm very sorry, but I can't assist with that.", role='assistant', - tool_calls=[] + tool_calls=None ) ) ] @@ -925,7 +925,7 @@ def test_non_pydantic_response_format(client: OpenAI, respx_mock: MockRouter, mo parsed=None, refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ) ] @@ -1040,7 +1040,7 @@ def streamer(client: OpenAI) -> Iterator[ChatCompletionChunk]: parsed=None, refusal=None, role='assistant', - tool_calls=[] + tool_calls=None ) ) ]