omlish 0.0.0.dev251__py3-none-any.whl → 0.0.0.dev252__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.
@@ -0,0 +1,256 @@
1
+ # type: ignore
2
+ # ruff: noqa
3
+ # flake8: noqa
4
+ # Generated from Protobuf3.g4 by ANTLR 4.13.2
5
+ from omlish.antlr._runtime._all import *
6
+ if "." in __name__:
7
+ from .Protobuf3Parser import Protobuf3Parser
8
+ else:
9
+ from Protobuf3Parser import Protobuf3Parser
10
+
11
+ # This class defines a complete generic visitor for a parse tree produced by Protobuf3Parser.
12
+
13
+ class Protobuf3Visitor(ParseTreeVisitor):
14
+
15
+ # Visit a parse tree produced by Protobuf3Parser#proto.
16
+ def visitProto(self, ctx:Protobuf3Parser.ProtoContext):
17
+ return self.visitChildren(ctx)
18
+
19
+
20
+ # Visit a parse tree produced by Protobuf3Parser#syntax.
21
+ def visitSyntax(self, ctx:Protobuf3Parser.SyntaxContext):
22
+ return self.visitChildren(ctx)
23
+
24
+
25
+ # Visit a parse tree produced by Protobuf3Parser#syntaxExtra.
26
+ def visitSyntaxExtra(self, ctx:Protobuf3Parser.SyntaxExtraContext):
27
+ return self.visitChildren(ctx)
28
+
29
+
30
+ # Visit a parse tree produced by Protobuf3Parser#importStmt.
31
+ def visitImportStmt(self, ctx:Protobuf3Parser.ImportStmtContext):
32
+ return self.visitChildren(ctx)
33
+
34
+
35
+ # Visit a parse tree produced by Protobuf3Parser#packageStmt.
36
+ def visitPackageStmt(self, ctx:Protobuf3Parser.PackageStmtContext):
37
+ return self.visitChildren(ctx)
38
+
39
+
40
+ # Visit a parse tree produced by Protobuf3Parser#option.
41
+ def visitOption(self, ctx:Protobuf3Parser.OptionContext):
42
+ return self.visitChildren(ctx)
43
+
44
+
45
+ # Visit a parse tree produced by Protobuf3Parser#optionName.
46
+ def visitOptionName(self, ctx:Protobuf3Parser.OptionNameContext):
47
+ return self.visitChildren(ctx)
48
+
49
+
50
+ # Visit a parse tree produced by Protobuf3Parser#optionBody.
51
+ def visitOptionBody(self, ctx:Protobuf3Parser.OptionBodyContext):
52
+ return self.visitChildren(ctx)
53
+
54
+
55
+ # Visit a parse tree produced by Protobuf3Parser#optionBodyVariable.
56
+ def visitOptionBodyVariable(self, ctx:Protobuf3Parser.OptionBodyVariableContext):
57
+ return self.visitChildren(ctx)
58
+
59
+
60
+ # Visit a parse tree produced by Protobuf3Parser#topLevelDef.
61
+ def visitTopLevelDef(self, ctx:Protobuf3Parser.TopLevelDefContext):
62
+ return self.visitChildren(ctx)
63
+
64
+
65
+ # Visit a parse tree produced by Protobuf3Parser#message.
66
+ def visitMessage(self, ctx:Protobuf3Parser.MessageContext):
67
+ return self.visitChildren(ctx)
68
+
69
+
70
+ # Visit a parse tree produced by Protobuf3Parser#messageBody.
71
+ def visitMessageBody(self, ctx:Protobuf3Parser.MessageBodyContext):
72
+ return self.visitChildren(ctx)
73
+
74
+
75
+ # Visit a parse tree produced by Protobuf3Parser#messageBodyContent.
76
+ def visitMessageBodyContent(self, ctx:Protobuf3Parser.MessageBodyContentContext):
77
+ return self.visitChildren(ctx)
78
+
79
+
80
+ # Visit a parse tree produced by Protobuf3Parser#enumDef.
81
+ def visitEnumDef(self, ctx:Protobuf3Parser.EnumDefContext):
82
+ return self.visitChildren(ctx)
83
+
84
+
85
+ # Visit a parse tree produced by Protobuf3Parser#enumBody.
86
+ def visitEnumBody(self, ctx:Protobuf3Parser.EnumBodyContext):
87
+ return self.visitChildren(ctx)
88
+
89
+
90
+ # Visit a parse tree produced by Protobuf3Parser#enumField.
91
+ def visitEnumField(self, ctx:Protobuf3Parser.EnumFieldContext):
92
+ return self.visitChildren(ctx)
93
+
94
+
95
+ # Visit a parse tree produced by Protobuf3Parser#enumValueOption.
96
+ def visitEnumValueOption(self, ctx:Protobuf3Parser.EnumValueOptionContext):
97
+ return self.visitChildren(ctx)
98
+
99
+
100
+ # Visit a parse tree produced by Protobuf3Parser#extend.
101
+ def visitExtend(self, ctx:Protobuf3Parser.ExtendContext):
102
+ return self.visitChildren(ctx)
103
+
104
+
105
+ # Visit a parse tree produced by Protobuf3Parser#service.
106
+ def visitService(self, ctx:Protobuf3Parser.ServiceContext):
107
+ return self.visitChildren(ctx)
108
+
109
+
110
+ # Visit a parse tree produced by Protobuf3Parser#rpc.
111
+ def visitRpc(self, ctx:Protobuf3Parser.RpcContext):
112
+ return self.visitChildren(ctx)
113
+
114
+
115
+ # Visit a parse tree produced by Protobuf3Parser#reserved.
116
+ def visitReserved(self, ctx:Protobuf3Parser.ReservedContext):
117
+ return self.visitChildren(ctx)
118
+
119
+
120
+ # Visit a parse tree produced by Protobuf3Parser#ranges.
121
+ def visitRanges(self, ctx:Protobuf3Parser.RangesContext):
122
+ return self.visitChildren(ctx)
123
+
124
+
125
+ # Visit a parse tree produced by Protobuf3Parser#rangeRule.
126
+ def visitRangeRule(self, ctx:Protobuf3Parser.RangeRuleContext):
127
+ return self.visitChildren(ctx)
128
+
129
+
130
+ # Visit a parse tree produced by Protobuf3Parser#fieldNames.
131
+ def visitFieldNames(self, ctx:Protobuf3Parser.FieldNamesContext):
132
+ return self.visitChildren(ctx)
133
+
134
+
135
+ # Visit a parse tree produced by Protobuf3Parser#typeRule.
136
+ def visitTypeRule(self, ctx:Protobuf3Parser.TypeRuleContext):
137
+ return self.visitChildren(ctx)
138
+
139
+
140
+ # Visit a parse tree produced by Protobuf3Parser#simpleType.
141
+ def visitSimpleType(self, ctx:Protobuf3Parser.SimpleTypeContext):
142
+ return self.visitChildren(ctx)
143
+
144
+
145
+ # Visit a parse tree produced by Protobuf3Parser#fieldNumber.
146
+ def visitFieldNumber(self, ctx:Protobuf3Parser.FieldNumberContext):
147
+ return self.visitChildren(ctx)
148
+
149
+
150
+ # Visit a parse tree produced by Protobuf3Parser#field.
151
+ def visitField(self, ctx:Protobuf3Parser.FieldContext):
152
+ return self.visitChildren(ctx)
153
+
154
+
155
+ # Visit a parse tree produced by Protobuf3Parser#fieldOptions.
156
+ def visitFieldOptions(self, ctx:Protobuf3Parser.FieldOptionsContext):
157
+ return self.visitChildren(ctx)
158
+
159
+
160
+ # Visit a parse tree produced by Protobuf3Parser#fieldOption.
161
+ def visitFieldOption(self, ctx:Protobuf3Parser.FieldOptionContext):
162
+ return self.visitChildren(ctx)
163
+
164
+
165
+ # Visit a parse tree produced by Protobuf3Parser#oneof.
166
+ def visitOneof(self, ctx:Protobuf3Parser.OneofContext):
167
+ return self.visitChildren(ctx)
168
+
169
+
170
+ # Visit a parse tree produced by Protobuf3Parser#oneofField.
171
+ def visitOneofField(self, ctx:Protobuf3Parser.OneofFieldContext):
172
+ return self.visitChildren(ctx)
173
+
174
+
175
+ # Visit a parse tree produced by Protobuf3Parser#mapField.
176
+ def visitMapField(self, ctx:Protobuf3Parser.MapFieldContext):
177
+ return self.visitChildren(ctx)
178
+
179
+
180
+ # Visit a parse tree produced by Protobuf3Parser#keyType.
181
+ def visitKeyType(self, ctx:Protobuf3Parser.KeyTypeContext):
182
+ return self.visitChildren(ctx)
183
+
184
+
185
+ # Visit a parse tree produced by Protobuf3Parser#reservedWord.
186
+ def visitReservedWord(self, ctx:Protobuf3Parser.ReservedWordContext):
187
+ return self.visitChildren(ctx)
188
+
189
+
190
+ # Visit a parse tree produced by Protobuf3Parser#fullIdent.
191
+ def visitFullIdent(self, ctx:Protobuf3Parser.FullIdentContext):
192
+ return self.visitChildren(ctx)
193
+
194
+
195
+ # Visit a parse tree produced by Protobuf3Parser#messageName.
196
+ def visitMessageName(self, ctx:Protobuf3Parser.MessageNameContext):
197
+ return self.visitChildren(ctx)
198
+
199
+
200
+ # Visit a parse tree produced by Protobuf3Parser#enumName.
201
+ def visitEnumName(self, ctx:Protobuf3Parser.EnumNameContext):
202
+ return self.visitChildren(ctx)
203
+
204
+
205
+ # Visit a parse tree produced by Protobuf3Parser#messageOrEnumName.
206
+ def visitMessageOrEnumName(self, ctx:Protobuf3Parser.MessageOrEnumNameContext):
207
+ return self.visitChildren(ctx)
208
+
209
+
210
+ # Visit a parse tree produced by Protobuf3Parser#fieldName.
211
+ def visitFieldName(self, ctx:Protobuf3Parser.FieldNameContext):
212
+ return self.visitChildren(ctx)
213
+
214
+
215
+ # Visit a parse tree produced by Protobuf3Parser#oneofName.
216
+ def visitOneofName(self, ctx:Protobuf3Parser.OneofNameContext):
217
+ return self.visitChildren(ctx)
218
+
219
+
220
+ # Visit a parse tree produced by Protobuf3Parser#mapName.
221
+ def visitMapName(self, ctx:Protobuf3Parser.MapNameContext):
222
+ return self.visitChildren(ctx)
223
+
224
+
225
+ # Visit a parse tree produced by Protobuf3Parser#serviceName.
226
+ def visitServiceName(self, ctx:Protobuf3Parser.ServiceNameContext):
227
+ return self.visitChildren(ctx)
228
+
229
+
230
+ # Visit a parse tree produced by Protobuf3Parser#rpcName.
231
+ def visitRpcName(self, ctx:Protobuf3Parser.RpcNameContext):
232
+ return self.visitChildren(ctx)
233
+
234
+
235
+ # Visit a parse tree produced by Protobuf3Parser#messageType.
236
+ def visitMessageType(self, ctx:Protobuf3Parser.MessageTypeContext):
237
+ return self.visitChildren(ctx)
238
+
239
+
240
+ # Visit a parse tree produced by Protobuf3Parser#messageOrEnumType.
241
+ def visitMessageOrEnumType(self, ctx:Protobuf3Parser.MessageOrEnumTypeContext):
242
+ return self.visitChildren(ctx)
243
+
244
+
245
+ # Visit a parse tree produced by Protobuf3Parser#emptyStmt.
246
+ def visitEmptyStmt(self, ctx:Protobuf3Parser.EmptyStmtContext):
247
+ return self.visitChildren(ctx)
248
+
249
+
250
+ # Visit a parse tree produced by Protobuf3Parser#constant.
251
+ def visitConstant(self, ctx:Protobuf3Parser.ConstantContext):
252
+ return self.visitChildren(ctx)
253
+
254
+
255
+
256
+ del Protobuf3Parser
File without changes
@@ -0,0 +1,54 @@
1
+ import enum
2
+ import typing as ta
3
+
4
+ from ... import dataclasses as dc
5
+
6
+
7
+ ##
8
+
9
+
10
+ class SimpleType(enum.Enum):
11
+ DOUBLE = 'double'
12
+ FLOAT = 'float'
13
+ INT32 = 'int32'
14
+ INT64 = 'int64'
15
+ UINT32 = 'uint32'
16
+ UINT64 = 'uint64'
17
+ SINT32 = 'sint32'
18
+ SINT64 = 'sint64'
19
+ FIXED32 = 'fixed32'
20
+ FIXED64 = 'fixed64'
21
+ SFIXED32 = 'sfixed32'
22
+ SFIXED64 = 'sfixed64'
23
+ BOOL = 'bool'
24
+ STRING = 'string'
25
+ BYTES = 'bytes'
26
+
27
+
28
+ class TypeRef(dc.Frozen):
29
+ name: str
30
+
31
+
32
+ Type: ta.TypeAlias = SimpleType | TypeRef
33
+
34
+
35
+ ##
36
+
37
+
38
+ class Field(dc.Frozen):
39
+ name: str
40
+ type: Type
41
+ num: int
42
+ repeated: bool = False
43
+
44
+
45
+ class Message(dc.Frozen):
46
+ name: str
47
+ fields: ta.Sequence[Field]
48
+
49
+
50
+ ##
51
+
52
+
53
+ class ProtoFile(dc.Frozen):
54
+ messages: ta.Sequence[Message] | None = None
@@ -0,0 +1,97 @@
1
+ # ruff: noqa: N802 N803
2
+ import typing as ta
3
+
4
+ from ... import check
5
+ from ...antlr import runtime as antlr4
6
+ from ...antlr.errors import SilentRaisingErrorListener
7
+ from . import nodes as no
8
+ from ._antlr.Protobuf3Lexer import Protobuf3Lexer # type: ignore
9
+ from ._antlr.Protobuf3Parser import Protobuf3Parser # type: ignore
10
+ from ._antlr.Protobuf3Visitor import Protobuf3Visitor # type: ignore
11
+
12
+
13
+ ##
14
+
15
+
16
+ class _ParseVisitor(Protobuf3Visitor):
17
+ def visit(self, ctx: antlr4.ParserRuleContext):
18
+ check.isinstance(ctx, antlr4.ParserRuleContext)
19
+ node = ctx.accept(self)
20
+ return node
21
+
22
+ def aggregateResult(self, aggregate, nextResult):
23
+ if aggregate is not None:
24
+ check.none(nextResult)
25
+ return aggregate
26
+ else:
27
+ check.none(aggregate)
28
+ return nextResult
29
+
30
+ #
31
+
32
+ def visitField(self, ctx: Protobuf3Parser.FieldContext):
33
+ name = ctx.fieldName().getText()
34
+ type_: no.Type = check.isinstance(self.visitTypeRule(ctx.typeRule()), (no.SimpleType, no.TypeRef))
35
+ num = int(ctx.fieldNumber().getText())
36
+ repeated = ctx.REPEATED() is not None
37
+ return no.Field(
38
+ name=name,
39
+ type=type_,
40
+ num=num,
41
+ repeated=repeated,
42
+ )
43
+
44
+ def visitMessage(self, ctx: Protobuf3Parser.MessageContext):
45
+ name = ctx.messageName().getText()
46
+ fields: list[no.Field] = []
47
+ for mbc_ctx in ctx.messageBody().messageBodyContent():
48
+ mbc = self.visitMessageBodyContent(mbc_ctx)
49
+ if isinstance(mbc, no.Field):
50
+ fields.append(mbc)
51
+ return no.Message(
52
+ name=name,
53
+ fields=fields,
54
+ )
55
+
56
+ def visitMessageOrEnumType(self, ctx: Protobuf3Parser.MessageOrEnumTypeContext):
57
+ return no.TypeRef(ctx.getText())
58
+
59
+ def visitProto(self, ctx: Protobuf3Parser.ProtoContext):
60
+ messages: list[no.Message] = []
61
+ for ex_ctx in ctx.syntaxExtra():
62
+ ex = self.visitSyntaxExtra(ex_ctx)
63
+ if isinstance(ex, no.Message):
64
+ messages.append(ex)
65
+ return no.ProtoFile(
66
+ messages=messages,
67
+ )
68
+
69
+ def visitSimpleType(self, ctx: Protobuf3Parser.SimpleTypeContext):
70
+ return no.SimpleType(ctx.getText())
71
+
72
+
73
+ ##
74
+
75
+
76
+ def create_parser(buf: str) -> Protobuf3Parser:
77
+ lexer = Protobuf3Lexer(antlr4.InputStream(buf))
78
+ lexer.removeErrorListeners()
79
+ lexer.addErrorListener(SilentRaisingErrorListener())
80
+
81
+ stream = antlr4.CommonTokenStream(lexer)
82
+ stream.fill()
83
+
84
+ parser = Protobuf3Parser(stream)
85
+ parser.removeErrorListeners()
86
+ parser.addErrorListener(SilentRaisingErrorListener())
87
+
88
+ return parser
89
+
90
+
91
+ ##
92
+
93
+
94
+ def parse_proto(buf: str, **kwargs: ta.Any) -> ta.Any:
95
+ parser = create_parser(buf, **kwargs)
96
+ node = _ParseVisitor().visit(parser.proto())
97
+ return node
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: omlish
3
- Version: 0.0.0.dev251
3
+ Version: 0.0.0.dev252
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -13,7 +13,7 @@ Classifier: Operating System :: POSIX
13
13
  Requires-Python: >=3.12
