MFornander opened a new issue, #1458:
URL: https://github.com/apache/hamilton/issues/1458

   The requests JSON serializer defaults to not handling nan or inf floats and 
instead throws an exception that crashes the engine.  The 
tracking/utils:make_json_safe function does not make objects safe enough to 
avoid this and doesn't detect it since the json.dumps check doesults to 
allowing nans.
   
   # Current behavior
   
   Engine crashes if a node returns nan or inf floats.
   
   ## Stack Traces
   
   Traceback (most recent call last):
     File 
"/opt/homebrew/Cellar/[email protected]/3.13.11_1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/threading.py",
 line 1044, in _bootstrap_inner
       self.run()
       ~~~~~~~~^^
     File 
"/opt/homebrew/Cellar/[email protected]/3.13.11_1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/threading.py",
 line 995, in run
       self._target(*self._args, **self._kwargs)
       ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     File 
"/Users/mfornander/gitlab/dcsim/.venv/lib/python3.13/site-packages/hamilton_sdk/api/clients.py",
 line 236, in worker
       self.flush(batch)
       ~~~~~~~~~~^^^^^^^
     File 
"/Users/mfornander/gitlab/dcsim/.venv/lib/python3.13/site-packages/hamilton_sdk/api/clients.py",
 line 262, in flush
       response = requests.put(
           f"{self.base_url}/dag_runs_bulk?dag_run_id={dag_run_id}",
       ...<5 lines>...
           verify=self.verify,
       )
     File 
"/Users/mfornander/gitlab/dcsim/.venv/lib/python3.13/site-packages/requests/api.py",
 line 130, in put
       return request("put", url, data=data, **kwargs)
     File 
"/Users/mfornander/gitlab/dcsim/.venv/lib/python3.13/site-packages/requests/api.py",
 line 59, in request
       return session.request(method=method, url=url, **kwargs)
              ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     File 
"/Users/mfornander/gitlab/dcsim/.venv/lib/python3.13/site-packages/requests/sessions.py",
 line 575, in request
       prep = self.prepare_request(req)
     File 
"/Users/mfornander/gitlab/dcsim/.venv/lib/python3.13/site-packages/requests/sessions.py",
 line 484, in prepare_request
       p.prepare(
       ~~~~~~~~~^
           method=request.method.upper(),
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       ...<10 lines>...
           hooks=merge_hooks(request.hooks, self.hooks),
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       )
       ^
     File 
"/Users/mfornander/gitlab/dcsim/.venv/lib/python3.13/site-packages/requests/models.py",
 line 370, in prepare
       self.prepare_body(data, files, json)
       ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
     File 
"/Users/mfornander/gitlab/dcsim/.venv/lib/python3.13/site-packages/requests/models.py",
 line 512, in prepare_body
       raise InvalidJSONError(ve, request=self)
   requests.exceptions.InvalidJSONError: Out of range float values are not JSON 
compliant
   
   ## Screenshots
   
   n/a
   
   
   ## Steps to replicate behavior
   
   Add this simple node, enable on trackingon a working UI server, and ask for 
the node result.
   
   def nan_inf() -> list[float]:
       return [1.0, float("nan"), float("inf")]
   
   ## Library & System Information
   
   Python 3.13
   Hamilton 1.89
   
   
   # Expected behavior
   
   Not crashing and showing nan and info and "null".
   
   # Additional context
   
   I have a simple fix for your make_json_safe function.  Let me know if you 
want a PR.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to