diff --git a/langfuse/api/core/http_client.py b/langfuse/api/core/http_client.py index 3025a49ba..84588887f 100644 --- a/langfuse/api/core/http_client.py +++ b/langfuse/api/core/http_client.py @@ -163,12 +163,12 @@ def maybe_filter_request_body( omit: typing.Optional[typing.Any], ) -> typing.Optional[typing.Any]: if data is None: - return ( - jsonable_encoder(request_options.get("additional_body_parameters", {})) - or {} - if request_options is not None - else None - ) + if request_options is None: + return None + additional_body_parameters = request_options.get("additional_body_parameters") + if not additional_body_parameters: + return None + return jsonable_encoder(additional_body_parameters) elif not isinstance(data, typing.Mapping): data_content = jsonable_encoder(data) else: diff --git a/tests/test_http_client.py b/tests/test_http_client.py new file mode 100644 index 000000000..c2e8e0d01 --- /dev/null +++ b/tests/test_http_client.py @@ -0,0 +1,37 @@ +from langfuse.api.core.http_client import get_request_body + + +def test_get_request_body_skips_empty_body_when_no_additional_parameters() -> None: + json_body, data_body = get_request_body( + json=None, + data=None, + request_options={"timeout_in_seconds": 30}, + omit=None, + ) + + assert json_body is None + assert data_body is None + + +def test_get_request_body_includes_additional_body_parameters() -> None: + json_body, data_body = get_request_body( + json=None, + data=None, + request_options={"additional_body_parameters": {"foo": "bar"}}, + omit=None, + ) + + assert json_body == {"foo": "bar"} + assert data_body is None + + +def test_get_request_body_skips_empty_additional_body_parameters() -> None: + json_body, data_body = get_request_body( + json=None, + data=None, + request_options={"additional_body_parameters": {}}, + omit=None, + ) + + assert json_body is None + assert data_body is None