omlish 0.0.0.dev262__py3-none-any.whl → 0.0.0.dev263__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 CHANGED
@@ -1,5 +1,5 @@
1
- __version__ = '0.0.0.dev262'
2
- __revision__ = 'f60701e97bc6863120aff49893615808c33e9756'
1
+ __version__ = '0.0.0.dev263'
2
+ __revision__ = '57f33e2582f051883b2e8cd84101c5f06899484b'
3
3
 
4
4
 
5
5
  #
@@ -1,5 +1,5 @@
1
1
  # ruff: noqa: I001
2
- from .asyncio import ( # noqa
2
+ from .utils import ( # noqa
3
3
  asyncio_ensure_task as ensure_task,
4
4
 
5
5
  asyncio_once as once,
omlish/c3.py CHANGED
@@ -41,6 +41,9 @@ import typing as ta
41
41
  T = ta.TypeVar('T')
42
42
 
43
43
 
44
+ ##
45
+
46
+
44
47
  def merge(seqs: ta.MutableSequence[list[T]]) -> list[T]:
45
48
  """
46
49
  Merges MROs in *sequences* to a single MRO using the C3 algorithm.
omlish/datetimes.py CHANGED
@@ -5,6 +5,9 @@ import re
5
5
  import typing as ta
6
6
 
7
7
 
8
+ ##
9
+
10
+
8
11
  def to_seconds(value: datetime.timedelta) -> float:
9
12
  return 86400 * value.days + value.seconds + 0.000001 * value.microseconds
10
13
 
omlish/defs.py CHANGED
@@ -13,6 +13,9 @@ import threading
13
13
  from . import lang
14
14
 
15
15
 
16
+ ##
17
+
18
+
16
19
  _repr = repr
17
20
 
18
21
  BASICS = {}
omlish/dynamic.py CHANGED
@@ -21,6 +21,9 @@ from . import lang
21
21
  T = ta.TypeVar('T')
22
22
 
23
23
 
24
+ ##
25
+
26
+
24
27
  _HOISTED_CODE_DEPTH: ta.MutableMapping[types.CodeType, int] = weakref.WeakKeyDictionary()
25
28
  _MAX_HOIST_DEPTH = 0
26
29
 
@@ -0,0 +1,48 @@
1
+ import dataclasses as dc
2
+ import typing as ta
3
+
4
+ from .... import lang
5
+ from .build import JsonObjectBuilder
6
+ from .lex import JsonStreamLexer
7
+ from .parse import JsonStreamParser
8
+
9
+
10
+ ##
11
+
12
+
13
+ @dc.dataclass(kw_only=True)
14
+ class JsonStreamObjectParser(lang.ExitStacked):
15
+ include_raw: bool = False
16
+ yield_object_lists: bool = False
17
+
18
+ #
19
+
20
+ _lex: JsonStreamLexer = dc.field(init=False)
21
+ _parse: JsonStreamParser = dc.field(init=False)
22
+ _build: JsonObjectBuilder = dc.field(init=False)
23
+
24
+ def _enter_contexts(self) -> None:
25
+ self._lex = JsonStreamLexer(
26
+ include_raw=self.include_raw,
27
+ )
28
+
29
+ self._parse = JsonStreamParser()
30
+
31
+ self._build = JsonObjectBuilder(
32
+ yield_object_lists=self.yield_object_lists,
33
+ )
34
+
35
+ def feed(self, i: ta.Iterable[str]) -> ta.Iterator[ta.Any]:
36
+ for c in i:
37
+ for t in self._lex(c):
38
+ for e in self._parse(t):
39
+ for v in self._build(e): # noqa
40
+ yield v
41
+
42
+
43
+ def stream_parse_one_object(
44
+ i: ta.Iterable[str],
45
+ **kwargs: ta.Any,
46
+ ) -> ta.Any:
47
+ with JsonStreamObjectParser(**kwargs) as p:
48
+ return next(p.feed(i))
omlish/lang/__init__.py CHANGED
@@ -142,6 +142,7 @@ from .functions import ( # noqa
142
142
  maybe_call,
143
143
  opt_coalesce,
144
144
  opt_fn,
145
+ opt_kw,
145
146
  periodically,
146
147
  raise_,
147
148
  raising,
omlish/lang/functions.py CHANGED
@@ -219,3 +219,10 @@ def opt_coalesce(*vs: T | None) -> T | None:
219
219
  if v is not None:
220
220
  return v
221
221
  return None
222
+
223
+
224
+ ##
225
+
226
+
227
+ def opt_kw(**kwargs: ta.Any) -> dict[str, ta.Any]:
228
+ return {k: v for k, v in kwargs.items() if k is not None}
omlish/shlex.py CHANGED
@@ -2,6 +2,9 @@
2
2
  import shlex
3
3
 
4
4
 
5
+ ##
6
+
7
+
5
8
  def shlex_needs_quote(s: str) -> bool:
6
9
  return bool(s) and len(list(shlex.shlex(s))) > 1
7
10
 
omlish/sql/abc.py CHANGED
@@ -5,6 +5,9 @@ import enum
5
5
  import typing as ta
6
6
 
7
7
 
8
+ ##
9
+
10
+
8
11
  DbapiTypeCode: ta.TypeAlias = ta.Any | None
9
12
 
10
13
  DbapiColumnDescription: ta.TypeAlias = tuple[
omlish/sql/dbapi.py CHANGED
@@ -45,6 +45,9 @@ from .. import lang
45
45
  from .params import ParamStyle
46
46
 
47
47
 
48
+ ##
49
+
50
+
48
51
  class DbapiDialect(enum.Enum):
49
52
  SQLITE = 'sqlite'
50
53
  MYSQL = 'mysql'
@@ -3,6 +3,9 @@ import dataclasses as dc
3
3
  import typing as ta
4
4
 
5
5
 
6
+ ##
7
+
8
+
6
9
  @dc.dataclass(frozen=True)
7
10
  class QualifiedName(ta.Sequence[str]):
8
11
  parts: ta.Sequence[str]
@@ -1,6 +1,9 @@
1
1
  import contextlib
2
2
 
3
3
 
4
+ ##
5
+
6
+
4
7
  @contextlib.contextmanager
5
8
  def assert_raises_star(et):
6
9
  num_caught = 0
@@ -8,6 +8,9 @@ import pytest
8
8
  from ... import lang
9
9
 
10
10
 
11
+ ##
12
+
13
+
11
14
  def if_cant_import(module: str, *args, **kwargs):
12
15
  return pytest.mark.skipif(not lang.can_import(module, *args, **kwargs), reason=f'requires import {module}')
13
16
 
omlish/testing/testing.py CHANGED
@@ -7,17 +7,24 @@ import traceback
7
7
  import typing as ta
8
8
 
9
9
 
10
- DEFAULT_TIMEOUT_S = 30
11
-
12
10
  T = ta.TypeVar('T')
13
11
  K = ta.TypeVar('K')
14
12
  V = ta.TypeVar('V')
15
13
 
16
14
 
15
+ ##
16
+
17
+
17
18
  def assert_dicts_equal_ordered(l: ta.Mapping[K, V], r: ta.Mapping[K, V]) -> None:
18
19
  assert list(l.items()) == list(r.items())
19
20
 
20
21
 
22
+ ##
23
+
24
+
25
+ DEFAULT_TIMEOUT_S = 30
26
+
27
+
21
28
  def call_many_with_timeout(
22
29
  fns: ta.Iterable[ta.Callable[[], T]],
23
30
  timeout_s: float | None = None,
@@ -88,6 +95,9 @@ def waitpid_with_timeout(
88
95
  raise timeout_exception
89
96
 
90
97
 
98
+ ##
99
+
100
+
91
101
  def xfail(fn):
92
102
  @functools.wraps(fn)
93
103
  def inner(*args, **kwargs):
omlish/text/delimit.py CHANGED
@@ -6,6 +6,9 @@ import io
6
6
  import typing as ta
7
7
 
8
8
 
9
+ ##
10
+
11
+
9
12
  class DelimitedEscaping:
10
13
  def __init__(
11
14
  self,
omlish/text/glyphsplit.py CHANGED
@@ -12,6 +12,9 @@ import typing as ta
12
12
  from ..lite.check import check
13
13
 
14
14
 
15
+ ##
16
+
17
+
15
18
  @dc.dataclass(frozen=True)
16
19
  class GlyphSplitMatch:
17
20
  l: str
omlish/text/indent.py CHANGED
@@ -7,6 +7,9 @@ import typing as ta
7
7
  from ..lite.check import check
8
8
 
9
9
 
10
+ ##
11
+
12
+
10
13
  class IndentWriter:
11
14
  DEFAULT_INDENT = ' ' * 4
12
15
 
omlish/text/mangle.py CHANGED
@@ -7,6 +7,9 @@ from ..lite.cached import cached_nullary
7
7
  from ..lite.check import check
8
8
 
9
9
 
10
+ ##
11
+
12
+
10
13
  @dc.dataclass(frozen=True)
11
14
  class StringMangler:
12
15
  escape: str
omlish/text/random.py CHANGED
@@ -2,6 +2,9 @@ import random
2
2
  import string
3
3
 
4
4
 
5
+ ##
6
+
7
+
5
8
  def generate_random_text(size: int) -> str:
6
9
  chars = string.ascii_letters + string.digits + string.punctuation
7
10
  return ''.join(random.choices(chars, k=size))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omlish
3
- Version: 0.0.0.dev262
3
+ Version: 0.0.0.dev263
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -1,16 +1,16 @@
1
1
  omlish/.manifests.json,sha256=x26AIwDzScUvnX-p4xlq6Zc5QYrAo0Vmgf1qHc1KL_M,8253
2
- omlish/__about__.py,sha256=BXH7qKqT5OctoZyedUgGC-oA114ZNwHwtmurxgA2dUE,3380
2
+ omlish/__about__.py,sha256=GOQYEJtlR5EdTLrsRa_QPv0Er_7G_beoO9C_lcsFp6A,3380
3
3
  omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
4
- omlish/c3.py,sha256=A9uZG39e7093HTWToNKZ91cFVTCbAVySgl3nShTGqVY,8409
4
+ omlish/c3.py,sha256=rer-TPOFDU6fYq_AWio_AmA-ckZ8JDY5shIzQ_yXfzA,8414
5
5
  omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
6
6
  omlish/check.py,sha256=THqm6jD1a0skAO5EC8SOVg58yq96Vk5wcuruBkCYxyU,2016
7
- omlish/datetimes.py,sha256=HajeM1kBvwlTa-uR1TTZHmZ3zTPnnUr1uGGQhiO1XQ0,2152
8
- omlish/defs.py,sha256=9uUjJuVIbCBL3g14fyzAp-9gH935MFofvlfOGwcBIaM,4913
9
- omlish/dynamic.py,sha256=Zymfvti3LSM6BR8YjuSYRYfKiojEgrGUpqaEAOJ8lEw,6521
7
+ omlish/datetimes.py,sha256=iFqCki3MKmBq_ZX-03cW4KE6AsR_pUJCWML2ifBLtdU,2157
8
+ omlish/defs.py,sha256=-4UuZoJUUNO_bZ6eSSdhR4CK4NKN2Wwr1FfUvfTF--8,4918
9
+ omlish/dynamic.py,sha256=zy0oO70_Vlh5dW8Nwav_O9bhIzQ6L16UgSuKR6y43VU,6526
10
10
  omlish/libc.py,sha256=8K4c66YV1ziJerl5poAAYCmsV-VSsHkT3EHhPW04ufg,15639
11
11
  omlish/metadata.py,sha256=HvZ6ItMpEmnE-X2d5Q6J17sBiG_qOyWB8DJrS9RFZpY,3604
12
12
  omlish/runmodule.py,sha256=PWvuAaJ9wQQn6bx9ftEL3_d04DyotNn8dR_twm2pgw0,700
13
- omlish/shlex.py,sha256=bsW2XUD8GiMTUTDefJejZ5AyqT1pTgWMPD0BMoF02jE,248
13
+ omlish/shlex.py,sha256=rlbgHWxjwpkCBRphOPqSIN_KD6qWJMLldNJUILulKT0,253
14
14
  omlish/sync.py,sha256=-2gVJZFl8hvp7jvrnX8GcZVOecqAym6AcyK1QtMR9Ic,2979
15
15
  omlish/algorithm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  omlish/algorithm/all.py,sha256=FudUHwoaRLNNmqYM3jhP2Yd2BpmYhNBRPaVZzARMoSc,194
@@ -105,13 +105,13 @@ omlish/asyncs/anyio/streams.py,sha256=gNRAcHR0L8OtNioqKFbq0Z_apYAWKHFipZ2MUBp8Vg
105
105
  omlish/asyncs/anyio/sync.py,sha256=ZmSNhSsEkPwlXThrpefhtVTxw4GJ9F0P-yKyo5vbbSk,1574
106
106
  omlish/asyncs/anyio/utils.py,sha256=X2Rz1DGrCJ0zkt1O5cHoMRaYKTPndBj6dzLhb09mVtE,1672
107
107
  omlish/asyncs/asyncio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
- omlish/asyncs/asyncio/all.py,sha256=EksCHjRQKobiGrxuDW72IaH53WJMs7rdj_ZDBI3iKcg,315
109
- omlish/asyncs/asyncio/asyncio.py,sha256=mDjYNm1cylUhQ8slWXwdPoXasuWfafjzu78GHt2Mdig,2437
108
+ omlish/asyncs/asyncio/all.py,sha256=u2JpMEs-0AJ0Vd8yU10HvWD8rfKxdFfMiwBu2oDeuuQ,313
110
109
  omlish/asyncs/asyncio/channels.py,sha256=X3S951YTjTRDguMSQRlfu74mPuWkNd2ZEUWboLY58-M,1079
111
110
  omlish/asyncs/asyncio/sockets.py,sha256=oZAPeC545MGeSpVj_uQfy-BbzXsXHesjCkJSiuqKmAI,1271
112
111
  omlish/asyncs/asyncio/streams.py,sha256=J_d1hgX4Mx9SfyW4DjOzh91PqzZmjOtiIB95ytF8Ygw,1009
113
112
  omlish/asyncs/asyncio/subprocesses.py,sha256=f30-wi-3n9R5dftm4CMrzp23EEa4GX283bORixm1_UU,6931
114
113
  omlish/asyncs/asyncio/timeouts.py,sha256=LwFx93KSrefBobQoK4-yH5B6M-pbd7NdNksNzLBfLgQ,459
114
+ omlish/asyncs/asyncio/utils.py,sha256=mDjYNm1cylUhQ8slWXwdPoXasuWfafjzu78GHt2Mdig,2437
115
115
  omlish/asyncs/bluelet/LICENSE,sha256=VHf3oPQihOHnWyIR8LcXX0dpONa1lgyJnjWC2qVuRR0,559
116
116
  omlish/asyncs/bluelet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
117
  omlish/asyncs/bluelet/all.py,sha256=aUV6PwnR8DqnEBS9wsZuPW_UtP6G9M8_KY-mmxZeVG0,1516
@@ -291,6 +291,7 @@ omlish/formats/json/stream/errors.py,sha256=c8M8UAYmIZ-vWZLeKD2jMj4EDCJbr9QR8Jq_
291
291
  omlish/formats/json/stream/lex.py,sha256=ItsWvtl5SZH-HwQtPy8Cpf4nszqDzvUTdIOEmSRiZ-E,6807
292
292
  omlish/formats/json/stream/parse.py,sha256=JuYmXwtTHmQJTFKoJNoEHUpCPxXdl_gvKPykVXgED34,6208
293
293
  omlish/formats/json/stream/render.py,sha256=NtmDsN92xZi5dkgSSuMeMXMAiJblmjz1arB4Ft7vBhc,3715
294
+ omlish/formats/json/stream/utils.py,sha256=QASlxxQGscktsHrORlt8m9V3VWLDakP01QnsSPHLDQ8,1189
294
295
  omlish/formats/json5/Json5.g4,sha256=ZUmgJPvj8lSMUD_v3wijp10ZQExYB5mu5Q089dYEJSU,2389
295
296
  omlish/formats/json5/__init__.py,sha256=BsjPz5zJDji3GjQ8x8hWvcl1GYPV_ZIHnE3c2Sr8aTU,102
296
297
  omlish/formats/json5/codec.py,sha256=ldnxCRo0JP1fkGLt0mMxJlLvNxqIF_1KUCcSp1HtI-M,452
@@ -407,7 +408,7 @@ omlish/iterators/iterators.py,sha256=iTQQwBE6Wzoy36dnbPIws17zbjE3zNN4KwVw4Fzh-gY
407
408
  omlish/iterators/recipes.py,sha256=53mkexitMhkwXQZbL6DrhpT0WePQ_56uXd5Jaw3DfzI,467
408
409
  omlish/iterators/tools.py,sha256=Pi4ybXytUXVZ3xwK89xpPImQfYYId9p1vIFQvVqVLqA,2551
409
410
  omlish/iterators/unique.py,sha256=0jAX3kwzVfRNhe0Tmh7kVP_Q2WBIn8POo_O-rgFV0rQ,1390
410
- omlish/lang/__init__.py,sha256=H-kPgztXCiOneAvYeC1YxN8nMQu_gYBY2hwy8-dxHvs,5064
411
+ omlish/lang/__init__.py,sha256=OUR1wf7Syr8VdQwSJd9_92m-b6Gm4O11dqm92NnsC8s,5076
411
412
  omlish/lang/attrs.py,sha256=fofCKN0X8TMu1yGqHpLpNLih9r9HWl3D3Vn3b6O791w,3891
412
413
  omlish/lang/clsdct.py,sha256=HAGIvBSbCefzRjXriwYSBLO7QHKRv2UsE78jixOb-fA,1828
413
414
  omlish/lang/collections.py,sha256=aGi0j6VzVe2nz4l357Y4RD5_XNl8OJbmM5qM6BclrrY,1895
@@ -416,7 +417,7 @@ omlish/lang/contextmanagers.py,sha256=UPH6daYwSP9cH5AfSVsJyEHk1UURMGhVPM5ZRhp_Hv
416
417
  omlish/lang/datetimes.py,sha256=ehI_DhQRM-bDxAavnp470XcekbbXc4Gdw9y1KpHDJT0,223
417
418
  omlish/lang/descriptors.py,sha256=zBtgO9LjdSTGHNUgiIqswh78WOVoGH6KzS0NbgB1Wls,6572
418
419
  omlish/lang/exceptions.py,sha256=qJBo3NU1mOWWm-NhQUHCY5feYXR3arZVyEHinLsmRH4,47
419
- omlish/lang/functions.py,sha256=0ql9EXA_gEEhvUVzMJCjVhEnVtHecsLKmfmAXuQqeGY,4388
420
+ omlish/lang/functions.py,sha256=rrXzGOx4vVLek1_Ga7lHwOxjQy65Uvc0UR5tjJ0c6Xs,4508
420
421
  omlish/lang/generators.py,sha256=5LX17j-Ej3QXhwBgZvRTm_dq3n9veC4IOUcVmvSu2vU,5243
421
422
  omlish/lang/imports.py,sha256=Gdl6xCF89xiMOE1yDmdvKWamLq8HX-XPianO58Jdpmw,9218
422
423
  omlish/lang/iterables.py,sha256=HOjcxOwyI5bBApDLsxRAGGhTTmw7fdZl2kEckxRVl-0,1994
@@ -660,11 +661,11 @@ omlish/specs/proto/_antlr/Protobuf3Parser.py,sha256=VmkUyJx3WxIgAecOa1BGwbO9fVNy
660
661
  omlish/specs/proto/_antlr/Protobuf3Visitor.py,sha256=zEVBXly2k9Cqmgdb45QwpLR-fZCEq8hpp2WQj-s7Wps,8782
661
662
  omlish/specs/proto/_antlr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
662
663
  omlish/sql/__init__.py,sha256=TpZLsEJKJzvJ0eMzuV8hwOJJbkxBCV1RZPUMLAVB6io,173
663
- omlish/sql/abc.py,sha256=yrUSO2OSY6rtMyA0_MlrEFEyIKXLJymSPpmJwEjEJuc,4038
664
- omlish/sql/dbapi.py,sha256=o6umqE7zVFI_ax0TnCKAikhAIPXChYOwVULb_OdcL1c,2974
664
+ omlish/sql/abc.py,sha256=3hrCjB4jnPVMef_YXClCblzYUZ9l9yaxJJdd5_Nu9GM,4043
665
+ omlish/sql/dbapi.py,sha256=DfMxCyltpMj6hUiLti1omUvJyMGbrkGxcz2ywolOpPA,2979
665
666
  omlish/sql/dbs.py,sha256=65e388987upJpsFX8bNL7uhiYv2sCsmk9Y04V0MXdsI,1873
666
667
  omlish/sql/params.py,sha256=Z4VPet6GhNqD1T_MXSWSHkdy3cpUEhST-OplC4B_fYI,4433
667
- omlish/sql/qualifiedname.py,sha256=rlW3gVmyucJbqwcxj_7BfK4X2HoXrMroZT2H45zPgJQ,2264
668
+ omlish/sql/qualifiedname.py,sha256=c3GQzxh9sNyE_TP32PnlCun_F2bKXvX1ohtt6esTsjo,2269
668
669
  omlish/sql/alchemy/__init__.py,sha256=1ruDMiviH5fjevn2xVki-QspcE9O3VPy4hxOqpHjI2s,224
669
670
  omlish/sql/alchemy/asyncs.py,sha256=MwZwWIaZsUCQLcTA8mdHUPZmR-pXEVSAsvd15FCm3W4,3692
670
671
  omlish/sql/alchemy/duckdb.py,sha256=kr7pIhiBLNAuZrcigHDtFg9zHkVcrRW3LfryO9VJ4mk,3749
@@ -726,10 +727,10 @@ omlish/term/vt100/c.py,sha256=cAhDKXI81PZRtFmTotfad3HZGREP1QnOlWYoAw6v-Fw,3532
726
727
  omlish/term/vt100/states.py,sha256=OxPUxfFTcfz56MhtDgIigEApChOtN6XO1g6R2H08mu4,8303
727
728
  omlish/term/vt100/terminal.py,sha256=KUlg331ele7P6SHsBKdbpdQFDKsxSply1Ds27NkppTs,9359
728
729
  omlish/testing/__init__.py,sha256=M_BQrcCHkoL-ZvE-UpQ8XxXNYRRawhjUz4rCJnAqM2A,152
729
- omlish/testing/testing.py,sha256=TT2wwSzPZ_KhIvKxpM1qc1yHKD-LHDNgGrcr_h8vs7c,2895
730
+ omlish/testing/testing.py,sha256=rA5jyo-3q2RLRq1whkoGylWKQ-AYlBwWz6z5s2XtFzo,2911
730
731
  omlish/testing/pytest/__init__.py,sha256=rOpQYgp7jYjEIMjInzl-a_uIMqmOtVwGzDgJyCDpvxg,206
731
- omlish/testing/pytest/helpers.py,sha256=TJpD60mBtLi9FtxX4TThfuXvg5FIRPSiZk1aeRwe-D4,197
732
- omlish/testing/pytest/skip.py,sha256=Mk7iIfXxp6JWl8vJRP9BK9LoirSOLTJ3mLeLL6Ipi9M,984
732
+ omlish/testing/pytest/helpers.py,sha256=HxiKvpJQ4b6WCiQXOqQTqKbmr7CMAgCF6hViT6pfIuw,202
733
+ omlish/testing/pytest/skip.py,sha256=imDrBhQKQkEmStaSn0Js-zsfyKMPmNod-mW1ANdIhak,989
733
734
  omlish/testing/pytest/inject/__init__.py,sha256=pdRKv1HcDmJ_yArKJbYITPXXZthRSGgBJWqITr0Er38,117
734
735
  omlish/testing/pytest/inject/harness.py,sha256=_Qf7lLcYc_dpauYOE68u_a65jPCFWmQUYv9m_OOdNqs,5724
735
736
  omlish/testing/pytest/plugins/__init__.py,sha256=ys1zXrYrNm7Uo6YOIVJ6Bd3dQo6kv387k7MbTYlqZSI,467
@@ -756,20 +757,20 @@ omlish/testing/pytest/plugins/asyncs/backends/trio_asyncio.py,sha256=VcGVwf4V-1Z
756
757
  omlish/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
757
758
  omlish/text/asdl.py,sha256=AS3irh-sag5pqyH3beJif78PjCbOaFso1NeKq-HXuTs,16867
758
759
  omlish/text/decoding.py,sha256=sQWGckWzRslRHYKpj1SBeoo6AVqXm5HFlWFRARN1QpM,1286
759
- omlish/text/delimit.py,sha256=Y0ID9Y9nfgQu3tYCiMS3hLa-ugA2cc-29PV4fF1343g,4927
760
+ omlish/text/delimit.py,sha256=z9uIuWJdbp7M3ku2KQRHo-lzJYZUJCqZTLse1sIUI4Q,4932
760
761
  omlish/text/filecache.py,sha256=ls08QSqBlhVXvjDwJpUXiP-U9HLyCstGAxtBOuWJmVY,5414
761
- omlish/text/glyphsplit.py,sha256=kqqjglRdxGo0czYZxOz9Vi8aBmVsCOq8h6lPwRA5xe0,3803
762
- omlish/text/indent.py,sha256=YjtJEBYWuk8--b9JU_T6q4yxV85_TR7VEVr5ViRCFwk,1336
762
+ omlish/text/glyphsplit.py,sha256=HI8TWDUaF_tJG5RnIdIjtUH_lYnjYZ7KZBANSxOXGZc,3808
763
+ omlish/text/indent.py,sha256=LOQgHskHMLVrRC6HLL9uIWay517dpvPEYQK0Igm-wm8,1341
763
764
  omlish/text/linecache.py,sha256=hRYlEhD63ZfA6_ZOTkQIcnON-3W56QMAhcG3vEJqj9M,1858
764
- omlish/text/mangle.py,sha256=kfzFLfvepH-chl1P89_mdc5vC4FSqyPA2aVtgzuB8IY,1133
765
+ omlish/text/mangle.py,sha256=yBSEWZfmcMBbGP8Ynb7JKldQMLG-8cNV5F-rBMGg6VE,1138
765
766
  omlish/text/minja.py,sha256=jZC-fp3Xuhx48ppqsf2Sf1pHbC0t8XBB7UpUUoOk2Qw,5751
766
767
  omlish/text/parts.py,sha256=Q9NvoyEGQKIWgiPD4D_Qc66cWAuyEKE033dT9m7c3Wk,6662
767
- omlish/text/random.py,sha256=jNWpqiaKjKyTdMXC-pWAsSC10AAP-cmRRPVhm59ZWLk,194
768
+ omlish/text/random.py,sha256=8feS5JE_tSjYlMl-lp0j93kCfzBae9AM2cXlRLebXMA,199
768
769
  omlish/text/go/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
769
770
  omlish/text/go/quoting.py,sha256=N9EYdnFdEX_A8fOviH-1w4jwV3XOQ7VU2WsoUNubYVY,9137
770
- omlish-0.0.0.dev262.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
771
- omlish-0.0.0.dev262.dist-info/METADATA,sha256=LFyiHfPhM7912bihwnUNvFuGoCgIqW8_Pg9F4Ih5zUs,4198
772
- omlish-0.0.0.dev262.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
773
- omlish-0.0.0.dev262.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
774
- omlish-0.0.0.dev262.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
775
- omlish-0.0.0.dev262.dist-info/RECORD,,
771
+ omlish-0.0.0.dev263.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
772
+ omlish-0.0.0.dev263.dist-info/METADATA,sha256=WzqhQvPspAtdhpJVn5vOwEXuIdEDvkPu0IfVoqfLArw,4198
773
+ omlish-0.0.0.dev263.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
774
+ omlish-0.0.0.dev263.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
775
+ omlish-0.0.0.dev263.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
776
+ omlish-0.0.0.dev263.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (77.0.3)
2
+ Generator: setuptools (78.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
File without changes