ommlds 0.0.0.dev514__py3-none-any.whl → 0.0.0.dev516__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.
@@ -5,6 +5,7 @@ from .chat.configs import ChatConfig
5
5
  from .completion.configs import CompletionConfig
6
6
  from .configs import SessionConfig
7
7
  from .embedding.configs import EmbeddingConfig
8
+ from .types import SessionProfileName
8
9
 
9
10
 
10
11
  with lang.auto_proxy_import(globals()):
@@ -16,11 +17,20 @@ with lang.auto_proxy_import(globals()):
16
17
  ##
17
18
 
18
19
 
19
- def bind_sessions(cfg: SessionConfig) -> inj.Elements:
20
+ def bind_sessions(
21
+ cfg: SessionConfig,
22
+ *,
23
+ profile_name: str | None = None,
24
+ ) -> inj.Elements:
20
25
  els: list[inj.Elemental] = []
21
26
 
22
27
  #
23
28
 
29
+ if profile_name is not None:
30
+ els.append(inj.bind(SessionProfileName, to_const=profile_name))
31
+
32
+ #
33
+
24
34
  if isinstance(cfg, ChatConfig):
25
35
  els.append(_chat.bind_chat(cfg))
26
36
 
@@ -0,0 +1,7 @@
1
+ import typing as ta
2
+
3
+
4
+ ##
5
+
6
+
7
+ SessionProfileName = ta.NewType('SessionProfileName', str)
@@ -69,13 +69,15 @@ class TransformersTokenizer(tks.BaseTokenizer):
69
69
  ) -> list[tks.Token]:
70
70
  ts = self._tfm_tokenizer.tokenize(text)
71
71
  ids = self._tfm_tokenizer.convert_tokens_to_ids(ts)
72
- return ids
72
+ return ta.cast('list[tks.Token]', ids)
73
73
 
74
74
  def _decode(
75
75
  self,
76
76
  tokens: ta.Iterable[tks.Token],
77
77
  ) -> str:
78
- return self._tfm_tokenizer.decode(tokens) # type: ignore[arg-type]
78
+ if not isinstance(tokens, (tuple, list)): # Yes actually special cased by transformers
79
+ tokens = list(tokens)
80
+ return check.isinstance(self._tfm_tokenizer.decode(ta.cast('list[int]', tokens)), str)
79
81
 
80
82
 
81
83
  ##
@@ -10,7 +10,7 @@ import typing as ta
10
10
  from omlish import check
11
11
  from omlish import lang
12
12
  from omlish import typedvalues as tv
13
- from omlish.asyncs.asyncio.sync import AsyncioBufferRelay
13
+ from omlish.asyncs.asyncio.sync import AsyncioSyncBufferRelay
14
14
 
15
15
  from ....chat.choices.services import ChatChoicesRequest
16
16
  from ....chat.choices.services import ChatChoicesResponse
@@ -242,7 +242,7 @@ class TransformersChatChoicesStreamService(BaseTransformersChatChoicesService):
242
242
  for m in request.v
243
243
  ]
244
244
 
245
- relay: AsyncioBufferRelay = AsyncioBufferRelay()
245
+ relay: AsyncioSyncBufferRelay = AsyncioSyncBufferRelay()
246
246
 
247
247
  def streamer_callback(text: str, *, stream_end: bool) -> None:
248
248
  if text or stream_end:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ommlds
3
- Version: 0.0.0.dev514
3
+ Version: 0.0.0.dev516
4
4
  Summary: ommlds
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -14,20 +14,20 @@ Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Python: >=3.13
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
- Requires-Dist: omlish==0.0.0.dev514
17
+ Requires-Dist: omlish==0.0.0.dev516
18
18
  Provides-Extra: all
19
- Requires-Dist: omdev==0.0.0.dev514; extra == "all"
19
+ Requires-Dist: omdev==0.0.0.dev516; extra == "all"
20
20
  Requires-Dist: llama-cpp-python~=0.3; extra == "all"
