omlish 0.0.0.dev179__py3-none-any.whl → 0.0.0.dev180__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.dev179'
2
- __revision__ = '40949c92a73910f364c60391f73bb2fcf9538caf'
1
+ __version__ = '0.0.0.dev180'
2
+ __revision__ = '61f5a9f8edf9c1c743e1ce24b9cec06fffcf55a0'
3
3
 
4
4
 
5
5
  #
omlish/argparse/all.py CHANGED
@@ -5,9 +5,9 @@ from .cli import ( # noqa
5
5
  ArgparseArg as Arg,
6
6
  argparse_arg as arg,
7
7
 
8
- ArgparseCommandFn as CommandFn,
9
- ArgparseCommand as Command,
10
- argparse_command as command,
8
+ ArgparseCmdFn as CmdFn,
9
+ ArgparseCmd as Cmd,
10
+ argparse_cmd as cmd,
11
11
 
12
12
  ArgparseCli as Cli,
13
13
  )
omlish/argparse/cli.py CHANGED
@@ -21,7 +21,7 @@ from ..lite.reflect import is_optional_alias
21
21
  T = ta.TypeVar('T')
22
22
 
23
23
 
24
- ArgparseCommandFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
24
+ ArgparseCmdFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
25
25
 
26
26
 
27
27
  ##
@@ -47,15 +47,15 @@ def argparse_arg(*args, **kwargs) -> ArgparseArg:
47
47
 
48
48
 
49
49
  @dc.dataclass(eq=False)
50
- class ArgparseCommand:
50
+ class ArgparseCmd:
51
51
  name: str
52
- fn: ArgparseCommandFn
52
+ fn: ArgparseCmdFn
53
53
  args: ta.Sequence[ArgparseArg] = () # noqa
54
54
 
55
55
  # _: dc.KW_ONLY
56
56
 
57
57
  aliases: ta.Optional[ta.Sequence[str]] = None
58
- parent: ta.Optional['ArgparseCommand'] = None
58
+ parent: ta.Optional['ArgparseCmd'] = None
59
59
  accepts_unknown: bool = False
60
60
 
61
61
  def __post_init__(self) -> None:
@@ -70,7 +70,7 @@ class ArgparseCommand:
70
70
 
71
71
  check.arg(callable(self.fn))
72
72
  check.arg(all(isinstance(a, ArgparseArg) for a in self.args))
73
- check.isinstance(self.parent, (ArgparseCommand, type(None)))
73
+ check.isinstance(self.parent, (ArgparseCmd, type(None)))
74
74
  check.isinstance(self.accepts_unknown, bool)
75
75
 
76
76
  functools.update_wrapper(self, self.fn)
@@ -84,21 +84,21 @@ class ArgparseCommand:
84
84
  return self.fn(*args, **kwargs)
85
85
 
86
86
 
87
- def argparse_command(
87
+ def argparse_cmd(
88
88
  *args: ArgparseArg,
89
89
  name: ta.Optional[str] = None,
90
90
  aliases: ta.Optional[ta.Iterable[str]] = None,
91
- parent: ta.Optional[ArgparseCommand] = None,
91
+ parent: ta.Optional[ArgparseCmd] = None,
92
92
  accepts_unknown: bool = False,
93
- ) -> ta.Any: # ta.Callable[[ArgparseCommandFn], ArgparseCommand]: # FIXME
93
+ ) -> ta.Any: # ta.Callable[[ArgparseCmdFn], ArgparseCmd]: # FIXME
94
94
  for arg in args:
95
95
  check.isinstance(arg, ArgparseArg)
96
96
  check.isinstance(name, (str, type(None)))
97
- check.isinstance(parent, (ArgparseCommand, type(None)))
97
+ check.isinstance(parent, (ArgparseCmd, type(None)))
98
98
  check.not_isinstance(aliases, str)
99
99
 
100
100
  def inner(fn):
