summaryrefslogtreecommitdiff
path: root/jq.pyx
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-01-06 22:30:21 +0000
committerMichael Williamson <mike@zwobble.org>2023-01-06 22:33:26 +0000
commit073ea85a376fc8f0253a6d0160ad3bd7b1c3c83d (patch)
tree169c4c84a157df83b5409247ddc00e9a0420b2a1 /jq.pyx
parentcccaea76bfc67624c6ccb5d8d8990629b79e0bf8 (diff)
Update handling of non-finite numbers to match jq 1.6
Diffstat (limited to 'jq.pyx')
-rw-r--r--jq.pyx11
1 files changed, 9 insertions, 2 deletions
diff --git a/jq.pyx b/jq.pyx
index 00609a8..691b783 100644
--- a/jq.pyx
+++ b/jq.pyx
@@ -2,7 +2,8 @@ import json
import threading
from cpython.bytes cimport PyBytes_AsString
-from libc.math cimport modf
+from libc.float cimport DBL_MAX
+from libc.math cimport INFINITY, modf
cdef extern from "jv.h":
@@ -83,7 +84,13 @@ cdef object _jv_to_python(jv value):
python_value = True
elif kind == JV_KIND_NUMBER:
number_value = jv_number_value(value)
- if _is_integer(number_value):
+ if number_value == INFINITY:
+ python_value = DBL_MAX
+ elif number_value == -INFINITY:
+ python_value = -DBL_MAX
+ elif number_value != number_value:
+ python_value = None
+ elif _is_integer(number_value):
python_value = int(number_value)
else:
python_value = number_value