omlish 0.0.0.dev220__py3-none-any.whl → 0.0.0.dev221__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.
Files changed (38) hide show
  1. omlish/__about__.py +2 -2
  2. omlish/algorithm/__init__.py +0 -0
  3. omlish/algorithm/all.py +13 -0
  4. omlish/algorithm/distribute.py +46 -0
  5. omlish/algorithm/toposort.py +26 -0
  6. omlish/algorithm/unify.py +31 -0
  7. omlish/collections/__init__.py +0 -2
  8. omlish/collections/utils.py +0 -46
  9. omlish/docker/oci/building.py +122 -0
  10. omlish/docker/oci/data.py +62 -8
  11. omlish/docker/oci/datarefs.py +98 -0
  12. omlish/docker/oci/loading.py +120 -0
  13. omlish/docker/oci/media.py +44 -14
  14. omlish/docker/oci/repositories.py +72 -0
  15. omlish/graphs/trees.py +2 -1
  16. omlish/http/coro/server.py +42 -33
  17. omlish/http/{simple.py → coro/simple.py} +17 -17
  18. omlish/specs/irc/__init__.py +0 -0
  19. omlish/specs/irc/format/LICENSE +11 -0
  20. omlish/specs/irc/format/__init__.py +61 -0
  21. omlish/specs/irc/format/consts.py +6 -0
  22. omlish/specs/irc/format/errors.py +30 -0
  23. omlish/specs/irc/format/message.py +18 -0
  24. omlish/specs/irc/format/nuh.py +52 -0
  25. omlish/specs/irc/format/parsing.py +155 -0
  26. omlish/specs/irc/format/rendering.py +150 -0
  27. omlish/specs/irc/format/tags.py +99 -0
  28. omlish/specs/irc/format/utils.py +27 -0
  29. omlish/specs/irc/numerics/__init__.py +0 -0
  30. omlish/specs/irc/numerics/formats.py +94 -0
  31. omlish/specs/irc/numerics/numerics.py +808 -0
  32. omlish/specs/irc/numerics/types.py +59 -0
  33. {omlish-0.0.0.dev220.dist-info → omlish-0.0.0.dev221.dist-info}/METADATA +1 -1
  34. {omlish-0.0.0.dev220.dist-info → omlish-0.0.0.dev221.dist-info}/RECORD +38 -14
  35. {omlish-0.0.0.dev220.dist-info → omlish-0.0.0.dev221.dist-info}/LICENSE +0 -0
  36. {omlish-0.0.0.dev220.dist-info → omlish-0.0.0.dev221.dist-info}/WHEEL +0 -0
  37. {omlish-0.0.0.dev220.dist-info → omlish-0.0.0.dev221.dist-info}/entry_points.txt +0 -0
  38. {omlish-0.0.0.dev220.dist-info → omlish-0.0.0.dev221.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,59 @@
1
+ import dataclasses as dc
2
+ import typing as ta
3
+
4
+ from .... import collections as col
5
+
6
+
7
+ ##
8
+
9
+
10
+ @dc.dataclass(frozen=True)
11
+ class NumericReply:
12
+ name: str
13
+ num: int
14
+ formats: ta.Sequence[str]
15
+
16
+ @classmethod
17
+ def new(
18
+ cls,
19
+ name: str,
20
+ num: int,
21
+ *formats: str,
22
+ ) -> 'NumericReply':
23
+ return cls(
24
+ name,
25
+ num,
26
+ formats,
27
+ )
28
+
29
+
30
+ ##
31
+
32
+
33
+ class NumericReplies:
34
+ def __init__(self, lst: ta.Iterable[NumericReply]) -> None:
35
+ super().__init__()
36
+
37
+ self._lst = list(lst)
38
+ self._by_name = col.make_map_by(lambda nr: nr.name, self._lst, strict=True)
39
+ self._by_num = col.make_map_by(lambda nr: nr.num, self._lst, strict=True)
40
+
41
+ def __len__(self) -> int:
42
+ return len(self._lst)
43
+
44
+ def __iter__(self) -> ta.Iterator[NumericReply]:
45
+ return iter(self._lst)
46
+
47
+ def __getitem__(self, key: str | int) -> NumericReply:
48
+ if isinstance(key, str):
49
+ return self._by_name[key]
50
+ elif isinstance(key, int):
51
+ return self._by_num[key]
52
+ else:
53
+ raise TypeError(key)
54
+
55
+ def get(self, key: str | int) -> NumericReply | None:
56
+ try:
57
+ return self[key]
58
+ except KeyError:
59
+ return None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: omlish
3
- Version: 0.0.0.dev220
3
+ Version: 0.0.0.dev221
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -1,5 +1,5 @@
1
1
  omlish/.manifests.json,sha256=YGmAnUBszmosQQ_7Hh2wwtDiYdYZ4unNKYzOtALuels,7968
2
- omlish/__about__.py,sha256=4MxdtmyseRyrqsGb-8ZzKRlrqSzhp5cQ5hkCmiaDCZc,3380
2
+ omlish/__about__.py,sha256=u7q71WFVW-bTVdaEFl5j-jjsZImt5TKEkE4iaR6nat0,3380
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
@@ -13,6 +13,11 @@ omlish/runmodule.py,sha256=PWvuAaJ9wQQn6bx9ftEL3_d04DyotNn8dR_twm2pgw0,700
13
13
  omlish/shlex.py,sha256=bsW2XUD8GiMTUTDefJejZ5AyqT1pTgWMPD0BMoF02jE,248
14
14
  omlish/subprocesses.py,sha256=c7arxsQ7JiaNCmK3GKqwRO6BwrvxeK7eez8A4SrvGBo,10199
15
15
  omlish/sync.py,sha256=QJ79kxmIqDP9SeHDoZAf--DpFIhDQe1jACy8H4N0yZI,2928
16
+ omlish/algorithm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ omlish/algorithm/all.py,sha256=FudUHwoaRLNNmqYM3jhP2Yd2BpmYhNBRPaVZzARMoSc,194
18
+ omlish/algorithm/distribute.py,sha256=kO60F7HtMF3j-IxuhJdtsfgIR1Vpf1okQfacb4eNukQ,1533
19
+ omlish/algorithm/toposort.py,sha256=cE-zouEVhX05jwGl86JhxB2qgqw5DfQRqpZFR89j7NY,888
20
+ omlish/algorithm/unify.py,sha256=xUvisdtU8L9uMWt--_osYksJjVBlwxLOLvtdDmFGDDo,833
16
21
  omlish/antlr/__init__.py,sha256=88bMl_28cfSKslgOkMGYXqALgsHz3KC4LFvAVtzj7k8,89
17
22
  omlish/antlr/delimit.py,sha256=3Byvh9_Ip8ftM_SeSEmMbnNo1jrxk-xm8HnHDp_nDaI,3466
18
23
  omlish/antlr/dot.py,sha256=W9cgprtAZH6EjUkzWfSbx2XUUYRYLLxFofGWrUp-368,956
@@ -130,7 +135,7 @@ omlish/codecs/funcs.py,sha256=p4imNt7TobyZVXWC-WhntHVu9KfJrO4QwdtPRh-cVOk,850
130
135
  omlish/codecs/registry.py,sha256=Ald3fs707cJsUovYjNmxdT2zAQworvDxwMFk7DBT8r0,3995
131
136
  omlish/codecs/standard.py,sha256=eiZ4u9ep0XrA4Z_D1zJI0vmWyuN8HLrX4Se_r_Cq_ZM,60
132
137
  omlish/codecs/text.py,sha256=JzrdwMpQPo2NBBg3K1EZszzQy5vEWmd82SIerJd4yeQ,5723
133
- omlish/collections/__init__.py,sha256=zeUvcAz073ekko37QKya6sElTMfKTuF1bKrdbMtaRpI,2142
138
+ omlish/collections/__init__.py,sha256=I-HDYNL1EF7vx-M3wMk5cTdX-lA4EnZtBF5wcd7Qbhg,2110
134
139
  omlish/collections/abc.py,sha256=sP7BpTVhx6s6C59mTFeosBi4rHOWC6tbFBYbxdZmvh0,2365
135
140
  omlish/collections/coerce.py,sha256=g68ROb_-5HgH-vI8612mU2S0FZ8-wp2ZHK5_Zy_kVC0,7037
136
141
  omlish/collections/exceptions.py,sha256=shcS-NCnEUudF8qC_SmO2TQyjivKlS4TDjaz_faqQ0c,44
@@ -146,7 +151,7 @@ omlish/collections/sorted.py,sha256=E5ZOdNn7Jju1EcQ7CX2Ltk9StIXsBOzqvh7EsT3ZA2U,
146
151
  omlish/collections/treap.py,sha256=A09ZPacGyJlyRB-Wi4TNj3tE0w-RpFNliPgpDaa6Vwg,7719
147
152
  omlish/collections/treapmap.py,sha256=TxOM-ZRF5PK2xe5wRIhESNt7DGh9b_MeZfE7HLkCOs4,5804
148
153
  omlish/collections/unmodifiable.py,sha256=QmUEi9IBXqiM_KGgH2rqg15VmkHJo1MZ6kwq2twEMho,4750
149
- omlish/collections/utils.py,sha256=9o9STwzAn5YjZRZ9ns1kuo7NgLXLaoVPFu6AJd-3JT8,4336
154
+ omlish/collections/utils.py,sha256=Q0lHhNDokVxdOvApmu1QX5fABYwbn1ATiIwp194Ur_E,2889
150
155
  omlish/collections/cache/__init__.py,sha256=D1gO71VcwxFTZP9gAc9isHfg_TEdalwhsJcgGLvS9hg,233
151
156
  omlish/collections/cache/descriptor.py,sha256=t-1Gh4DTABDuNmeDJlpoW4LV3gi_uSlBd9ZfBINfYCM,5023
152
157
  omlish/collections/cache/impl.py,sha256=ySRU9UJG7jH9VPvuXdwZQ_rSqrleY-1mtie5Ml738wY,14755
@@ -228,8 +233,12 @@ omlish/docker/manifests.py,sha256=LR4FpOGNUT3bZQ-gTjB6r_-1C3YiG30QvevZjrsVUQM,70
228
233
  omlish/docker/portrelay.py,sha256=QlRoTnQXs5INguR7XOj1xH0gNdL9SUeZm5z45DUctXo,1222
229
234
  omlish/docker/timebomb.py,sha256=A_pgIDaXKsQwPiikrCTgIJl91gwYqkPGFY6j-Naq07Q,342
230
235
  omlish/docker/oci/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
231
- omlish/docker/oci/data.py,sha256=4KtSxziT70BhF30ozQ1SCfX4y0LT_5x0CuOKC4zrEV4,2616
232
- omlish/docker/oci/media.py,sha256=fJ8VcU-edDpg-FyJQamw-sUlhTghkC-WQ1TC4MiRpFU,4499
236
+ omlish/docker/oci/building.py,sha256=o62QmOfMEP84uLukk5nJ59bAmEKPvkNtgJqS-C8XS04,3544
237
+ omlish/docker/oci/data.py,sha256=DTHtdnqdv1PTHKoW67WqBc7uPmTQtM_wcoCdt_h4sT0,3437
238
+ omlish/docker/oci/datarefs.py,sha256=OUHhFy2TytGt2_YVzCOreOBBbFXmGHTpflUlj7oOz4A,2079
239
+ omlish/docker/oci/loading.py,sha256=aJGa4bTXfiIV6K0aBMEaWY3u0fBCLWaKFvtW_YZOOCo,3287
240
+ omlish/docker/oci/media.py,sha256=tn14DHNNhyFwrrprOdLx0es44aA9Eby8Z-sdrUMQe50,4898
241
+ omlish/docker/oci/repositories.py,sha256=moN5mUrorcFMbvQ5jowTlspetSGO_aa3KuK6_EW1Qdk,1872
233
242
  omlish/formats/__init__.py,sha256=T0AG1gFnqQ5JiHN0UPQjQ-7g5tnxMIG-mgOvMYExYAM,21
234
243
  omlish/formats/cbor.py,sha256=o_Hbe4kthO9CeXK-FySrw0dHVlrdyTo2Y8PpGRDfZ3c,514
235
244
  omlish/formats/cloudpickle.py,sha256=16si4yUp_pAdDWGECAWf6HLA2PwSANGGgDoMLGZUem8,579
@@ -288,7 +297,7 @@ omlish/funcs/pipes.py,sha256=E7Sz8Aj8ke_vCs5AMNwg1I36kRdHVGTnzxVQaDyn43U,2490
288
297
  omlish/graphs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
289
298
  omlish/graphs/dags.py,sha256=zp55lYgUdRCxmADwiGDHeehMJczZFA_tzdWqy77icOk,3047
290
299
  omlish/graphs/domination.py,sha256=oCGoWzWTxLwow0LDyGjjEf2AjFiOiDz4WaBtczwSbsQ,7576
291
- omlish/graphs/trees.py,sha256=t9kzLy33ynYV0TowVkyDvkkRBQV5x--1vtNBSB4Auus,8156
300
+ omlish/graphs/trees.py,sha256=zvfjDN8R7J6wStNJEUO6OCioGXJrLGhU8KtcqlWVRPI,8191
292
301
  omlish/graphs/dot/__init__.py,sha256=Y1MZRQBZkcYyG1Tn7K2FhL8aYbm4v4tk6f5g9AqEkUw,359
293
302
  omlish/graphs/dot/items.py,sha256=OWPf0-hjBgS1uyy2QgAEn4IgFHJcEg7sHVWeTx1ghZc,4083
294
303
  omlish/graphs/dot/make.py,sha256=RN30gHfJPiXx5Q51kbDdhVJYf59Fr84Lz9J-mXRt9sI,360
@@ -309,13 +318,13 @@ omlish/http/jwt.py,sha256=6Rigk1WrJ059DY4jDIKnxjnChWb7aFdermj2AI2DSvk,4346
309
318
  omlish/http/multipart.py,sha256=R9ycpHsXRcmh0uoc43aYb7BdWL-8kSQHe7J-M81aQZM,2240
310
319
  omlish/http/parsing.py,sha256=hxfd9nYaAAjYIivkTClFZXMRmiiCnxzeeEIGXw7-gt0,13992
311
320
  omlish/http/sessions.py,sha256=TfTJ_j-6c9PelG_RmijEwozfaVm3O7YzgtFvp8VzQqM,4799
312
- omlish/http/simple.py,sha256=9WtpbQahiZE-UjRP3ZDni8DQTq_HkVSdwpui_y8mf1I,2867
313
321
  omlish/http/sse.py,sha256=MDs9RvxQXoQliImcc6qK1ERajEYM7Q1l8xmr-9ceNBc,2315
314
322
  omlish/http/versions.py,sha256=wSiOXPiClVjkVgSU_VmxkoD1SUYGaoPbP0U5Aw-Ufg8,409
315
323
  omlish/http/wsgi.py,sha256=czZsVUX-l2YTlMrUjKN49wRoP4rVpS0qpeBn4O5BoMY,948
316
324
  omlish/http/coro/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
317
325
  omlish/http/coro/fdio.py,sha256=ajj_lekRockGwQEw8m_mi6RO9-o6hnC9ITiwtZe3y-s,4017
318
- omlish/http/coro/server.py,sha256=TgqBTOpniZMqRPoSP3xrAaD-TLSoPsknVr7D22-2zgo,19432
326
+ omlish/http/coro/server.py,sha256=q5HlGMXNrKBRMoHSNFcqsQL1GEVyjoMC8GgRMbdJ96s,19648
327
+ omlish/http/coro/simple.py,sha256=Y1wJGAfdr0qz3gGpqpdpigbtquFUdksQi2dQGu8K1Z0,2872
319
328
  omlish/inject/__init__.py,sha256=n0RC9UDGsBQQ39cST39-XJqJPq2M0tnnh9yJubW9azo,1891
320
329
  omlish/inject/binder.py,sha256=DAbc8TZi5w8Mna0TUtq0mT4jeDVA7i7SlBtOFrh2swc,4185
321
330
  omlish/inject/bindings.py,sha256=pLXn2U3kvmAS-68IOG-tr77DbiI-wp9hGyy4lhG6_H8,525
@@ -524,6 +533,21 @@ omlish/sockets/server/handlers.py,sha256=-5lH2Xg7gnZiPB4t2Asa_Vgblj1ZkHzLvyiC_K4
524
533
  omlish/sockets/server/server.py,sha256=mZmHPkCRPitous56_7FJdAsDLZag2wDqjj-LaYM8_Fg,4943
525
534
  omlish/sockets/server/threading.py,sha256=YmW3Ym_p5j_F4SIH9BgRHIObywjq1HS39j9CGWIcMAY,2856
526
535
  omlish/specs/__init__.py,sha256=zZwF8yXTEkSstYtORkDhVLK-_hWU8WOJCuBpognb_NY,118
536
+ omlish/specs/irc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
537
+ omlish/specs/irc/format/LICENSE,sha256=1CT5_XkDMJ9HDZh0tX4TIsm7LfrSdljRX5EirPBhDYM,778
538
+ omlish/specs/irc/format/__init__.py,sha256=0OFSLrMS5jYFJCqH1LKv0UfTrp5faPQhlhYKBQyCZeA,1701
539
+ omlish/specs/irc/format/consts.py,sha256=iDCsJIyDE5-UnkIQpwCLzdbf3DUFWRmqkuVd0cZtujw,185
540
+ omlish/specs/irc/format/errors.py,sha256=cRP8c--kRts5Uwqn1xl1J97OI74hicG4UbkJs_EOSDg,334
541
+ omlish/specs/irc/format/message.py,sha256=SQP7IpdlxCncALiBD_01TxxOjQsBxbmLE0hxLB2Q0vU,398
542
+ omlish/specs/irc/format/nuh.py,sha256=96KJooCzdlmbliyLpoE8g4ccDSHzR0Fl1apu7gkExEQ,1282
543
+ omlish/specs/irc/format/parsing.py,sha256=OYSk7IbaZPpU5k1mRn-3reROPVehwyRAJs546vnEXI4,4053
544
+ omlish/specs/irc/format/rendering.py,sha256=PDhl5dIU9xffmIO3vHWTPh17Cb-E34vIkFLs-Ow3tmY,4909
545
+ omlish/specs/irc/format/tags.py,sha256=_HnzjPCGhLses_P3Os5ReuVdRacmanTb8kEeCxsfqWE,2779
546
+ omlish/specs/irc/format/utils.py,sha256=8VZavx37IospJvhwjnP39sYSiBwzcxNyCJ_doxrtM-Y,687
547
+ omlish/specs/irc/numerics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
548
+ omlish/specs/irc/numerics/formats.py,sha256=n--9bxFkY3p8G1K3aJJXj7FEK_tmGouBrB8Gu1WrEd0,2252
549
+ omlish/specs/irc/numerics/numerics.py,sha256=re5eKU4xoTJgFrNr3VPHS-WvaexAHJLoxvWnnMty_O0,16677
550
+ omlish/specs/irc/numerics/types.py,sha256=qbNDLxtz827JnIMh79-SGK1RdbEy44vZl6uQMIYGXyg,1287
527
551
  omlish/specs/jmespath/LICENSE,sha256=IH-ZZlZkS8XMkf_ubNVD1aYHQ2l_wd0tmHtXrCcYpRU,1113
528
552
  omlish/specs/jmespath/__init__.py,sha256=9tsrquw1kXe1KAhTP3WeL0GlGBiTguQVxsC-lUYTWP4,2087
529
553
  omlish/specs/jmespath/__main__.py,sha256=wIXm6bs08etNG_GZlN2rBkADPb0rKfL2HSkm8spnpxw,200
@@ -643,9 +667,9 @@ omlish/text/indent.py,sha256=YjtJEBYWuk8--b9JU_T6q4yxV85_TR7VEVr5ViRCFwk,1336
643
667
  omlish/text/minja.py,sha256=jZC-fp3Xuhx48ppqsf2Sf1pHbC0t8XBB7UpUUoOk2Qw,5751
644
668
  omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
645
669
  omlish/text/random.py,sha256=jNWpqiaKjKyTdMXC-pWAsSC10AAP-cmRRPVhm59ZWLk,194
646
- omlish-0.0.0.dev220.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
647
- omlish-0.0.0.dev220.dist-info/METADATA,sha256=ipY89eJtdtOxzaJVqRlOxyjn-VVMv0fWU7P7qXeJo1Q,4176
648
- omlish-0.0.0.dev220.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
649
- omlish-0.0.0.dev220.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
650
- omlish-0.0.0.dev220.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
651
- omlish-0.0.0.dev220.dist-info/RECORD,,
670
+ omlish-0.0.0.dev221.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
671
+ omlish-0.0.0.dev221.dist-info/METADATA,sha256=d9X9JvDyZT6Ax6JfEeRU4w1pujLQB9OhgNv38axfOmM,4176
672
+ omlish-0.0.0.dev221.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
673
+ omlish-0.0.0.dev221.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
674
+ omlish-0.0.0.dev221.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
675
+ omlish-0.0.0.dev221.dist-info/RECORD,,