omlish 0.0.0.dev84__py3-none-any.whl → 0.0.0.dev85__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
omlish/__about__.py CHANGED
@@ -1,5 +1,5 @@
1
- __version__ = '0.0.0.dev84'
2
- __revision__ = 'b3347da7d48862b90c274893e4f9bfa477fecc70'
1
+ __version__ = '0.0.0.dev85'
2
+ __revision__ = '24c65e4f91478fb31341b3508843574da87b8786-untracked'
3
3
 
4
4
 
5
5
  #
@@ -1,10 +1,13 @@
1
1
  from .base import Backend
2
+ from .orjson import ORJSON_BACKEND
2
3
  from .std import STD_BACKEND
3
4
  from .ujson import UJSON_BACKEND
4
5
 
5
6
 
6
7
  DEFAULT_BACKED: Backend
7
- if UJSON_BACKEND is not None:
8
+ if ORJSON_BACKEND is not None:
9
+ DEFAULT_BACKED = ORJSON_BACKEND
10
+ elif UJSON_BACKEND is not None:
8
11
  DEFAULT_BACKED = UJSON_BACKEND
9
12
  else:
10
13
  DEFAULT_BACKED = STD_BACKEND
omlish/formats/xml.py CHANGED
@@ -21,13 +21,13 @@ else:
21
21
  @dc.dataclass(frozen=True)
22
22
  class SimpleElement:
23
23
  tag: str
24
- attributes: ta.Mapping[str, str] | None = dc.xfield(default=None, repr_fn=dc.truthy_repr)
24
+ attrs: ta.Mapping[str, str] | None = dc.xfield(default=None, repr_fn=dc.truthy_repr)
25
25
  body: ta.Sequence[ta.Union['SimpleElement', str]] | None = dc.xfield(default=None, repr_fn=dc.truthy_repr)
26
26
 
27
27
  def as_dict(self) -> dict[str, ta.Any]:
28
28
  dct: dict[str, ta.Any] = {'tag': self.tag}
29
- if self.attributes:
30
- dct['attributes'] = self.attributes
29
+ if self.attrs:
30
+ dct['attrs'] = self.attrs
31
31
  if self.body:
32
32
  dct['body'] = [
33
33
  c.as_dict() if isinstance(c, SimpleElement) else c
@@ -77,9 +77,12 @@ from .objects import ( # noqa
77
77
 
78
78
  from .polymorphism import ( # noqa
79
79
  Impl,
80
+ Impls,
80
81
  Polymorphism,
81
82
  PolymorphismMarshalerFactory,
82
83
  PolymorphismUnmarshalerFactory,
84
+ make_polymorphism_marshaler,
85
+ make_polymorphism_unmarshaler,
83
86
  polymorphism_from_subclasses,
84
87
  )
85
88
 
@@ -101,6 +104,8 @@ from .standard import ( # noqa
101
104
 
102
105
  from .unions import ( # noqa
103
106
  PRIMITIVE_UNION_TYPES,
107
+ PolymorphismUnionMarshalerFactory,
108
+ PolymorphismUnionUnmarshalerFactory,
104
109
  PrimitiveUnionMarshaler,
105
110
  PrimitiveUnionMarshalerFactory,
106
111
  PrimitiveUnionUnmarshaler,
@@ -50,21 +50,19 @@ class Impl:
50
50
  alts: ta.AbstractSet[str] = frozenset()
51
51
 
52
52
 
53
- class Polymorphism:
53
+ class Impls(ta.Sequence[Impl]):
54
54
  def __init__(
55
55
  self,
56
- ty: type,
57
- impls: ta.Iterable[Impl],
56
+ lst: ta.Iterable[Impl],
58
57
  ) -> None:
59
58
  super().__init__()
60
- self._ty = ty
61
- self._impls = list(impls)
59
+ self._lst = list(lst)
62
60
 
63
61
  by_ty: dict[type, Impl] = {}
64
62
  by_tag: dict[str, Impl] = {}
65
- for i in self._impls:
66
- if not issubclass(i.ty, ty) or i.ty in by_ty:
67
- raise TypeError(i.ty, ty)
63
+ for i in self._lst:
64
+ if i.ty in by_ty:
65
+ raise TypeError(i.ty)
68
66
  if i.tag in by_tag:
69
67
  raise NameError(i.tag)
70
68
  for a in i.alts:
@@ -77,13 +75,20 @@ class Polymorphism:
77
75
  self._by_ty = by_ty
78
76
  self._by_tag = by_tag
79
77
 
80
- @property
81
- def ty(self) -> type:
82
- return self._ty
78
+ def __iter__(self) -> ta.Iterator[Impl]:
79
+ return iter(self._lst)
83
80
 
84
- @property
85
- def impls(self) -> ta.Sequence[Impl]:
86
- return self._impls
81
+ def __len__(self) -> int:
82
+ return len(self._lst)
83
+
84
+ @ta.overload
85
+ def __getitem__(self, index: int) -> Impl: ...
86
+
87
+ @ta.overload
88
+ def __getitem__(self, index: slice) -> ta.Sequence[Impl]: ...
89
+
90
+ def __getitem__(self, index):
91
+ return self._lst[index]
87
92
 
88
93
  @property
89
94
  def by_ty(self) -> ta.Mapping[type, Impl]:
@@ -94,6 +99,29 @@ class Polymorphism:
94
99
  return self._by_tag
95
100
 
96
101
 
102
+ class Polymorphism:
103
+ def __init__(
104
+ self,
105
+ ty: type,
106
+ impls: ta.Iterable[Impl],
107
+ ) -> None:
108
+ super().__init__()
109
+ self._ty = ty
110
+ self._impls = Impls(impls)
111
+
112
+ for i in self._impls:
113
+ if not issubclass(i.ty, ty):
114
+ raise TypeError(i.ty, ty)
115
+
116
+ @property
117
+ def ty(self) -> type:
118
+ return self._ty
119
+
120
+ @property
121
+ def impls(self) -> Impls:
122
+ return self._impls
123
+
124
+
97
125
  def polymorphism_from_subclasses(
98
126
  ty: type,
99
127
  *,
@@ -151,6 +179,23 @@ class FieldPolymorphismMarshaler(Marshaler):
151
179
  return {self.tf: tag, **m.marshal(ctx, o)} # type: ignore
152
180
 
153
181
 
182
+ def make_polymorphism_marshaler(
183
+ impls: Impls,
184
+ tt: TypeTagging,
185
+ ctx: MarshalContext,
186
+ ) -> Marshaler:
187
+ m = {
188
+ i.ty: (i.tag, ctx.make(i.ty))
189
+ for i in impls
190
+ }
191
+ if isinstance(tt, WrapperTypeTagging):
192
+ return WrapperPolymorphismMarshaler(m)
193
+ elif isinstance(tt, FieldTypeTagging):
194
+ return FieldPolymorphismMarshaler(m, tt.field)
195
+ else:
196
+ raise TypeError(tt)
197
+
198
+
154
199
  @dc.dataclass(frozen=True)
155
200
  class PolymorphismMarshalerFactory(MarshalerFactory):
156
201
  p: Polymorphism
@@ -161,16 +206,7 @@ class PolymorphismMarshalerFactory(MarshalerFactory):
161
206
 
162
207
  def fn(self, ctx: MarshalContext, rty: rfl.Type) -> Marshaler:
163
208
  check.is_(rty, self.p.ty)
164
- m = {
165
- i.ty: (i.tag, ctx.make(i.ty))
166
- for i in self.p.impls
167
- }
168
- if isinstance(self.tt, WrapperTypeTagging):
169
- return WrapperPolymorphismMarshaler(m)
170
- elif isinstance(self.tt, FieldTypeTagging):
171
- return FieldPolymorphismMarshaler(m, self.tt.field)
172
- else:
173
- raise TypeError(self.tt)
209
+ return make_polymorphism_marshaler(self.p.impls, self.tt, ctx)
174
210
 
175
211
 
176
212
  ##
@@ -199,6 +235,25 @@ class FieldPolymorphismUnmarshaler(Unmarshaler):
199
235
  return u.unmarshal(ctx, ma)
200
236
 
201
237
 
238
+ def make_polymorphism_unmarshaler(
239
+ impls: Impls,
240
+ tt: TypeTagging,
241
+ ctx: UnmarshalContext,
242
+ ) -> Unmarshaler:
243
+ m = {
244
+ t: u
245
+ for i in impls
246
+ for u in [ctx.make(i.ty)]
247
+ for t in [i.tag, *i.alts]
248
+ }
249
+ if isinstance(tt, WrapperTypeTagging):
250
+ return WrapperPolymorphismUnmarshaler(m)
251
+ elif isinstance(tt, FieldTypeTagging):
252
+ return FieldPolymorphismUnmarshaler(m, tt.field)
253
+ else:
254
+ raise TypeError(tt)
255
+
256
+
202
257
  @dc.dataclass(frozen=True)
203
258
  class PolymorphismUnmarshalerFactory(UnmarshalerFactory):
204
259
  p: Polymorphism
@@ -209,15 +264,4 @@ class PolymorphismUnmarshalerFactory(UnmarshalerFactory):
209
264
 
210
265
  def fn(self, ctx: UnmarshalContext, rty: rfl.Type) -> Unmarshaler:
211
266
  check.is_(rty, self.p.ty)
212
- m = {
213
- t: u
214
- for i in self.p.impls
215
- for u in [ctx.make(i.ty)]
216
- for t in [i.tag, *i.alts]
217
- }
218
- if isinstance(self.tt, WrapperTypeTagging):
219
- return WrapperPolymorphismUnmarshaler(m)
220
- elif isinstance(self.tt, FieldTypeTagging):
221
- return FieldPolymorphismUnmarshaler(m, self.tt.field)
222
- else:
223
- raise TypeError(self.tt)
267
+ return make_polymorphism_unmarshaler(self.p.impls, self.tt, ctx)
omlish/marshal/unions.py CHANGED
@@ -1,7 +1,8 @@
1
- import dataclasses as dc
2
1
  import typing as ta
3
2
 
3
+ from .. import cached
4
4
  from .. import check
5
+ from .. import dataclasses as dc
5
6
  from .. import matchfns as mfs
6
7
  from .. import reflect as rfl
7
8
  from .base import MarshalContext
@@ -10,6 +11,11 @@ from .base import MarshalerFactory
10
11
  from .base import UnmarshalContext
11
12
  from .base import Unmarshaler
12
13
  from .base import UnmarshalerFactory
14
+ from .polymorphism import Impls
15
+ from .polymorphism import TypeTagging
16
+ from .polymorphism import WrapperTypeTagging
17
+ from .polymorphism import make_polymorphism_marshaler
18
+ from .polymorphism import make_polymorphism_unmarshaler
13
19
  from .values import Value
14
20
 
15
21
 
@@ -103,3 +109,40 @@ class PrimitiveUnionUnmarshalerFactory(UnmarshalerFactory):
103
109
 
104
110
  PRIMITIVE_UNION_MARSHALER_FACTORY = PrimitiveUnionMarshalerFactory()
105
111
  PRIMITIVE_UNION_UNMARSHALER_FACTORY = PrimitiveUnionUnmarshalerFactory()
112
+
113
+
114
+ ##
115
+
116
+
117
+ @dc.dataclass(frozen=True)
118
+ class PolymorphismUnionMarshalerFactory(MarshalerFactory):
119
+ impls: Impls
120
+ tt: TypeTagging = WrapperTypeTagging()
121
+
122
+ @cached.property
123
+ @dc.init
124
+ def rty(self) -> rfl.Union:
125
+ return rfl.type_(ta.Union[*tuple(i.ty for i in self.impls)]) # type: ignore
126
+
127
+ def guard(self, ctx: MarshalContext, rty: rfl.Type) -> bool:
128
+ return isinstance(rty, rfl.Union) and rty == self.rty
129
+
130
+ def fn(self, ctx: MarshalContext, rty: rfl.Type) -> Marshaler:
131
+ return make_polymorphism_marshaler(self.impls, self.tt, ctx)
132
+
133
+
134
+ @dc.dataclass(frozen=True)
135
+ class PolymorphismUnionUnmarshalerFactory(UnmarshalerFactory):
136
+ impls: Impls
137
+ tt: TypeTagging = WrapperTypeTagging()
138
+
139
+ @cached.property
140
+ @dc.init
141
+ def rty(self) -> rfl.Union:
142
+ return rfl.type_(ta.Union[*tuple(i.ty for i in self.impls)]) # type: ignore
143
+
144
+ def guard(self, ctx: UnmarshalContext, rty: rfl.Type) -> bool:
145
+ return isinstance(rty, rfl.Union) and rty == self.rty
146
+
147
+ def fn(self, ctx: UnmarshalContext, rty: rfl.Type) -> Unmarshaler:
148
+ return make_polymorphism_unmarshaler(self.impls, self.tt, ctx)
@@ -2,6 +2,7 @@ from .base import Builder
2
2
  from .binary import BinaryBuilder
3
3
  from .exprs import ExprBuilder
4
4
  from .idents import IdentBuilder
5
+ from .inserts import InsertBuilder
5
6
  from .multi import MultiBuilder
6
7
  from .names import NameBuilder
7
8
  from .relations import RelationBuilder
@@ -11,6 +12,7 @@ from .unary import UnaryBuilder
11
12
 
12
13
 
13
14
  class StdBuilder(
15
+ InsertBuilder,
14
16
  SelectBuilder,
15
17
  StmtBuilder,
16
18
 
@@ -0,0 +1,50 @@
1
+ import typing as ta
2
+
3
+ from ... import dataclasses as dc
4
+ from ... import lang
5
+ from .exprs import CanExpr
6
+ from .exprs import Expr
7
+ from .exprs import ExprBuilder
8
+ from .idents import CanIdent
9
+ from .idents import Ident
10
+ from .relations import CanRelation
11
+ from .relations import Relation
12
+ from .relations import RelationBuilder
13
+ from .selects import Select
14
+ from .stmts import Stmt
15
+
16
+
17
+ ##
18
+
19
+
20
+ class Values(dc.Frozen, lang.Final):
21
+ vs: ta.Sequence[Expr]
22
+
23
+
24
+ class Insert(Stmt, lang.Final):
25
+ columns: ta.Sequence[Ident]
26
+ into: Relation
27
+ data: Values | Select
28
+
29
+
30
+ CanValues: ta.TypeAlias = Values | ta.Sequence[CanExpr]
31
+
32
+
33
+ class InsertBuilder(ExprBuilder, RelationBuilder):
34
+ def values(self, vs: CanValues) -> Values:
35
+ if isinstance(vs, Values):
36
+ return vs
37
+ else:
38
+ return Values(tuple(self.expr(v) for v in vs))
39
+
40
+ def insert(
41
+ self,
42
+ columns: ta.Sequence[CanIdent],
43
+ into: CanRelation,
44
+ data: Select | Values | ta.Sequence[CanExpr],
45
+ ) -> Insert:
46
+ return Insert(
47
+ columns=tuple(self.ident(c) for c in columns),
48
+ into=self.relation(into),
49
+ data=data if isinstance(data, Select) else self.values(data),
50
+ )
@@ -11,8 +11,10 @@ from .base import Node
11
11
  from .binary import BinaryOp
12
12
  from .binary import BinaryOps
13
13
  from .exprs import Expr
14
+ from .inserts import Values
14
15
  from .multi import MultiKind
15
16
  from .relations import Relation
17
+ from .selects import Select
16
18
  from .stmts import Stmt
17
19
  from .unary import UnaryOp
18
20
  from .unary import UnaryOps
@@ -72,3 +74,10 @@ def _install_standard_marshalling() -> None:
72
74
  p = msh.polymorphism_from_subclasses(cls, naming=msh.Naming.SNAKE)
73
75
  msh.STANDARD_MARSHALER_FACTORIES[0:0] = [msh.PolymorphismMarshalerFactory(p)]
74
76
  msh.STANDARD_UNMARSHALER_FACTORIES[0:0] = [msh.PolymorphismUnmarshalerFactory(p)]
77
+
78
+ insert_data_impls = msh.Impls([
79
+ msh.Impl(Values, 'values'),
80
+ msh.Impl(Select, 'select'),
81
+ ])
82
+ msh.STANDARD_MARSHALER_FACTORIES[0:0] = [msh.PolymorphismUnionMarshalerFactory(insert_data_impls)]
83
+ msh.STANDARD_UNMARSHALER_FACTORIES[0:0] = [msh.PolymorphismUnionUnmarshalerFactory(insert_data_impls)]
@@ -28,7 +28,7 @@ class MultiBuilder(ExprBuilder):
28
28
  if len(es) == 1:
29
29
  return self.expr(es[0])
30
30
  else:
31
- return Multi(k, [self.expr(e) for e in es])
31
+ return Multi(k, tuple(self.expr(e) for e in es))
32
32
 
33
33
  def and_(self, *es: CanExpr) -> Expr:
34
34
  return self.multi(MultiKind.AND, *es)
@@ -27,6 +27,8 @@ from .binary import BinaryOps
27
27
  from .exprs import Literal
28
28
  from .exprs import NameExpr
29
29
  from .idents import Ident
30
+ from .inserts import Insert
31
+ from .inserts import Values
30
32
  from .multi import Multi
31
33
  from .multi import MultiKind
32
34
  from .names import Name
@@ -98,6 +100,29 @@ class StdRenderer(Renderer):
98
100
  def render_ident(self, o: Ident) -> None:
99
101
  self._out.write(f'"{o.s}"')
100
102
 
103
+ # inserts
104
+
105
+ @Renderer.render.register
106
+ def render_values(self, o: Values) -> None:
107
+ self._out.write('values (')
108
+ for i, v in enumerate(o.vs):
109
+ if i:
110
+ self._out.write(', ')
111
+ self.render(v)
112
+ self._out.write(')')
113
+
114
+ @Renderer.render.register
115
+ def render_insert(self, o: Insert) -> None:
116
+ self._out.write('insert into ')
117
+ self.render(o.into)
118
+ self._out.write(' (')
119
+ for i, c in enumerate(o.columns):
120
+ if i:
121
+ self._out.write(', ')
122
+ self.render(c)
123
+ self._out.write(') ')
124
+ self.render(o.data)
125
+
101
126
  # multis
102
127
 
103
128
  MULTI_KIND_TO_STR: ta.ClassVar[ta.Mapping[MultiKind, str]] = {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omlish
3
- Version: 0.0.0.dev84
3
+ Version: 0.0.0.dev85
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -1,5 +1,5 @@
1
1
  omlish/.manifests.json,sha256=hTFp9tvE72BxKloIq1s1SS0LRQlIsvMtO69Sbc47rKg,1704
2
- omlish/__about__.py,sha256=oOKwJVkrCVI_eRBapOS36eRWek5mbyQvP62epTd67RE,3345
2
+ omlish/__about__.py,sha256=k58Z80qSth9c-pBdbNtNHrjB2AYw-SW6T3eOVAZW-eU,3355
3
3
  omlish/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  omlish/argparse.py,sha256=Dc73G8lyoQBLvXhMYUbzQUh4SJu_OTvKUXjSUxq_ang,7499
5
5
  omlish/c3.py,sha256=4vogWgwPb8TbNS2KkZxpoWbwjj7MuHG2lQG-hdtkvjI,8062
@@ -181,7 +181,7 @@ omlish/docker/manifests.py,sha256=LR4FpOGNUT3bZQ-gTjB6r_-1C3YiG30QvevZjrsVUQM,70
181
181
  omlish/formats/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
182
182
  omlish/formats/dotenv.py,sha256=UjZl3gac-0U24sDjCCGMcCqO1UCWG2Zs8PZ4JdAg2YE,17348
183
183
  omlish/formats/props.py,sha256=JwFJbKblqzqnzXf7YKFzQSDfcAXzkKsfoYvad6FPy98,18945
184
- omlish/formats/xml.py,sha256=FYNUliVZproz4cA3nOTqj0ShfPMQ7rEIeMEP4umDNho,1511
184
+ omlish/formats/xml.py,sha256=ggiOwSERt4d9XmZwLZiDIh5qnFJS4jdmow9m9_9USps,1491
185
185
  omlish/formats/yaml.py,sha256=wTW8ECG9jyA7qIFUqKZUro4KAKpN4IvcW_qhlrKveXM,6836
186
186
  omlish/formats/json/__init__.py,sha256=xqW2APLGvCTO9dVTOlroR_AdrA5bCkdmUnbTkYHhJ7U,379
187
187
  omlish/formats/json/consts.py,sha256=u-x-qXqZvK0tWk3l3TrCTjk4mSjKmZ_ATdmd1hwHNAY,263
@@ -190,7 +190,7 @@ omlish/formats/json/json.py,sha256=Mdqv2vdMi7gp96eV0BIYH5UdWpjWfsh-tSMZeywG-08,3
190
190
  omlish/formats/json/render.py,sha256=H6q1R3gL6ULAnfEhQRKDOzDJjWizdsRDYxIerBSEbq8,3797
191
191
  omlish/formats/json/backends/__init__.py,sha256=gnaNDCxy_KmmPUPDnjxO5_WjuWxLGbI9FYWx8ZJuQUU,97
192
192
  omlish/formats/json/backends/base.py,sha256=WqtyoM82pyM0NyqpPwndrebr1bUVU1QlpmVQNrcAO8c,1114
193
- omlish/formats/json/backends/default.py,sha256=_roVwUL40yU4spmUR9O86Ps9ytlpVU_EqolN-wdlSe8,218
193
+ omlish/formats/json/backends/default.py,sha256=a-eM-Y1IHdpYvZFjazwq_orRncjtYR7BKxP_2kpEXog,322
194
194
  omlish/formats/json/backends/jiter.py,sha256=8qv_XWGpcupPtVm6Z_egHio_iY1Kk8eqkvXTF6fVZr4,1193
195
195
  omlish/formats/json/backends/orjson.py,sha256=wR8pMGFtkhZGHcNVk7vNYUnv8lUapdK89p6QpETIs9w,3778
196
196
  omlish/formats/json/backends/std.py,sha256=PM00Kh9ZR2XzollHMEvdo35Eml1N-zFfRW-LOCV5ftM,3085
@@ -308,7 +308,7 @@ omlish/logs/formatters.py,sha256=q79nMnR2mRIStPyGrydQHpYTXgC5HHptt8lH3W2Wwbs,671
308
308
  omlish/logs/handlers.py,sha256=nyuFgmO05By_Xwq7es58ClzS51-F53lJL7gD0x5IqAg,228
309
309
  omlish/logs/noisy.py,sha256=Ubc-eTH6ZbGYsLfUUi69JAotwuUwzb-SJBeGo_0dIZI,348
310
310
  omlish/logs/utils.py,sha256=MgGovbP0zUrZ3FGD3qYNQWn-l0jy0Y0bStcQvv5BOmQ,391
311
- omlish/marshal/__init__.py,sha256=G0MDeBStBjz9Njq-rt5C6WbuCik6c8st7cipwMVw668,2139
311
+ omlish/marshal/__init__.py,sha256=iVA7n31L08Bdub6HKPvYOXVvDhk2CMA6rPeKDL_u1to,2298
312
312
  omlish/marshal/any.py,sha256=e82OyYK3Emm1P1ClnsnxP7fIWC2iNVyW0H5nK4mLmWM,779
313
313
  omlish/marshal/base.py,sha256=7ZpJOMPlvtslhDdRlNZCC5MiUGu7Qfoq_S_miD0lmQY,6738
314
314
  omlish/marshal/base64.py,sha256=F-3ogJdcFCtWINRgJgWT0rErqgx6f4qahhcg8OrkqhE,1089
@@ -329,11 +329,11 @@ omlish/marshal/nop.py,sha256=2mWve_dicFAiUQ2Y5asKkUW-XGmEE9Qi2ClIasFad0c,461
329
329
  omlish/marshal/numbers.py,sha256=kFRIX9l1yofiYzafV6SnYfEg0PiCsAqeRHOeT6BSxlM,1672
330
330
  omlish/marshal/objects.py,sha256=74tUmMymimSqgd4a6kyMh_owJe6J7YQXwCXEF-JWt1c,8419
331
331
  omlish/marshal/optionals.py,sha256=r0XB5rqfasvgZJNrKYd6Unq2U4nHt3JURi26j0dYHlw,1499
332
- omlish/marshal/polymorphism.py,sha256=gCQ4_uzuqOcWstihK3twiMc-10G1ZHWLuLZxbajbecY,5644
332
+ omlish/marshal/polymorphism.py,sha256=2SxrfneA9QdhNdxieEGFnHDHpUo3ftETA9dMbCbmbWY,6511
333
333
  omlish/marshal/primitives.py,sha256=f_6m24Cb-FDGsZpYSas11nLt3xCCEUXugw3Hv4-aNhg,1291
334
334
  omlish/marshal/registries.py,sha256=FvC6qXHCizNB2QmU_N3orxW7iqfGYkiUXYYdTRWS6HA,2353
335
335
  omlish/marshal/standard.py,sha256=vcC17ZZW33lRki7jrRd-saHGUZcXEHOpbPNGxWWbLWI,3143
336
- omlish/marshal/unions.py,sha256=ZWl0maHwh1V_cSnNmuCbbCQZzqlNtOModsTwnVTXNPA,2735
336
+ omlish/marshal/unions.py,sha256=DSs_g0F6EiefCturQPWv70VUAmsZgqEU9flmgxpxm7o,4137
337
337
  omlish/marshal/utils.py,sha256=puKJpwPpuDlMOIrKMcLTRLJyMiL6n_Xs-p59AuDEymA,543
338
338
  omlish/marshal/uuids.py,sha256=H4B7UX_EPNmP2tC8bubcKrPLTS4aQu98huvbXQ3Zv2g,910
339
339
  omlish/marshal/values.py,sha256=ssHiWdg_L6M17kAn8GiGdPW7UeQOm3RDikWkvwblf5I,263
@@ -408,15 +408,16 @@ omlish/sql/alchemy/sqlean.py,sha256=RbkuOuFIfM4fowwKk8-sQ6Dxk-tTUwxS94nY5Kxt52s,
408
408
  omlish/sql/queries/__init__.py,sha256=BdhONMw2JebX-jEgYb1WrM5L3vkJOzQRm0nt04IYKgQ,1229
409
409
  omlish/sql/queries/base.py,sha256=_8O3MbH_OEjBnhp2oIJUZ3ClaQ8l4Sj9BdPdsP0Ie-g,224
410
410
  omlish/sql/queries/binary.py,sha256=dcEzeEn104AMPuQ7QrJU2O-YCN3SUdxB5S4jaWKOUqY,2253
411
- omlish/sql/queries/building.py,sha256=pddD8-WDDGwX97OW7MLahaZTLsO_0NLxxIIAXXq1N40,537
411
+ omlish/sql/queries/building.py,sha256=dIQyEqNef2egKAf5qO_aZvXxlAEfxIGWS23qvJ-ozqQ,591
412
412
  omlish/sql/queries/exprs.py,sha256=kAI5PmvfJ-TqEzzc9H4_womFShT1eA0jWSZH2j2Wg-c,1802
413
413
  omlish/sql/queries/idents.py,sha256=erW6fE9UapuvW1ZeLfGFz7yuW6zzktWIWmOuAHeF8_g,496
414
- omlish/sql/queries/marshal.py,sha256=MKZ3CVcr7mpnmg25twVgErWk1SpRBEkE1mu2fE8QwUA,2508
415
- omlish/sql/queries/multi.py,sha256=KKHf8uS3Akk-YACPUwaqQO20NlDdrB3gbauOAejZzgU,832
414
+ omlish/sql/queries/inserts.py,sha256=PS3oqGjDgnjUd4sxHVpfKDQnsjG4_6KTseRzWyiJQl0,1229
415
+ omlish/sql/queries/marshal.py,sha256=Q-N6RcBzpj3FIa2-7eX6dniLjXKzUhRC9g--61UQUbM,2890
416
+ omlish/sql/queries/multi.py,sha256=7x6x-4jnPzxA6ZasBjnjFuhHFpWt5rGCua3UvuTMIJ0,837
416
417
  omlish/sql/queries/names.py,sha256=YiIyS6ehYMYrdLlUxMawV_Xf2zdi7RwVO9Qsxr_W4_4,772
417
418
  omlish/sql/queries/ops.py,sha256=B7IDfjr2DW5LJhWoNaY1WW90BJhe5ZtmxIELhWXbW-0,129
418
419
  omlish/sql/queries/relations.py,sha256=-d3n-dN17c3TPMZmzSplhWawllUzdq12XPDAuzoeMEQ,838
419
- omlish/sql/queries/rendering.py,sha256=AC2PSGFCLXYk38mnH7EAMV7hQOKp5x6O-ZYV8FXgnAM,4360
420
+ omlish/sql/queries/rendering.py,sha256=vpZY6rAjX5MZl72Tk6_tle3CUPi6U28sN4PcQ7aZ1iI,5055
420
421
  omlish/sql/queries/selects.py,sha256=EcHlyKl5kGSY1d3GVxnImhGCTB6WvwQnlSA9eZanBqU,1364
421
422
  omlish/sql/queries/stmts.py,sha256=pBqwD7dRlqMu6uh6vR3xaWOEgbZCcFWbOQ9ryYd17T4,441
422
423
  omlish/sql/queries/unary.py,sha256=MEYBDZn_H0bexmUrJeONOv5-gIpYowUaXOsEHeQM4ks,1144
@@ -453,9 +454,9 @@ omlish/text/delimit.py,sha256=ubPXcXQmtbOVrUsNh5gH1mDq5H-n1y2R4cPL5_DQf68,4928
453
454
  omlish/text/glyphsplit.py,sha256=Ug-dPRO7x-OrNNr8g1y6DotSZ2KH0S-VcOmUobwa4B0,3296
454
455
  omlish/text/indent.py,sha256=6Jj6TFY9unaPa4xPzrnZemJ-fHsV53IamP93XGjSUHs,1274
455
456
  omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
456
- omlish-0.0.0.dev84.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
457
- omlish-0.0.0.dev84.dist-info/METADATA,sha256=Ui6NExa9RJ31Hhf-FtoRkeGzkSw-2RiAy2bI-1Octl8,3987
458
- omlish-0.0.0.dev84.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
459
- omlish-0.0.0.dev84.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
460
- omlish-0.0.0.dev84.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
461
- omlish-0.0.0.dev84.dist-info/RECORD,,
457
+ omlish-0.0.0.dev85.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
458
+ omlish-0.0.0.dev85.dist-info/METADATA,sha256=qZazqEAxsweclSEJaWK9VAPkIIz48Xl30VrfFamUMi0,3987
459
+ omlish-0.0.0.dev85.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
460
+ omlish-0.0.0.dev85.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
461
+ omlish-0.0.0.dev85.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
462
+ omlish-0.0.0.dev85.dist-info/RECORD,,