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.
- omlish/__about__.py +3 -3
- omlish/dataclasses/impl/configs.py +2 -1
- omlish/formats/json/stream/lexing.py +8 -0
- omlish/formats/json/stream/utils.py +3 -0
- omlish/formats/json5/streams.py +22 -0
- omlish/lang/__init__.py +3 -1
- omlish/lang/asyncs.py +12 -0
- omlish/lang/functions.py +0 -11
- omlish/lang/lazyglobals.py +27 -5
- omlish/lang/maysync.py +2 -2
- omlish/lifecycles/contextmanagers.py +1 -2
- omlish/lifecycles/controller.py +1 -2
- omlish/lite/asyncs.py +15 -0
- omlish/lite/timing.py +2 -2
- omlish/logs/all.py +23 -34
- omlish/logs/base.py +248 -0
- omlish/logs/callers.py +21 -15
- omlish/logs/infos.py +105 -0
- omlish/logs/levels.py +64 -0
- omlish/logs/protocols.py +31 -0
- omlish/logs/standard.py +12 -11
- omlish/logs/std/adapters.py +41 -0
- omlish/logs/std/configs.py +29 -0
- omlish/logs/{filters.py → std/filters.py} +1 -1
- omlish/logs/{handlers.py → std/handlers.py} +1 -1
- omlish/logs/{json.py → std/json.py} +2 -2
- omlish/logs/{proxy.py → std/proxy.py} +3 -3
- omlish/logs/std/records.py +286 -0
- omlish/logs/times.py +89 -0
- omlish/logs/typed/bindings.py +24 -0
- omlish/logs/utils.py +60 -4
- omlish/logs/warnings.py +8 -0
- omlish/manifests/loading.py +1 -1
- omlish/os/journald.py +3 -3
- omlish/testing/pytest/plugins/skips.py +0 -4
- {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev425.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev425.dist-info}/RECORD +44 -86
- omlish/defs.py +0 -216
- omlish/dispatch/_dispatch2.py +0 -69
- omlish/dispatch/_dispatch3.py +0 -108
- omlish/dynamic.py +0 -219
- omlish/formats/json/Json.g4 +0 -77
- omlish/formats/json/_antlr/JsonLexer.py +0 -109
- omlish/formats/json/_antlr/JsonListener.py +0 -61
- omlish/formats/json/_antlr/JsonParser.py +0 -457
- omlish/formats/json/_antlr/JsonVisitor.py +0 -42
- omlish/io/trampoline.py +0 -289
- omlish/logs/abc.py +0 -319
- omlish/logs/color.py +0 -27
- omlish/logs/configs.py +0 -29
- omlish/logs/protocol.py +0 -218
- omlish/logs/timing.py +0 -58
- omlish/specs/irc/__init__.py +0 -0
- omlish/specs/irc/messages/__init__.py +0 -0
- omlish/specs/irc/messages/base.py +0 -49
- omlish/specs/irc/messages/formats.py +0 -92
- omlish/specs/irc/messages/messages.py +0 -774
- omlish/specs/irc/messages/parsing.py +0 -98
- omlish/specs/irc/numerics/__init__.py +0 -0
- omlish/specs/irc/numerics/formats.py +0 -97
- omlish/specs/irc/numerics/numerics.py +0 -865
- omlish/specs/irc/numerics/types.py +0 -59
- omlish/specs/irc/protocol/LICENSE +0 -11
- omlish/specs/irc/protocol/__init__.py +0 -61
- omlish/specs/irc/protocol/consts.py +0 -6
- omlish/specs/irc/protocol/errors.py +0 -30
- omlish/specs/irc/protocol/message.py +0 -21
- omlish/specs/irc/protocol/nuh.py +0 -55
- omlish/specs/irc/protocol/parsing.py +0 -158
- omlish/specs/irc/protocol/rendering.py +0 -153
- omlish/specs/irc/protocol/tags.py +0 -102
- omlish/specs/irc/protocol/utils.py +0 -30
- omlish/specs/proto/Protobuf3.g4 +0 -396
- omlish/specs/proto/__init__.py +0 -0
- omlish/specs/proto/_antlr/Protobuf3Lexer.py +0 -340
- omlish/specs/proto/_antlr/Protobuf3Listener.py +0 -448
- omlish/specs/proto/_antlr/Protobuf3Parser.py +0 -3909
- omlish/specs/proto/_antlr/Protobuf3Visitor.py +0 -257
- omlish/specs/proto/_antlr/__init__.py +0 -0
- omlish/specs/proto/nodes.py +0 -54
- omlish/specs/proto/parsing.py +0 -97
- omlish/sql/parsing/Minisql.g4 +0 -292
- omlish/sql/parsing/__init__.py +0 -0
- omlish/sql/parsing/_antlr/MinisqlLexer.py +0 -322
- omlish/sql/parsing/_antlr/MinisqlListener.py +0 -511
- omlish/sql/parsing/_antlr/MinisqlParser.py +0 -3763
- omlish/sql/parsing/_antlr/MinisqlVisitor.py +0 -292
- omlish/sql/parsing/_antlr/__init__.py +0 -0
- omlish/sql/parsing/parsing.py +0 -119
- /omlish/{.manifests.json → .omlish-manifests.json} +0 -0
- /omlish/{formats/json/_antlr → logs/std}/__init__.py +0 -0
- /omlish/logs/{noisy.py → std/noisy.py} +0 -0
- {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev425.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev425.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev425.dist-info}/licenses/LICENSE +0 -0
- {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev425.dist-info}/top_level.txt +0 -0
omlish/dispatch/_dispatch3.py
DELETED
@@ -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
|
omlish/formats/json/Json.g4
DELETED
@@ -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
|