21
21
  Requires-Dist: mlx~=0.30; sys_platform == "darwin" and extra == "all"
22
- Requires-Dist: mlx-lm~=0.29; sys_platform == "darwin" and extra == "all"
22
+ Requires-Dist: mlx-lm~=0.30; sys_platform == "darwin" and extra == "all"
23
23
  Requires-Dist: sentencepiece~=0.2; extra == "all"
24
24
  Requires-Dist: tiktoken~=0.12; extra == "all"
25
25
  Requires-Dist: tinygrad~=0.12; extra == "all"
26
26
  Requires-Dist: tokenizers~=0.22; extra == "all"
27
27
  Requires-Dist: torch~=2.10; extra == "all"
28
- Requires-Dist: transformers~=4.57; extra == "all"
28
+ Requires-Dist: transformers~=5.0; extra == "all"
29
29
  Requires-Dist: sentence-transformers~=5.2; extra == "all"
30
- Requires-Dist: huggingface-hub~=0.36; extra == "all"
30
+ Requires-Dist: huggingface-hub~=1.3; extra == "all"
31
31
  Requires-Dist: datasets~=4.5; extra == "all"
32
32
  Requires-Dist: regex>=2026.1; extra == "all"
33
33
  Requires-Dist: numpy>=1.26; extra == "all"
@@ -39,20 +39,20 @@ Requires-Dist: mwparserfromhell~=0.7; extra == "all"
39
39
  Requires-Dist: wikitextparser~=0.56; extra == "all"
40
40
  Requires-Dist: lxml>=5.3; python_version < "3.13" and extra == "all"
41
41
  Provides-Extra: omdev
42
- Requires-Dist: omdev==0.0.0.dev514; extra == "omdev"
42
+ Requires-Dist: omdev==0.0.0.dev516; extra == "omdev"
43
43
  Provides-Extra: backends
44
44
  Requires-Dist: llama-cpp-python~=0.3; extra == "backends"
45
45
  Requires-Dist: mlx~=0.30; sys_platform == "darwin" and extra == "backends"
46
- Requires-Dist: mlx-lm~=0.29; sys_platform == "darwin" and extra == "backends"
46
+ Requires-Dist: mlx-lm~=0.30; sys_platform == "darwin" and extra == "backends"
47
47
  Requires-Dist: sentencepiece~=0.2; extra == "backends"
48
48
  Requires-Dist: tiktoken~=0.12; extra == "backends"
49
49
  Requires-Dist: tinygrad~=0.12; extra == "backends"
50
50
  Requires-Dist: tokenizers~=0.22; extra == "backends"
51
51
  Requires-Dist: torch~=2.10; extra == "backends"
52
- Requires-Dist: transformers~=4.57; extra == "backends"
52
+ Requires-Dist: transformers~=5.0; extra == "backends"
53
53
  Requires-Dist: sentence-transformers~=5.2; extra == "backends"
54
54
  Provides-Extra: huggingface
55
- Requires-Dist: huggingface-hub~=0.36; extra == "huggingface"
55
+ Requires-Dist: huggingface-hub~=1.3; extra == "huggingface"
56
56
  Requires-Dist: datasets~=4.5; extra == "huggingface"
57
57
  Provides-Extra: nanochat
58
58
  Requires-Dist: regex>=2026.1; extra == "nanochat"
@@ -1,6 +1,6 @@
1
1
  ommlds/.omlish-manifests.json,sha256=fAltqnrgKoclgjSh60TjFimcKrcmyLgHAQv39V1ibaY,28921
2
2
  ommlds/README.md,sha256=xhbl2n19GznXrIzAGdlX8PAYJYsOo_Zu63I7G1UFRZE,398
