From 625282758672f615549058685caeacfbee318e88 Mon Sep 17 00:00:00 2001 From: Jinho Heo Date: Fri, 16 Aug 2024 23:22:09 +0900 Subject: [PATCH] fix: numpy.float32 json dump error --- py3langid/langid.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/py3langid/langid.py b/py3langid/langid.py index 58b7999..9f550ba 100755 --- a/py3langid/langid.py +++ b/py3langid/langid.py @@ -284,6 +284,15 @@ def rank_path(self, path): return path, retval +class NumpyEncoder(json.JSONEncoder): + """ Custom encoder for numpy data types """ + def default(self, obj): + if isinstance(obj, np.float32): + return float(obj) # Convert float32 to native float + if isinstance(obj, np.ndarray): + return obj.tolist() # Convert arrays to list + return json.JSONEncoder.default(self, obj) + def application(environ, start_response): """ WSGI-compatible langid web service. @@ -349,7 +358,7 @@ def application(environ, start_response): headers = [('Content-type', 'text/javascript; charset=utf-8')] # HTTP Headers start_response(status, headers) - return [json.dumps(response)] + return [json.dumps(response, cls=NumpyEncoder).encode('utf-8')] def main():