14
14
  License-File: LICENSE
15
15
  Provides-Extra: all
16
- Requires-Dist: anyio~=4.8; extra == "all"
16
+ Requires-Dist: anyio~=4.9; extra == "all"
17
17
  Requires-Dist: sniffio~=1.3; extra == "all"
18
18
  Requires-Dist: greenlet~=3.1; extra == "all"
19
19
  Requires-Dist: trio~=0.29; extra == "all"
@@ -43,7 +43,7 @@ Requires-Dist: apsw~=3.47; extra == "all"
43
43
  Requires-Dist: sqlean.py~=3.45; extra == "all"
44
44
  Requires-Dist: duckdb~=1.2; extra == "all"
45
45
  Requires-Dist: pytest~=8.0; extra == "all"
46
- Requires-Dist: anyio~=4.8; extra == "all"
46
+ Requires-Dist: anyio~=4.9; extra == "all"
47
47
  Requires-Dist: sniffio~=1.3; extra == "all"
48
48
  Requires-Dist: asttokens~=3.0; extra == "all"
49
49
  Requires-Dist: executing~=2.2; extra == "all"
@@ -51,7 +51,7 @@ Requires-Dist: orjson~=3.10; extra == "all"
51
51
  Requires-Dist: pyyaml~=6.0; extra == "all"
