Skip to content

Commit 6c3e3df

Browse files
fix(sdk-python): avoid empty JSON body on GET
Return None when no additional body parameters are provided so GET requests don't include {} payloads. Adds unit tests for request body handling.
1 parent 6f9eaf2 commit 6c3e3df

2 files changed

Lines changed: 43 additions & 6 deletions

File tree

langfuse/api/core/http_client.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -163,12 +163,12 @@ def maybe_filter_request_body(
163163
omit: typing.Optional[typing.Any],
164164
) -> typing.Optional[typing.Any]:
165165
if data is None:
166-
return (
167-
jsonable_encoder(request_options.get("additional_body_parameters", {}))
168-
or {}
169-
if request_options is not None
170-
else None
171-
)
166+
if request_options is None:
167+
return None
168+
additional_body_parameters = request_options.get("additional_body_parameters")
169+
if not additional_body_parameters:
170+
return None
171+
return jsonable_encoder(additional_body_parameters)
172172
elif not isinstance(data, typing.Mapping):
173173
data_content = jsonable_encoder(data)
174174
else:

tests/test_http_client.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from langfuse.api.core.http_client import get_request_body
2+
3+
4+
def test_get_request_body_skips_empty_body_when_no_additional_parameters() -> None:
5+
json_body, data_body = get_request_body(
6+
json=None,
7+
data=None,
8+
request_options={"timeout_in_seconds": 30},
9+
omit=None,
10+
)
11+
12+
assert json_body is None
13+
assert data_body is None
14+
15+
16+
def test_get_request_body_includes_additional_body_parameters() -> None:
17+
json_body, data_body = get_request_body(
18+
json=None,
19+
data=None,
20+
request_options={"additional_body_parameters": {"foo": "bar"}},
21+
omit=None,
22+
)
23+
24+
assert json_body == {"foo": "bar"}
25+
assert data_body is None
26+
27+
28+
def test_get_request_body_skips_empty_additional_body_parameters() -> None:
29+
json_body, data_body = get_request_body(
30+
json=None,
31+
data=None,
32+
request_options={"additional_body_parameters": {}},
33+
omit=None,
34+
)
35+
36+
assert json_body is None
37+
assert data_body is None

0 commit comments

Comments
 (0)