json-repair 0.10.0__py3-none-any.whl → 0.11.0__py3-none-any.whl

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.
@@ -209,9 +209,16 @@ class JSONParser:
209
209
  break
210
210
  self.index += 1
211
211
  char = self.get_char_at()
212
+ # If the string contains an escaped character we should respect that or remove the escape
213
+ if self.get_char_at(-1) == "\\":
214
+ if char in [rstring_delimiter, "t", "n", "r", "b", "\\"]:
215
+ self.index += 1
216
+ char = self.get_char_at()
217
+ else:
218
+ self.remove_char_at(-1)
212
219
  # ChatGPT sometimes forget to quote links in markdown like: { "content": "[LINK]("https://google.com")" }
213
220
  if (
214
- (char == lstring_delimiter or char == rstring_delimiter)
221
+ char == rstring_delimiter
215
222
  # Next character is not a comma
216
223
  and self.get_char_at(1) != ","
217
224
  and (
@@ -284,8 +291,11 @@ class JSONParser:
284
291
  except IndexError:
285
292
  return False
286
293
 
287
- def remove_char_at(self) -> None:
288
- self.json_str = self.json_str[: self.index] + self.json_str[self.index + 1 :]
294
+ def remove_char_at(self, count: int = 0) -> None:
295
+ self.json_str = (
296
+ self.json_str[: self.index + count]
297
+ + self.json_str[self.index + count + 1 :]
298
+ )
289
299
 
290
300
  def skip_whitespaces_at(self) -> None:
291
301
  # Remove trailing spaces
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: json_repair
3
- Version: 0.10.0
3
+ Version: 0.11.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: MIT License
@@ -56,20 +56,20 @@ I searched for a lightweight python package that was able to reliably fix this p
56
56
  You can use this library to completely replace `json.loads()`:
57
57
 
58
58
  import json_repair
59
-
59
+
60
60
  decoded_object = json_repair.loads(json_string)
61
61
 
62
62
  or just
63
63
 
64
64
  import json_repair
65
-
65
+
66
66
  decoded_object = json_repair.repair_json(json_string, return_objects=True)
67
-
67
+
68
68
  ### Performance considerations
69
69
  If you find this library too slow because is using `json.loads()` you can skip that by passing `skip_json_loads=True` to `repair_json`. Like:
70
70
 
71
71
  from json_repair import repair_json
72
-
72
+
73
73
  good_json_string = repair_json(bad_json_string, skip_json_loads=True)
74
74
 
75
75
  I made a choice of not using any fast json library to avoid having any external dependency, so that anybody can use it regardless of their stack.
@@ -77,7 +77,7 @@ I made a choice of not using any fast json library to avoid having any external
77
77
  Some rules of thumb to use:
78
78
  - Setting `return_objects=True` will always be faster because the parser returns an object already and it doesn't have serialize that object to JSON
79
79
  - `skip_json_loads` is faster only if you 100% know that the string is not a valid JSON
80
-
80
+ - If you are having issues with escaping pass the string as **raw** string like: `r"string with escaping\""`
81
81
  ## Adding to requirements
82
82
  **Please pin this library only on the major version!**
83
83
 
@@ -127,3 +127,8 @@ You will need owner access to this repository
127
127
  ---
128
128
  # Bonus Content
129
129
  If you need some good Custom Instructions (System Message) to improve your chatbot responses try https://gist.github.com/mangiucugna/7ec015c4266df11be8aa510be0110fe4
130
+
131
+ ---
132
+ ## Star History
133
+
134
+ [![Star History Chart](https://api.star-history.com/svg?repos=mangiucugna/json_repair&type=Date)](https://star-history.com/#mangiucugna/json_repair&Date)
@@ -0,0 +1,7 @@
1
+ json_repair/__init__.py,sha256=p9mZnte8Bg18NcxqgJ7vopH2gQv_XbZ0dRnk686QuRE,92
2
+ json_repair/json_repair.py,sha256=OP4xwWtbjBCWUiJjpiaME2XsdBRFyigRoFP5Eskz8Dg,14035
3
+ json_repair-0.11.0.dist-info/LICENSE,sha256=wrjQo8MhNrNCicXtMe3MHmS-fx8AmQk1ue8AQwiiFV8,1076
4
+ json_repair-0.11.0.dist-info/METADATA,sha256=-QEujDxdhGSiUF7tun741KxsjHOp1B0s7IWM6qnstr4,6580
5
+ json_repair-0.11.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
6
+ json_repair-0.11.0.dist-info/top_level.txt,sha256=7-VZwZN2CgB_n0NlSLk-rEUFh8ug21lESbsblOYuZqw,12
7
+ json_repair-0.11.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: bdist_wheel (0.43.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,7 +0,0 @@
1
- json_repair/__init__.py,sha256=p9mZnte8Bg18NcxqgJ7vopH2gQv_XbZ0dRnk686QuRE,92
2
- json_repair/json_repair.py,sha256=fGrOtUCgJmdmdk-ASpbTPritPGxGBTO_6IA7hCu-z0c,13629
3
- json_repair-0.10.0.dist-info/LICENSE,sha256=wrjQo8MhNrNCicXtMe3MHmS-fx8AmQk1ue8AQwiiFV8,1076
4
- json_repair-0.10.0.dist-info/METADATA,sha256=CjwBF8L9xMpsNob3wr4nIdoIba3T4WmQ65Z6oisQM_4,6312
5
- json_repair-0.10.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
6
- json_repair-0.10.0.dist-info/top_level.txt,sha256=7-VZwZN2CgB_n0NlSLk-rEUFh8ug21lESbsblOYuZqw,12
7
- json_repair-0.10.0.dist-info/RECORD,,