3
- ommlds/__about__.py,sha256=HgYf-9_4V8-o3MkmYbjeHCkqyQugFN3u6at613N522Y,1838
3
+ ommlds/__about__.py,sha256=hnJON9dVbf0XEFzub7auqiCcDBhHD_9wYK3W87s6kl4,1836
4
4
  ommlds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  ommlds/_hacks/__init__.py,sha256=ajfw7dMKH8UuloeQ5MSxWwgAmdWf2v8gm-K3uLP9wtY,196
6
6
  ommlds/_hacks/funcs.py,sha256=8XseIblP7yolDUD7WQSGn1LP90IQzByVejSzphAPDyM,2861
@@ -42,18 +42,18 @@ ommlds/backends/mlx/__init__.py,sha256=caiXip6b1pc5EyA-icH44Zs7taC5bLitJQySR7mBu
42
42
  ommlds/backends/mlx/__main__.py,sha256=gFhR9DikwDZk0LqgdR3qq_aXQHThUOPllDmHDOfnFAU,67
43
43
  ommlds/backends/mlx/caching.py,sha256=XABUfeEzJT9zELMrj2inpLRxcU7CjaqQlzhRb3KKyM4,2005
44
44
  ommlds/backends/mlx/cli.py,sha256=Vf-dV_g440DiQu4y5FJkBK7sddZXrLuQ2AGNgwFy3Z0,10789
45
- ommlds/backends/mlx/generation.py,sha256=RRmcpAwjFPtuir-3cyitwOY0QCt6m9ZsUZzwYSP-36Y,9918
45
+ ommlds/backends/mlx/generation.py,sha256=qOHjXR9oOPJUbF5tF8CgX9LkJpW91qirqqCJg-5924M,9954
46
46
  ommlds/backends/mlx/limits.py,sha256=UaadamBmyL8QSZEXI72X2W9_E3l6HTqBPEfdb-xDq9E,2884
47
47
  ommlds/backends/mlx/loading.py,sha256=jsblR6usagSQORNH-nfSUD9jF4x9a6iati-J5PF3cf4,3665
48
48
  ommlds/backends/mlx/tokenization/LICENSE,sha256=0T9KDFIRDAqANM8DZgpgrzPq3WwnBKsw5EkrkeR3xqM,1066
49
49
  ommlds/backends/mlx/tokenization/__init__.py,sha256=0GfhhjUc4OhY_dpQncq984kcdyOCholjVNjAIAcjAHM,232
50
50
  ommlds/backends/mlx/tokenization/loading.py,sha256=OSD7-ZnLuY2Owv5MpQB8CCEPMhOPwParqMPpS5omZBI,3154
51
- ommlds/backends/mlx/tokenization/tokenization.py,sha256=rcpu1aem6J351duWxfEP4uxsvSH9ShN3Ett4fVdQ2ok,1352
51
+ ommlds/backends/mlx/tokenization/tokenization.py,sha256=q317pV0YSKa4d11UsxXChogNtigRiApSAx2Gm0hyXHA,1398
52
52
  ommlds/backends/mlx/tokenization/types.py,sha256=ZrIdHSPhvdapjxkN0T6OqJy402MjTtnOkW61-E5wndE,1716
53
53
  ommlds/backends/mlx/tokenization/detokenization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
54
  ommlds/backends/mlx/tokenization/detokenization/base.py,sha256=Tezf8Anh-w7BxpNQsdriKpIypo2xaUYpElrxEi17tI0,2490
55
55
  ommlds/backends/mlx/tokenization/detokenization/bpe.py,sha256=cIw6-r-cyXTfZdyfGRgohrElMIqeLKfMRb8R1H_56nY,3659
56
- ommlds/backends/mlx/tokenization/detokenization/naive.py,sha256=6L-SvphzP1z16cmVB4QC9VraF7khE8ZcvKqIwwFqN6U,1779
56
+ ommlds/backends/mlx/tokenization/detokenization/naive.py,sha256=OI78BNGYW4gtFIASWTDXhsYl9VzB1PG5V6O77or-c3A,1851
57
57
  ommlds/backends/mlx/tokenization/detokenization/spm.py,sha256=IYSnEm-C0z_o5TKLJE_Rj6P0nNd-prT6psVPKsERWAE,1751
