json-repair 0.51.0__tar.gz → 0.52.0__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.
Files changed (35) hide show
  1. {json_repair-0.51.0/src/json_repair.egg-info → json_repair-0.52.0}/PKG-INFO +1 -1
  2. {json_repair-0.51.0 → json_repair-0.52.0}/pyproject.toml +1 -1
  3. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair/parse_object.py +7 -0
  4. {json_repair-0.51.0 → json_repair-0.52.0/src/json_repair.egg-info}/PKG-INFO +1 -1
  5. {json_repair-0.51.0 → json_repair-0.52.0}/tests/test_parse_array.py +5 -1
  6. {json_repair-0.51.0 → json_repair-0.52.0}/tests/test_parse_object.py +0 -1
  7. {json_repair-0.51.0 → json_repair-0.52.0}/LICENSE +0 -0
  8. {json_repair-0.51.0 → json_repair-0.52.0}/README.md +0 -0
  9. {json_repair-0.51.0 → json_repair-0.52.0}/setup.cfg +0 -0
  10. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair/__init__.py +0 -0
  11. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair/__main__.py +0 -0
  12. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair/constants.py +0 -0
  13. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair/json_context.py +0 -0
  14. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair/json_parser.py +0 -0
  15. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair/json_repair.py +0 -0
  16. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair/object_comparer.py +0 -0
  17. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair/parse_array.py +0 -0
  18. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair/parse_boolean_or_null.py +0 -0
  19. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair/parse_comment.py +0 -0
  20. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair/parse_number.py +0 -0
  21. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair/parse_string.py +0 -0
  22. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair/py.typed +0 -0
  23. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair/string_file_wrapper.py +0 -0
  24. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair.egg-info/SOURCES.txt +0 -0
  25. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair.egg-info/dependency_links.txt +0 -0
  26. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair.egg-info/entry_points.txt +0 -0
  27. {json_repair-0.51.0 → json_repair-0.52.0}/src/json_repair.egg-info/top_level.txt +0 -0
  28. {json_repair-0.51.0 → json_repair-0.52.0}/tests/test_json_repair.py +0 -0
  29. {json_repair-0.51.0 → json_repair-0.52.0}/tests/test_parse_boolean_or_null.py +0 -0
  30. {json_repair-0.51.0 → json_repair-0.52.0}/tests/test_parse_comment.py +0 -0
  31. {json_repair-0.51.0 → json_repair-0.52.0}/tests/test_parse_number.py +0 -0
  32. {json_repair-0.51.0 → json_repair-0.52.0}/tests/test_parse_string.py +0 -0
  33. {json_repair-0.51.0 → json_repair-0.52.0}/tests/test_performance.py +0 -0
  34. {json_repair-0.51.0 → json_repair-0.52.0}/tests/test_repair_json_cli.py +0 -0
  35. {json_repair-0.51.0 → json_repair-0.52.0}/tests/test_repair_json_from_file.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: json_repair
3
- Version: 0.51.0
3
+ Version: 0.52.0
4
4
  Summary: A package to repair broken json strings
5
5
  Author-email: Stefano Baccianella <4247706+mangiucugna@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -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.51.0"
6
+ version = "0.52.0"
7
7
  license = "MIT"
8
8
  license-files = ["LICENSE"]
9
9
  authors = [
@@ -10,6 +10,7 @@ if TYPE_CHECKING:
10
10
  def parse_object(self: "JSONParser") -> dict[str, JSONReturnType]:
11
11
  # <object> ::= '{' [ <member> *(', ' <member>) ] '}' ; A sequence of 'members'
12
12
  obj: dict[str, JSONReturnType] = {}
13
+ start_index = self.index
13
14
  # Stop when you either find the closing parentheses or you have iterated over the entire string
14
15
  while (self.get_char_at() or "}") != "}":
15
16
  # This is what we expect to find:
@@ -113,6 +114,12 @@ def parse_object(self: "JSONParser") -> dict[str, JSONReturnType]:
113
114
 
114
115
  self.index += 1
115
116
 
117
+ # If the object is empty but also isn't just {}
118
+ if not obj and self.index - start_index > 2:
119
+ self.log("Parsed object is empty, we will try to parse this as an array instead")
120
+ self.index = start_index
121
+ return self.parse_array()
122
+
116
123
  # Check if there are more key-value pairs after the closing brace
117
124
  # This handles cases like '{"key": "value"}, "key2": "value2"}'
118
125
  # But only if we're not in a nested context
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: json_repair
3
- Version: 0.51.0
3
+ Version: 0.52.0
4
4
  Summary: A package to repair broken json strings
5
5
  Author-email: Stefano Baccianella <4247706+mangiucugna@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -35,7 +35,11 @@ def test_parse_array_edge_cases():
35
35
  )
36
36
  assert repair_json('{"k"e"y": "value"}') == '{"k\\"e\\"y": "value"}'
37
37
  assert repair_json('["key":"value"}]') == '[{"key": "value"}]'
38
- assert repair_json('[{"key": "value", "key') == '[{"key": "value"}]'
38
+ assert repair_json('[{"key": "value", "key') == '[{"key": "value"}, ["key"]]'
39
+ assert repair_json("{'key1', 'key2'}") == '["key1", "key2"]'
40
+
41
+
42
+ def test_parse_array_missing_quotes():
39
43
  assert repair_json('["value1" value2", "value3"]') == '["value1", "value2", "value3"]'
40
44
  assert (
41
45
  repair_json('{"bad_one":["Lorem Ipsum", "consectetur" comment" ], "good_one":[ "elit", "sed", "tempor"]}')
@@ -22,7 +22,6 @@ def test_parse_object():
22
22
 
23
23
  def test_parse_object_edge_cases():
24
24
  assert repair_json("{foo: [}") == '{"foo": []}'
25
- assert repair_json("{ ") == "{}"
26
25
  assert repair_json('{"": "value"') == '{"": "value"}'
27
26
  assert repair_json('{"value_1": true, COMMENT "value_2": "data"}') == '{"value_1": true, "value_2": "data"}'
28
27
  assert (
File without changes
File without changes
File without changes