omlish 0.0.0.dev423__py3-none-any.whl → 0.0.0.dev425__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.
Files changed (96) hide show
  1. omlish/__about__.py +3 -3
  2. omlish/dataclasses/impl/configs.py +2 -1
  3. omlish/formats/json/stream/lexing.py +8 -0
  4. omlish/formats/json/stream/utils.py +3 -0
  5. omlish/formats/json5/streams.py +22 -0
  6. omlish/lang/__init__.py +3 -1
  7. omlish/lang/asyncs.py +12 -0
  8. omlish/lang/functions.py +0 -11
  9. omlish/lang/lazyglobals.py +27 -5
  10. omlish/lang/maysync.py +2 -2
  11. omlish/lifecycles/contextmanagers.py +1 -2
  12. omlish/lifecycles/controller.py +1 -2
  13. omlish/lite/asyncs.py +15 -0
  14. omlish/lite/timing.py +2 -2
  15. omlish/logs/all.py +23 -34
  16. omlish/logs/base.py +248 -0
  17. omlish/logs/callers.py +21 -15
  18. omlish/logs/infos.py +105 -0
  19. omlish/logs/levels.py +64 -0
  20. omlish/logs/protocols.py +31 -0
  21. omlish/logs/standard.py +12 -11
  22. omlish/logs/std/adapters.py +41 -0
  23. omlish/logs/std/configs.py +29 -0
  24. omlish/logs/{filters.py → std/filters.py} +1 -1
  25. omlish/logs/{handlers.py → std/handlers.py} +1 -1
  26. omlish/logs/{json.py → std/json.py} +2 -2
  27. omlish/logs/{proxy.py → std/proxy.py} +3 -3
  28. omlish/logs/std/records.py +286 -0
  29. omlish/logs/times.py +89 -0
  30. omlish/logs/typed/bindings.py +24 -0
  31. omlish/logs/utils.py +60 -4
  32. omlish/logs/warnings.py +8 -0
  33. omlish/manifests/loading.py +1 -1
  34. omlish/os/journald.py +3 -3
  35. omlish/testing/pytest/plugins/skips.py +0 -4
  36. {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev425.dist-info}/METADATA +1 -1
  37. {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev425.dist-info}/RECORD +44 -86
  38. omlish/defs.py +0 -216
  39. omlish/dispatch/_dispatch2.py +0 -69
  40. omlish/dispatch/_dispatch3.py +0 -108
  41. omlish/dynamic.py +0 -219
  42. omlish/formats/json/Json.g4 +0 -77
  43. omlish/formats/json/_antlr/JsonLexer.py +0 -109
  44. omlish/formats/json/_antlr/JsonListener.py +0 -61
  45. omlish/formats/json/_antlr/JsonParser.py +0 -457
  46. omlish/formats/json/_antlr/JsonVisitor.py +0 -42
  47. omlish/io/trampoline.py +0 -289
  48. omlish/logs/abc.py +0 -319
  49. omlish/logs/color.py +0 -27
  50. omlish/logs/configs.py +0 -29
  51. omlish/logs/protocol.py +0 -218
  52. omlish/logs/timing.py +0 -58
  53. omlish/specs/irc/__init__.py +0 -0
  54. omlish/specs/irc/messages/__init__.py +0 -0
  55. omlish/specs/irc/messages/base.py +0 -49
  56. omlish/specs/irc/messages/formats.py +0 -92
  57. omlish/specs/irc/messages/messages.py +0 -774
  58. omlish/specs/irc/messages/parsing.py +0 -98
  59. omlish/specs/irc/numerics/__init__.py +0 -0
  60. omlish/specs/irc/numerics/formats.py +0 -97
  61. omlish/specs/irc/numerics/numerics.py +0 -865
  62. omlish/specs/irc/numerics/types.py +0 -59
  63. omlish/specs/irc/protocol/LICENSE +0 -11
  64. omlish/specs/irc/protocol/__init__.py +0 -61
  65. omlish/specs/irc/protocol/consts.py +0 -6
  66. omlish/specs/irc/protocol/errors.py +0 -30
  67. omlish/specs/irc/protocol/message.py +0 -21
  68. omlish/specs/irc/protocol/nuh.py +0 -55
  69. omlish/specs/irc/protocol/parsing.py +0 -158
  70. omlish/specs/irc/protocol/rendering.py +0 -153
  71. omlish/specs/irc/protocol/tags.py +0 -102
  72. omlish/specs/irc/protocol/utils.py +0 -30
  73. omlish/specs/proto/Protobuf3.g4 +0 -396
  74. omlish/specs/proto/__init__.py +0 -0
  75. omlish/specs/proto/_antlr/Protobuf3Lexer.py +0 -340
  76. omlish/specs/proto/_antlr/Protobuf3Listener.py +0 -448
  77. omlish/specs/proto/_antlr/Protobuf3Parser.py +0 -3909
  78. omlish/specs/proto/_antlr/Protobuf3Visitor.py +0 -257
  79. omlish/specs/proto/_antlr/__init__.py +0 -0
  80. omlish/specs/proto/nodes.py +0 -54
  81. omlish/specs/proto/parsing.py +0 -97
  82. omlish/sql/parsing/Minisql.g4 +0 -292
  83. omlish/sql/parsing/__init__.py +0 -0
  84. omlish/sql/parsing/_antlr/MinisqlLexer.py +0 -322
  85. omlish/sql/parsing/_antlr/MinisqlListener.py +0 -511
  86. omlish/sql/parsing/_antlr/MinisqlParser.py +0 -3763
  87. omlish/sql/parsing/_antlr/MinisqlVisitor.py +0 -292
  88. omlish/sql/parsing/_antlr/__init__.py +0 -0
  89. omlish/sql/parsing/parsing.py +0 -119
  90. /omlish/{.manifests.json → .omlish-manifests.json} +0 -0
  91. /omlish/{formats/json/_antlr → logs/std}/__init__.py +0 -0
  92. /omlish/logs/{noisy.py → std/noisy.py} +0 -0
  93. {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev425.dist-info}/WHEEL +0 -0
  94. {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev425.dist-info}/entry_points.txt +0 -0
  95. {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev425.dist-info}/licenses/LICENSE +0 -0
  96. {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev425.dist-info}/top_level.txt +0 -0