58
58
  ommlds/backends/ollama/__init__.py,sha256=-RtLrdEGN2da1KCf7YNs32jN-kJhT_kNVrcOv4x_J-w,101
59
59
  ommlds/backends/ollama/_dataclasses.py,sha256=SxyfdM4Bv8iXlSQ2RoiMXFNM9MyjTAOFIPPr_JIMTsk,211794
@@ -103,13 +103,14 @@ ommlds/backends/torch/devices.py,sha256=KWkeyArPdUwVqckQTJPkN-4GQdv39cpOgCMv_Xfk
103
103
  ommlds/backends/torch/purge.py,sha256=sp6XUxNLoVCepxIPKw3tevHn-cQqgorILvIQzixauiI,1834
104
104
  ommlds/backends/transformers/__init__.py,sha256=SCQ8a-0XihXaUzSsUYGo3buRMogPmybzfmhr2OBtw3U,261
105
105
  ommlds/backends/transformers/filecache.py,sha256=ycfswt7f4qRrPSTFRhofXZaDBuDPpypEKwXzSBsBsu8,3317
106
- ommlds/backends/transformers/streamers.py,sha256=Hu_9lp_kUilKjOfs7Ixqr2NoA5FuRn2eRh8JdvaBDYc,1688
106
+ ommlds/backends/transformers/streamers.py,sha256=wYDAqYIlmGaBP0LKGyHjAHmGzv7VuGAM4OnE5pYX3wA,1942
107
107
  ommlds/cli/__init__.py,sha256=-RtLrdEGN2da1KCf7YNs32jN-kJhT_kNVrcOv4x_J-w,101
108
108
  ommlds/cli/__main__.py,sha256=1ffCb0fcUOJMzxROJmJRXQ8PSOVYv7KrcuBtT95cf0c,140
109
- ommlds/cli/_dataclasses.py,sha256=UO9UdIEGJkqfUhpS3IaISxwyPX5aNJgMarfpUjY3f38,180545
109
+ ommlds/cli/_dataclasses.py,sha256=M8wh-aSazOnsSeNI1zL-wabg8loEaUKtYVqqXRlZt3s,187208
110
110
  ommlds/cli/asyncs.py,sha256=NAMzzaZq7ORjlbbBB_Y9vcM9qoBpGf4VJNtl_3p_8G4,629
111
- ommlds/cli/inject.py,sha256=Bt-T-vQIbp8vh6q21Tt3wDztFZ9FPxNhH2ocrAfjArE,815
112
- ommlds/cli/main.py,sha256=qFi7TqkdUYlWLuj1g0-1g9aSMniop2fTxfNktF8pTt0,11488
111
+ ommlds/cli/inject.py,sha256=DRNDcbGZz5HqHFPejohqbLLYgTptcps0pU1uJ40ePb0,918
112
+ ommlds/cli/main.py,sha256=wwjkfZXaZKJO6tuVAUMlXnRaBicWU-kscufcVuJAHZk,2024
113
+ ommlds/cli/profiles.py,sha256=xsBLDe50OchpDhSglKg-IoeFHOo84BJxXbT18SSN-H0,13750
113
114
  ommlds/cli/secrets.py,sha256=wwtcKjDH34wywfs5zixx3TMbWXCvlZj-PwQoLMM7Fqs,473
114
115
  ommlds/cli/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
115
116
  ommlds/cli/backends/catalog.py,sha256=snQSdUyFiNJhvzVRShBqqp1bZpZlmoKvonypNMZz3HI,3002
@@ -133,7 +134,8 @@ ommlds/cli/rendering/types.py,sha256=y7zYLyvc91CHO1KAtYbNHTzW-ddddOjF-weO9Gw8qok
133
134
  ommlds/cli/sessions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
134
135
  ommlds/cli/sessions/base.py,sha256=vhYXELKe8lKRBISp7WqOcf8Ob5uy50KY_0DvcxxFj0M,192
