json-repair 0.15.1__tar.gz → 0.15.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {json_repair-0.15.1/src/json_repair.egg-info → json_repair-0.15.3}/PKG-INFO +1 -1
- {json_repair-0.15.1 → json_repair-0.15.3}/pyproject.toml +1 -1
- {json_repair-0.15.1 → json_repair-0.15.3}/src/json_repair/json_repair.py +2 -2
- {json_repair-0.15.1 → json_repair-0.15.3/src/json_repair.egg-info}/PKG-INFO +1 -1
- {json_repair-0.15.1 → json_repair-0.15.3}/tests/test_json_repair.py +9 -0
- {json_repair-0.15.1 → json_repair-0.15.3}/LICENSE +0 -0
- {json_repair-0.15.1 → json_repair-0.15.3}/README.md +0 -0
- {json_repair-0.15.1 → json_repair-0.15.3}/setup.cfg +0 -0
- {json_repair-0.15.1 → json_repair-0.15.3}/src/json_repair/__init__.py +0 -0
- {json_repair-0.15.1 → json_repair-0.15.3}/src/json_repair.egg-info/SOURCES.txt +0 -0
- {json_repair-0.15.1 → json_repair-0.15.3}/src/json_repair.egg-info/dependency_links.txt +0 -0
- {json_repair-0.15.1 → json_repair-0.15.3}/src/json_repair.egg-info/top_level.txt +0 -0
- {json_repair-0.15.1 → json_repair-0.15.3}/tests/test_performance.py +0 -0
@@ -3,7 +3,7 @@ requires = ["setuptools>=61.0"]
|
|
3
3
|
build-backend = "setuptools.build_meta"
|
4
4
|
[project]
|
5
5
|
name = "json_repair"
|
6
|
-
version = "0.15.
|
6
|
+
version = "0.15.3"
|
7
7
|
license = {file = "LICENSE"}
|
8
8
|
authors = [
|
9
9
|
{ name="Stefano Baccianella", email="4247706+mangiucugna@users.noreply.github.com" },
|
@@ -78,7 +78,7 @@ class JSONParser:
|
|
78
78
|
elif char == "“":
|
79
79
|
return self.parse_string(string_quotes=["“", "”"])
|
80
80
|
# <number> starts with [0-9] or minus
|
81
|
-
elif char.isdigit() or char == "-":
|
81
|
+
elif char.isdigit() or char == "-" or char == ".":
|
82
82
|
return self.parse_number()
|
83
83
|
# <boolean> could be (T)rue or (F)alse or (N)ull
|
84
84
|
elif char.lower() in ["t", "f", "n"]:
|
@@ -329,7 +329,7 @@ class JSONParser:
|
|
329
329
|
def parse_number(self) -> Union[float, int, str]:
|
330
330
|
# <number> is a valid real number expressed in one of a number of given formats
|
331
331
|
number_str = ""
|
332
|
-
number_chars = set("0123456789-.eE")
|
332
|
+
number_chars = set("0123456789-.eE/")
|
333
333
|
char = self.get_char_at()
|
334
334
|
while char and char in number_chars:
|
335
335
|
number_str += char
|
@@ -110,6 +110,8 @@ def test_repair_json():
|
|
110
110
|
assert repair_json('{""answer":[{""traits":""Female aged 60+",""answer1":""5"}]}') == '{"answer": [{"traits": "Female aged 60+", "answer1": "5"}]}'
|
111
111
|
assert repair_json('{"key":"",}') == '{"key": ",}"}'
|
112
112
|
assert repair_json('{ "words": abcdef", "numbers": 12345", "words2": ghijkl" }') == '{"words": "abcdef", "numbers": 12345, "words2": "ghijkl"}'
|
113
|
+
assert repair_json('{"key": 1/3}') == '{"key": "1/3"}'
|
114
|
+
assert repair_json('{"key": .25}') == '{"key": 0.25}'
|
113
115
|
|
114
116
|
|
115
117
|
def test_repair_json_with_objects():
|
@@ -255,12 +257,14 @@ def test_repair_json_corner_cases_generate_by_gpt_with_objects():
|
|
255
257
|
assert repair_json('{"key": 10-20}', True) == {"key": "10-20"}
|
256
258
|
assert repair_json('{"key": 1.1.1}', True) == {"key": "1.1.1"}
|
257
259
|
|
260
|
+
|
258
261
|
def test_repair_json_skip_json_loads():
|
259
262
|
assert repair_json('{"key": true, "key2": false, "key3": null}', skip_json_loads=True) == '{"key": true, "key2": false, "key3": null}'
|
260
263
|
assert repair_json('{"key": true, "key2": false, "key3": null}', return_objects=True, skip_json_loads=True) == {"key": True, "key2": False, "key3": None}
|
261
264
|
assert repair_json('{"key": true, "key2": false, "key3": }', skip_json_loads=True) == '{"key": true, "key2": false, "key3": ""}'
|
262
265
|
assert loads('{"key": true, "key2": false, "key3": }', skip_json_loads=True) == {"key": True, "key2": False, "key3": ""}
|
263
266
|
|
267
|
+
|
264
268
|
def test_repair_json_from_file():
|
265
269
|
import os
|
266
270
|
import tempfile
|
@@ -277,3 +281,8 @@ def test_repair_json_from_file():
|
|
277
281
|
finally:
|
278
282
|
# Clean up - delete the temporary file
|
279
283
|
os.remove(temp_path)
|
284
|
+
|
285
|
+
|
286
|
+
assert repair_json('{"key": 1/3, "foo": "bar"}') == '{"key": "1/3", "foo": "bar"}'
|
287
|
+
assert repair_json('{"here": "now", "key": 1/3, "foo": "bar"}') == '{"here": "now", "key": "1/3", "foo": "bar"}'
|
288
|
+
assert repair_json('{"key": 12345/67890}') == '{"key": "12345/67890"}'
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|