52
52
  Requires-Dist: wrapt~=1.17; extra == "all"
53
53
  Provides-Extra: async
54
- Requires-Dist: anyio~=4.8; extra == "async"
54
+ Requires-Dist: anyio~=4.9; extra == "async"
55
55
  Requires-Dist: sniffio~=1.3; extra == "async"
56
56
  Requires-Dist: greenlet~=3.1; extra == "async"
57
57
  Requires-Dist: trio~=0.29; extra == "async"
@@ -91,7 +91,7 @@ Requires-Dist: duckdb~=1.2; extra == "sqldrivers"
91
91
  Provides-Extra: testing
92
92
  Requires-Dist: pytest~=8.0; extra == "testing"
93
93
  Provides-Extra: plus
94
- Requires-Dist: anyio~=4.8; extra == "plus"
94
+ Requires-Dist: anyio~=4.9; extra == "plus"
95
95
  Requires-Dist: sniffio~=1.3; extra == "plus"
96
96
  Requires-Dist: asttokens~=3.0; extra == "plus"
97
97
  Requires-Dist: executing~=2.2; extra == "plus"
@@ -1,5 +1,5 @@
1
1
  omlish/.manifests.json,sha256=x26AIwDzScUvnX-p4xlq6Zc5QYrAo0Vmgf1qHc1KL_M,8253