@@ -1,108 +0,0 @@
1
- import abc
2
- import typing as ta
3
- import weakref
4
-
5
- from .impls import find_impl as default_find_impl
6
-
7
-
8
- T = ta.TypeVar('T')
9
-
10
-
11
- ##
12
-
13
-
14
- class DispatchCacheProtocol(ta.Protocol[T]):
15
- def size(self) -> int: ...
16
- def prepare(self, cls: type) -> None: ...
17
- def clear(self) -> None: ...
18
- def put(self, cls: type, impl: T) -> None: ...
19
- def get(self, cls: type) -> T: ... # Raises[KeyError]
20
-
21
-
22
- class DispatcherProtocol(ta.Protocol[T]):
23
- def cache_size(self) -> int: ...
24
- def register(self, impl: T, cls_col: ta.Iterable[type]) -> T: ...
25
- def dispatch(self, cls: type) -> T | None: ...
26
-
27
-
28
- ##
29
-
30
-
31
- class DispatchCache(DispatchCacheProtocol[T]):
32
- def __init__(self) -> None:
33
- super().__init__()
34
-
35
- self._dct: dict[ta.Any, T] = {}
36
-
37
- def remove(k, self_ref=weakref.ref(self)):
38
- if (ref_self := self_ref()) is not None:
39
- dct = ref_self._dct # noqa
40
- try:
41
- del dct[k]
42
- except KeyError:
43
- pass
44
-
45
- self._remove = remove
46
-
47
- self._token: ta.Any = None
48
-
49
- def size(self) -> int:
50
- return len(self._dct)
51
-
52
- def prepare(self, cls: type) -> None:
53
- if self._token is None and hasattr(cls, '__abstractmethods__'):
54
- self._token = abc.get_cache_token()
55
-
56
- self.clear()
57
-
58
- def clear(self) -> None:
59
- if self._dct:
60
- self._dct.clear()
61
-
62
- def put(self, cls: type, impl: T) -> None:
63
- self._dct[weakref.ref(cls, self._remove)] = impl
64
-
65
- def get(self, cls: type) -> T:
66
- if self._token is not None and (current_token := abc.get_cache_token()) != self._token:
67
- self._dct.clear()
68
- self._token = current_token
69
-
70
- cls_ref = weakref.ref(cls)
71
- return self._dct[cls_ref]
72
-
73
-
74
- class Dispatcher(DispatcherProtocol[T]):
75
- def __init__(self, find_impl: ta.Callable[[type, ta.Mapping[type, T]], T | None] | None = None) -> None:
76
- super().__init__()
77
-
78
- if find_impl is None:
79
- find_impl = default_find_impl
80
- self._find_impl = find_impl
81
-
82
- self._impls_by_arg_cls: dict[type, T] = {}
83
- self._cache: DispatchCache[T | None] = DispatchCache()
84
-
85
- def cache_size(self) -> int:
86
- return self._cache.size()
87
-
88
- def register(self, impl: T, cls_col: ta.Iterable[type]) -> T:
89
- for cls in cls_col:
90
- self._impls_by_arg_cls[cls] = impl
91
- self._cache.prepare(cls)
92
-
93
- return impl
94
-
95
- def dispatch(self, cls: type) -> T | None:
96
- try:
97
- return self._cache.get(cls)
98
- except KeyError:
99
- pass
100
-
101
- impl: T | None
102
- try:
103
- impl = self._impls_by_arg_cls[cls]
104
- except KeyError:
105
- impl = self._find_impl(cls, self._impls_by_arg_cls)
106
-
107
- self._cache.put(cls, impl)
108
- return impl
omlish/dynamic.py DELETED
@@ -1,219 +0,0 @@
1
- """
2
- Dynamically scoped variables (implemented by stackwalking). Unlike threadlocals these are generator-correct both in
3
- binding and retrieval, and unlike ContextVars they require no manual context management. They are however *slow* and
4
- should be used sparingly (once per sql statement executed not once per inner function call).
5
-
6
- TODO:
7
- - clj-style binding conveyance
8
- - contextvar/async interop
9
- - 'partializer'
10
- """
11
- import contextlib
12
- import functools
13
- import sys
14
- import types
15
- import typing as ta
16
- import weakref
17
-
18
- from . import lang
19
-
20
-
21
- T = ta.TypeVar('T')
22
-
23
-
24
- ##
25
-
26
-
27
- _HOISTED_CODE_DEPTH: ta.MutableMapping[types.CodeType, int] = weakref.WeakKeyDictionary()
28
- _MAX_HOIST_DEPTH = 0
29
-
30
-
31
- def hoist(depth=0): # noqa
32
- def inner(fn):
33
- _HOISTED_CODE_DEPTH[fn.__code__] = depth
34
- global _MAX_HOIST_DEPTH
35
- _MAX_HOIST_DEPTH = max(_MAX_HOIST_DEPTH, depth)
36
- return fn
37
- return inner
38
-
39
-
40
- hoist()(contextlib.ExitStack.enter_context) # noqa
41
-
42
-
43
- class MISSING(lang.Marker):
44
- pass
45
-
46
-
47
- class UnboundVarError(ValueError):
48
- pass
49
-
50
-
51
- class Var(ta.Generic[T]):
52
- def __init__(
53
- self,
54
- default: type[MISSING] | T = MISSING,
55
- *,
56
- new: ta.Callable[[], T] | type[MISSING] = MISSING,
57
- validate: ta.Callable[[T], None] | None = None,
58
- ) -> None:
59
- super().__init__()
60
-
61
- if default is not MISSING and new is not MISSING:
62
- raise TypeError('Cannot set both default and new')
63
- elif default is not MISSING:
64
- new = lambda: default # type: ignore
65
- self._new: type[MISSING] | ta.Callable[[], T] = new
66
- self._validate = validate
67
- self._bindings_by_frame: ta.MutableMapping[types.FrameType, ta.MutableMapping[int, Binding]] = weakref.WeakValueDictionary() # noqa
68
-
69
- @ta.overload
70
- def __call__(self) -> T:
71
- ...
72
-
73
- @ta.overload
74
- def __call__(self, value: T, **kwargs: ta.Any) -> ta.ContextManager[T]:
75
- ...
76
-
77
- def __call__(self, *args, **kwargs):
78
- if not args:
79
- if kwargs:
80
- raise TypeError(kwargs)
81
- return self.value
82
- elif len(args) == 1:
83
- return self.binding(*args, **kwargs)
84
- else:
85
- raise TypeError(args)
86
-
87
- def binding(self, value: T, *, offset: int = 0) -> ta.ContextManager[T]:
88
- if self._validate is not None:
89
- self._validate(self.value)
90
- return Binding(self, value, offset=offset)
91
-
92
- def with_binding(self, value): # noqa
93
- def outer(fn):
94
- @functools.wraps(fn)
95
- def inner(*args, **kwargs):
96
- with self.binding(value):
97
- return fn(*args, **kwargs)
98
- return inner
99
- return outer
100
-
101
- def with_binding_fn(self, binding_fn): # noqa
102
- this = self
103
-
104
- def outer(fn):
105
- class Descriptor:
106
- @staticmethod
107
- @functools.wraps(fn)
108
- def __call__(*args, **kwargs): # noqa
109
- with this.binding(binding_fn(*args, **kwargs)):
110
- return fn(*args, **kwargs)
111
-
112
- def __get__(self, obj, cls=None):
113
- bound_binding_fn = binding_fn.__get__(obj, cls)
114
- bound_fn = fn.__get__(obj, cls)
115
-
116
- @functools.wraps(fn)
117
- def inner(*args, **kwargs):
118
- with this.binding(bound_binding_fn(*args, **kwargs)):
119
- return bound_fn(*args, **kwargs)
120
-
121
- return inner
122
-
123
- dct: dict[str, ta.Any] = {k: getattr(fn, k) for k in functools.WRAPPER_ASSIGNMENTS}
124
- return lang.new_type(fn.__name__, (Descriptor,), dct)()
125
-
126
- return outer
127
-
128
- @property
129
- def values(self) -> ta.Iterator[T]:
130
- frame = sys._getframe().f_back # noqa
131
- while frame:
132
- try:
133
- frame_bindings = self._bindings_by_frame[frame]
134
- except KeyError:
135
- pass
136
- else:
137
- for level, frame_binding in sorted(frame_bindings.items()): # noqa
138
- yield frame_binding._value # noqa
139
- frame = frame.f_back
140
-
141
- if self._new is not MISSING:
142
- yield self._new() # type: ignore
143
-
144
- def __iter__(self) -> ta.Iterator[T]:
145
- return self.values
146
-
147
- @property
148
- def value(self) -> T:
149
- try:
150
- return next(self.values)
151
- except StopIteration:
152
- raise UnboundVarError from None
153
-
154
-
155
- class Binding(ta.Generic[T]):
156
- _frame: types.FrameType
157
- _frame_bindings: ta.MutableMapping[int, 'Binding']
158
- _level: int
159
-
160
- def __init__(self, var: Var[T], value: T, *, offset: int = 0) -> None:
161
- super().__init__()
162
-
163
- self._var = var
164
- self._value = value
165
- self._offset = offset
166
-
167
- def __enter__(self) -> T:
168
- frame = sys._getframe(self._offset).f_back # noqa
169
- lag_frame: types.FrameType | None = frame
170
- while lag_frame is not None:
171
- for cur_depth in range(_MAX_HOIST_DEPTH + 1):
172
- if lag_frame is None:
173
- break
174
- try:
175
- lag_hoist = _HOISTED_CODE_DEPTH[lag_frame.f_code]
176
- except KeyError:
177
- pass
178
- else:
179
- if lag_hoist >= cur_depth:
180
- frame = lag_frame = lag_frame.f_back
181
- break
182
- lag_frame = lag_frame.f_back
183
- else:
184
- break
185
-
186
- if frame is None:
187
- raise RuntimeError
188
- self._frame = frame
189
- try:
190
- self._frame_bindings = self._var._bindings_by_frame[self._frame] # noqa
191
- except KeyError:
192
- self._frame_bindings = self._var._bindings_by_frame[self._frame] = weakref.WeakValueDictionary() # noqa
193
- self._level = 0
194
- else:
195
- self._level = min(self._frame_bindings.keys() or [1]) - 1
196
-
197
- self._frame_bindings[self._level] = self
198
- return self._value
199
-
200
- def __exit__(self, et, e, tb):
201
- if self._frame_bindings[self._level] is not self:
202
- raise TypeError
203
-
204
- del self._frame_bindings[self._level]
205
- del self._frame_bindings
206
- del self._frame
207
-
208
-
209
- class _GeneratorContextManager(contextlib._GeneratorContextManager): # noqa
210
- @hoist(2)
211
- def __enter__(self):
212
- return super().__enter__()
213
-
214
-
215
- def contextmanager(fn): # noqa
216
- @functools.wraps(fn)
217
- def helper(*args, **kwds):
218
- return _GeneratorContextManager(fn, args, kwds)
219
- return helper # noqa
@@ -1,77 +0,0 @@
1
- // Taken from "The Definitive ANTLR 4 Reference" by Terence Parr
2
-
3
- // Derived from https://json.org
4
-
5
- // $antlr-format alignTrailingComments true, columnLimit 150, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false
6
- // $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true, alignSemicolons hanging, alignColons hanging
7
-
8
- grammar Json;
9
-
10
- json
11
- : value EOF
12
- ;
13
-
14
- obj
15
- : '{' pair (',' pair)* '}'
16
- | '{' '}'
17
- ;
18
-
19
- pair
20
- : STRING ':' value
21
- ;
22
-
23
- arr
24
- : '[' value (',' value)* ']'
25
- | '[' ']'
26
- ;
27
-
28
- value
29
- : STRING
30
- | NUMBER
31
- | obj
32
- | arr
33
- | 'true'
34
- | 'false'
35
- | 'null'
36
- ;
37
-
38
- // Lexer
39
-
40
- STRING
41
- : '"' (ESC | SAFECODEPOINT)* '"'
42
- ;
43
-
44
- fragment ESC
45
- : '\\' (["\\/bfnrt] | UNICODE)
46
- ;
47
-
48
- fragment UNICODE
49
- : 'u' HEX HEX HEX HEX
50
- ;
51
-
52
- fragment HEX
53
- : [0-9a-fA-F]
54
- ;
55
-
56
- fragment SAFECODEPOINT
57
- : ~ ["\\\u0000-\u001F]
58
- ;
59
-
60
- NUMBER
61
- : '-'? INT ('.' [0-9]+)? EXP?
62
- ;
63
-
64
- fragment INT
65
- // integer part forbids leading 0s (e.g. `01`)
66
- : '0'
67
- | [1-9] [0-9]*
68
- ;
69
-
70
- fragment EXP
71
- // exponent number permits leading 0s (e.g. `1e01`)
72
- : [Ee] [+-]? [0-9]+
73
- ;
74
-
75
- WS
76
- : [ \t\n\r]+ -> skip
77
- ;
@@ -1,109 +0,0 @@
1
- # type: ignore
2
- # ruff: noqa
3
- # flake8: noqa
4
- # @omlish-generated
5
- # Generated from Json.g4 by ANTLR 4.13.2
6
- from ....text.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
-
15
- def serializedATN():
16
- return [
17
- 4,0,12,131,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,
18
- 2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,
19
- 13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,1,0,1,0,1,1,1,1,
20
- 1,2,1,2,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,
21
- 1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,5,9,69,8,9,10,9,12,9,
22
- 72,9,9,1,9,1,9,1,10,1,10,1,10,3,10,79,8,10,1,11,1,11,1,11,1,11,1,
23
- 11,1,11,1,12,1,12,1,13,1,13,1,14,3,14,92,8,14,1,14,1,14,1,14,4,14,
24
- 97,8,14,11,14,12,14,98,3,14,101,8,14,1,14,3,14,104,8,14,1,15,1,15,
25
- 1,15,5,15,109,8,15,10,15,12,15,112,9,15,3,15,114,8,15,1,16,1,16,
26
- 3,16,118,8,16,1,16,4,16,121,8,16,11,16,12,16,122,1,17,4,17,126,8,
27
- 17,11,17,12,17,127,1,17,1,17,0,0,18,1,1,3,2,5,3,7,4,9,5,11,6,13,
28
- 7,15,8,17,9,19,10,21,0,23,0,25,0,27,0,29,11,31,0,33,0,35,12,1,0,
29
- 8,8,0,34,34,47,47,92,92,98,98,102,102,110,110,114,114,116,116,3,
30
- 0,48,57,65,70,97,102,3,0,0,31,34,34,92,92,1,0,48,57,1,0,49,57,2,
31
- 0,69,69,101,101,2,0,43,43,45,45,3,0,9,10,13,13,32,32,136,0,1,1,0,
32
- 0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,
33
- 0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,29,1,0,0,0,
34
- 0,35,1,0,0,0,1,37,1,0,0,0,3,39,1,0,0,0,5,41,1,0,0,0,7,43,1,0,0,0,
35
- 9,45,1,0,0,0,11,47,1,0,0,0,13,49,1,0,0,0,15,54,1,0,0,0,17,60,1,0,
36
- 0,0,19,65,1,0,0,0,21,75,1,0,0,0,23,80,1,0,0,0,25,86,1,0,0,0,27,88,
37
- 1,0,0,0,29,91,1,0,0,0,31,113,1,0,0,0,33,115,1,0,0,0,35,125,1,0,0,
38
- 0,37,38,5,123,0,0,38,2,1,0,0,0,39,40,5,44,0,0,40,4,1,0,0,0,41,42,
39
- 5,125,0,0,42,6,1,0,0,0,43,44,5,58,0,0,44,8,1,0,0,0,45,46,5,91,0,
40
- 0,46,10,1,0,0,0,47,48,5,93,0,0,48,12,1,0,0,0,49,50,5,116,0,0,50,
41
- 51,5,114,0,0,51,52,5,117,0,0,52,53,5,101,0,0,53,14,1,0,0,0,54,55,
42
- 5,102,0,0,55,56,5,97,0,0,56,57,5,108,0,0,57,58,5,115,0,0,58,59,5,
43
- 101,0,0,59,16,1,0,0,0,60,61,5,110,0,0,61,62,5,117,0,0,62,63,5,108,
44
- 0,0,63,64,5,108,0,0,64,18,1,0,0,0,65,70,5,34,0,0,66,69,3,21,10,0,
45
- 67,69,3,27,13,0,68,66,1,0,0,0,68,67,1,0,0,0,69,72,1,0,0,0,70,68,
46
- 1,0,0,0,70,71,1,0,0,0,71,73,1,0,0,0,72,70,1,0,0,0,73,74,5,34,0,0,
47
- 74,20,1,0,0,0,75,78,5,92,0,0,76,79,7,0,0,0,77,79,3,23,11,0,78,76,
48
- 1,0,0,0,78,77,1,0,0,0,79,22,1,0,0,0,80,81,5,117,0,0,81,82,3,25,12,
49
- 0,82,83,3,25,12,0,83,84,3,25,12,0,84,85,3,25,12,0,85,24,1,0,0,0,
50
- 86,87,7,1,0,0,87,26,1,0,0,0,88,89,8,2,0,0,89,28,1,0,0,0,90,92,5,
51
- 45,0,0,91,90,1,0,0,0,91,92,1,0,0,0,92,93,1,0,0,0,93,100,3,31,15,
52
- 0,94,96,5,46,0,0,95,97,7,3,0,0,96,95,1,0,0,0,97,98,1,0,0,0,98,96,
53
- 1,0,0,0,98,99,1,0,0,0,99,101,1,0,0,0,100,94,1,0,0,0,100,101,1,0,
54
- 0,0,101,103,1,0,0,0,102,104,3,33,16,0,103,102,1,0,0,0,103,104,1,
55
- 0,0,0,104,30,1,0,0,0,105,114,5,48,0,0,106,110,7,4,0,0,107,109,7,
56
- 3,0,0,108,107,1,0,0,0,109,112,1,0,0,0,110,108,1,0,0,0,110,111,1,
57
- 0,0,0,111,114,1,0,0,0,112,110,1,0,0,0,113,105,1,0,0,0,113,106,1,
58
- 0,0,0,114,32,1,0,0,0,115,117,7,5,0,0,116,118,7,6,0,0,117,116,1,0,
59
- 0,0,117,118,1,0,0,0,118,120,1,0,0,0,119,121,7,3,0,0,120,119,1,0,
60
- 0,0,121,122,1,0,0,0,122,120,1,0,0,0,122,123,1,0,0,0,123,34,1,0,0,
61
- 0,124,126,7,7,0,0,125,124,1,0,0,0,126,127,1,0,0,0,127,125,1,0,0,
62
- 0,127,128,1,0,0,0,128,129,1,0,0,0,129,130,6,17,0,0,130,36,1,0,0,
63
- 0,13,0,68,70,78,91,98,100,103,110,113,117,122,127,1,6,0,0
64
- ]
65
-
66
- class JsonLexer(Lexer):
67
-
68
- atn = ATNDeserializer().deserialize(serializedATN())
69
-
70
- decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]
71
-
72
- T__0 = 1
73
- T__1 = 2
74
- T__2 = 3
75
- T__3 = 4
76
- T__4 = 5
77
- T__5 = 6
78
- T__6 = 7
79
- T__7 = 8
80
- T__8 = 9
81
- STRING = 10
82
- NUMBER = 11
83
- WS = 12
84
-
85
- channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ]
86
-
87
- modeNames = [ "DEFAULT_MODE" ]
88
-
89
- literalNames = [ "<INVALID>",
90
- "'{'", "','", "'}'", "':'", "'['", "']'", "'true'", "'false'",
91
- "'null'" ]
92
-
93
- symbolicNames = [ "<INVALID>",
94
- "STRING", "NUMBER", "WS" ]
95
-
96
- ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6",
97
- "T__7", "T__8", "STRING", "ESC", "UNICODE", "HEX", "SAFECODEPOINT",
98
- "NUMBER", "INT", "EXP", "WS" ]
99
-
100
- grammarFileName = "Json.g4"
101
-
102
- def __init__(self, input=None, output:TextIO = sys.stdout):
103
- super().__init__(input, output)
104
- self.checkVersion("4.13.2")
105
- self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
106
- self._actions = None
107
- self._predicates = None
108
-
109
-
@@ -1,61 +0,0 @@
1
- # type: ignore
2
- # ruff: noqa
3
- # flake8: noqa
4
- # @omlish-generated
5
- # Generated from Json.g4 by ANTLR 4.13.2
6
- from ....text.antlr._runtime._all import *
7
- if "." in __name__:
8
- from .JsonParser import JsonParser
9
- else:
10
- from JsonParser import JsonParser
11
-
12
- # This class defines a complete listener for a parse tree produced by JsonParser.
13
- class JsonListener(ParseTreeListener):
14
-
15
- # Enter a parse tree produced by JsonParser#json.
16
- def enterJson(self, ctx:JsonParser.JsonContext):
17
- pass
18
-
19
- # Exit a parse tree produced by JsonParser#json.
20
- def exitJson(self, ctx:JsonParser.JsonContext):
21
- pass
22
-
23
-
24
- # Enter a parse tree produced by JsonParser#obj.
25
- def enterObj(self, ctx:JsonParser.ObjContext):
26
- pass
27
-
28
- # Exit a parse tree produced by JsonParser#obj.
29
- def exitObj(self, ctx:JsonParser.ObjContext):
30
- pass
31
-
32
-
33
- # Enter a parse tree produced by JsonParser#pair.
34
- def enterPair(self, ctx:JsonParser.PairContext):
35
- pass
36
-
37
- # Exit a parse tree produced by JsonParser#pair.
38
- def exitPair(self, ctx:JsonParser.PairContext):
39
- pass
40
-
41
-
42
- # Enter a parse tree produced by JsonParser#arr.
43
- def enterArr(self, ctx:JsonParser.ArrContext):
44
- pass
45
-
46
- # Exit a parse tree produced by JsonParser#arr.
47
- def exitArr(self, ctx:JsonParser.ArrContext):
48
- pass
49
-
50
-
51
- # Enter a parse tree produced by JsonParser#value.
52
- def enterValue(self, ctx:JsonParser.ValueContext):
53
- pass
54
-
55
- # Exit a parse tree produced by JsonParser#value.
56
- def exitValue(self, ctx:JsonParser.ValueContext):
57
- pass
58
-
59
-
60
-
61
- del JsonParser