omlish 0.0.0.dev438__py3-none-any.whl → 0.0.0.dev439__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/dataclasses/impl/api/classes/make.py +1 -1
- omlish/dataclasses/tools/static.py +1 -1
- omlish/formats/json/stream/__init__.py +2 -2
- omlish/formats/json/stream/building.py +2 -2
- omlish/formats/json/stream/parsing.py +4 -4
- omlish/formats/json/stream/rendering.py +6 -6
- omlish/formats/json/stream/utils.py +2 -2
- omlish/inject/__init__.py +1 -0
- omlish/iterators/__init__.py +2 -0
- omlish/iterators/transforms.py +204 -0
- omlish/lang/classes/bindable.py +1 -1
- omlish/lang/classes/restrict.py +8 -0
- omlish/lite/inject.py +1 -0
- omlish/lite/marshal.py +1 -0
- omlish/reflect/types.py +2 -2
- omlish/sql/queries/_marshal.py +1 -1
- {omlish-0.0.0.dev438.dist-info → omlish-0.0.0.dev439.dist-info}/METADATA +2 -2
- {omlish-0.0.0.dev438.dist-info → omlish-0.0.0.dev439.dist-info}/RECORD +23 -22
- {omlish-0.0.0.dev438.dist-info → omlish-0.0.0.dev439.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev438.dist-info → omlish-0.0.0.dev439.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev438.dist-info → omlish-0.0.0.dev439.dist-info}/licenses/LICENSE +0 -0
- {omlish-0.0.0.dev438.dist-info → omlish-0.0.0.dev439.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
@@ -142,7 +142,7 @@ def make_dataclass( # noqa
|
|
142
142
|
|
143
143
|
if module is None:
|
144
144
|
try:
|
145
|
-
module = sys._getframemodulename(_frame_offset) or '__main__' #
|
145
|
+
module = sys._getframemodulename(_frame_offset) or '__main__' # noqa
|
146
146
|
except AttributeError:
|
147
147
|
with contextlib.suppress(AttributeError, ValueError):
|
148
148
|
module = sys._getframe(_frame_offset).f_globals.get('__name__', '__main__') # noqa
|
@@ -142,7 +142,7 @@ class Static(lang.Abstract):
|
|
142
142
|
n_md[_ExtraFieldParamsMetadata] = {
|
143
143
|
fs_f.name: getattr(x_fs, fs_f.name)
|
144
144
|
for fs_f in dc.fields(FieldSpec) # noqa
|
145
|
-
if fs_f not in dc.Field.__slots__
|
145
|
+
if fs_f not in dc.Field.__slots__
|
146
146
|
and fs_f.name not in ('default', 'default_factory')
|
147
147
|
}
|
148
148
|
new_fld.metadata = n_md # type: ignore[assignment]
|
@@ -5,8 +5,8 @@ from .parsing import BeginArray
|
|
5
5
|
from .parsing import BeginObject
|
6
6
|
from .parsing import EndArray
|
7
7
|
from .parsing import EndObject
|
8
|
+
from .parsing import Event
|
8
9
|
from .parsing import JsonStreamObject
|
9
|
-
from .parsing import JsonStreamParserEvent
|
10
10
|
from .parsing import Key
|
11
11
|
|
12
12
|
|
@@ -62,7 +62,7 @@ class JsonValueBuilder:
|
|
62
62
|
else:
|
63
63
|
raise self.StateError
|
64
64
|
|
65
|
-
def __call__(self, e:
|
65
|
+
def __call__(self, e: Event) -> ta.Iterable[ta.Any]:
|
66
66
|
stk = self._stack
|
67
67
|
|
68
68
|
#
|
@@ -35,7 +35,7 @@ class EndArray(lang.Marker):
|
|
35
35
|
pass
|
36
36
|
|
37
37
|
|
38
|
-
|
38
|
+
Event: ta.TypeAlias = ta.Union[ # noqa
|
39
39
|
type[BeginObject],
|
40
40
|
Key,
|
41
41
|
type[EndObject],
|
@@ -47,7 +47,7 @@ JsonStreamParserEvent: ta.TypeAlias = ta.Union[ # noqa
|
|
47
47
|
]
|
48
48
|
|
49
49
|
|
50
|
-
class
|
50
|
+
class Events(lang.Namespace):
|
51
51
|
BeginObject = BeginObject
|
52
52
|
Key = Key
|
53
53
|
EndObject = EndObject
|
@@ -59,7 +59,7 @@ class JsonStreamParserEvents(lang.Namespace):
|
|
59
59
|
##
|
60
60
|
|
61
61
|
|
62
|
-
def yield_parser_events(obj: ta.Any) -> ta.
|
62
|
+
def yield_parser_events(obj: ta.Any) -> ta.Iterator[Event]:
|
63
63
|
if isinstance(obj, SCALAR_VALUE_TYPES):
|
64
64
|
yield obj # type: ignore
|
65
65
|
|
@@ -95,7 +95,7 @@ class JsonStreamObject(list):
|
|
95
95
|
return f'{self.__class__.__name__}({super().__repr__()})'
|
96
96
|
|
97
97
|
|
98
|
-
class JsonStreamParser(GenMachine[Token,
|
98
|
+
class JsonStreamParser(GenMachine[Token, Event]):
|
99
99
|
def __init__(
|
100
100
|
self,
|
101
101
|
*,
|
@@ -7,14 +7,14 @@ from .parsing import BeginArray
|
|
7
7
|
from .parsing import BeginObject
|
8
8
|
from .parsing import EndArray
|
9
9
|
from .parsing import EndObject
|
10
|
-
from .parsing import
|
10
|
+
from .parsing import Event
|
11
11
|
from .parsing import Key
|
12
12
|
|
13
13
|
|
14
14
|
##
|
15
15
|
|
16
16
|
|
17
|
-
class StreamJsonRenderer(AbstractJsonRenderer[ta.Iterable[
|
17
|
+
class StreamJsonRenderer(AbstractJsonRenderer[ta.Iterable[Event]]):
|
18
18
|
def __init__(
|
19
19
|
self,
|
20
20
|
*,
|
@@ -36,7 +36,7 @@ class StreamJsonRenderer(AbstractJsonRenderer[ta.Iterable[JsonStreamParserEvent]
|
|
36
36
|
self,
|
37
37
|
o: ta.Any,
|
38
38
|
state: AbstractJsonRenderer.State = AbstractJsonRenderer.State.VALUE,
|
39
|
-
) -> ta.
|
39
|
+
) -> ta.Iterator[str]:
|
40
40
|
if self._style is not None:
|
41
41
|
pre, post = self._style(o, state)
|
42
42
|
yield pre
|
@@ -52,7 +52,7 @@ class StreamJsonRenderer(AbstractJsonRenderer[ta.Iterable[JsonStreamParserEvent]
|
|
52
52
|
if post:
|
53
53
|
yield post
|
54
54
|
|
55
|
-
def _render(self, e:
|
55
|
+
def _render(self, e: Event) -> ta.Iterator[str]:
|
56
56
|
if self._need_delimit:
|
57
57
|
yield self._delimiter
|
58
58
|
self._need_delimit = False
|
@@ -124,12 +124,12 @@ class StreamJsonRenderer(AbstractJsonRenderer[ta.Iterable[JsonStreamParserEvent]
|
|
124
124
|
else:
|
125
125
|
raise TypeError(e)
|
126
126
|
|
127
|
-
def render(self, events: ta.Iterable[
|
127
|
+
def render(self, events: ta.Iterable[Event]) -> ta.Iterator[str]:
|
128
128
|
for e in events:
|
129
129
|
yield from self._render(e)
|
130
130
|
|
131
131
|
@classmethod
|
132
|
-
def render_str(cls, i: ta.Iterable[
|
132
|
+
def render_str(cls, i: ta.Iterable[Event], /, **kwargs: ta.Any) -> str:
|
133
133
|
out = io.StringIO()
|
134
134
|
for s in cls(**kwargs).render(i):
|
135
135
|
out.write(s)
|
@@ -31,8 +31,8 @@ from .building import JsonValueBuilder
|
|
31
31
|
from .errors import JsonStreamError
|
32
32
|
from .lexing import JsonStreamLexer
|
33
33
|
from .lexing import Token
|
34
|
+
from .parsing import Event
|
34
35
|
from .parsing import JsonStreamParser
|
35
|
-
from .parsing import JsonStreamParserEvent
|
36
36
|
|
37
37
|
|
38
38
|
##
|
@@ -110,7 +110,7 @@ class DebugJsonStreamValueParser(JsonStreamValueParser):
|
|
110
110
|
|
111
111
|
self._chars: list[str] = []
|
112
112
|
self._tokens: list[Token] = []
|
113
|
-
self._events: list[
|
113
|
+
self._events: list[Event] = []
|
114
114
|
self._values: list[ta.Any] = []
|
115
115
|
|
116
116
|
def feed(self, i: ta.Iterable[str]) -> ta.Iterator[ta.Any]:
|
omlish/inject/__init__.py
CHANGED
omlish/iterators/__init__.py
CHANGED
@@ -0,0 +1,204 @@
|
|
1
|
+
import abc
|
2
|
+
import dataclasses as dc
|
3
|
+
import itertools
|
4
|
+
import typing as ta
|
5
|
+
|
6
|
+
from .. import lang
|
7
|
+
|
8
|
+
|
9
|
+
T = ta.TypeVar('T')
|
10
|
+
U = ta.TypeVar('U')
|
11
|
+
|
12
|
+
Transform: ta.TypeAlias = ta.Callable[[ta.Iterable[T]], ta.Iterable[U]]
|
13
|
+
|
14
|
+
X0 = ta.TypeVar('X0')
|
15
|
+
X1 = ta.TypeVar('X1')
|
16
|
+
X2 = ta.TypeVar('X2')
|
17
|
+
X3 = ta.TypeVar('X3')
|
18
|
+
X4 = ta.TypeVar('X4')
|
19
|
+
X5 = ta.TypeVar('X5')
|
20
|
+
|
21
|
+
|
22
|
+
##
|
23
|
+
|
24
|
+
|
25
|
+
_filter = filter
|
26
|
+
_map = map
|
27
|
+
_zip = zip
|
28
|
+
|
29
|
+
|
30
|
+
##
|
31
|
+
|
32
|
+
|
33
|
+
class Transform_(lang.Abstract, ta.Generic[T, U]): # noqa
|
34
|
+
@abc.abstractmethod
|
35
|
+
def __call__(self, it: ta.Iterable[T]) -> ta.Iterable[U]:
|
36
|
+
raise NotImplementedError
|
37
|
+
|
38
|
+
|
39
|
+
##
|
40
|
+
|
41
|
+
|
42
|
+
@dc.dataclass(frozen=True)
|
43
|
+
class Filter(Transform_[T, T]):
|
44
|
+
fn: ta.Callable[[T], bool] | None
|
45
|
+
|
46
|
+
def __call__(self, it: ta.Iterable[T]) -> ta.Iterable[T]:
|
47
|
+
return _filter(self.fn, it)
|
48
|
+
|
49
|
+
|
50
|
+
filter = Filter # noqa
|
51
|
+
|
52
|
+
|
53
|
+
##
|
54
|
+
|
55
|
+
|
56
|
+
@dc.dataclass(frozen=True)
|
57
|
+
class Map(Transform_[T, U]):
|
58
|
+
fn: ta.Callable[[T], U]
|
59
|
+
|
60
|
+
def __call__(self, it: ta.Iterable[T]) -> ta.Iterable[U]:
|
61
|
+
return _map(self.fn, it)
|
62
|
+
|
63
|
+
|
64
|
+
map = Map # noqa
|
65
|
+
|
66
|
+
|
67
|
+
##
|
68
|
+
|
69
|
+
|
70
|
+
@dc.dataclass(frozen=True)
|
71
|
+
class Apply(Transform_[T, T]):
|
72
|
+
fn: ta.Callable[[T], ta.Any]
|
73
|
+
|
74
|
+
def __call__(self, it: ta.Iterable[T]) -> ta.Iterable[T]:
|
75
|
+
return _map(lambda e: (self.fn(e), e)[1], it)
|
76
|
+
|
77
|
+
|
78
|
+
apply = Apply
|
79
|
+
|
80
|
+
|
81
|
+
##
|
82
|
+
|
83
|
+
|
84
|
+
@dc.dataclass(frozen=True)
|
85
|
+
class Flatten(Transform_[ta.Iterable[T], T]):
|
86
|
+
def __call__(self, it: ta.Iterable[ta.Iterable[T]]) -> ta.Iterable[U]:
|
87
|
+
return itertools.chain.from_iterable(it) # type: ignore[arg-type]
|
88
|
+
|
89
|
+
|
90
|
+
flatten = Flatten
|
91
|
+
|
92
|
+
|
93
|
+
##
|
94
|
+
|
95
|
+
|
96
|
+
@dc.dataclass(frozen=True)
|
97
|
+
class FlatMap(Transform_[T, U]):
|
98
|
+
fn: ta.Callable[[T], ta.Iterable[U]]
|
99
|
+
|
100
|
+
def __call__(self, it: ta.Iterable[T]) -> ta.Iterable[U]:
|
101
|
+
return itertools.chain.from_iterable(_map(self.fn, it))
|
102
|
+
|
103
|
+
|
104
|
+
flat_map = FlatMap
|
105
|
+
|
106
|
+
# Alternatively:
|
107
|
+
# def flat_map(fn: ta.Callable[[T], ta.Iterable[U]]) -> Transform[T, U]:
|
108
|
+
# return compose(map(fn), flatten())
|
109
|
+
|
110
|
+
|
111
|
+
##
|
112
|
+
|
113
|
+
|
114
|
+
@dc.dataclass(frozen=True)
|
115
|
+
class Compose(Transform_[T, U]):
|
116
|
+
tfs: ta.Sequence[Transform]
|
117
|
+
|
118
|
+
def __call__(self, it: ta.Iterable[T]) -> ta.Iterable[U]:
|
119
|
+
for tf in self.tfs:
|
120
|
+
it = tf(it)
|
121
|
+
return it # type: ignore[return-value]
|
122
|
+
|
123
|
+
|
124
|
+
@ta.overload
|
125
|
+
def compose(
|
126
|
+
tf0: Transform[T, U],
|
127
|
+
) -> Transform[T, U]:
|
128
|
+
...
|
129
|
+
|
130
|
+
|
131
|
+
@ta.overload
|
132
|
+
def compose(
|
133
|
+
tf0: Transform[T, X0],
|
134
|
+
tf1: Transform[X0, U],
|
135
|
+
) -> Transform[T, U]:
|
136
|
+
...
|
137
|
+
|
138
|
+
|
139
|
+
@ta.overload
|
140
|
+
def compose(
|
141
|
+
tf0: Transform[T, X0],
|
142
|
+
tf1: Transform[X0, X1],
|
143
|
+
tf2: Transform[X1, U],
|
144
|
+
) -> Transform[T, U]:
|
145
|
+
...
|
146
|
+
|
147
|
+
|
148
|
+
@ta.overload
|
149
|
+
def compose(
|
150
|
+
tf0: Transform[T, X0],
|
151
|
+
tf1: Transform[X0, X1],
|
152
|
+
tf2: Transform[X1, X2],
|
153
|
+
tf3: Transform[X2, U],
|
154
|
+
) -> Transform[T, U]:
|
155
|
+
...
|
156
|
+
|
157
|
+
|
158
|
+
@ta.overload
|
159
|
+
def compose(
|
160
|
+
tf0: Transform[T, X0],
|
161
|
+
tf1: Transform[X0, X1],
|
162
|
+
tf2: Transform[X1, X2],
|
163
|
+
tf3: Transform[X2, X3],
|
164
|
+
tf4: Transform[X3, U],
|
165
|
+
) -> Transform[T, U]:
|
166
|
+
...
|
167
|
+
|
168
|
+
|
169
|
+
@ta.overload
|
170
|
+
def compose(
|
171
|
+
tf0: Transform[T, X0],
|
172
|
+
tf1: Transform[X0, X1],
|
173
|
+
tf2: Transform[X1, X2],
|
174
|
+
tf3: Transform[X2, X3],
|
175
|
+
tf4: Transform[X3, X4],
|
176
|
+
tf5: Transform[X4, U],
|
177
|
+
) -> Transform[T, U]:
|
178
|
+
...
|
179
|
+
|
180
|
+
|
181
|
+
@ta.overload
|
182
|
+
def compose(
|
183
|
+
tf0: Transform[T, X0],
|
184
|
+
tf1: Transform[X0, X1],
|
185
|
+
tf2: Transform[X1, X2],
|
186
|
+
tf3: Transform[X2, X3],
|
187
|
+
tf4: Transform[X3, X4],
|
188
|
+
tf5: Transform[X4, X5],
|
189
|
+
tf6: Transform[X5, U],
|
190
|
+
) -> Transform[T, U]:
|
191
|
+
...
|
192
|
+
|
193
|
+
|
194
|
+
@ta.overload
|
195
|
+
def compose(
|
196
|
+
*tf: Transform,
|
197
|
+
) -> Transform:
|
198
|
+
...
|
199
|
+
|
200
|
+
|
201
|
+
def compose(tf0, *tfn):
|
202
|
+
if not tfn:
|
203
|
+
return tf0
|
204
|
+
return Compose([tf0, *tfn])
|
omlish/lang/classes/bindable.py
CHANGED
@@ -19,7 +19,7 @@ class _ClassOrInstanceMethod:
|
|
19
19
|
|
20
20
|
class BindableClass(ta.Generic[T]):
|
21
21
|
# FIXME: apparently can't have TypeVars in ClassVars, but could stick in a @classmethod (which gets transformed)...
|
22
|
-
_bound: ta.ClassVar[type[T] | None] = None
|
22
|
+
_bound: ta.ClassVar[type[T] | None] = None
|
23
23
|
|
24
24
|
def __init__(self, *, _bound):
|
25
25
|
super().__init__()
|
omlish/lang/classes/restrict.py
CHANGED
@@ -32,6 +32,14 @@ class Final(Abstract):
|
|
32
32
|
elif Final in base.__mro__:
|
33
33
|
raise FinalTypeError(base)
|
34
34
|
|
35
|
+
# Per `ta.final`:
|
36
|
+
try:
|
37
|
+
cls.__final__ = True # type: ignore[attr-defined]
|
38
|
+
except (AttributeError, TypeError):
|
39
|
+
# Skip the attribute silently if it is not writable. AttributeError happens if the object has __slots__ or
|
40
|
+
# a read-only property, TypeError if it's a builtin class.
|
41
|
+
pass
|
42
|
+
|
35
43
|
|
36
44
|
##
|
37
45
|
|
omlish/lite/inject.py
CHANGED
omlish/lite/marshal.py
CHANGED
omlish/reflect/types.py
CHANGED
@@ -225,7 +225,7 @@ def is_simple_generic_alias_type(oty: type) -> bool:
|
|
225
225
|
|
226
226
|
def get_params(obj: ta.Any) -> tuple[ta.TypeVar, ...]:
|
227
227
|
if isinstance(obj, type):
|
228
|
-
if issubclass(obj, ta.Generic):
|
228
|
+
if issubclass(obj, ta.Generic):
|
229
229
|
return obj.__dict__.get('__parameters__', ()) # noqa
|
230
230
|
|
231
231
|
if (ks := _KNOWN_SPECIALS.get_by_origin(obj)) is not None:
|
@@ -591,7 +591,7 @@ class Reflector:
|
|
591
591
|
obj,
|
592
592
|
)
|
593
593
|
|
594
|
-
if issubclass(obj, ta.Generic):
|
594
|
+
if issubclass(obj, ta.Generic):
|
595
595
|
params = get_params(obj)
|
596
596
|
if params:
|
597
597
|
return Generic(
|
omlish/sql/queries/_marshal.py
CHANGED
@@ -40,7 +40,7 @@ class OpMarshalerUnmarshaler(msh.Marshaler, msh.Unmarshaler):
|
|
40
40
|
return col.make_map(((o.name, o) for _, o in self.ns), strict=True)
|
41
41
|
|
42
42
|
def marshal(self, ctx: msh.MarshalContext, o: ta.Any) -> msh.Value:
|
43
|
-
return check.isinstance(o, self.ty).name
|
43
|
+
return check.isinstance(o, self.ty).name
|
44
44
|
|
45
45
|
def unmarshal(self, ctx: msh.UnmarshalContext, v: msh.Value) -> ta.Any:
|
46
46
|
return self.by_name[check.isinstance(v, str)]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: omlish
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev439
|
4
4
|
Summary: omlish
|
5
5
|
Author: wrmsr
|
6
6
|
License-Expression: BSD-3-Clause
|
@@ -150,7 +150,7 @@ dependencies of any kind**.
|
|
150
150
|
- **[identity](https://github.com/wrmsr/omlish/blob/master/omlish/collections/identity.py)** - Identity-keyed
|
151
151
|
collections.
|
152
152
|
- **[sorted](https://github.com/wrmsr/omlish/blob/master/omlish/collections/sorted)** - Interfaces for value-sorted
|
153
|
-
collections and key-sorted mappings, and a simple but
|
153
|
+
collections and key-sorted mappings, and a simple but correct skiplist-backed implementation.
|
154
154
|
- **[persistent](https://github.com/wrmsr/omlish/blob/master/omlish/collections/persistent)** - Interfaces for
|
155
155
|
[persistent](https://en.wikipedia.org/wiki/Persistent_data_structure) maps, and a simple but correct treap-backed
|
156
156
|
implementation.
|
@@ -1,5 +1,5 @@
|
|
1
1
|
omlish/.omlish-manifests.json,sha256=FLw7xkPiSXuImZgqSP8BwrEib2R1doSzUPLUkc-QUIA,8410
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=dvgJrWD5N6Mjo6BacUkFRrr7AXjC5cDHEIJlldjLl-I,3575
|
3
3
|
omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
|
4
4
|
omlish/c3.py,sha256=ZNIMl1kwg3qdei4DiUrJPQe5M81S1e76N-GuNSwLBAE,8683
|
5
5
|
omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
|
@@ -146,7 +146,7 @@ omlish/dataclasses/impl/api/__init__.py,sha256=k5iS9QOwf_f4iOfGffYhnqDOcmEIwEUUT
|
|
146
146
|
omlish/dataclasses/impl/api/classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
147
147
|
omlish/dataclasses/impl/api/classes/conversion.py,sha256=T1I-aZKui2tv8rknuw9yCvGQLTrFnzTuHDFoezhE0ko,908
|
148
148
|
omlish/dataclasses/impl/api/classes/decorator.py,sha256=LqkAjNFpUeLThnnkzt1tIYKtIf8maDCkjrZzSbABZbg,4067
|
149
|
-
omlish/dataclasses/impl/api/classes/make.py,sha256=
|
149
|
+
omlish/dataclasses/impl/api/classes/make.py,sha256=xcah0foeKtHa8r3H3Osr2xXBNpkIa_kImW0zfoECBVI,5214
|
150
150
|
omlish/dataclasses/impl/api/classes/metadata.py,sha256=sMZgtoZaybfCoBKOVj7hKc-xqfU2Lca9WFrqg8UAAsE,2773
|
151
151
|
omlish/dataclasses/impl/api/classes/params.py,sha256=cJAMxLHgW6xyKURlCnDQpA-TYfOgWpVBCavie-IZTOM,2000
|
152
152
|
omlish/dataclasses/impl/api/fields/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -201,7 +201,7 @@ omlish/dataclasses/tools/modifiers.py,sha256=zSw7wmYtkKXY2UTDdbVJppIEAGqkrFHBGTv
|
|
201
201
|
omlish/dataclasses/tools/only_.py,sha256=hPpqzr9YW09YmlX_QJNU2aePHYJEIrbGCPwmnvVS_to,849
|
202
202
|
omlish/dataclasses/tools/replace.py,sha256=izM9lPT6AhEtjqn22auqaofa0j69KO7iootF-2Uj4cY,396
|
203
203
|
omlish/dataclasses/tools/repr.py,sha256=KFvF6uv2YYIKq8O3ZNbEAS1tqRQALsJ-SUlBNPd5_GI,190
|
204
|
-
omlish/dataclasses/tools/static.py,sha256=
|
204
|
+
omlish/dataclasses/tools/static.py,sha256=byDnPc0W15s3YPQNC9oyCASKVNxCytrHGLvDky4RGNc,8753
|
205
205
|
omlish/diag/__init__.py,sha256=c1q8vuapGH1YiYdU300FIJXMI1MOcnLNBZXr-zc8BXk,1181
|
206
206
|
omlish/diag/asts.py,sha256=MWh9XAG3m9L10FIJCyoNT2aU4Eft6tun_x9K0riq6Dk,3332
|
207
207
|
omlish/diag/debug.py,sha256=ClED7kKXeVMyKrjGIxcq14kXk9kvUJfytBQwK9y7c4Q,1637
|
@@ -273,13 +273,13 @@ omlish/formats/json/backends/jiter.py,sha256=8qv_XWGpcupPtVm6Z_egHio_iY1Kk8eqkvX
|
|
273
273
|
omlish/formats/json/backends/orjson.py,sha256=X2jhKgUYYwaVuAppPQmfyncbOs2PJ7drqH5BioP-AYI,3831
|
274
274
|
omlish/formats/json/backends/std.py,sha256=Hhiug5CkC1TXLFrE9rnMR2on7xP-RliSvfYA9ill_U0,3159
|
275
275
|
omlish/formats/json/backends/ujson.py,sha256=U3iOlAURfiCdXbiNlXfIjDdtJDbDaLZsSuZriTUvbxs,2307
|
276
|
-
omlish/formats/json/stream/__init__.py,sha256=
|
277
|
-
omlish/formats/json/stream/building.py,sha256=
|
276
|
+
omlish/formats/json/stream/__init__.py,sha256=LoYSkdUX3lkQ4g9JB_F6YOeexlOEporKW8bW8tv3YXg,859
|
277
|
+
omlish/formats/json/stream/building.py,sha256=QAQaTyXuw9vkfhvzWIh_DSlypD1-HgzO855Dgz3_wFM,2517
|
278
278
|
omlish/formats/json/stream/errors.py,sha256=c8M8UAYmIZ-vWZLeKD2jMj4EDCJbr9QR8Jq_DyHjujQ,43
|
279
279
|
omlish/formats/json/stream/lexing.py,sha256=GkEhuDqAgZTOJRkroP4F_U396XtMQVNMjEqXKiCCtnU,13605
|
280
|
-
omlish/formats/json/stream/parsing.py,sha256=
|
281
|
-
omlish/formats/json/stream/rendering.py,sha256=
|
282
|
-
omlish/formats/json/stream/utils.py,sha256=
|
280
|
+
omlish/formats/json/stream/parsing.py,sha256=bnTaYcCMRh0i_mByQgq4qtVf53zJnmjPvUDwJ7-zL64,7154
|
281
|
+
omlish/formats/json/stream/rendering.py,sha256=E5SXMGcbBtgtUYYznTPZFHD4tmV_X7K3MK50V11ESRk,3611
|
282
|
+
omlish/formats/json/stream/utils.py,sha256=vX69i90DVCjAAAohpiLgsT3ZinFS_cYUfneTvx-3dxU,4959
|
283
283
|
omlish/formats/json5/__init__.py,sha256=3rwU5w5N_-dYME5kwMvXgexl-Vvo4BAmOg1N-I9Wf0M,194
|
284
284
|
omlish/formats/json5/codec.py,sha256=mywk74R7F77z7xprQd19qoJZ8sNPUEkiBD9jNCKTh0c,1603
|
285
285
|
omlish/formats/json5/errors.py,sha256=AHkR9ySjAoQdUrizpqgL8fg0M5oe5mHZkml3KZHEvC4,38
|
@@ -343,7 +343,7 @@ omlish/http/coro/server/fdio.py,sha256=qZE4g5y4XESsTObSKyVggI-yzig57gSGJb4Z0rcHv
|
|
343
343
|
omlish/http/coro/server/server.py,sha256=1B98Jj8TeZpnLVA8W-VJDHIRfxeFx2EvVbEFyEq1n7o,18697
|
344
344
|
omlish/http/coro/server/simple.py,sha256=j1RZ3niKrgGM2qFnjdYWn_eniZzay5j49Ca4L3u8vO4,3296
|
345
345
|
omlish/http/coro/server/sockets.py,sha256=24gU6wpIZuzYWKQD8UsHyYfTZlbcUFvkqXq5KVgWpQo,2261
|
346
|
-
omlish/inject/__init__.py,sha256=
|
346
|
+
omlish/inject/__init__.py,sha256=8ik0yhn0LCdDr2UMACBeatENs76yprB8pDXUNllXRWg,2954
|
347
347
|
omlish/inject/binder.py,sha256=_TNPGcqtaVqCLoxMx2LBVSvZWmAUs4JcxAqnCpy7PG0,5253
|
348
348
|
omlish/inject/bindings.py,sha256=PlvOnUREjvc6F8nOJdzl1k9SAf80icRB4qWFqDop87M,536
|
349
349
|
omlish/inject/eagers.py,sha256=JBY7PcjXt-Rg9scQ1ol9xpcoTLXkXC_Ie9uwTWdzUkA,340
|
@@ -408,10 +408,11 @@ omlish/io/fdio/handlers.py,sha256=fJDNZz_MBBMU5C1HClFOHi-G9bCzL1v8KiSswb0BvE4,14
|
|
408
408
|
omlish/io/fdio/kqueue.py,sha256=xRxDPKcOw5_bMDS0buF5xi12WHok4reNnnaYTX4kkCk,3843
|
409
409
|
omlish/io/fdio/manager.py,sha256=I4KDZGo8fkBe0LAhpN0rmP9KJHyXRynypcCYsTzEjS4,1261
|
410
410
|
omlish/io/fdio/pollers.py,sha256=5buOA47raq2PRwDuQ9pNwsahX0rP7nBm30CMcleiL08,5553
|
411
|
-
omlish/iterators/__init__.py,sha256=
|
411
|
+
omlish/iterators/__init__.py,sha256=Gy1KT06UjxL53EpqaSBzxfMrmgt1soR8mnIGZootP_c,557
|
412
412
|
omlish/iterators/iterators.py,sha256=RxW35yQ5ed8vBQ22IqpDXFx-i5JiLQdp7-pkMZXhJJ8,3159
|
413
413
|
omlish/iterators/recipes.py,sha256=wOwOZg-zWG9Zc3wcAxJFSe2rtavVBYwZOfG09qYEx_4,472
|
414
414
|
omlish/iterators/tools.py,sha256=M16LXrJhMdsz5ea2qH0vws30ZvhQuQSCVFSLpRf_gTg,2096
|
415
|
+
omlish/iterators/transforms.py,sha256=YHVdD9nBkS1k4kogi4Ba0UOTU_pKkuX9jGw1Tqj3UMw,3598
|
415
416
|
omlish/iterators/unique.py,sha256=BSE-eanva8byFCJi09Nt2zzTsVr8LnTqY1PIInGYRs0,1396
|
416
417
|
omlish/lang/__init__.py,sha256=HqVWUkrUArOsjGoWrL-Ck6Zz2U6kKpj2DzbpHed-k1o,10431
|
417
418
|
omlish/lang/asyncs.py,sha256=LV_4I3-WbLY8-SUXYJvKlzfL-Hd5ASFOlyPi3uMJYJk,2266
|
@@ -446,10 +447,10 @@ omlish/lang/cached/function.py,sha256=epDPy9WyGc_VaKTrEQJ3dZun-NLsvdvbbNd7jbaUM2
|
|
446
447
|
omlish/lang/cached/property.py,sha256=a4E8knrNk5LDcaW2M39RQH2Y8oqjvOm-Rps6jIJ_oeY,2780
|
447
448
|
omlish/lang/classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
448
449
|
omlish/lang/classes/abstract.py,sha256=ALHIEL1ZFeXPkrxUlAm9pFH6KmWPSPXG5UIjn-k_kLs,1715
|
449
|
-
omlish/lang/classes/bindable.py,sha256=
|
450
|
+
omlish/lang/classes/bindable.py,sha256=dyTqU1udGb9W5GNdztnRdgo7AU1VvVgghKIvkFoSKEQ,1211
|
450
451
|
omlish/lang/classes/namespaces.py,sha256=RVecCT38W5h6rjf5fYBLvomyDwwFqPRWjhs40gaLHPE,3933
|
451
452
|
omlish/lang/classes/protocols.py,sha256=T98ZsHLgzw8hPvvNluxoreevoF8fD4zs8SwcnTXkLuY,701
|
452
|
-
omlish/lang/classes/restrict.py,sha256=
|
453
|
+
omlish/lang/classes/restrict.py,sha256=xHLIK20MQ_jJPQ7JVzMNhyN4Xc4eLBgrcxqDnTbeKBI,4480
|
453
454
|
omlish/lang/classes/simple.py,sha256=3AJSs-plVg2flq4SC6I39LxP0nBaB241puv3D5YCP5I,2973
|
454
455
|
omlish/lang/classes/virtual.py,sha256=J4y-uiv1RaP2rfFeptXqQ1a4MRek0TMlAFFraO_lzhs,3397
|
455
456
|
omlish/lang/imports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -479,9 +480,9 @@ omlish/lite/configs.py,sha256=4-1uVxo-aNV7vMKa7PVNhM610eejG1WepB42-Dw2xQI,914
|
|
479
480
|
omlish/lite/contextmanagers.py,sha256=usDzBoNqJi98AccVlwgZoMvoBXOe9wyx2MreZtWhJy4,5863
|
480
481
|
omlish/lite/dataclasses.py,sha256=aRSCZz1jN_UI-CWJhN0SJeKxa-79vXNUZ6YOMgG31SE,3610
|
481
482
|
omlish/lite/imports.py,sha256=GyEDKL-WuHtdOKIL-cc8aFd0-bHwZFDEjAB52ItabX0,1341
|
482
|
-
omlish/lite/inject.py,sha256=
|
483
|
+
omlish/lite/inject.py,sha256=tF0aI6uSNdhwQXXnnev6wKBG3ENbuajT_kBQpaGmNNQ,29155
|
483
484
|
omlish/lite/json.py,sha256=m0Ce9eqUZG23-H7-oOp8n1sf4fzno5vtK4AK_4Vc-Mg,706
|
484
|
-
omlish/lite/marshal.py,sha256=
|
485
|
+
omlish/lite/marshal.py,sha256=JE5siS7WG_kdEpxTsHVcjIHjJN89cU2y4WtJhS5vgFs,23016
|
485
486
|
omlish/lite/maybes.py,sha256=NusCpK0FVqkIutw6_Wldn69G5VyKYhat7SegBIQmGpk,4412
|
486
487
|
omlish/lite/maysync.py,sha256=NiltEfX_mc7jWgWZ9XAqkDzMlLVprTAZvXRObXJT_IE,14926
|
487
488
|
omlish/lite/objects.py,sha256=HzN_4J6w6WDLKDrW8jSNUKgfAR5vUsB42rtSCu04oqQ,1921
|
@@ -626,7 +627,7 @@ omlish/reflect/__init__.py,sha256=omD3VLFQtYTwPxrTH6gLATQIax9sTGGKc-7ps96-q0g,12
|
|
626
627
|
omlish/reflect/inspect.py,sha256=dUrVz8VfAdLVFtFpW416DxzVC17D80cvFb_g2Odzgq8,1823
|
627
628
|
omlish/reflect/ops.py,sha256=4mGvFMw5D6XGbhDhdCqZ1dZsiqezUTenDv63FIDohpY,3029
|
628
629
|
omlish/reflect/subst.py,sha256=_lfNS2m2UiJgqARQtmGLTGo7CrSm9OMvVzt6GWOEX6M,4590
|
629
|
-
omlish/reflect/types.py,sha256=
|
630
|
+
omlish/reflect/types.py,sha256=4Plo_1cHIk8-68lu8_c_SUEohy19exTNDsgvuVbOJ5A,16066
|
630
631
|
omlish/secrets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
631
632
|
omlish/secrets/all.py,sha256=qBxUFIqxCExADL71taNH_W6FYT9QvOrdcaMeUUPO3aw,298
|
632
633
|
omlish/secrets/crypto.py,sha256=q0Hca5oMwvh39r0hrupN_ewxhlllbdDgAgVoloYFmDg,3714
|
@@ -720,7 +721,7 @@ omlish/sql/api/queries.py,sha256=OVsVqNyXXJQVDPfV3GFE2gwnHyGEenS65rTQRTNGx1Y,735
|
|
720
721
|
omlish/sql/api/resources.py,sha256=RcjnsNoyFWG0VR8YDijwuyZtnxlGQe8jiPQVl_inzIc,2266
|
721
722
|
omlish/sql/api/rows.py,sha256=Jo3AA_6Wt7tlwLO6-rp0arzYFqZXSxPudGPkW2xCYgQ,1346
|
722
723
|
omlish/sql/queries/__init__.py,sha256=qoikGQZuwDkOBwGKdUVov_Ur3I-mezSDLLdzqwRw6l8,1567
|
723
|
-
omlish/sql/queries/_marshal.py,sha256=
|
724
|
+
omlish/sql/queries/_marshal.py,sha256=PwfcCmf-qeKsiL61c_GjUID6flLCiDiltFndPBhQIAM,2992
|
724
725
|
omlish/sql/queries/base.py,sha256=nsavenCsZgzpITSI1zGEAi95K3cRDfAxRgNJKJmYul0,3502
|
725
726
|
omlish/sql/queries/binary.py,sha256=dcEzeEn104AMPuQ7QrJU2O-YCN3SUdxB5S4jaWKOUqY,2253
|
726
727
|
omlish/sql/queries/exprs.py,sha256=dG9L218QtJM1HtDYIMWqHimK03N6AL1WONk3FvVRcXY,1480
|
@@ -825,9 +826,9 @@ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0
|
|
825
826
|
omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
|
826
827
|
omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
|
827
828
|
omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
|
828
|
-
omlish-0.0.0.
|
829
|
-
omlish-0.0.0.
|
830
|
-
omlish-0.0.0.
|
831
|
-
omlish-0.0.0.
|
832
|
-
omlish-0.0.0.
|
833
|
-
omlish-0.0.0.
|
829
|
+
omlish-0.0.0.dev439.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
830
|
+
omlish-0.0.0.dev439.dist-info/METADATA,sha256=Sb_tGPltUyRpCzhFFI9-HrwblPX4hTyeVJ2SPrKxwD8,19003
|
831
|
+
omlish-0.0.0.dev439.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
832
|
+
omlish-0.0.0.dev439.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
833
|
+
omlish-0.0.0.dev439.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
834
|
+
omlish-0.0.0.dev439.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|