101
- return ArgparseCommand(
101
+ return ArgparseCmd(
102
102
  (name if name is not None else fn.__name__).replace('_', '-'),
103
103
  fn,
104
104
  args,
@@ -153,7 +153,7 @@ class ArgparseCli:
153
153
  for bns in [bcls.__dict__ for bcls in reversed(mro)] + [ns]:
154
154
  bseen = set() # type: ignore
155
155
  for k, v in bns.items():
156
- if isinstance(v, (ArgparseCommand, ArgparseArg)):
156
+ if isinstance(v, (ArgparseCmd, ArgparseArg)):
157
157
  check.not_in(v, bseen)
158
158
  bseen.add(v)
159
159
  objs[k] = v
@@ -180,7 +180,7 @@ class ArgparseCli:
180
180
  subparsers = parser.add_subparsers()
181
181
 
182
182
  for att, obj in objs.items():
183
- if isinstance(obj, ArgparseCommand):
183
+ if isinstance(obj, ArgparseCmd):
184
184
  if obj.parent is not None:
185
185
  raise NotImplementedError
186
186
 
@@ -242,7 +242,7 @@ class ArgparseCli:
242
242
 
243
243
  #
244
244
 
245
- def _bind_cli_cmd(self, cmd: ArgparseCommand) -> ta.Callable:
245
+ def _bind_cli_cmd(self, cmd: ArgparseCmd) -> ta.Callable:
246
246
  return cmd.__get__(self, type(self))
247
247
 
248
248
  def prepare_cli_run(self) -> ta.Optional[ta.Callable]:
omlish/http/coro/fdio.py CHANGED
@@ -7,7 +7,7 @@ from ...io.buffers import IncrementalWriteBuffer
7
7
  from ...io.buffers import ReadableListBuffer
8
8
  from ...io.fdio.handlers import SocketFdioHandler
9
9
  from ...lite.check import check
10
- from ...lite.socket import SocketAddress
10
+ from ...sockets.addresses import SocketAddress
11
11
  from ..handlers import HttpHandler
12
12
  from .server import CoroHttpServer
13
13
 
@@ -64,8 +64,8 @@ import time
64
64
  import typing as ta
65
65
 
66
66
  from ...lite.check import check
67
- from ...lite.socket import SocketAddress
68
- from ...lite.socket import SocketHandler
67
+ from ...sockets.addresses import SocketAddress
68
+ from ...sockets.handlers import SocketHandler
69
69
  from ..handlers import HttpHandler
70
70
  from ..handlers import HttpHandlerRequest
71
71
  from ..handlers import UnsupportedMethodHttpHandlerError
omlish/http/handlers.py CHANGED
@@ -4,7 +4,7 @@ import dataclasses as dc
4
4
  import http.server
5
5
  import typing as ta
6
6
 
7
- from ..lite.socket import SocketAddress
7
+ from ..sockets.addresses import SocketAddress
8
8
  from .parsing import HttpHeaders
9
9
 
10
10
 
@@ -4,7 +4,7 @@ import socket
4
4
  import typing as ta
5
5
 
6
6
  from ...lite.check import check
7
- from ...lite.socket import SocketAddress
7
+ from ...sockets.addresses import SocketAddress
8
8
 
9
9
 
10
10
  class FdioHandler(abc.ABC):
omlish/lite/__init__.py CHANGED
@@ -1 +1,5 @@
1
1
  # @omlish-lite
2
+ """
3
+ These are the 'core' lite modules. These generally have a 'full' equivalent, in which case non-lite code should prefer
4
+ that.
5
+ """
@@ -1,3 +1,4 @@
1
+ # @omlish-lite
1
2
  import shlex
2
3
 
3
4
 
File without changes
@@ -1,10 +1,10 @@
1
1
  # ruff: noqa: UP006 UP007
2
+ # @omlish-lite
2
3
  """
3
4
  TODO:
4
5
  - SocketClientAddress family / tuple pairs
5
6
  + codification of https://docs.python.org/3/library/socket.html#socket-families
6
7
  """
7
- import abc
8
8
  import dataclasses as dc
9
9
  import socket
10
10
  import typing as ta
@@ -13,9 +13,6 @@ import typing as ta
13
13
  SocketAddress = ta.Any
14
14
 
15
15
 
16
- SocketHandlerFactory = ta.Callable[[SocketAddress, ta.BinaryIO, ta.BinaryIO], 'SocketHandler']
17
-
18
-
19
16
  ##
20
17
 
21
18
 
@@ -54,24 +51,3 @@ def get_best_socket_family(
54
51
  )
55
52
  ai = SocketAddressInfo(*next(iter(infos)))
56
53
  return ai.family, ai.sockaddr
57
-
58
-
59
- ##
60
-
61
-
62
- class SocketHandler(abc.ABC):
63
- def __init__(
64
- self,
65
- client_address: SocketAddress,
66
- rfile: ta.BinaryIO,
67
- wfile: ta.BinaryIO,
68
- ) -> None:
69
- super().__init__()
70
-
71
- self._client_address = client_address
72
- self._rfile = rfile
73
- self._wfile = wfile
74
-
75
- @abc.abstractmethod
76
- def handle(self) -> None:
77
- raise NotImplementedError
@@ -0,0 +1,30 @@
1
+ # ruff: noqa: UP006 UP007
2
+ # @omlish-lite
3
+ import abc
4
+ import typing as ta
5
+
6
+ from .addresses import SocketAddress
7
+
8
+
9
+ SocketHandlerFactory = ta.Callable[[SocketAddress, ta.BinaryIO, ta.BinaryIO], 'SocketHandler']
10
+
11
+
12
+ ##
13
+
14
+
15
+ class SocketHandler(abc.ABC):
16
+ def __init__(
17
+ self,
18
+ client_address: SocketAddress,
19
+ rfile: ta.BinaryIO,
20
+ wfile: ta.BinaryIO,
21
+ ) -> None:
22
+ super().__init__()
23
+
24
+ self._client_address = client_address
25
+ self._rfile = rfile
26
+ self._wfile = wfile
27
+
28
+ @abc.abstractmethod
29
+ def handle(self) -> None:
30
+ raise NotImplementedError
@@ -1,12 +1,13 @@
1
1
  # ruff: noqa: UP006 UP007
2
+ # @omlish-lite
2
3
  import socket
3
4
  import socketserver
4
5
  import typing as ta
5
6
 
6
7
  from omlish.lite.check import check
7
8
 
8
- from .socket import SocketAddress
9
- from .socket import SocketHandlerFactory
9
+ from .addresses import SocketAddress
10
+ from .handlers import SocketHandlerFactory
10
11
 
11
12
 
12
13
  ##
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omlish
3
- Version: 0.0.0.dev179
3
+ Version: 0.0.0.dev180
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -1,5 +1,5 @@
1
1
  omlish/.manifests.json,sha256=lRkBDFxlAbf6lN5upo3WSf-owW8YG1T21dfpbQL-XHM,7598
2
- omlish/__about__.py,sha256=hsTRZl82-_TWSF4oD3MRaC6rua1ked88afN1hbpqoUc,3409
2
+ omlish/__about__.py,sha256=7vMVy87ffE8iOF0eMquVWoGR2M295AJLJjSOvuDvPAg,3409
3
3
  omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
4
4
  omlish/c3.py,sha256=ubu7lHwss5V4UznbejAI0qXhXahrU01MysuHOZI9C4U,8116
5
5
  omlish/cached.py,sha256=UI-XTFBwA6YXWJJJeBn-WkwBkfzDjLBBaZf4nIJA9y0,510
@@ -10,6 +10,7 @@ omlish/dynamic.py,sha256=35C_cCX_Vq2HrHzGk5T-zbrMvmUdiIiwDzDNixczoDo,6541
10
10
  omlish/libc.py,sha256=8r7Ejyhttk9ruCfBkxNTrlzir5WPbDE2vmY7VPlceMA,15362
11
11
  omlish/multiprocessing.py,sha256=QZT4C7I-uThCAjaEY3xgUYb-5GagUlnE4etN01LDyU4,5186
12
12
  omlish/runmodule.py,sha256=PWvuAaJ9wQQn6bx9ftEL3_d04DyotNn8dR_twm2pgw0,700
13
+ omlish/shlex.py,sha256=bsW2XUD8GiMTUTDefJejZ5AyqT1pTgWMPD0BMoF02jE,248
13
14
  omlish/subprocesses.py,sha256=n6pk0nUaTFHzD_A6duyKNJ4ggncU7uNepfh_T90etHE,8671
14
15
  omlish/sync.py,sha256=QJ79kxmIqDP9SeHDoZAf--DpFIhDQe1jACy8H4N0yZI,2928
15
16
  omlish/term.py,sha256=EVHm3lEEIc9hT4f8BPmzbNUwlqZ8nrRpCwyQMN7LBm0,9313
@@ -82,8 +83,8 @@ omlish/antlr/_runtime/xpath/XPath.py,sha256=KSL1SH3VAeRDZCe4dAD7xmUdfk-j434ypZKR
82
83
  omlish/antlr/_runtime/xpath/XPathLexer.py,sha256=WvGKQjQnu7pX5C4CFKtsCzba2B2W6ie4ivtWLvlgymM,3509
83
84
  omlish/antlr/_runtime/xpath/__init__.py,sha256=lMd_BbXYdlDhZQN_q0TKN978XW5G0pq618F0NaLkpFE,71
84
85
  omlish/argparse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
- omlish/argparse/all.py,sha256=EfUSf27vFWqa4Q93AycU5YRsrHt-Nx3pU3uNVapb-EE,1054
86
- omlish/argparse/cli.py,sha256=Nd16RNNABOd9UjfLGtJrDOYkIs5uv1BnoqvJdQ2Ipc8,8273
86
+ omlish/argparse/all.py,sha256=2qhVgFTq3w_tJ_okEnw_D-2k4jlJD7EcM5hNEow6M2M,1030
87
+ omlish/argparse/cli.py,sha256=Kjq3bzd_E2XwV0T7-cddDdrm68N4AWptTKdJty8vN8g,8217
87
88
  omlish/asyncs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
89
  omlish/asyncs/all.py,sha256=uUz9ziKh4_QrgmdhKFMgq6j7mFbiZd3LiogguDCQsGI,587
89
90
  omlish/asyncs/anyio.py,sha256=gfpx-D8QGmUfhnQxHEaHXcAP8zSMQjcGw4COFTGNnHI,8021
@@ -265,7 +266,7 @@ omlish/http/consts.py,sha256=7BJ4D1MdIvqBcepkgCfBFHolgTwbOlqsOEiee_IjxOA,2289
265
266
  omlish/http/cookies.py,sha256=uuOYlHR6e2SC3GM41V0aozK10nef9tYg83Scqpn5-HM,6351
266
267
  omlish/http/dates.py,sha256=Otgp8wRxPgNGyzx8LFowu1vC4EKJYARCiAwLFncpfHM,2875
267
268
  omlish/http/encodings.py,sha256=w2WoKajpaZnQH8j-IBvk5ZFL2O2pAU_iBvZnkocaTlw,164
268
- omlish/http/handlers.py,sha256=yeBBHJmBKvY1C_qdekLxViy_eZSU7WIMvxO-6CSwD5I,789
269
+ omlish/http/handlers.py,sha256=2bKw7XRM11C0VSx-DStKa6exFKNINKK4jZ3uVUVh5d8,795
269
270
  omlish/http/headers.py,sha256=ZMmjrEiYjzo0YTGyK0YsvjdwUazktGqzVVYorY4fd44,5081
270
271
  omlish/http/json.py,sha256=9XwAsl4966Mxrv-1ytyCqhcE6lbBJw-0_tFZzGszgHE,7440
271
272
  omlish/http/jwt.py,sha256=6Rigk1WrJ059DY4jDIKnxjnChWb7aFdermj2AI2DSvk,4346
@@ -276,8 +277,8 @@ omlish/http/sse.py,sha256=MDs9RvxQXoQliImcc6qK1ERajEYM7Q1l8xmr-9ceNBc,2315
276
277
  omlish/http/versions.py,sha256=wSiOXPiClVjkVgSU_VmxkoD1SUYGaoPbP0U5Aw-Ufg8,409
277
278
  omlish/http/wsgi.py,sha256=czZsVUX-l2YTlMrUjKN49wRoP4rVpS0qpeBn4O5BoMY,948
278
279
  omlish/http/coro/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
279
- omlish/http/coro/fdio.py,sha256=RMwZ0w-kJAp-2DazFMtWd7yFtjoBqQVCfHuibQkVlkA,4011
280
- omlish/http/coro/server.py,sha256=6MjeYygaE4tcq2b8xBIkbNM_e1heDdq98yAwYGFEKdY,18060
280
+ omlish/http/coro/fdio.py,sha256=ajj_lekRockGwQEw8m_mi6RO9-o6hnC9ITiwtZe3y-s,4017
281
+ omlish/http/coro/server.py,sha256=-e-J5pPqPDGrvQkwcukwltOjTbTNatiCx9Rl7FvooTI,18071
281
282
  omlish/inject/__init__.py,sha256=n0RC9UDGsBQQ39cST39-XJqJPq2M0tnnh9yJubW9azo,1891
282
283
  omlish/inject/binder.py,sha256=DAbc8TZi5w8Mna0TUtq0mT4jeDVA7i7SlBtOFrh2swc,4185
283
284
  omlish/inject/bindings.py,sha256=pLXn2U3kvmAS-68IOG-tr77DbiI-wp9hGyy4lhG6_H8,525
@@ -327,7 +328,7 @@ omlish/io/compress/snappy.py,sha256=JFoH_9l0Tr9AGaQ0jHRiP4TsFnG071l27mprCBcqt4c,
327
328
  omlish/io/compress/zlib.py,sha256=BQ0BvX-wEN-0NwktcqFECYHTGwVe-VHCVCNarspGQ8o,2396
328
329
  omlish/io/compress/zstd.py,sha256=wik_HWLq_8fGAJgGyMGq9fhFQovot1aCH4lwMpihQmg,949
329
330
  omlish/io/fdio/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
330
- omlish/io/fdio/handlers.py,sha256=OOQhiazbhNMwxLwyzf8KUQrBQSuHIm-UqAMpXmmHGFQ,1344
331
+ omlish/io/fdio/handlers.py,sha256=VDPEff3yXPnCj2jZEkrzuI42bKC8wD8fLmOG97hKrgo,1350
331
332
  omlish/io/fdio/kqueue.py,sha256=YgGBQibkAUYODYDiGl7Enjtx1oQsJXuDsBLBXgqlLQw,3832
332
333
  omlish/io/fdio/manager.py,sha256=q4wWf7nKrNtjx6yPEvrVnFt4UtK_BTvVlquEGw7poEo,1250
333
334
  omlish/io/fdio/pollers.py,sha256=yNadAt3W5wd90PFmd3vD77bq5QwoVb2A6SM2JjZpKRs,5507
@@ -374,7 +375,7 @@ omlish/lifecycles/controller.py,sha256=ToYNJKH1Mxr7HyyF1cJrrec8NV_m84jrcvTMX0V5e
374
375
  omlish/lifecycles/manager.py,sha256=Au66KaO-fI-SEJALaPUJsCHYW2GE20xextk1wKn2BEU,5445
375
376
  omlish/lifecycles/states.py,sha256=zqMOU2ZU-MDNnWuwauM3_anIAiXM8LoBDElDEraptFg,1292
376
377
  omlish/lifecycles/transitions.py,sha256=qQtFby-h4VzbvgaUqT2NnbNumlcOx9FVVADP9t83xj4,1939
377
- omlish/lite/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
378
+ omlish/lite/__init__.py,sha256=ISLhM4q0LR1XXTCaHdZOZxBRyIsoZqYm4u0bf1BPcVk,148
378
379
  omlish/lite/cached.py,sha256=O7ozcoDNFm1Hg2wtpHEqYSp_i_nCLNOP6Ueq_Uk-7mU,1300
379
380
  omlish/lite/check.py,sha256=0PD-GKtaDqDX6jU5KbzbMvH-vl6jH82xgYfplmfTQkg,12941
380
381
  omlish/lite/contextmanagers.py,sha256=m9JO--p7L7mSl4cycXysH-1AO27weDKjP3DZG61cwwM,1683
@@ -389,9 +390,6 @@ omlish/lite/reflect.py,sha256=pzOY2PPuHH0omdtglkN6DheXDrGopdL3PtTJnejyLFU,2189
389
390
  omlish/lite/resources.py,sha256=YNSmX1Ohck1aoWRs55a-o5ChVbFJIQhtbqE-XwF55Oc,326
390
391
  omlish/lite/runtime.py,sha256=XQo408zxTdJdppUZqOWHyeUR50VlCpNIExNGHz4U6O4,459
391
392
  omlish/lite/secrets.py,sha256=3Mz3V2jf__XU9qNHcH56sBSw95L3U2UPL24bjvobG0c,816
392
- omlish/lite/shlex.py,sha256=CGAgKv1rgrHPhSmY8ItKkiqHYOvXB9j_uL_6u8p2fqI,233
393
- omlish/lite/socket.py,sha256=7OYgkXTcQv0wq7TQuLnl9y6dJA1ZT6Vbc1JH59QlxgY,1792
394
- omlish/lite/socketserver.py,sha256=doTXIctu_6c8XneFtzPFVG_Wq6xVmA3p9ymut8IvBoU,1586
395
393
  omlish/lite/strings.py,sha256=nGWaOi9LzTjkc5kPN2IqsVN8PUw8m_2yllTGRUQU5PI,1983
396
394
  omlish/lite/typing.py,sha256=U3-JaEnkDSYxK4tsu_MzUn3RP6qALBe5FXQXpD-licE,1090
397
395
  omlish/logs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -466,6 +464,10 @@ omlish/secrets/pwgen.py,sha256=v-5ztnOTHTAWXLGR-3H6HkMj2nPIZBMbo5xWR3q0rDY,1707
466
464
  omlish/secrets/pwhash.py,sha256=Goktn-swmC6PXqfRBnDrH_Lr42vjckT712UyErPjzkw,4102
467
465
  omlish/secrets/secrets.py,sha256=cnDGBoPknVxsCN04_gqcJT_7Ebk3iO3VPkRZ2oMjkMw,7868
468
466
  omlish/secrets/subprocesses.py,sha256=ffjfbgPbEE_Pwb_87vG4yYR2CGZy3I31mHNCo_0JtHw,1212
467
+ omlish/sockets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
468
+ omlish/sockets/addresses.py,sha256=ZQFacDsXo6cKSgEjzN525IcUJPyfubXETzbY-_BBAro,1285
469
+ omlish/sockets/handlers.py,sha256=9kkNMj1DTJa4xo_3hcBvSkjKc-dy_Ho5he2ubJieJ2A,621
470
+ omlish/sockets/server.py,sha256=g9CSL0m6Ox10usyysXw4YRFr9H3LlQUH-9GftFCLeFw,1606
469
471
  omlish/specs/__init__.py,sha256=zZwF8yXTEkSstYtORkDhVLK-_hWU8WOJCuBpognb_NY,118
470
472
  omlish/specs/jmespath/LICENSE,sha256=IH-ZZlZkS8XMkf_ubNVD1aYHQ2l_wd0tmHtXrCcYpRU,1113
471
473
  omlish/specs/jmespath/__init__.py,sha256=9tsrquw1kXe1KAhTP3WeL0GlGBiTguQVxsC-lUYTWP4,2087
@@ -571,9 +573,9 @@ omlish/text/indent.py,sha256=6Jj6TFY9unaPa4xPzrnZemJ-fHsV53IamP93XGjSUHs,1274
571
573
  omlish/text/minja.py,sha256=KAmZ2POcLcxwF4DPKxdWa16uWxXmVz1UnJXLSwt4oZo,5761
572
574
  omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
573
575
  omlish/text/random.py,sha256=jNWpqiaKjKyTdMXC-pWAsSC10AAP-cmRRPVhm59ZWLk,194
574
- omlish-0.0.0.dev179.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
575
- omlish-0.0.0.dev179.dist-info/METADATA,sha256=IYVOAZRpPvFaMBtdeTokZT1AlSGB41FLnxa00c4kz54,4264
576
- omlish-0.0.0.dev179.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
577
- omlish-0.0.0.dev179.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
578
- omlish-0.0.0.dev179.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
579
- omlish-0.0.0.dev179.dist-info/RECORD,,
576
+ omlish-0.0.0.dev180.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
577
+ omlish-0.0.0.dev180.dist-info/METADATA,sha256=YTRf_o1wf-jeZft0XvdNUg0MGJYmpJe0Z2x3k3fCObY,4264
578
+ omlish-0.0.0.dev180.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
579
+ omlish-0.0.0.dev180.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
580
+ omlish-0.0.0.dev180.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
581
+ omlish-0.0.0.dev180.dist-info/RECORD,,