json-repair 0.29.2__tar.gz → 0.29.4__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 (20) hide show
  1. {json_repair-0.29.2/src/json_repair.egg-info → json_repair-0.29.4}/PKG-INFO +41 -16
  2. {json_repair-0.29.2 → json_repair-0.29.4}/README.md +40 -15
  3. {json_repair-0.29.2 → json_repair-0.29.4}/pyproject.toml +1 -1
  4. json_repair-0.29.4/src/json_repair/json_context.py +45 -0
  5. json_repair-0.29.2/src/json_repair/json_repair.py → json_repair-0.29.4/src/json_repair/json_parser.py +119 -358
  6. json_repair-0.29.4/src/json_repair/json_repair.py +182 -0
  7. json_repair-0.29.4/src/json_repair/string_file_wrapper.py +98 -0
  8. {json_repair-0.29.2 → json_repair-0.29.4/src/json_repair.egg-info}/PKG-INFO +41 -16
  9. {json_repair-0.29.2 → json_repair-0.29.4}/src/json_repair.egg-info/SOURCES.txt +3 -0
  10. {json_repair-0.29.2 → json_repair-0.29.4}/tests/test_performance.py +6 -6
  11. {json_repair-0.29.2 → json_repair-0.29.4}/LICENSE +0 -0
  12. {json_repair-0.29.2 → json_repair-0.29.4}/setup.cfg +0 -0
  13. {json_repair-0.29.2 → json_repair-0.29.4}/src/json_repair/__init__.py +0 -0
  14. {json_repair-0.29.2 → json_repair-0.29.4}/src/json_repair/__main__.py +0 -0
  15. {json_repair-0.29.2 → json_repair-0.29.4}/src/json_repair/py.typed +0 -0
  16. {json_repair-0.29.2 → json_repair-0.29.4}/src/json_repair.egg-info/dependency_links.txt +0 -0
  17. {json_repair-0.29.2 → json_repair-0.29.4}/src/json_repair.egg-info/entry_points.txt +0 -0
  18. {json_repair-0.29.2 → json_repair-0.29.4}/src/json_repair.egg-info/top_level.txt +0 -0
  19. {json_repair-0.29.2 → json_repair-0.29.4}/tests/test_coverage.py +0 -0
  20. {json_repair-0.29.2 → json_repair-0.29.4}/tests/test_json_repair.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: json_repair
3
- Version: 0.29.2
3
+ Version: 0.29.4
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: MIT License
@@ -45,21 +45,6 @@ This simple package can be used to fix an invalid json string. To know all cases
45
45
 
46
46
  Inspired by https://github.com/josdejong/jsonrepair
47
47
 
