omlish 0.0.0.dev28__py3-none-any.whl → 0.0.0.dev29__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 +5 -7
- omlish/collections/treap.py +0 -1
- omlish/dataclasses/impl/fields.py +3 -0
- omlish/lang/__init__.py +2 -0
- omlish/lang/functions.py +17 -0
- omlish/lite/secrets.py +14 -0
- omlish/math/__init__.py +0 -0
- omlish/{math.py → math/bits.py} +0 -13
- omlish/math/floats.py +13 -0
- omlish/{stats.py → math/stats.py} +3 -2
- omlish/text/asdl.py +5 -4
- omlish/text/parts.py +2 -2
- {omlish-0.0.0.dev28.dist-info → omlish-0.0.0.dev29.dist-info}/METADATA +11 -13
- {omlish-0.0.0.dev28.dist-info → omlish-0.0.0.dev29.dist-info}/RECORD +17 -15
- {omlish-0.0.0.dev28.dist-info → omlish-0.0.0.dev29.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev28.dist-info → omlish-0.0.0.dev29.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev28.dist-info → omlish-0.0.0.dev29.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
__version__ = '0.0.0.
|
2
|
-
__revision__ = '
|
1
|
+
__version__ = '0.0.0.dev29'
|
2
|
+
__revision__ = 'cde08614ca06e103fcae31adbb677c772002aef1'
|
3
3
|
|
4
4
|
|
5
5
|
#
|
@@ -30,7 +30,7 @@ class Project(ProjectBase):
|
|
30
30
|
|
31
31
|
optional_dependencies = {
|
32
32
|
'async': [
|
33
|
-
'anyio ~= 4.
|
33
|
+
'anyio ~= 4.5',
|
34
34
|
'sniffio ~= 1.3',
|
35
35
|
|
36
36
|
'greenlet ~= 3.1',
|
@@ -70,8 +70,6 @@ class Project(ProjectBase):
|
|
70
70
|
],
|
71
71
|
|
72
72
|
'misc': [
|
73
|
-
'jinja2 ~= 3.1',
|
74
|
-
|
75
73
|
'wrapt ~= 1.14',
|
76
74
|
],
|
77
75
|
|
@@ -81,7 +79,9 @@ class Project(ProjectBase):
|
|
81
79
|
|
82
80
|
'sql': [
|
83
81
|
'sqlalchemy[asyncio] ~= 2.0',
|
82
|
+
],
|
84
83
|
|
84
|
+
'sql-drivers': [
|
85
85
|
'pg8000 ~= 1.31',
|
86
86
|
# 'psycopg2 ~= 2.9',
|
87
87
|
# 'psycopg ~= 3.2',
|
@@ -93,9 +93,7 @@ class Project(ProjectBase):
|
|
93
93
|
'aiomysql ~= 0.2',
|
94
94
|
'aiosqlite ~= 0.20',
|
95
95
|
'asyncpg ~= 0.29; python_version < "3.13"',
|
96
|
-
],
|
97
96
|
|
98
|
-
'sqlx': [
|
99
97
|
'sqlean.py ~= 3.45; python_version < "3.13"',
|
100
98
|
|
101
99
|
'duckdb ~= 1.1',
|
omlish/collections/treap.py
CHANGED
omlish/lang/__init__.py
CHANGED
@@ -98,6 +98,7 @@ from .functions import ( # noqa
|
|
98
98
|
Args,
|
99
99
|
VoidError,
|
100
100
|
as_async,
|
101
|
+
coalesce,
|
101
102
|
constant,
|
102
103
|
finally_,
|
103
104
|
identity,
|
@@ -107,6 +108,7 @@ from .functions import ( # noqa
|
|
107
108
|
isinstance_of,
|
108
109
|
issubclass_of,
|
109
110
|
maybe_call,
|
111
|
+
opt_coalesce,
|
110
112
|
periodically,
|
111
113
|
raise_,
|
112
114
|
raising,
|
omlish/lang/functions.py
CHANGED
@@ -183,3 +183,20 @@ class Args:
|
|
183
183
|
|
184
184
|
def __call__(self, fn: ta.Callable[..., T]) -> T:
|
185
185
|
return fn(*self.args, **self.kwargs)
|
186
|
+
|
187
|
+
|
188
|
+
##
|
189
|
+
|
190
|
+
|
191
|
+
def coalesce(*vs: T | None) -> T:
|
192
|
+
for v in vs:
|
193
|
+
if v is not None:
|
194
|
+
return v
|
195
|
+
raise ValueError('No value given')
|
196
|
+
|
197
|
+
|
198
|
+
def opt_coalesce(*vs: T | None) -> T | None:
|
199
|
+
for v in vs:
|
200
|
+
if v is not None:
|
201
|
+
return v
|
202
|
+
return None
|
omlish/lite/secrets.py
CHANGED
@@ -20,3 +20,17 @@ class Secret:
|
|
20
20
|
|
21
21
|
def reveal(self) -> str:
|
22
22
|
return getattr(self, self._VALUE_ATTR)()
|
23
|
+
|
24
|
+
#
|
25
|
+
|
26
|
+
def __reduce__(self) -> ta.NoReturn:
|
27
|
+
raise TypeError
|
28
|
+
|
29
|
+
def __reduce_ex__(self, protocol) -> ta.NoReturn:
|
30
|
+
raise TypeError
|
31
|
+
|
32
|
+
def __getstate__(self) -> ta.NoReturn:
|
33
|
+
raise TypeError
|
34
|
+
|
35
|
+
def __setstate__(self, state) -> ta.NoReturn:
|
36
|
+
raise TypeError
|
omlish/math/__init__.py
ADDED
File without changes
|
omlish/{math.py → math/bits.py}
RENAMED
@@ -1,15 +1,10 @@
|
|
1
1
|
import functools
|
2
|
-
import struct
|
3
2
|
import typing as ta
|
4
3
|
|
5
4
|
|
6
5
|
##
|
7
6
|
|
8
7
|
|
9
|
-
def isclose(a: float, b: float, *, rel_tol: float = 1e-09, abs_tol: float = 0.0) -> float:
|
10
|
-
return abs(a - b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)
|
11
|
-
|
12
|
-
|
13
8
|
def get_bit(bit: int, value: int) -> int:
|
14
9
|
return (value >> bit) & 1
|
15
10
|
|
@@ -29,14 +24,6 @@ def set_bits(bits_from: int, num_bits: int, bits_value: int, value: int) -> int:
|
|
29
24
|
return value & ~(((1 << num_bits) - 1) << bits_from) | (bits_value << bits_from)
|
30
25
|
|
31
26
|
|
32
|
-
def float_to_bytes(f: float) -> bytes:
|
33
|
-
return struct.pack('>f', f)
|
34
|
-
|
35
|
-
|
36
|
-
def bytes_to_float(b: bytes) -> float:
|
37
|
-
return struct.unpack('>f', b)[0]
|
38
|
-
|
39
|
-
|
40
27
|
##
|
41
28
|
|
42
29
|
|
omlish/math/floats.py
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
import struct
|
2
|
+
|
3
|
+
|
4
|
+
def isclose(a: float, b: float, *, rel_tol: float = 1e-09, abs_tol: float = 0.0) -> float:
|
5
|
+
return abs(a - b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)
|
6
|
+
|
7
|
+
|
8
|
+
def float_to_bytes(f: float) -> bytes:
|
9
|
+
return struct.pack('>f', f)
|
10
|
+
|
11
|
+
|
12
|
+
def bytes_to_float(b: bytes) -> float:
|
13
|
+
return struct.unpack('>f', b)[0]
|
@@ -3,6 +3,7 @@ TODO:
|
|
3
3
|
- reservoir
|
4
4
|
- dep tdigest?
|
5
5
|
- struct-of-arrays - array.array('f', ...) - backed SamplingHistogram
|
6
|
+
- https://docs.python.org/3/library/statistics.html
|
6
7
|
"""
|
7
8
|
import bisect
|
8
9
|
import collections
|
@@ -14,8 +15,8 @@ import random
|
|
14
15
|
import time
|
15
16
|
import typing as ta
|
16
17
|
|
17
|
-
from
|
18
|
-
from
|
18
|
+
from .. import cached
|
19
|
+
from .. import check
|
19
20
|
|
20
21
|
|
21
22
|
##
|
omlish/text/asdl.py
CHANGED
@@ -217,7 +217,7 @@ class TokenKind(enum.IntEnum):
|
|
217
217
|
COMMA = enum.auto()
|
218
218
|
QUESTION = enum.auto()
|
219
219
|
PIPE = enum.auto()
|
220
|
-
|
220
|
+
ASTERISK = enum.auto()
|
221
221
|
L_PAREN = enum.auto()
|
222
222
|
R_PAREN = enum.auto()
|
223
223
|
L_BRACE = enum.auto()
|
@@ -231,7 +231,7 @@ OPERATOR_TABLE: ta.Mapping[str, TokenKind] = {
|
|
231
231
|
'|': TokenKind.PIPE,
|
232
232
|
'(': TokenKind.L_PAREN,
|
233
233
|
')': TokenKind.R_PAREN,
|
234
|
-
'*': TokenKind.
|
234
|
+
'*': TokenKind.ASTERISK,
|
235
235
|
'{': TokenKind.L_BRACE,
|
236
236
|
'}': TokenKind.R_BRACE,
|
237
237
|
}
|
@@ -373,7 +373,7 @@ class AsdlParser:
|
|
373
373
|
|
374
374
|
def _parse_optional_field_quantifier(self) -> tuple[bool, bool]: # (seq, opt)
|
375
375
|
is_seq, is_opt = False, False
|
376
|
-
if self.cur().kind == TokenKind.
|
376
|
+
if self.cur().kind == TokenKind.ASTERISK:
|
377
377
|
is_seq = True
|
378
378
|
self._advance()
|
379
379
|
elif self.cur().kind == TokenKind.QUESTION:
|
@@ -394,7 +394,8 @@ class AsdlParser:
|
|
394
394
|
_id_kinds = (TokenKind.CONSTRUCTOR_ID, TokenKind.TYPE_ID)
|
395
395
|
|
396
396
|
def _match(self, kind: TokenKind | tuple[TokenKind, ...]) -> str:
|
397
|
-
"""
|
397
|
+
"""
|
398
|
+
The 'match' primitive of RD parsers.
|
398
399
|
|
399
400
|
* Verifies that the current token is of the given kind (kind can be a tuple, in which the kind must match one of
|
400
401
|
its members).
|
omlish/text/parts.py
CHANGED
@@ -30,7 +30,7 @@ def _check_part(o: PartT) -> PartT:
|
|
30
30
|
return o
|
31
31
|
|
32
32
|
|
33
|
-
def
|
33
|
+
def _check_opt_part(o: PartT | None) -> PartT | None:
|
34
34
|
if o is None:
|
35
35
|
return None
|
36
36
|
return _check_part(o)
|
@@ -49,7 +49,7 @@ class Wrap(DataPart, lang.Final):
|
|
49
49
|
|
50
50
|
|
51
51
|
class List(DataPart, lang.Final):
|
52
|
-
parts: ta.Sequence[Part | None] = dc.xfield(coerce=col.seq_of(
|
52
|
+
parts: ta.Sequence[Part | None] = dc.xfield(coerce=col.seq_of(_check_opt_part))
|
53
53
|
delimiter: str = dc.field(default=',') # FIXME: , check_type=str)
|
54
54
|
trailer: bool = dc.field(default=False) # FIXME: , check_type=bool)
|
55
55
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: omlish
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev29
|
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.
|
16
|
+
Requires-Dist: anyio ~=4.5 ; 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.26 ; extra == 'all'
|
@@ -29,7 +29,6 @@ Requires-Dist: json5 ~=0.9 ; extra == 'all'
|
|
29
29
|
Requires-Dist: pyyaml ~=5.0 ; extra == 'all'
|
30
30
|
Requires-Dist: cloudpickle ~=3.0 ; extra == 'all'
|
31
31
|
Requires-Dist: httpx[http2] ~=0.27 ; extra == 'all'
|
32
|
-
Requires-Dist: jinja2 ~=3.1 ; extra == 'all'
|
33
32
|
Requires-Dist: wrapt ~=1.14 ; extra == 'all'
|
34
33
|
Requires-Dist: cryptography ~=43.0 ; extra == 'all'
|
35
34
|
Requires-Dist: sqlalchemy[asyncio] ~=2.0 ; extra == 'all'
|
@@ -43,7 +42,7 @@ Requires-Dist: python-snappy ~=0.7 ; (python_version < "3.13") and extra == 'all
|
|
43
42
|
Requires-Dist: asyncpg ~=0.29 ; (python_version < "3.13") and extra == 'all'
|
44
43
|
Requires-Dist: sqlean.py ~=3.45 ; (python_version < "3.13") and extra == 'all'
|
45
44
|
Provides-Extra: async
|
46
|
-
Requires-Dist: anyio ~=4.
|
45
|
+
Requires-Dist: anyio ~=4.5 ; extra == 'async'
|
47
46
|
Requires-Dist: sniffio ~=1.3 ; extra == 'async'
|
48
47
|
Requires-Dist: greenlet ~=3.1 ; extra == 'async'
|
49
48
|
Requires-Dist: trio ~=0.26 ; extra == 'async'
|
@@ -65,20 +64,19 @@ Requires-Dist: cloudpickle ~=3.0 ; extra == 'formats'
|
|
65
64
|
Provides-Extra: http
|
66
65
|
Requires-Dist: httpx[http2] ~=0.27 ; extra == 'http'
|
67
66
|
Provides-Extra: misc
|
68
|
-
Requires-Dist: jinja2 ~=3.1 ; extra == 'misc'
|
69
67
|
Requires-Dist: wrapt ~=1.14 ; extra == 'misc'
|
70
68
|
Provides-Extra: secrets
|
71
69
|
Requires-Dist: cryptography ~=43.0 ; extra == 'secrets'
|
72
70
|
Provides-Extra: sql
|
73
71
|
Requires-Dist: sqlalchemy[asyncio] ~=2.0 ; extra == 'sql'
|
74
|
-
|
75
|
-
Requires-Dist:
|
76
|
-
Requires-Dist:
|
77
|
-
Requires-Dist:
|
78
|
-
Requires-Dist:
|
79
|
-
|
80
|
-
Requires-Dist:
|
81
|
-
Requires-Dist: sqlean.py ~=3.45 ; (python_version < "3.13") and extra == '
|
72
|
+
Provides-Extra: sql-drivers
|
73
|
+
Requires-Dist: pg8000 ~=1.31 ; extra == 'sql-drivers'
|
74
|
+
Requires-Dist: pymysql ~=1.1 ; extra == 'sql-drivers'
|
75
|
+
Requires-Dist: aiomysql ~=0.2 ; extra == 'sql-drivers'
|
76
|
+
Requires-Dist: aiosqlite ~=0.20 ; extra == 'sql-drivers'
|
77
|
+
Requires-Dist: duckdb ~=1.1 ; extra == 'sql-drivers'
|
78
|
+
Requires-Dist: asyncpg ~=0.29 ; (python_version < "3.13") and extra == 'sql-drivers'
|
79
|
+
Requires-Dist: sqlean.py ~=3.45 ; (python_version < "3.13") and extra == 'sql-drivers'
|
82
80
|
Provides-Extra: testing
|
83
81
|
Requires-Dist: pytest ~=8.0 ; extra == 'testing'
|
84
82
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
omlish/.manifests.json,sha256=N1F-Xz3GaBn2H1p7uKzhkhKCQV8QVR0t76XD6wmFtXA,3
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=KzvTeQDmeZtJfbz_X82IPqzh5xJ44YhJRVMI4N3c2Ig,2698
|
3
3
|
omlish/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
omlish/argparse.py,sha256=QRQmX9G0-L_nATkFtGHvpd4qrpYzKATdjuFLbBqzJPM,6224
|
5
5
|
omlish/c3.py,sha256=W5EwYx9Por3rWYLkKUitJ6OoRMLLgVTfLTyroOz41Y0,8047
|
@@ -14,11 +14,9 @@ omlish/genmachine.py,sha256=LCMiqvK32dAWtrlB6lKw9tXdQFiXC8rRdk4TMQYIroU,1603
|
|
14
14
|
omlish/iterators.py,sha256=GGLC7RIT86uXMjhIIIqnff_Iu5SI_b9rXYywYGFyzmo,7292
|
15
15
|
omlish/libc.py,sha256=u0481imCiTFqP_e-v9g0pD-0WD249j5vYzhtn-fnNkY,15308
|
16
16
|
omlish/matchfns.py,sha256=ygqbqthRxgF9I1PJaw9Xl7FoZnAVMmnKBrYgimKQ0ag,6152
|
17
|
-
omlish/math.py,sha256=AVqp5Y8yxKA-wO0BgrzaxA0Ga3PZiCXnYcwivMneC-0,3804
|
18
17
|
omlish/multiprocessing.py,sha256=QZT4C7I-uThCAjaEY3xgUYb-5GagUlnE4etN01LDyU4,5186
|
19
18
|
omlish/os.py,sha256=cz4nL2ujaxH_-XRq3JUD8af8mSe1JXGPIoXP9XAEd0M,2607
|
20
19
|
omlish/runmodule.py,sha256=PWvuAaJ9wQQn6bx9ftEL3_d04DyotNn8dR_twm2pgw0,700
|
21
|
-
omlish/stats.py,sha256=vJOJgYIW6DGDEgNm5AGWIp08GiLk61Cjld71fnC29fY,9998
|
22
20
|
omlish/sync.py,sha256=AqwIfIuCMVHLwlJUa7dmaSjfA4sM5AYPCD5-nsz3XVQ,1516
|
23
21
|
omlish/term.py,sha256=NEmxqAhicyInGtmFamZAizI2xdu819MzFYPEp0Fx97M,6111
|
24
22
|
omlish/asyncs/__init__.py,sha256=uUz9ziKh4_QrgmdhKFMgq6j7mFbiZd3LiogguDCQsGI,587
|
@@ -50,7 +48,7 @@ omlish/collections/ordered.py,sha256=RzEC3fHvrDeJQSWThVDNYQKke263Vje1II5YwtDwT1Q
|
|
50
48
|
omlish/collections/persistent.py,sha256=KG471s0bhhReQrjlmX0xaN9HeAIcrtT264ddZCxsExo,875
|
51
49
|
omlish/collections/skiplist.py,sha256=xjuKZtSScp1VnOi9lpf7I090vGp1DnjA5ELjFhMeGps,5987
|
52
50
|
omlish/collections/sorted.py,sha256=E5ZOdNn7Jju1EcQ7CX2Ltk9StIXsBOzqvh7EsT3ZA2U,3354
|
53
|
-
omlish/collections/treap.py,sha256=
|
51
|
+
omlish/collections/treap.py,sha256=A09ZPacGyJlyRB-Wi4TNj3tE0w-RpFNliPgpDaa6Vwg,7719
|
54
52
|
omlish/collections/treapmap.py,sha256=TxOM-ZRF5PK2xe5wRIhESNt7DGh9b_MeZfE7HLkCOs4,5804
|
55
53
|
omlish/collections/unmodifiable.py,sha256=QmUEi9IBXqiM_KGgH2rqg15VmkHJo1MZ6kwq2twEMho,4750
|
56
54
|
omlish/collections/utils.py,sha256=9o9STwzAn5YjZRZ9ns1kuo7NgLXLaoVPFu6AJd-3JT8,4336
|
@@ -75,7 +73,7 @@ omlish/dataclasses/impl/as_.py,sha256=CD-t7hkC1EP2F_jvZKIA_cVoDuwZ-Ln_xC4fJumPYX
|
|
75
73
|
omlish/dataclasses/impl/copy.py,sha256=Tn8_n6Vohs-w4otbGdubBEvhd3TsSTaM3EfNGdS2LYo,591
|
76
74
|
omlish/dataclasses/impl/descriptors.py,sha256=rEYE1Len99agTQCC25hSPMnM19BgPr0ZChABGi58Fdk,2476
|
77
75
|
omlish/dataclasses/impl/exceptions.py,sha256=DeiM6rcjgncudn-XVuph9TDbVDEwBtyYb1bcbO3FFcA,193
|
78
|
-
omlish/dataclasses/impl/fields.py,sha256=
|
76
|
+
omlish/dataclasses/impl/fields.py,sha256=DrFPLlPeJ4dCbbRsuwfx-y47Fx3iSllJP0YM5eq6nIE,6040
|
79
77
|
omlish/dataclasses/impl/frozen.py,sha256=x87DSM8FIMZ3c_BIUE8NooCkExFjPsabeqIueEP5qKs,2988
|
80
78
|
omlish/dataclasses/impl/hashing.py,sha256=FKnHuXCg9ylrzK2TLGqO5yfRN4HX3F415CSLlVYXtYE,3190
|
81
79
|
omlish/dataclasses/impl/init.py,sha256=IgxO9nwHaHF8jGrUAk-Y5xke9uV2OwzfEe-88McE1Wg,6161
|
@@ -164,7 +162,7 @@ omlish/inject/impl/privates.py,sha256=alpCYyk5VJ9lJknbRH2nLVNFYVvFhkj-VC1Vco3zCF
|
|
164
162
|
omlish/inject/impl/providers.py,sha256=QnwhsujJFIHC0JTgd2Wlo1kP53i3CWTrj1nKU2DNxwg,2375
|
165
163
|
omlish/inject/impl/proxy.py,sha256=1ko0VaKqzu9UG8bIldp9xtUrAVUOFTKWKTjOCqIGr4s,1636
|
166
164
|
omlish/inject/impl/scopes.py,sha256=ASfULXgP_ETlsAqFJfrZmyEaZt64Zr8tNn5ScA-EoXk,5900
|
167
|
-
omlish/lang/__init__.py,sha256=
|
165
|
+
omlish/lang/__init__.py,sha256=7GgNUH1ez1N68rkTN1-zKDaVOoDHW-BZ9V_H2LIFfqM,3532
|
168
166
|
omlish/lang/cached.py,sha256=LwsgWQjQ5op618rBvI8vbASOEGWDTt_SKq6Tc1vlgZM,7680
|
169
167
|
omlish/lang/clsdct.py,sha256=AjtIWLlx2E6D5rC97zQ3Lwq2SOMkbg08pdO_AxpzEHI,1744
|
170
168
|
omlish/lang/cmp.py,sha256=5vbzWWbqdzDmNKAGL19z6ZfUKe5Ci49e-Oegf9f4BsE,1346
|
@@ -172,7 +170,7 @@ omlish/lang/contextmanagers.py,sha256=rzMSwJU7ObFXl46r6pGDbD45Zi_qZ9NHxDPnLNuux9
|
|
172
170
|
omlish/lang/datetimes.py,sha256=ehI_DhQRM-bDxAavnp470XcekbbXc4Gdw9y1KpHDJT0,223
|
173
171
|
omlish/lang/descriptors.py,sha256=OLM1qi14kY7PLGIJnvkd6CBEOzHgD9q8Cs2cB6Kzflk,6602
|
174
172
|
omlish/lang/exceptions.py,sha256=qJBo3NU1mOWWm-NhQUHCY5feYXR3arZVyEHinLsmRH4,47
|
175
|
-
omlish/lang/functions.py,sha256=
|
173
|
+
omlish/lang/functions.py,sha256=kkPfcdocg-OmyN7skIqrFxNvqAv89Zc_kXKYAN8vw8g,3895
|
176
174
|
omlish/lang/imports.py,sha256=04ugFC8NI5sbL7NH4V0r0q_nFsP_AMkHLz697CVkMtQ,6274
|
177
175
|
omlish/lang/iterables.py,sha256=_q6rHbdFfW3VBqez0IV3rUABoNxsA_oBv_sykm5zsbQ,2243
|
178
176
|
omlish/lang/maybes.py,sha256=NYHZDjqDtwPMheDrj2VtUVujxRPf8Qpgk4ZlZCTvBZc,3492
|
@@ -205,7 +203,7 @@ omlish/lite/logs.py,sha256=PeJZUJWd1K-UFErVs0wtD0zRMFW5-olUNFVVZAj_ScY,5549
|
|
205
203
|
omlish/lite/marshal.py,sha256=u6jYUN_AndvI6__HJBvSw5ElHWC0CfHqgiDS28Vpqjg,8593
|
206
204
|
omlish/lite/reflect.py,sha256=9QYJwdINraq1JNMEgvoqeSlVvRRgOXpxAkpgX8EgRXc,1307
|
207
205
|
omlish/lite/runtime.py,sha256=VUhmNQvwf8QzkWSKj4Q0ReieJA_PzHaJNRBivfTseow,452
|
208
|
-
omlish/lite/secrets.py,sha256=
|
206
|
+
omlish/lite/secrets.py,sha256=3Mz3V2jf__XU9qNHcH56sBSw95L3U2UPL24bjvobG0c,816
|
209
207
|
omlish/lite/strings.py,sha256=9dO_A6EkhcTZ2xmOUGSOMT-mx9BnoOzYu1-ocSrDJaA,670
|
210
208
|
omlish/lite/subprocesses.py,sha256=KuGV3ImehMjCUK0JoV3pUtG_7o5wei1lRDn9HxzByAg,3063
|
211
209
|
omlish/logs/__init__.py,sha256=FbOyAW-lGH8gyBlSVArwljdYAU6RnwZLI5LwAfuNnrk,438
|
@@ -242,6 +240,10 @@ omlish/marshal/unions.py,sha256=m9uVp2HrkZKY9lDyGoWQGXFgan8mRuBaKimtWNksl64,2635
|
|
242
240
|
omlish/marshal/utils.py,sha256=puKJpwPpuDlMOIrKMcLTRLJyMiL6n_Xs-p59AuDEymA,543
|
243
241
|
omlish/marshal/uuids.py,sha256=H4B7UX_EPNmP2tC8bubcKrPLTS4aQu98huvbXQ3Zv2g,910
|
244
242
|
omlish/marshal/values.py,sha256=ssHiWdg_L6M17kAn8GiGdPW7UeQOm3RDikWkvwblf5I,263
|
243
|
+
omlish/math/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
244
|
+
omlish/math/bits.py,sha256=yip1l8agOYzT7bFyMGc0RR3XlnGCfHMpjw_SECLLh1I,3477
|
245
|
+
omlish/math/floats.py,sha256=UimhOT7KRl8LXTzOI5cQWoX_9h6WNWe_3vcOuO7-h_8,327
|
246
|
+
omlish/math/stats.py,sha256=MegzKVsmv2kra4jDWLOUgV0X7Ee2Tbl5u6ql1v4-dEY,10053
|
245
247
|
omlish/reflect/__init__.py,sha256=iWDCNJNP4afPcv-MxZRJSIRQ4NRw6XYPyRHhBXb5YIA,667
|
246
248
|
omlish/reflect/isinstance.py,sha256=x5T9S2634leinBT4hl3CZZkRttvdvvlxChkC_x9Qu2s,1176
|
247
249
|
omlish/reflect/ops.py,sha256=RJ6jzrM4ieFsXzWyNXWV43O_WgzEaUvlHSc5N2ezW2A,2044
|
@@ -306,13 +308,13 @@ omlish/testing/pytest/plugins/spacing.py,sha256=JQQhi9q3c523Ro1a_K_9RGAb7HotiO74
|
|
306
308
|
omlish/testing/pytest/plugins/switches.py,sha256=9FtN5qtPBoS-teEp54OHPF6jlZJakRJdq4pnLJpPj_A,3001
|
307
309
|
omlish/testing/pytest/plugins/utils.py,sha256=L5C622UXcA_AUKDcvyh5IMiRfqSGGz0McdhwZWvfMlU,261
|
308
310
|
omlish/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
309
|
-
omlish/text/asdl.py,sha256=
|
311
|
+
omlish/text/asdl.py,sha256=3v5UocAfxan_d9drkGNdH3AMfx_FFBpQu3ULGL4M6VM,16865
|
310
312
|
omlish/text/delimit.py,sha256=ubPXcXQmtbOVrUsNh5gH1mDq5H-n1y2R4cPL5_DQf68,4928
|
311
313
|
omlish/text/glyphsplit.py,sha256=Ug-dPRO7x-OrNNr8g1y6DotSZ2KH0S-VcOmUobwa4B0,3296
|
312
314
|
omlish/text/indent.py,sha256=6Jj6TFY9unaPa4xPzrnZemJ-fHsV53IamP93XGjSUHs,1274
|
313
|
-
omlish/text/parts.py,sha256=
|
314
|
-
omlish-0.0.0.
|
315
|
-
omlish-0.0.0.
|
316
|
-
omlish-0.0.0.
|
317
|
-
omlish-0.0.0.
|
318
|
-
omlish-0.0.0.
|
315
|
+
omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
|
316
|
+
omlish-0.0.0.dev29.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
317
|
+
omlish-0.0.0.dev29.dist-info/METADATA,sha256=J9BcC0SJmQjneAgNGyWD756p2EyX8iSvs92bU2JAQH4,3636
|
318
|
+
omlish-0.0.0.dev29.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
319
|
+
omlish-0.0.0.dev29.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
320
|
+
omlish-0.0.0.dev29.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|