135
136
  ommlds/cli/sessions/configs.py,sha256=puuqJ3iTBNp5tEQq3fnltcsHYD9fojOfj1-u3qB2UJc,154
136
- ommlds/cli/sessions/inject.py,sha256=ji7y9geVuDadi8guSn9-o1bHOAG76GODRL8MajbKbxE,859
137
+ ommlds/cli/sessions/inject.py,sha256=Wtw5KyX9SJTTYxvBLJWohlJfXPZg2yyZ5cbfV_SFInc,1073
138
+ ommlds/cli/sessions/types.py,sha256=iSIThiCR-Veus9LRqvva0B11iFtO_vFQ5Sb82U5xQYk,86
137
139
  ommlds/cli/sessions/chat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
140
  ommlds/cli/sessions/chat/configs.py,sha256=qJbBJvmGHeciJz3pA3BFMnn3KsdIEVJeqvqw_uss1Lc,583
139
141
  ommlds/cli/sessions/chat/inject.py,sha256=oeyahapgdIVmamDdnzHIGvoEK7oYb0AD4-rxolk3vX8,957
@@ -214,11 +216,11 @@ ommlds/cli/sessions/chat/interfaces/bare/interactive.py,sha256=ZnYoePvXtUbhkDQ0j
214
216
  ommlds/cli/sessions/chat/interfaces/bare/oneshot.py,sha256=b758OIa0gf9I_0UdxYJ6re-g8-8xndgr3R0OotUOsmc,387
215
217
  ommlds/cli/sessions/chat/interfaces/bare/tools.py,sha256=_UsuoXLIvfpFP_We5DBBlhm6rwB3_cFA3lmFvpG9b-A,824
216
218
  ommlds/cli/sessions/chat/interfaces/textual/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
217
- ommlds/cli/sessions/chat/interfaces/textual/app.py,sha256=hgEQ9QEAxYVR-d7z4FJsXycbkHKcLzzAWQ6zR0jy_Zs,13301
219
+ ommlds/cli/sessions/chat/interfaces/textual/app.py,sha256=-T4tURkEj4WDZo1eZmnDgeoWd1C_iA8ec8P-ARRex6o,13712
218
220
  ommlds/cli/sessions/chat/interfaces/textual/configs.py,sha256=-pvG2_Uai70ohDfK4Tt8yaHnvdCs10_gaoQkr-CsOqA,213
219
221
  ommlds/cli/sessions/chat/interfaces/textual/facades.py,sha256=zXVG7DKVl-Xtdc893O_yktHCMvM0do6hLesMd8hbqeo,411
220
222
  ommlds/cli/sessions/chat/interfaces/textual/inject.py,sha256=eBhFVZ2VmQdoTPSZvi2OSkZ-fX8Mw2TKo28bHZeACJY,3056
221
- ommlds/cli/sessions/chat/interfaces/textual/inputhistory.py,sha256=Jdmwd6RTBLK8rGyz4w560cwuK6LXi_OTubVfw_-ORTM,4687
223
+ ommlds/cli/sessions/chat/interfaces/textual/inputhistory.py,sha256=hUGrIpSmI0wlg0jwqdT42hLkrzeQF4wnN6wdom9HDJU,5332
222
224
  ommlds/cli/sessions/chat/interfaces/textual/interface.py,sha256=lHeuiMtA7DW9knuapZEOZSl9-9SmOfUxiPnd4-plLHE,445
223
225
  ommlds/cli/sessions/chat/interfaces/textual/tools.py,sha256=KVlUmIyzqUuOHMzB9ZXGUaGsb-Tp5LAmMpB1agAHYjo,985
224
226
  ommlds/cli/sessions/chat/interfaces/textual/styles/__init__.py,sha256=7_U5oUjwegOymeWgt6nLpFfWfjGTrlWL8m4Au8MsaFE,542