2
- omlish/__about__.py,sha256=MFiFKUC3yK5vAd_nIoMJBCcGv-1JRmEmPlWpjfwcOkA,3380
2
+ omlish/__about__.py,sha256=irK5EMsRK45Vveo-bLYvfj4i3jGa_hT0w6FNpRHdcso,3380
3
3
  omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
4
4
  omlish/c3.py,sha256=ubu7lHwss5V4UznbejAI0qXhXahrU01MysuHOZI9C4U,8116
5
5
  omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
@@ -289,7 +289,7 @@ omlish/formats/json5/__init__.py,sha256=BsjPz5zJDji3GjQ8x8hWvcl1GYPV_ZIHnE3c2Sr8
289
289
  omlish/formats/json5/codec.py,sha256=ldnxCRo0JP1fkGLt0mMxJlLvNxqIF_1KUCcSp1HtI-M,452
290
290
  omlish/formats/json5/errors.py,sha256=AHkR9ySjAoQdUrizpqgL8fg0M5oe5mHZkml3KZHEvC4,38
291
291
  omlish/formats/json5/literals.py,sha256=rj4-9KFXfgdq5oK_eUkp57cgoMQ8T0gRaG9ga430he4,2429
292
- omlish/formats/json5/parsing.py,sha256=v1CPnJF73yX6eDe1GNfDVXFxBhBeoHrG5E5Tf5f6oL8,2341
292
+ omlish/formats/json5/parsing.py,sha256=FrH6CgAYoqHGgJMPfbhNNuvwxi20i5rus9pGHU-BcW0,2346
293
293
  omlish/formats/json5/_antlr/Json5Lexer.py,sha256=8TKxlENDsl6CPfoLR06uQSvhDnzGcY7fKsIhFJ_g6N4,23237
