omlish 0.0.0.dev212__py3-none-any.whl → 0.0.0.dev214__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. omlish/.manifests.json +4 -4
  2. omlish/__about__.py +3 -5
  3. omlish/antlr/__init__.py +3 -0
  4. omlish/antlr/parsing.py +34 -2
  5. omlish/asyncs/asyncio/asyncio.py +34 -0
  6. omlish/asyncs/ioproxy/__init__.py +1 -0
  7. omlish/asyncs/ioproxy/all.py +32 -0
  8. omlish/asyncs/ioproxy/io.py +242 -0
  9. omlish/asyncs/ioproxy/proxier.py +154 -0
  10. omlish/asyncs/ioproxy/proxy.py +141 -0
  11. omlish/asyncs/ioproxy/typing.py +108 -0
  12. omlish/check.py +1 -0
  13. omlish/configs/processing/matching.py +9 -1
  14. omlish/formats/json/stream/lex.py +1 -0
  15. omlish/formats/json5/Json5.g4 +172 -0
  16. omlish/formats/json5/__init__.py +8 -0
  17. omlish/formats/json5/_antlr/Json5Lexer.py +353 -0
  18. omlish/formats/json5/_antlr/Json5Listener.py +78 -0
  19. omlish/formats/json5/_antlr/Json5Parser.py +616 -0
  20. omlish/formats/json5/_antlr/Json5Visitor.py +51 -0
  21. omlish/formats/json5/_antlr/__init__.py +0 -0
  22. omlish/formats/{json5.py → json5/codec.py} +6 -11
  23. omlish/formats/json5/errors.py +2 -0
  24. omlish/formats/json5/literals.py +130 -0
  25. omlish/formats/json5/parsing.py +79 -0
  26. omlish/io/abc.py +1 -0
  27. omlish/lang/__init__.py +2 -0
  28. omlish/lang/imports.py +4 -0
  29. omlish/lang/strings.py +33 -1
  30. omlish/lite/check.py +23 -0
  31. omlish/lite/contextmanagers.py +39 -0
  32. omlish/os/files.py +17 -30
  33. omlish/os/temp.py +50 -0
  34. {omlish-0.0.0.dev212.dist-info → omlish-0.0.0.dev214.dist-info}/METADATA +5 -7
  35. {omlish-0.0.0.dev212.dist-info → omlish-0.0.0.dev214.dist-info}/RECORD +39 -22
  36. {omlish-0.0.0.dev212.dist-info → omlish-0.0.0.dev214.dist-info}/LICENSE +0 -0
  37. {omlish-0.0.0.dev212.dist-info → omlish-0.0.0.dev214.dist-info}/WHEEL +0 -0
  38. {omlish-0.0.0.dev212.dist-info → omlish-0.0.0.dev214.dist-info}/entry_points.txt +0 -0
  39. {omlish-0.0.0.dev212.dist-info → omlish-0.0.0.dev214.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,616 @@
1
+ # type: ignore
2
+ # ruff: noqa
3
+ # flake8: noqa
4
+ # Generated from Json5.g4 by ANTLR 4.13.2
5
+ # encoding: utf-8
6
+ from omlish.antlr._runtime._all import *
7
+ from io import StringIO
8
+ import sys
9
+ if sys.version_info[1] > 5:
10
+ from typing import TextIO
11
+ else:
12
+ from typing.io import TextIO
13
+
14
+ def serializedATN():
15
+ return [
16
+ 4,1,15,74,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,
17
+ 6,1,0,3,0,16,8,0,1,0,1,0,1,1,1,1,1,1,1,1,5,1,24,8,1,10,1,12,1,27,
18
+ 9,1,1,1,3,1,30,8,1,1,1,1,1,1,1,1,1,3,1,36,8,1,1,2,1,2,1,2,1,2,1,
19
+ 3,1,3,1,4,1,4,1,4,1,4,1,4,3,4,49,8,4,1,5,1,5,1,5,1,5,5,5,55,8,5,
20
+ 10,5,12,5,58,9,5,1,5,3,5,61,8,5,1,5,1,5,1,5,1,5,3,5,67,8,5,1,6,3,
21
+ 6,70,8,6,1,6,1,6,1,6,0,0,7,0,2,4,6,8,10,12,0,2,3,0,9,10,12,12,14,
22
+ 14,1,0,11,12,78,0,15,1,0,0,0,2,35,1,0,0,0,4,37,1,0,0,0,6,41,1,0,
23
+ 0,0,8,48,1,0,0,0,10,66,1,0,0,0,12,69,1,0,0,0,14,16,3,8,4,0,15,14,
24
+ 1,0,0,0,15,16,1,0,0,0,16,17,1,0,0,0,17,18,5,0,0,1,18,1,1,0,0,0,19,
25
+ 20,5,1,0,0,20,25,3,4,2,0,21,22,5,2,0,0,22,24,3,4,2,0,23,21,1,0,0,
26
+ 0,24,27,1,0,0,0,25,23,1,0,0,0,25,26,1,0,0,0,26,29,1,0,0,0,27,25,
27
+ 1,0,0,0,28,30,5,2,0,0,29,28,1,0,0,0,29,30,1,0,0,0,30,31,1,0,0,0,
28
+ 31,32,5,3,0,0,32,36,1,0,0,0,33,34,5,1,0,0,34,36,5,3,0,0,35,19,1,
29
+ 0,0,0,35,33,1,0,0,0,36,3,1,0,0,0,37,38,3,6,3,0,38,39,5,4,0,0,39,
30
+ 40,3,8,4,0,40,5,1,0,0,0,41,42,7,0,0,0,42,7,1,0,0,0,43,49,5,10,0,
31
+ 0,44,49,3,12,6,0,45,49,3,2,1,0,46,49,3,10,5,0,47,49,5,9,0,0,48,43,
32
+ 1,0,0,0,48,44,1,0,0,0,48,45,1,0,0,0,48,46,1,0,0,0,48,47,1,0,0,0,
33
+ 49,9,1,0,0,0,50,51,5,5,0,0,51,56,3,8,4,0,52,53,5,2,0,0,53,55,3,8,
34
+ 4,0,54,52,1,0,0,0,55,58,1,0,0,0,56,54,1,0,0,0,56,57,1,0,0,0,57,60,
35
+ 1,0,0,0,58,56,1,0,0,0,59,61,5,2,0,0,60,59,1,0,0,0,60,61,1,0,0,0,
36
+ 61,62,1,0,0,0,62,63,5,6,0,0,63,67,1,0,0,0,64,65,5,5,0,0,65,67,5,
37
+ 6,0,0,66,50,1,0,0,0,66,64,1,0,0,0,67,11,1,0,0,0,68,70,5,13,0,0,69,
38
+ 68,1,0,0,0,69,70,1,0,0,0,70,71,1,0,0,0,71,72,7,1,0,0,72,13,1,0,0,
39
+ 0,9,15,25,29,35,48,56,60,66,69
40
+ ]
41
+
42
+ class Json5Parser ( Parser ):
43
+
44
+ grammarFileName = "Json5.g4"
45
+
46
+ atn = ATNDeserializer().deserialize(serializedATN())
47
+
48
+ decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]
49
+
50
+ sharedContextCache = PredictionContextCache()
51
+
52
+ literalNames = [ "<INVALID>", "'{'", "','", "'}'", "':'", "'['", "']'" ]
53
+
54
+ symbolicNames = [ "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
55
+ "<INVALID>", "<INVALID>", "<INVALID>", "SINGLE_LINE_COMMENT",
56
+ "MULTI_LINE_COMMENT", "LITERAL", "STRING", "NUMBER",
57
+ "NUMERIC_LITERAL", "SYMBOL", "IDENTIFIER", "WS" ]
58
+
59
+ RULE_json5 = 0
60
+ RULE_obj = 1
61
+ RULE_pair = 2
62
+ RULE_key = 3
63
+ RULE_value = 4
64
+ RULE_arr = 5
65
+ RULE_number = 6
66
+
67
+ ruleNames = [ "json5", "obj", "pair", "key", "value", "arr", "number" ]
68
+
69
+ EOF = Token.EOF
70
+ T__0=1
71
+ T__1=2
72
+ T__2=3
73
+ T__3=4
74
+ T__4=5
75
+ T__5=6
76
+ SINGLE_LINE_COMMENT=7
77
+ MULTI_LINE_COMMENT=8
78
+ LITERAL=9
79
+ STRING=10
80
+ NUMBER=11
81
+ NUMERIC_LITERAL=12
82
+ SYMBOL=13
83
+ IDENTIFIER=14
84
+ WS=15
85
+
86
+ def __init__(self, input:TokenStream, output:TextIO = sys.stdout):
87
+ super().__init__(input, output)
88
+ self.checkVersion("4.13.2")
89
+ self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache)
90
+ self._predicates = None
91
+
92
+
93
+
94
+
95
+ class Json5Context(ParserRuleContext):
96
+ __slots__ = 'parser'
97
+
98
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
99
+ super().__init__(parent, invokingState)
100
+ self.parser = parser
101
+
102
+ def EOF(self):
103
+ return self.getToken(Json5Parser.EOF, 0)
104
+
105
+ def value(self):
106
+ return self.getTypedRuleContext(Json5Parser.ValueContext,0)
107
+
108
+
109
+ def getRuleIndex(self):
110
+ return Json5Parser.RULE_json5
111
+
112
+ def enterRule(self, listener:ParseTreeListener):
113
+ if hasattr( listener, "enterJson5" ):
114
+ listener.enterJson5(self)
115
+
116
+ def exitRule(self, listener:ParseTreeListener):
117
+ if hasattr( listener, "exitJson5" ):
118
+ listener.exitJson5(self)
119
+
120
+ def accept(self, visitor:ParseTreeVisitor):
121
+ if hasattr( visitor, "visitJson5" ):
122
+ return visitor.visitJson5(self)
123
+ else:
124
+ return visitor.visitChildren(self)
125
+
126
+
127
+
128
+
129
+ def json5(self):
130
+
131
+ localctx = Json5Parser.Json5Context(self, self._ctx, self.state)
132
+ self.enterRule(localctx, 0, self.RULE_json5)
133
+ self._la = 0 # Token type
134
+ try:
135
+ self.enterOuterAlt(localctx, 1)
136
+ self.state = 15
137
+ self._errHandler.sync(self)
138
+ _la = self._input.LA(1)
139
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 15906) != 0):
140
+ self.state = 14
141
+ self.value()
142
+
143
+
144
+ self.state = 17
145
+ self.match(Json5Parser.EOF)
146
+ except RecognitionException as re:
147
+ localctx.exception = re
148
+ self._errHandler.reportError(self, re)
149
+ self._errHandler.recover(self, re)
150
+ finally:
151
+ self.exitRule()
152
+ return localctx
153
+
154
+
155
+ class ObjContext(ParserRuleContext):
156
+ __slots__ = 'parser'
157
+
158
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
159
+ super().__init__(parent, invokingState)
160
+ self.parser = parser
161
+
162
+ def pair(self, i:int=None):
163
+ if i is None:
164
+ return self.getTypedRuleContexts(Json5Parser.PairContext)
165
+ else:
166
+ return self.getTypedRuleContext(Json5Parser.PairContext,i)
167
+
168
+
169
+ def getRuleIndex(self):
170
+ return Json5Parser.RULE_obj
171
+
172
+ def enterRule(self, listener:ParseTreeListener):
173
+ if hasattr( listener, "enterObj" ):
174
+ listener.enterObj(self)
175
+
176
+ def exitRule(self, listener:ParseTreeListener):
177
+ if hasattr( listener, "exitObj" ):
178
+ listener.exitObj(self)
179
+
180
+ def accept(self, visitor:ParseTreeVisitor):
181
+ if hasattr( visitor, "visitObj" ):
182
+ return visitor.visitObj(self)
183
+ else:
184
+ return visitor.visitChildren(self)
185
+
186
+
187
+
188
+
189
+ def obj(self):
190
+
191
+ localctx = Json5Parser.ObjContext(self, self._ctx, self.state)
192
+ self.enterRule(localctx, 2, self.RULE_obj)
193
+ self._la = 0 # Token type
194
+ try:
195
+ self.state = 35
196
+ self._errHandler.sync(self)
197
+ la_ = self._interp.adaptivePredict(self._input,3,self._ctx)
198
+ if la_ == 1:
199
+ self.enterOuterAlt(localctx, 1)
200
+ self.state = 19
201
+ self.match(Json5Parser.T__0)
202
+ self.state = 20
203
+ self.pair()
204
+ self.state = 25
205
+ self._errHandler.sync(self)
206
+ _alt = self._interp.adaptivePredict(self._input,1,self._ctx)
207
+ while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
208
+ if _alt==1:
209
+ self.state = 21
210
+ self.match(Json5Parser.T__1)
211
+ self.state = 22
212
+ self.pair()
213
+ self.state = 27
214
+ self._errHandler.sync(self)
215
+ _alt = self._interp.adaptivePredict(self._input,1,self._ctx)
216
+
217
+ self.state = 29
218
+ self._errHandler.sync(self)
219
+ _la = self._input.LA(1)
220
+ if _la==2:
221
+ self.state = 28
222
+ self.match(Json5Parser.T__1)
223
+
224
+
225
+ self.state = 31
226
+ self.match(Json5Parser.T__2)
227
+ pass
228
+
229
+ elif la_ == 2:
230
+ self.enterOuterAlt(localctx, 2)
231
+ self.state = 33
232
+ self.match(Json5Parser.T__0)
233
+ self.state = 34
234
+ self.match(Json5Parser.T__2)
235
+ pass
236
+
237
+
238
+ except RecognitionException as re:
239
+ localctx.exception = re
240
+ self._errHandler.reportError(self, re)
241
+ self._errHandler.recover(self, re)
242
+ finally:
243
+ self.exitRule()
244
+ return localctx
245
+
246
+
247
+ class PairContext(ParserRuleContext):
248
+ __slots__ = 'parser'
249
+
250
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
251
+ super().__init__(parent, invokingState)
252
+ self.parser = parser
253
+
254
+ def key(self):
255
+ return self.getTypedRuleContext(Json5Parser.KeyContext,0)
256
+
257
+
258
+ def value(self):
259
+ return self.getTypedRuleContext(Json5Parser.ValueContext,0)
260
+
261
+
262
+ def getRuleIndex(self):
263
+ return Json5Parser.RULE_pair
264
+
265
+ def enterRule(self, listener:ParseTreeListener):
266
+ if hasattr( listener, "enterPair" ):
267
+ listener.enterPair(self)
268
+
269
+ def exitRule(self, listener:ParseTreeListener):
270
+ if hasattr( listener, "exitPair" ):
271
+ listener.exitPair(self)
272
+
273
+ def accept(self, visitor:ParseTreeVisitor):
274
+ if hasattr( visitor, "visitPair" ):
275
+ return visitor.visitPair(self)
276
+ else:
277
+ return visitor.visitChildren(self)
278
+
279
+
280
+
281
+
282
+ def pair(self):
283
+
284
+ localctx = Json5Parser.PairContext(self, self._ctx, self.state)
285
+ self.enterRule(localctx, 4, self.RULE_pair)
286
+ try:
287
+ self.enterOuterAlt(localctx, 1)
288
+ self.state = 37
289
+ self.key()
290
+ self.state = 38
291
+ self.match(Json5Parser.T__3)
292
+ self.state = 39
293
+ self.value()
294
+ except RecognitionException as re:
295
+ localctx.exception = re
296
+ self._errHandler.reportError(self, re)
297
+ self._errHandler.recover(self, re)
298
+ finally:
299
+ self.exitRule()
300
+ return localctx
301
+
302
+
303
+ class KeyContext(ParserRuleContext):
304
+ __slots__ = 'parser'
305
+
306
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
307
+ super().__init__(parent, invokingState)
308
+ self.parser = parser
309
+
310
+ def STRING(self):
311
+ return self.getToken(Json5Parser.STRING, 0)
312
+
313
+ def IDENTIFIER(self):
314
+ return self.getToken(Json5Parser.IDENTIFIER, 0)
315
+
316
+ def LITERAL(self):
317
+ return self.getToken(Json5Parser.LITERAL, 0)
318
+
319
+ def NUMERIC_LITERAL(self):
320
+ return self.getToken(Json5Parser.NUMERIC_LITERAL, 0)
321
+
322
+ def getRuleIndex(self):
323
+ return Json5Parser.RULE_key
324
+
325
+ def enterRule(self, listener:ParseTreeListener):
326
+ if hasattr( listener, "enterKey" ):
327
+ listener.enterKey(self)
328
+
329
+ def exitRule(self, listener:ParseTreeListener):
330
+ if hasattr( listener, "exitKey" ):
331
+ listener.exitKey(self)
332
+
333
+ def accept(self, visitor:ParseTreeVisitor):
334
+ if hasattr( visitor, "visitKey" ):
335
+ return visitor.visitKey(self)
336
+ else:
337
+ return visitor.visitChildren(self)
338
+
339
+
340
+
341
+
342
+ def key(self):
343
+
344
+ localctx = Json5Parser.KeyContext(self, self._ctx, self.state)
345
+ self.enterRule(localctx, 6, self.RULE_key)
346
+ self._la = 0 # Token type
347
+ try:
348
+ self.enterOuterAlt(localctx, 1)
349
+ self.state = 41
350
+ _la = self._input.LA(1)
351
+ if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 22016) != 0)):
352
+ self._errHandler.recoverInline(self)
353
+ else:
354
+ self._errHandler.reportMatch(self)
355
+ self.consume()
356
+ except RecognitionException as re:
357
+ localctx.exception = re
358
+ self._errHandler.reportError(self, re)
359
+ self._errHandler.recover(self, re)
360
+ finally:
361
+ self.exitRule()
362
+ return localctx
363
+
364
+
365
+ class ValueContext(ParserRuleContext):
366
+ __slots__ = 'parser'
367
+
368
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
369
+ super().__init__(parent, invokingState)
370
+ self.parser = parser
371
+
372
+ def STRING(self):
373
+ return self.getToken(Json5Parser.STRING, 0)
374
+
375
+ def number(self):
376
+ return self.getTypedRuleContext(Json5Parser.NumberContext,0)
377
+
378
+
379
+ def obj(self):
380
+ return self.getTypedRuleContext(Json5Parser.ObjContext,0)
381
+
382
+
383
+ def arr(self):
384
+ return self.getTypedRuleContext(Json5Parser.ArrContext,0)
385
+
386
+
387
+ def LITERAL(self):
388
+ return self.getToken(Json5Parser.LITERAL, 0)
389
+
390
+ def getRuleIndex(self):
391
+ return Json5Parser.RULE_value
392
+
393
+ def enterRule(self, listener:ParseTreeListener):
394
+ if hasattr( listener, "enterValue" ):
395
+ listener.enterValue(self)
396
+
397
+ def exitRule(self, listener:ParseTreeListener):
398
+ if hasattr( listener, "exitValue" ):
399
+ listener.exitValue(self)
400
+
401
+ def accept(self, visitor:ParseTreeVisitor):
402
+ if hasattr( visitor, "visitValue" ):
403
+ return visitor.visitValue(self)
404
+ else:
405
+ return visitor.visitChildren(self)
406
+
407
+
408
+
409
+
410
+ def value(self):
411
+
412
+ localctx = Json5Parser.ValueContext(self, self._ctx, self.state)
413
+ self.enterRule(localctx, 8, self.RULE_value)
414
+ try:
415
+ self.state = 48
416
+ self._errHandler.sync(self)
417
+ token = self._input.LA(1)
418
+ if token in [10]:
419
+ self.enterOuterAlt(localctx, 1)
420
+ self.state = 43
421
+ self.match(Json5Parser.STRING)
422
+ pass
423
+ elif token in [11, 12, 13]:
424
+ self.enterOuterAlt(localctx, 2)
425
+ self.state = 44
426
+ self.number()
427
+ pass
428
+ elif token in [1]:
429
+ self.enterOuterAlt(localctx, 3)
430
+ self.state = 45
431
+ self.obj()
432
+ pass
433
+ elif token in [5]:
434
+ self.enterOuterAlt(localctx, 4)
435
+ self.state = 46
436
+ self.arr()
437
+ pass
438
+ elif token in [9]:
439
+ self.enterOuterAlt(localctx, 5)
440
+ self.state = 47
441
+ self.match(Json5Parser.LITERAL)
442
+ pass
443
+ else:
444
+ raise NoViableAltException(self)
445
+
446
+ except RecognitionException as re:
447
+ localctx.exception = re
448
+ self._errHandler.reportError(self, re)
449
+ self._errHandler.recover(self, re)
450
+ finally:
451
+ self.exitRule()
452
+ return localctx
453
+
454
+
455
+ class ArrContext(ParserRuleContext):
456
+ __slots__ = 'parser'
457
+
458
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
459
+ super().__init__(parent, invokingState)
460
+ self.parser = parser
461
+
462
+ def value(self, i:int=None):
463
+ if i is None:
464
+ return self.getTypedRuleContexts(Json5Parser.ValueContext)
465
+ else:
466
+ return self.getTypedRuleContext(Json5Parser.ValueContext,i)
467
+
468
+
469
+ def getRuleIndex(self):
470
+ return Json5Parser.RULE_arr
471
+
472
+ def enterRule(self, listener:ParseTreeListener):
473
+ if hasattr( listener, "enterArr" ):
474
+ listener.enterArr(self)
475
+
476
+ def exitRule(self, listener:ParseTreeListener):
477
+ if hasattr( listener, "exitArr" ):
478
+ listener.exitArr(self)
479
+
480
+ def accept(self, visitor:ParseTreeVisitor):
481
+ if hasattr( visitor, "visitArr" ):
482
+ return visitor.visitArr(self)
483
+ else:
484
+ return visitor.visitChildren(self)
485
+
486
+
487
+
488
+
489
+ def arr(self):
490
+
491
+ localctx = Json5Parser.ArrContext(self, self._ctx, self.state)
492
+ self.enterRule(localctx, 10, self.RULE_arr)
493
+ self._la = 0 # Token type
494
+ try:
495
+ self.state = 66
496
+ self._errHandler.sync(self)
497
+ la_ = self._interp.adaptivePredict(self._input,7,self._ctx)
498
+ if la_ == 1:
499
+ self.enterOuterAlt(localctx, 1)
500
+ self.state = 50
501
+ self.match(Json5Parser.T__4)
502
+ self.state = 51
503
+ self.value()
504
+ self.state = 56
505
+ self._errHandler.sync(self)
506
+ _alt = self._interp.adaptivePredict(self._input,5,self._ctx)
507
+ while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
508
+ if _alt==1:
509
+ self.state = 52
510
+ self.match(Json5Parser.T__1)
511
+ self.state = 53
512
+ self.value()
513
+ self.state = 58
514
+ self._errHandler.sync(self)
515
+ _alt = self._interp.adaptivePredict(self._input,5,self._ctx)
516
+
517
+ self.state = 60
518
+ self._errHandler.sync(self)
519
+ _la = self._input.LA(1)
520
+ if _la==2:
521
+ self.state = 59
522
+ self.match(Json5Parser.T__1)
523
+
524
+
525
+ self.state = 62
526
+ self.match(Json5Parser.T__5)
527
+ pass
528
+
529
+ elif la_ == 2:
530
+ self.enterOuterAlt(localctx, 2)
531
+ self.state = 64
532
+ self.match(Json5Parser.T__4)
533
+ self.state = 65
534
+ self.match(Json5Parser.T__5)
535
+ pass
536
+
537
+
538
+ except RecognitionException as re:
539
+ localctx.exception = re
540
+ self._errHandler.reportError(self, re)
541
+ self._errHandler.recover(self, re)
542
+ finally:
543
+ self.exitRule()
544
+ return localctx
545
+
546
+
547
+ class NumberContext(ParserRuleContext):
548
+ __slots__ = 'parser'
549
+
550
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
551
+ super().__init__(parent, invokingState)
552
+ self.parser = parser
553
+
554
+ def NUMERIC_LITERAL(self):
555
+ return self.getToken(Json5Parser.NUMERIC_LITERAL, 0)
556
+
557
+ def NUMBER(self):
558
+ return self.getToken(Json5Parser.NUMBER, 0)
559
+
560
+ def SYMBOL(self):
561
+ return self.getToken(Json5Parser.SYMBOL, 0)
562
+
563
+ def getRuleIndex(self):
564
+ return Json5Parser.RULE_number
565
+
566
+ def enterRule(self, listener:ParseTreeListener):
567
+ if hasattr( listener, "enterNumber" ):
568
+ listener.enterNumber(self)
569
+
570
+ def exitRule(self, listener:ParseTreeListener):
571
+ if hasattr( listener, "exitNumber" ):
572
+ listener.exitNumber(self)
573
+
574
+ def accept(self, visitor:ParseTreeVisitor):
575
+ if hasattr( visitor, "visitNumber" ):
576
+ return visitor.visitNumber(self)
577
+ else:
578
+ return visitor.visitChildren(self)
579
+
580
+
581
+
582
+
583
+ def number(self):
584
+
585
+ localctx = Json5Parser.NumberContext(self, self._ctx, self.state)
586
+ self.enterRule(localctx, 12, self.RULE_number)
587
+ self._la = 0 # Token type
588
+ try:
589
+ self.enterOuterAlt(localctx, 1)
590
+ self.state = 69
591
+ self._errHandler.sync(self)
592
+ _la = self._input.LA(1)
593
+ if _la==13:
594
+ self.state = 68
595
+ self.match(Json5Parser.SYMBOL)
596
+
597
+
598
+ self.state = 71
599
+ _la = self._input.LA(1)
600
+ if not(_la==11 or _la==12):
601
+ self._errHandler.recoverInline(self)
602
+ else:
603
+ self._errHandler.reportMatch(self)
604
+ self.consume()
605
+ except RecognitionException as re:
606
+ localctx.exception = re
607
+ self._errHandler.reportError(self, re)
608
+ self._errHandler.recover(self, re)
609
+ finally:
610
+ self.exitRule()
611
+ return localctx
612
+
613
+
614
+
615
+
616
+
@@ -0,0 +1,51 @@
1
+ # type: ignore
2
+ # ruff: noqa
3
+ # flake8: noqa
4
+ # Generated from Json5.g4 by ANTLR 4.13.2
5
+ from omlish.antlr._runtime._all import *
6
+ if "." in __name__:
7
+ from .Json5Parser import Json5Parser
8
+ else:
9
+ from Json5Parser import Json5Parser
10
+
11
+ # This class defines a complete generic visitor for a parse tree produced by Json5Parser.
12
+
13
+ class Json5Visitor(ParseTreeVisitor):
14
+
15
+ # Visit a parse tree produced by Json5Parser#json5.
16
+ def visitJson5(self, ctx:Json5Parser.Json5Context):
17
+ return self.visitChildren(ctx)
18
+
19
+
20
+ # Visit a parse tree produced by Json5Parser#obj.
21
+ def visitObj(self, ctx:Json5Parser.ObjContext):
22
+ return self.visitChildren(ctx)
23
+
24
+
25
+ # Visit a parse tree produced by Json5Parser#pair.
26
+ def visitPair(self, ctx:Json5Parser.PairContext):
27
+ return self.visitChildren(ctx)
28
+
29
+
30
+ # Visit a parse tree produced by Json5Parser#key.
31
+ def visitKey(self, ctx:Json5Parser.KeyContext):
32
+ return self.visitChildren(ctx)
33
+
34
+
35
+ # Visit a parse tree produced by Json5Parser#value.
36
+ def visitValue(self, ctx:Json5Parser.ValueContext):
37
+ return self.visitChildren(ctx)
38
+
39
+
40
+ # Visit a parse tree produced by Json5Parser#arr.
41
+ def visitArr(self, ctx:Json5Parser.ArrContext):
42
+ return self.visitChildren(ctx)
43
+
44
+
45
+ # Visit a parse tree produced by Json5Parser#number.
46
+ def visitNumber(self, ctx:Json5Parser.NumberContext):
47
+ return self.visitChildren(ctx)
48
+
49
+
50
+
51
+ del Json5Parser
File without changes
@@ -1,25 +1,20 @@
1
1
  import typing as ta
2
2
 
3
- from .. import lang
4
- from .codecs import make_object_lazy_loaded_codec
5
- from .codecs import make_str_object_codec
6
-
7
-
8
- if ta.TYPE_CHECKING:
9
- import json5
10
- else:
11
- json5 = lang.proxy_import('json5')
3
+ from .. import json
4
+ from ..codecs import make_object_lazy_loaded_codec
5
+ from ..codecs import make_str_object_codec
6
+ from .parsing import parse
12
7
 
13
8
 
14
9
  ##
15
10
 
16
11
 
17
12
  def dumps(obj: ta.Any) -> str:
18
- return json5.dumps(obj)
13
+ return json.dumps(obj)
19
14
 
20
15
 
21
16
  def loads(s: str) -> ta.Any:
22
- return json5.loads(s)
17
+ return parse(s)
23
18
 
24
19
 
25
20
  ##
@@ -0,0 +1,2 @@
1
+ class Json5Error(Exception):
2
+ pass