48
- ---
49
- # How to cite
50
- If you are using this library in your academic work (as I know many folks are) please find the BibTex here:
51
-
52
- @software{Baccianella_JSON_Repair_-_2024,
53
- author = {Baccianella, Stefano},
54
- month = aug,
55
- title = {{JSON Repair - A python module to repair invalid JSON, commonly used to parse the output of LLMs}},
56
- url = {https://github.com/mangiucugna/json_repair},
57
- version = {0.28.3},
58
- year = {2024}
59
- }
60
-
61
- Thank you for citing my work and please send me a link to the paper if you can!
62
-
63
48
  ---
64
49
  # Offer me a beer
65
50
  If you find this library useful, you can help me by donating toward my monthly beer budget here: https://github.com/sponsors/mangiucugna
@@ -79,7 +64,30 @@ I searched for a lightweight python package that was able to reliably fix this p
79
64
 
80
65
  *So I wrote one*
81
66
 
67
+ # Supported use cases
68
+
69
+ ### Fixing Syntax Errors in JSON
70
+
71
+ - Missing quotes, misplaced commas, unescaped characters, and incomplete key-value pairs.
72
+ - Missing quotation marks, improperly formatted values (true, false, null), and repairs corrupted key-value structures.
73
+
74
+ ### Repairing Malformed JSON Arrays and Objects
75
+
76
+ - Incomplete or broken arrays/objects by adding necessary elements (e.g., commas, brackets) or default values (null, "").
77
+ - The library can process JSON that includes extra non-JSON characters like comments or improperly placed characters, cleaning them up while maintaining valid structure.
78
+
79
+ ### Auto-Completion for Missing JSON Values
80
+
81
+ - Automatically completes missing values in JSON fields with reasonable defaults (like empty strings or null), ensuring validity.
82
+
82
83
  # How to use
84
+
85
+ Install the library with pip
86
+
87
+ pip install json-repair
88
+
89
+ then you can use use it in your code like this
90
+
83
91
  from json_repair import repair_json
84
92
 
85
93
  good_json_string = repair_json(bad_json_string)
@@ -185,6 +193,23 @@ To ensure that you only pin the major version of this library in your `requireme
185
193
 
186
194
  In this example, any version that starts with `0.` will be acceptable, allowing for updates on minor and patch versions.
187
195
 
196
+ ---
197
+ # How to cite
198
+ If you are using this library in your academic work (as I know many folks are) please find the BibTex here:
199
+
200
+ @software{Baccianella_JSON_Repair_-_2024,
201
+ author = {Baccianella, Stefano},
202
+ month = aug,
203
+ title = {{JSON Repair - A python module to repair invalid JSON, commonly used to parse the output of LLMs}},
204
+ url = {https://github.com/mangiucugna/json_repair},
205
+ version = {0.28.3},
206
+ year = {2024}
207
+ }
208
+
209
+ Thank you for citing my work and please send me a link to the paper if you can!
210
+
211
+ ---
212
+
188
213
  # How it works
189
214
  This module will parse the JSON file following the BNF definition:
190
215
 
@@ -7,21 +7,6 @@ This simple package can be used to fix an invalid json string. To know all cases
7
7
 
8
8
  Inspired by https://github.com/josdejong/jsonrepair
9
9
 
10
- ---
11
- # How to cite
12
- If you are using this library in your academic work (as I know many folks are) please find the BibTex here:
13
-
14
- @software{Baccianella_JSON_Repair_-_2024,
15
- author = {Baccianella, Stefano},
16
- month = aug,
17
- title = {{JSON Repair - A python module to repair invalid JSON, commonly used to parse the output of LLMs}},
18
- url = {https://github.com/mangiucugna/json_repair},
19
- version = {0.28.3},
20
- year = {2024}
21
- }
22
-
23
- Thank you for citing my work and please send me a link to the paper if you can!
24
-
25
10
  ---
26
11
  # Offer me a beer
27
12
  If you find this library useful, you can help me by donating toward my monthly beer budget here: https://github.com/sponsors/mangiucugna
@@ -41,7 +26,30 @@ I searched for a lightweight python package that was able to reliably fix this p
41
26
 
42
27
  *So I wrote one*
43
28
 
29
+ # Supported use cases
30
+
31
+ ### Fixing Syntax Errors in JSON
32
+
33
+ - Missing quotes, misplaced commas, unescaped characters, and incomplete key-value pairs.
34
+ - Missing quotation marks, improperly formatted values (true, false, null), and repairs corrupted key-value structures.
35
+
36
+ ### Repairing Malformed JSON Arrays and Objects
37
+
38
+ - Incomplete or broken arrays/objects by adding necessary elements (e.g., commas, brackets) or default values (null, "").
39
+ - The library can process JSON that includes extra non-JSON characters like comments or improperly placed characters, cleaning them up while maintaining valid structure.
40
+
41
+ ### Auto-Completion for Missing JSON Values
42
+
43
+ - Automatically completes missing values in JSON fields with reasonable defaults (like empty strings or null), ensuring validity.
44
+
44
45
  # How to use
46
+
47
+ Install the library with pip
48
+
49
+ pip install json-repair
50
+
51
+ then you can use use it in your code like this
52
+
45
53
  from json_repair import repair_json
46
54
 
47
55
  good_json_string = repair_json(bad_json_string)
@@ -147,6 +155,23 @@ To ensure that you only pin the major version of this library in your `requireme
147
155
 
148
156
  In this example, any version that starts with `0.` will be acceptable, allowing for updates on minor and patch versions.
149
157
 
158
+ ---
159
+ # How to cite
160
+ If you are using this library in your academic work (as I know many folks are) please find the BibTex here:
161
+
162
+ @software{Baccianella_JSON_Repair_-_2024,
163
+ author = {Baccianella, Stefano},
164
+ month = aug,
165
+ title = {{JSON Repair - A python module to repair invalid JSON, commonly used to parse the output of LLMs}},
166
+ url = {https://github.com/mangiucugna/json_repair},
167
+ version = {0.28.3},
168
+ year = {2024}
169
+ }
170
+
171
+ Thank you for citing my work and please send me a link to the paper if you can!
172
+
173
+ ---
174
+
150
175
  # How it works
151
176
  This module will parse the JSON file following the BNF definition:
152
177
 
@@ -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.29.2"
6
+ version = "0.29.4"
7
7
  license = {file = "LICENSE"}
8
8
  authors = [
9
9
  { name="Stefano Baccianella", email="4247706+mangiucugna@users.noreply.github.com" },
@@ -0,0 +1,45 @@
1
+ from enum import Enum, auto
2
+ from typing import List, Optional
3
+
4
+
5
+ class ContextValues(Enum):
6
+ OBJECT_KEY = auto()
7
+ OBJECT_VALUE = auto()
8
+ ARRAY = auto()
9
+
10
+
11
+ class JsonContext:
12
+ def __init__(self) -> None:
13
+ self.context: List[ContextValues] = []
14
+ self.current: Optional[ContextValues] = None
15
+ self.empty: bool = True
16
+
17
+ def set(self, value: ContextValues) -> None:
18
+ """
19
+ Set a new context value.
20
+
21
+ Args:
22
+ value (ContextValues): The context value to be added.
23
+
24
+ Returns:
25
+ None
26
+ """
27
+ # If a value is provided update the context variable and save in stack
28
+ if value:
29
+ self.context.append(value)
30
+ self.current = value
31
+ self.empty = False
32
+
33
+ def reset(self) -> None:
34
+ """
35
+ Remove the most recent context value.
36
+
37
+ Returns:
38
+ None
39
+ """
40
+ try:
41
+ self.context.pop()
42
+ self.current = self.context[-1]
43
+ except IndexError:
44
+ self.current = None
45
+ self.empty = True