294
294
  omlish/formats/json5/_antlr/Json5Listener.py,sha256=fSiOzSS0CMjxaCev3sxZqJlW-buqIyDLwgnuRv-Uh80,2095
295
295
  omlish/formats/json5/_antlr/Json5Parser.py,sha256=nbbwoCPvEVRcEh5_t092XLmsXIHnbzONvH0W0g_BYkQ,19677
@@ -579,7 +579,7 @@ omlish/sockets/server/handlers.py,sha256=PPsb1X5oU9dN8jfztaMGsRiqWTyEANT-1aSLbS6
579
579
  omlish/sockets/server/server.py,sha256=FkaishIxJuU4it9tTI7wzlGqJYzFGXzDrd_HgV0jAmU,6253
580
580
  omlish/sockets/server/ssl.py,sha256=VE0GpdA-gYsN2m9_uvfDwWmXtIbRQqJomVdpGJO8o2M,1061
581
581
  omlish/sockets/server/threading.py,sha256=YmW3Ym_p5j_F4SIH9BgRHIObywjq1HS39j9CGWIcMAY,2856
582
- omlish/specs/__init__.py,sha256=zZwF8yXTEkSstYtORkDhVLK-_hWU8WOJCuBpognb_NY,118
582
+ omlish/specs/__init__.py,sha256=fxpcfXEWESH2kiPStKhl2dAdfLkZVTt_cssZKyqBLiQ,87
583
583
  omlish/specs/irc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