@@ -319,8 +321,8 @@ ommlds/minichain/backends/impls/tokenizers/__init__.py,sha256=47DEQpj8HBSa-_TImW
319
321
  ommlds/minichain/backends/impls/tokenizers/tokens.py,sha256=wLz9UTWhHrrJm56ZSLZDRkrOsCF6_ydfWcL2EQgidbE,1577
320
322
  ommlds/minichain/backends/impls/transformers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
321
323
  ommlds/minichain/backends/impls/transformers/sentence.py,sha256=0T01aY0rVauw--AdchroNkcwaK3ku0ZdP8ikcsYeHyA,1462
322
- ommlds/minichain/backends/impls/transformers/tokens.py,sha256=ozlTX0c3sixgcgz87OwEBoVxTF69MTz46LbHzuS8r2Y,2166
323
- ommlds/minichain/backends/impls/transformers/transformers.py,sha256=hXWNe2knROuTJoI737t5FIqUdhmldpHW89tBkfpyofM,9052
324
+ ommlds/minichain/backends/impls/transformers/tokens.py,sha256=xJMEOgkjCNBz0Uf0Msmqsgn7BRBUwIGN7xXW9rdegSM,2343
325
+ ommlds/minichain/backends/impls/transformers/transformers.py,sha256=6eQa95I4PEcUap3bhpRujEDRsVG3MX768bZk4944fPg,9064
324
326
  ommlds/minichain/backends/strings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
325
327
  ommlds/minichain/backends/strings/manifests.py,sha256=kmlanVUAZqIh0P95Mm8H20e8ib3gEgYHHUlkCXDQGFk,413
326
328
  ommlds/minichain/backends/strings/parsing.py,sha256=FbijHuHiIkOwC3jecUD-IXs7y12PS0ByCQeCfjJKuE8,1781
@@ -526,9 +528,9 @@ ommlds/wiki/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
526
528
  ommlds/wiki/utils/io.py,sha256=UKgDJGtmpnWvIqVd2mJc2QNPOqlToEY1GEveNp6_pMo,7088
527
529
  ommlds/wiki/utils/progress.py,sha256=EhvKcMFYtsarCQhIahlO6f0SboyAKP3UwUyrnVnP-Vk,3222
528
530
  ommlds/wiki/utils/xml.py,sha256=sNJNkZ9rT8B-kJMO6bRz8J1USy4fyPx0m2PwTX7vxYY,3846
529
- ommlds-0.0.0.dev514.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
530
- ommlds-0.0.0.dev514.dist-info/METADATA,sha256=q4ShoZYDFsg8DlxflkSxvX0wF1O_W0ENF79Ne0-WEJQ,3602
531
- ommlds-0.0.0.dev514.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
532
- ommlds-0.0.0.dev514.dist-info/entry_points.txt,sha256=Z5YWtX7ClfiCKdW-dd_CSVvM0h4yQpJPi-2G3q6gNFo,35
533
- ommlds-0.0.0.dev514.dist-info/top_level.txt,sha256=Rbnk5d5wi58vnAXx13WFZqdQ4VX8hBCS2hEL3WeXOhY,7
534
- ommlds-0.0.0.dev514.dist-info/RECORD,,
531
+ ommlds-0.0.0.dev516.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
532
+ ommlds-0.0.0.dev516.dist-info/METADATA,sha256=cmuDX5xzzGE64NG0octLCakvyjJcJox4PU98KqxnX_I,3598
533
+ ommlds-0.0.0.dev516.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
534
+ ommlds-0.0.0.dev516.dist-info/entry_points.txt,sha256=Z5YWtX7ClfiCKdW-dd_CSVvM0h4yQpJPi-2G3q6gNFo,35
535
+ ommlds-0.0.0.dev516.dist-info/top_level.txt,sha256=Rbnk5d5wi58vnAXx13WFZqdQ4VX8hBCS2hEL3WeXOhY,7
536
+ ommlds-0.0.0.dev516.dist-info/RECORD,,