From 7fcff144de0ab8520f818fef355063fc4268936f Mon Sep 17 00:00:00 2001 From: Sergii Kovalov Date: Fri, 21 Mar 2025 11:16:38 -0700 Subject: [PATCH] fix(python): missing Decimal to float convertion for body serializer --- .../algoliasearch/http/serializer.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/clients/algoliasearch-client-python/algoliasearch/http/serializer.py b/clients/algoliasearch-client-python/algoliasearch/http/serializer.py index 3a71105cf7..e6489993f3 100644 --- a/clients/algoliasearch-client-python/algoliasearch/http/serializer.py +++ b/clients/algoliasearch-client-python/algoliasearch/http/serializer.py @@ -1,3 +1,4 @@ +from decimal import Decimal from json import dumps from typing import Any, Dict, Optional from urllib.parse import urlencode @@ -42,6 +43,7 @@ def body_serializer(obj: Any) -> Any: If obj is None, return None. If obj is str, int, long, float, bool, return directly. + If obj is Decimal, convert to float and return. If obj is list, sanitize each element in the list. If obj is dict, return the dict. If obj is OpenAPI model, return the properties dict. @@ -54,6 +56,8 @@ def body_serializer(obj: Any) -> Any: return None elif isinstance(obj, PRIMITIVE_TYPES): return obj + elif isinstance(obj, Decimal): + return float(obj) elif isinstance(obj, list): return [body_serializer(sub_obj) for sub_obj in obj] elif isinstance(obj, tuple):