omlish 0.0.0.dev84__py3-none-any.whl → 0.0.0.dev85__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 +2 -2
- omlish/formats/json/backends/default.py +4 -1
- omlish/formats/xml.py +3 -3
- omlish/marshal/__init__.py +5 -0
- omlish/marshal/polymorphism.py +80 -36
- omlish/marshal/unions.py +44 -1
- omlish/sql/queries/building.py +2 -0
- omlish/sql/queries/inserts.py +50 -0
- omlish/sql/queries/marshal.py +9 -0
- omlish/sql/queries/multi.py +1 -1
- omlish/sql/queries/rendering.py +25 -0
- {omlish-0.0.0.dev84.dist-info → omlish-0.0.0.dev85.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev84.dist-info → omlish-0.0.0.dev85.dist-info}/RECORD +17 -16
- {omlish-0.0.0.dev84.dist-info → omlish-0.0.0.dev85.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev84.dist-info → omlish-0.0.0.dev85.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev84.dist-info → omlish-0.0.0.dev85.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev84.dist-info → omlish-0.0.0.dev85.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
@@ -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
|
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
|
-
|
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.
|
30
|
-
dct['
|
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
|
omlish/marshal/__init__.py
CHANGED
@@ -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,
|
omlish/marshal/polymorphism.py
CHANGED
@@ -50,21 +50,19 @@ class Impl:
|
|
50
50
|
alts: ta.AbstractSet[str] = frozenset()
|
51
51
|
|
52
52
|
|
53
|
-
class
|
53
|
+
class Impls(ta.Sequence[Impl]):
|
54
54
|
def __init__(
|
55
55
|
self,
|
56
|
-
|
57
|
-
impls: ta.Iterable[Impl],
|
56
|
+
lst: ta.Iterable[Impl],
|
58
57
|
) -> None:
|
59
58
|
super().__init__()
|
60
|
-
self.
|
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.
|
66
|
-
if
|
67
|
-
raise TypeError(i.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
|
-
|
81
|
-
|
82
|
-
return self._ty
|
78
|
+
def __iter__(self) -> ta.Iterator[Impl]:
|
79
|
+
return iter(self._lst)
|
83
80
|
|
84
|
-
|
85
|
-
|
86
|
-
|
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
|
-
|
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
|
-
|
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)
|
omlish/sql/queries/building.py
CHANGED
@@ -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
|
+
)
|
omlish/sql/queries/marshal.py
CHANGED
@@ -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)]
|
omlish/sql/queries/multi.py
CHANGED
@@ -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,
|
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)
|
omlish/sql/queries/rendering.py
CHANGED
@@ -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,5 +1,5 @@
|
|
1
1
|
omlish/.manifests.json,sha256=hTFp9tvE72BxKloIq1s1SS0LRQlIsvMtO69Sbc47rKg,1704
|
2
|
-
omlish/__about__.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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/
|
415
|
-
omlish/sql/queries/
|
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=
|
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.
|
457
|
-
omlish-0.0.0.
|
458
|
-
omlish-0.0.0.
|
459
|
-
omlish-0.0.0.
|
460
|
-
omlish-0.0.0.
|
461
|
-
omlish-0.0.0.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|