584
584
  omlish/specs/irc/messages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
585
585
  omlish/specs/irc/messages/base.py,sha256=JQWq4L-USYFw1DmHPpL3FiAwvynf6Hi48-zNdC__jT0,1240
@@ -640,6 +640,15 @@ omlish/specs/jsonschema/schemas/draft202012/vocabularies/validation.json,sha256=
640
640
  omlish/specs/openapi/__init__.py,sha256=zilQhafjvteRDF_TUIRgF293dBC6g-TJChmUb6T9VBQ,77
641
641
  omlish/specs/openapi/marshal.py,sha256=Z-E2Knm04C81N8AA8cibCVSl2ImhSpHZVc7yAhmPx88,2135
642
642
  omlish/specs/openapi/openapi.py,sha256=y4h04jeB7ORJSVrcy7apaBdpwLjIyscv1Ub5SderH2c,12682
643
+ omlish/specs/proto/Protobuf3.g4,sha256=chDrovFsuZaHf5W35WZNts3jOa1ssPwvWiJR4yVIgjw,5552
644
+ omlish/specs/proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
645
+ omlish/specs/proto/nodes.py,sha256=nwA6KyU9pZHLE9cO9dh46qTl6vfYJ8SjuUDlLBuoOms,776
646
+ omlish/specs/proto/parsing.py,sha256=Rrdhvl-QHBxykGFd9XltqG8GBPgHaw5rRM8wuELCdsA,2861
647
+ omlish/specs/proto/_antlr/Protobuf3Lexer.py,sha256=-FpQNpCJyhHf2dM4ngLtAtb7sssrtAXeR0W4WuKY4Yo,19471
648
+ omlish/specs/proto/_antlr/Protobuf3Listener.py,sha256=hjzAJjcj4xWRim-68v-6QwIsPVdPwOFUGz1rusRcaWU,14506
649
+ omlish/specs/proto/_antlr/Protobuf3Parser.py,sha256=VmkUyJx3WxIgAecOa1BGwbO9fVNysZt5-arQ-wDubpk,132411
650
+ omlish/specs/proto/_antlr/Protobuf3Visitor.py,sha256=zEVBXly2k9Cqmgdb45QwpLR-fZCEq8hpp2WQj-s7Wps,8782
651
+ omlish/specs/proto/_antlr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
643
652
  omlish/sql/__init__.py,sha256=TpZLsEJKJzvJ0eMzuV8hwOJJbkxBCV1RZPUMLAVB6io,173
