Skip to content

Commit 14fd5e2

Browse files
authored
Merge pull request #187 from TobiasGoerke/ijson-update
Updated ijson dependency to >= 3
2 parents 8309c40 + f13b171 commit 14fd5e2

File tree

2 files changed

+19
-15
lines changed

2 files changed

+19
-15
lines changed

ravendb/tools/parsers.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1-
import ijson
1+
from decimal import InvalidOperation
2+
from ijson.common import integer_or_decimal, IncompleteJSONError
3+
from ijson.backends.python import UnexpectedSymbol
24
from _elementtree import ParseError
35
from socket import timeout
46
import re
57

6-
8+
# BUFSIZE isn't included in newer ijson versions so we define it ourselves:
9+
# See: https://github.com/isagalaev/ijson/blob/c594cdd3c94c8b4a018577966b3ad22bb44c2620/ijson/backends/python.py#L14
10+
BUFSIZE = 16 * 1024
711
LEXEME_RE = re.compile(b"[a-z0-9eE\.\+-]+|\S")
812
BYTE_ARRAY_CHARACTERS = bytearray(b',}:{"')
913
IS_WEBSOCKET = False
@@ -17,7 +21,7 @@ def __init__(self, socket, is_websocket=False):
1721
self.lexer = self.lexer(socket)
1822

1923
@staticmethod
20-
def lexer(socket, buf_size=ijson.backend.BUFSIZE):
24+
def lexer(socket, buf_size=BUFSIZE):
2125
data = socket.recv() if IS_WEBSOCKET else socket.recv(buf_size)
2226
if not data:
2327
return
@@ -45,7 +49,7 @@ def lexer(socket, buf_size=ijson.backend.BUFSIZE):
4549
except ValueError:
4650
data = socket.recv().encode("utf-8") if IS_WEBSOCKET else socket.recv(buf_size)
4751
if not data:
48-
raise ijson.backend.common.IncompleteJSONError("Incomplete string lexeme")
52+
raise IncompleteJSONError("Incomplete string lexeme")
4953

5054
buf += data[1:-1] if IS_WEBSOCKET else data
5155

@@ -157,11 +161,11 @@ def parse_value(lexer, symbol=None, pos=0):
157161
return
158162

159163
try:
160-
yield ("number", ijson.backend.common.number(symbol))
161-
except ijson.backend.decimal.InvalidOperation:
162-
raise ijson.backend.UnexpectedSymbol(symbol, pos)
164+
yield ("number", integer_or_decimal(symbol))
165+
except InvalidOperation:
166+
raise UnexpectedSymbol(symbol, pos)
163167
except StopIteration:
164-
raise ijson.backend.common.IncompleteJSONError("Incomplete JSON data")
168+
raise IncompleteJSONError("Incomplete JSON data")
165169

166170
@staticmethod
167171
def parse_array(lexer):
@@ -176,11 +180,11 @@ def parse_array(lexer):
176180
if symbol == "]":
177181
break
178182
if symbol != ",":
179-
raise ijson.backend.UnexpectedSymbol(symbol, pos)
183+
raise UnexpectedSymbol(symbol, pos)
180184
pos, symbol = next(lexer)
181185
yield ("end_array", None)
182186
except StopIteration:
183-
raise ijson.backend.common.IncompleteJSONError("Incomplete JSON data")
187+
raise IncompleteJSONError("Incomplete JSON data")
184188

185189
@staticmethod
186190
def parse_object(lexer):
@@ -190,22 +194,22 @@ def parse_object(lexer):
190194
if symbol != "}":
191195
while True:
192196
if symbol[0] != '"':
193-
raise ijson.backend.UnexpectedSymbol(symbol, pos)
197+
raise UnexpectedSymbol(symbol, pos)
194198
yield ("map_key", IncrementalJsonParser.unescape(symbol[1:-1]))
195199
pos, symbol = next(lexer)
196200
if symbol != ":":
197-
raise ijson.backend.UnexpectedSymbol(symbol, pos)
201+
raise UnexpectedSymbol(symbol, pos)
198202
for event in IncrementalJsonParser.parse_value(lexer, None, pos):
199203
yield event
200204
pos, symbol = next(lexer)
201205
if symbol == "}":
202206
break
203207
if symbol != ",":
204-
raise ijson.backend.UnexpectedSymbol(symbol, pos)
208+
raise UnexpectedSymbol(symbol, pos)
205209
pos, symbol = next(lexer)
206210
yield ("end_map", None)
207211
except StopIteration:
208-
raise ijson.backend.common.IncompleteJSONError("Incomplete JSON data")
212+
raise IncompleteJSONError("Incomplete JSON data")
209213

210214
@staticmethod
211215
def unescape(s):

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"requests >= 2.27.1",
2222
"requests-pkcs12 >= 1.13",
2323
"pyOpenSSL >= 22.0.0",
24-
"ijson == 2.3",
24+
"ijson >= 3",
2525
"websocket-client >= 0.46.0",
2626
"inflect >= 5.4.0",
2727
],

0 commit comments

Comments
 (0)