644
653
  omlish/sql/abc.py,sha256=yrUSO2OSY6rtMyA0_MlrEFEyIKXLJymSPpmJwEjEJuc,4038
645
654
  omlish/sql/dbapi.py,sha256=o6umqE7zVFI_ax0TnCKAikhAIPXChYOwVULb_OdcL1c,2974
@@ -735,9 +744,9 @@ omlish/text/mangle.py,sha256=kfzFLfvepH-chl1P89_mdc5vC4FSqyPA2aVtgzuB8IY,1133
735
744
  omlish/text/minja.py,sha256=jZC-fp3Xuhx48ppqsf2Sf1pHbC0t8XBB7UpUUoOk2Qw,5751
736
745
  omlish/text/parts.py,sha256=JkNZpyR2tv2CNcTaWJJhpQ9E4F0yPR8P_YfDbZfMtwQ,6182
737
746
  omlish/text/random.py,sha256=jNWpqiaKjKyTdMXC-pWAsSC10AAP-cmRRPVhm59ZWLk,194
738
- omlish-0.0.0.dev251.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
739
- omlish-0.0.0.dev251.dist-info/METADATA,sha256=mYsGKjeHcS30unmOluKNzDF1SzqNbVkhC4jMoCs8nwI,4176
740
- omlish-0.0.0.dev251.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
741
- omlish-0.0.0.dev251.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
742
- omlish-0.0.0.dev251.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
743
- omlish-0.0.0.dev251.dist-info/RECORD,,
747
+ omlish-0.0.0.dev252.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
748
+ omlish-0.0.0.dev252.dist-info/METADATA,sha256=d3I-8A12dfY6BUTJyIZ70ySFdyaJLUuDZstZPmrYvD0,4176
749
+ omlish-0.0.0.dev252.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
750
+ omlish-0.0.0.dev252.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
751
+ omlish-0.0.0.dev252.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
752
+ omlish-0.0.0.dev252.dist-info/RECORD,,