ommlds 0.0.0.dev457__py3-none-any.whl → 0.0.0.dev459__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.
ommlds/__about__.py CHANGED
@@ -23,7 +23,7 @@ class Project(ProjectBase):
23
23
 
24
24
  # 'sentencepiece ~= 0.2', # FIXME: https://github.com/google/sentencepiece/issues/1121
25
25
 
26
- 'tiktoken ~= 0.11',
26
+ 'tiktoken ~= 0.12',
27
27
 
28
28
  # 'tinygrad @ git+https://github.com/tinygrad/tinygrad',
29
29
  'tinygrad ~= 0.11',
@@ -32,13 +32,13 @@ class Project(ProjectBase):
32
32
 
33
33
  'torch ~= 2.8',
34
34
 
35
- 'transformers ~= 4.56',
35
+ 'transformers ~= 4.57',
36
36
  'sentence-transformers ~= 5.1',
37
37
  ],
38
38
 
39
39
  'huggingface': [
40
40
  'huggingface-hub ~= 0.35',
41
- 'datasets ~= 4.1',
41
+ 'datasets ~= 4.2',
42
42
  ],
43
43
 
44
44
  'numpy': [
@@ -63,9 +63,10 @@ class AnthropicSseMessageAssembler(
63
63
  while True:
64
64
  ae: ta.Any = check.not_none((yield from self._next_event()))
65
65
  if isinstance(ae, AnthropicSseDecoderEvents.ContentBlockStart):
66
- check.equal(ae.index, len(content))
66
+ # check.equal(ae.index, len(content))
67
67
  c = yield from self._do_content_block(ae)
68
- content.append(check.isinstance(c, Content))
68
+ if c is not None:
69
+ content.append(check.isinstance(c, Content))
69
70
  elif isinstance(ae, AnthropicSseDecoderEvents.MessageDelta):
70
71
  for k in ('stop_reason', 'stop_sequence'):
71
72
  if (v := getattr(ae.delta, k)) is not None:
@@ -92,6 +93,8 @@ class AnthropicSseMessageAssembler(
92
93
  return (yield from self._do_text_content_block(cbs))
93
94
  elif isinstance(cbs.content_block, AnthropicSseDecoderEvents.ContentBlockStart.ToolUse):
94
95
  return (yield from self._do_tool_use_content_block(cbs))
96
+ elif isinstance(cbs.content_block, AnthropicSseDecoderEvents.ContentBlockStart.Thinking):
97
+ return (yield from self._do_thinking_content_block(cbs))
95
98
  else:
96
99
  raise TypeError(cbs.content_block)
97
100
 
@@ -101,11 +104,11 @@ class AnthropicSseMessageAssembler(
101
104
  while True:
102
105
  ae: ta.Any = check.not_none((yield from self._next_event()))
103
106
  if isinstance(ae, AnthropicSseDecoderEvents.ContentBlockDelta):
104
- check.equal(ae.index, cbs.index)
107
+ # check.equal(ae.index, cbs.index)
105
108
  cdc = check.isinstance(ae.delta, AnthropicSseDecoderEvents.ContentBlockDelta.TextDelta)
106
109
  parts.append(cdc.text)
107
110
  elif isinstance(ae, AnthropicSseDecoderEvents.ContentBlockStop):
108
- check.equal(ae.index, cbs.index)
111
+ # check.equal(ae.index, cbs.index)
109
112
  return Text(''.join(parts))
110
113
  else:
111
114
  raise TypeError(ae)
@@ -119,11 +122,11 @@ class AnthropicSseMessageAssembler(
119
122
  while True:
120
123
  ae: ta.Any = check.not_none((yield from self._next_event()))
121
124
  if isinstance(ae, AnthropicSseDecoderEvents.ContentBlockDelta):
122
- check.equal(ae.index, cbs.index)
125
+ # check.equal(ae.index, cbs.index)
123
126
  cdc = check.isinstance(ae.delta, AnthropicSseDecoderEvents.ContentBlockDelta.InputJsonDelta)
124
127
  json_parts.append(cdc.partial_json)
125
128
  elif isinstance(ae, AnthropicSseDecoderEvents.ContentBlockStop):
126
- check.equal(ae.index, cbs.index)
129
+ # check.equal(ae.index, cbs.index)
127
130
  dj = ''.join(json_parts).strip()
128
131
  if dj:
129
132
  dd = check.isinstance(json.loads(dj), ta.Mapping)
@@ -138,3 +141,16 @@ class AnthropicSseMessageAssembler(
138
141
  )
139
142
  else:
140
143
  raise TypeError(ae)
144
+
145
+ def _do_thinking_content_block(self, cbs: AnthropicSseDecoderEvents.ContentBlockStart) -> ta.Any:
146
+ # csc = check.isinstance(cbs.content_block, AnthropicSseDecoderEvents.ContentBlockStart.Thinking)
147
+ while True:
148
+ ae: ta.Any = check.not_none((yield from self._next_event()))
149
+ if isinstance(ae, AnthropicSseDecoderEvents.ContentBlockDelta):
150
+ pass
151
+ elif isinstance(ae, AnthropicSseDecoderEvents.ContentBlockStop):
152
+ return None
153
+ else:
154
+ raise TypeError(ae)
155
+ return # type: ignore # noqa
156
+ yield # noqa
@@ -80,6 +80,11 @@ class AnthropicSseDecoderEvents(lang.Namespace):
80
80
  name: str
81
81
  input: ta.Any
82
82
 
83
+ @dc.dataclass(frozen=True)
84
+ class Thinking(ContentBlock):
85
+ signature: str
86
+ thinking: str
87
+
83
88
  content_block: ContentBlock
84
89
  index: int
85
90
 
@@ -96,6 +101,14 @@ class AnthropicSseDecoderEvents(lang.Namespace):
96
101
  class InputJsonDelta(Delta):
97
102
  partial_json: str
98
103
 
104
+ @dc.dataclass(frozen=True)
105
+ class ThinkingDelta(Delta):
106
+ thinking: str
107
+
108
+ @dc.dataclass(frozen=True)
109
+ class SignatureDelta(Delta):
110
+ signature: str
111
+
99
112
  delta: Delta
100
113
  index: int
101
114
 
@@ -16,10 +16,6 @@ from .state import ChatStateManager
16
16
  from .tools import ToolUseExecutor
17
17
 
18
18
 
19
- with lang.auto_proxy_import(globals()):
20
- from omdev import ptk
21
-
22
-
23
19
  ##
24
20
 
25
21
 
@@ -90,7 +86,7 @@ class CodeChatSession(ChatSession['CodeChatSession.Config']):
90
86
  req_msg = mc.UserMessage(self._config.initial_message)
91
87
  else:
92
88
  try:
93
- prompt = await ptk.prompt('> ')
89
+ prompt = input('> ') # FIXME: async lol
94
90
  except EOFError:
95
91
  break
96
92
  req_msg = mc.UserMessage(prompt)
@@ -10,10 +10,6 @@ from .printing import ChatSessionPrinter
10
10
  from .state import ChatStateManager
11
11
 
12
12
 
13
- with lang.auto_proxy_import(globals()):
14
- from omdev import ptk
15
-
16
-
17
13
  ##
18
14
 
19
15
 
@@ -58,7 +54,10 @@ class InteractiveChatSession(ChatSession['InteractiveChatSession.Config']):
58
54
  *([mc.ModelName(mn)] if (mn := self._config.model_name) is not None else []),
59
55
  )) as mdl:
60
56
  while True:
61
- prompt = await ptk.prompt('> ')
57
+ try:
58
+ prompt = input('> ') # FIXME: async lol
59
+ except EOFError:
60
+ break
62
61
 
63
62
  req_msg = mc.UserMessage(prompt)
64
63
 
@@ -9,8 +9,8 @@ from .... import minichain as mc
9
9
 
10
10
 
11
11
  with lang.auto_proxy_import(globals()):
12
- from omdev import ptk
13
- from omdev.ptk import markdown as ptk_md
12
+ from rich import console as rich_console
13
+ from rich import markdown as rich_markdown
14
14
 
15
15
 
16
16
  ##
@@ -91,7 +91,4 @@ class MarkdownStringChatSessionPrinter(StringChatSessionPrinter):
91
91
  if not s:
92
92
  return
93
93
 
94
- ptk.print_formatted_text(
95
- ptk_md.Markdown(s),
96
- style=ptk.Style(list(ptk_md.MARKDOWN_STYLE)),
97
- )
94
+ rich_console.Console().print(rich_markdown.Markdown(s))
@@ -4,14 +4,11 @@ import typing as ta
4
4
  from omlish import check
5
5
  from omlish import lang
6
6
  from omlish.formats import json
7
+ from omlish.term.confirm import confirm_action
7
8
 
8
9
  from .... import minichain as mc
9
10
 
10
11
 
11
- with lang.auto_proxy_import(globals()):
12
- from omdev import ptk
13
-
14
-
15
12
  ##
16
13
 
17
14
 
@@ -50,7 +47,7 @@ class AskingToolExecutionConfirmation(ToolExecutionConfirmation):
50
47
  args=tr.args,
51
48
  # spec=msh.marshal(tce.spec),
52
49
  )
53
- cr = await ptk.strict_confirm(f'Execute requested tool?\n\n{json.dumps_pretty(tr_dct)}\n\n')
50
+ cr = confirm_action(f'Execute requested tool?\n\n{json.dumps_pretty(tr_dct)}') # FIXME: async lol
54
51
 
55
52
  if not cr:
56
53
  raise ToolExecutionRequestDeniedError
@@ -72,7 +72,7 @@ class TransformersTokenizer(tks.BaseTokenizer):
72
72
  self,
73
73
  tokens: ta.Iterable[tks.Token],
74
74
  ) -> str:
75
- return self._tfm_tokenizer.decode(tokens)
75
+ return self._tfm_tokenizer.decode(tokens) # type: ignore[arg-type]
76
76
 
77
77
 
78
78
  ##
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ommlds
3
- Version: 0.0.0.dev457
3
+ Version: 0.0.0.dev459
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: omdev==0.0.0.dev457
18
- Requires-Dist: omlish==0.0.0.dev457
17
+ Requires-Dist: omdev==0.0.0.dev459
18
+ Requires-Dist: omlish==0.0.0.dev459
19
19
  Provides-Extra: all
20
20
  Requires-Dist: llama-cpp-python~=0.3; extra == "all"
21
21
  Requires-Dist: mlx~=0.29; extra == "all"
22
22
  Requires-Dist: mlx-lm~=0.28; sys_platform == "darwin" and extra == "all"
23
- Requires-Dist: tiktoken~=0.11; extra == "all"
23
+ Requires-Dist: tiktoken~=0.12; extra == "all"
24
24
  Requires-Dist: tinygrad~=0.11; extra == "all"
25
25
  Requires-Dist: tokenizers~=0.22; extra == "all"
26
26
  Requires-Dist: torch~=2.8; extra == "all"
27
- Requires-Dist: transformers~=4.56; extra == "all"
27
+ Requires-Dist: transformers~=4.57; extra == "all"
28
28
  Requires-Dist: sentence-transformers~=5.1; extra == "all"
29
29
  Requires-Dist: huggingface-hub~=0.35; extra == "all"
30
- Requires-Dist: datasets~=4.1; extra == "all"
30
+ Requires-Dist: datasets~=4.2; extra == "all"
31
31
  Requires-Dist: numpy>=1.26; extra == "all"
32
32
  Requires-Dist: pytesseract~=0.3; extra == "all"
33
33
  Requires-Dist: rapidocr-onnxruntime~=1.4; extra == "all"
@@ -40,15 +40,15 @@ Provides-Extra: backends
40
40
  Requires-Dist: llama-cpp-python~=0.3; extra == "backends"
41
41
  Requires-Dist: mlx~=0.29; extra == "backends"
42
42
  Requires-Dist: mlx-lm~=0.28; sys_platform == "darwin" and extra == "backends"
43
- Requires-Dist: tiktoken~=0.11; extra == "backends"
43
+ Requires-Dist: tiktoken~=0.12; extra == "backends"
44
44
  Requires-Dist: tinygrad~=0.11; extra == "backends"
45
45
  Requires-Dist: tokenizers~=0.22; extra == "backends"
46
46
  Requires-Dist: torch~=2.8; extra == "backends"
47
- Requires-Dist: transformers~=4.56; extra == "backends"
47
+ Requires-Dist: transformers~=4.57; extra == "backends"
48
48
  Requires-Dist: sentence-transformers~=5.1; extra == "backends"
49
49
  Provides-Extra: huggingface
50
50
  Requires-Dist: huggingface-hub~=0.35; extra == "huggingface"
51
- Requires-Dist: datasets~=4.1; extra == "huggingface"
51
+ Requires-Dist: datasets~=4.2; extra == "huggingface"
52
52
  Provides-Extra: numpy
53
53
  Requires-Dist: numpy>=1.26; extra == "numpy"
54
54
  Provides-Extra: ocr
@@ -1,5 +1,5 @@
1
1
  ommlds/.omlish-manifests.json,sha256=B8lb6DKPpx-lvUmJJObifPZx-fy273KUbjQoHImyb7o,17992
2
- ommlds/__about__.py,sha256=Z9VIVQnuNBbIYEtIm9XZU4T2QGRqMNjtmQX2OOTaUc0,1759
2
+ ommlds/__about__.py,sha256=ihOSwOzbSqpYjC0oisAXE8bAnknrAKuDPQ8RI2y0n7U,1759
3
3
  ommlds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  ommlds/huggingface.py,sha256=JfEyfKOxU3-SY_ojtXBJFNeD-NIuKjvMe3GL3e93wNA,1175
5
5
  ommlds/_hacks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -11,8 +11,8 @@ ommlds/backends/anthropic/protocol/_marshal.py,sha256=RHbwekaw21lTS_1KBX9z6dLpbm
11
11
  ommlds/backends/anthropic/protocol/types.py,sha256=f-_VXg_-KlhGIKp0R8vL50Rg_ZxqiBvQUGexQaDf8HY,2761
12
12
  ommlds/backends/anthropic/protocol/sse/__init__.py,sha256=LpijqXk0ceMDcgwOvZ8iLoh0I328JSfG8V0JalcZD3I,98
13
13
  ommlds/backends/anthropic/protocol/sse/_marshal.py,sha256=2No-qWRKV9ilOhC5NqHAA92DJF0fAcr4-OPvEP0KOjQ,627
14
- ommlds/backends/anthropic/protocol/sse/assemble.py,sha256=-DFdPfPYVOLws4iinQVwP9R9ZkDgZjER4KWvGIsWVRk,5718
15
- ommlds/backends/anthropic/protocol/sse/events.py,sha256=7k5Vl44dMbyK5TSzEfh9eHdsVwNN9syVOhTCfTka7FE,2182
14
+ ommlds/backends/anthropic/protocol/sse/assemble.py,sha256=MVpA0iSU2LNMXy4VpIVV8Oe7nj3dgmXpfLe-7nnA5QE,6552
15
+ ommlds/backends/anthropic/protocol/sse/events.py,sha256=pLscyLFpxcrtOijNPRgivrxYBFpE270oDW1dECjGtFg,2507
16
16
  ommlds/backends/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  ommlds/backends/google/protocol/__init__.py,sha256=OWmhuCS_sZ08ZaBtSSDRIudHKzkzgmqxY-3jgQxTidw,105
18
18
  ommlds/backends/google/protocol/_marshal.py,sha256=LWikcdMDrKQ0lMtclNXwK9qamijUBzK62nrEVo2OFtc,305
@@ -88,13 +88,13 @@ ommlds/cli/sessions/base.py,sha256=oTqsqZ9jhBWFblANpVWLLIzmRfP8HO9QYtPnZ-GZxS0,4
88
88
  ommlds/cli/sessions/inject.py,sha256=sCwNFDhiyir1taxufFVEcHtaK_o14IcsQOvGUHWM9Jo,545
89
89
  ommlds/cli/sessions/chat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
90
  ommlds/cli/sessions/chat/base.py,sha256=GlDBXZ-KymSokNl1a7uwX1abswmRE67Q0zOIHjhZb_0,796
91
- ommlds/cli/sessions/chat/code.py,sha256=oFQm8291Xz1-jZkHnrLD3usQOSNrLDFsEs3odc05cGU,4328
91
+ ommlds/cli/sessions/chat/code.py,sha256=6hnjibVMTxSUciIIsDPsLHLGMlJNNUZtVQJxFkpi8sM,4269
92
92
  ommlds/cli/sessions/chat/inject.py,sha256=uF-QJvONu5sntXxaEu5KTYy2MUaSY8c5oJz0HpK3c7E,2621
93
- ommlds/cli/sessions/chat/interactive.py,sha256=SrsH9VT2FA6roZYHddIb5cVfNiDWdZLVdugAr8t2So4,2014
94
- ommlds/cli/sessions/chat/printing.py,sha256=kIqDpSg1amn3OEJjORCH5WN2PFOx-Y_p4e__CS16wxc,2376
93
+ ommlds/cli/sessions/chat/interactive.py,sha256=gurYiDCQSY_5llcE75zvEbpVp77AbKSfgY243Z68bLw,2039
94
+ ommlds/cli/sessions/chat/printing.py,sha256=b1HyripqYnRobLyTPgRidcDLvxIpyqPzgUMiXdklBGE,2327
95
95
  ommlds/cli/sessions/chat/prompt.py,sha256=T2h04r9LYA9urYKQZZldoT0Jon_jpKgcbQmtS9xquj8,4915
96
96
  ommlds/cli/sessions/chat/state.py,sha256=CjYkcpZ4fEBE0kPl1g101EDzq0MKy6S6E84dfDhwzcQ,2649
97
- ommlds/cli/sessions/chat/tools.py,sha256=nkkv7P5PBxI4WjGwRSkk982-edZlb57zs9lki4ifhF8,2340
97
+ ommlds/cli/sessions/chat/tools.py,sha256=dj6ADr6RIJnoIKH5wxRLGkgKAfZ_TtnqNLQ6uO-1Gfg,2325
98
98
  ommlds/cli/sessions/completion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
99
  ommlds/cli/sessions/completion/completion.py,sha256=2ZrzmHBCF3mG13ABcoiHva6OUzPpdF7qzByteaLNsxk,1077
100
100
  ommlds/cli/sessions/embedding/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -165,7 +165,7 @@ ommlds/minichain/backends/impls/tokenizers/__init__.py,sha256=47DEQpj8HBSa-_TImW
165
165
  ommlds/minichain/backends/impls/tokenizers/tokens.py,sha256=_8Q49k5YroG5wQI0cuK6kOJ3XYwjhpaAS04ejhzBsWw,1500
166
166
  ommlds/minichain/backends/impls/transformers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
167
  ommlds/minichain/backends/impls/transformers/sentence.py,sha256=1bFJ-ND3MOkj7mNsPuISrQCpqTs7npmmNmYcc2go-Fk,1393
168
- ommlds/minichain/backends/impls/transformers/tokens.py,sha256=bsisA3CIpvjM4TVldpIX8vSOLGyjljIrFdzGsTXuJco,2063
168
+ ommlds/minichain/backends/impls/transformers/tokens.py,sha256=uS3-IWOJRUMBfPDVRrp3SCaXdE1yzEdKHQcyv0JZQIw,2089
169
169
  ommlds/minichain/backends/impls/transformers/transformers.py,sha256=Bb1RnvDlo8bzu24ByhDacDC0sN7R7KYZnPZ9hjbViBg,5287
170
170
  ommlds/minichain/backends/strings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
171
171
  ommlds/minichain/backends/strings/manifests.py,sha256=kmlanVUAZqIh0P95Mm8H20e8ib3gEgYHHUlkCXDQGFk,413
@@ -325,9 +325,9 @@ ommlds/wiki/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
325
325
  ommlds/wiki/utils/io.py,sha256=UKgDJGtmpnWvIqVd2mJc2QNPOqlToEY1GEveNp6_pMo,7088
326
326
  ommlds/wiki/utils/progress.py,sha256=EhvKcMFYtsarCQhIahlO6f0SboyAKP3UwUyrnVnP-Vk,3222
327
327
  ommlds/wiki/utils/xml.py,sha256=vVV8Ctn13aaRM9eYfs9Wd6rHn5WOCEUzQ44fIhOvJdg,3754
328
- ommlds-0.0.0.dev457.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
329
- ommlds-0.0.0.dev457.dist-info/METADATA,sha256=k407nvbkhWU8OH5nuzDPbyHlzpSxapu_k1bDMA3BVQU,3224
330
- ommlds-0.0.0.dev457.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
331
- ommlds-0.0.0.dev457.dist-info/entry_points.txt,sha256=Z5YWtX7ClfiCKdW-dd_CSVvM0h4yQpJPi-2G3q6gNFo,35
332
- ommlds-0.0.0.dev457.dist-info/top_level.txt,sha256=Rbnk5d5wi58vnAXx13WFZqdQ4VX8hBCS2hEL3WeXOhY,7
333
- ommlds-0.0.0.dev457.dist-info/RECORD,,
328
+ ommlds-0.0.0.dev459.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
329
+ ommlds-0.0.0.dev459.dist-info/METADATA,sha256=OeNw_AZ8fyJklAOIseIioZMCUlLi44Dg-o84sqBau1U,3224
330
+ ommlds-0.0.0.dev459.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
331
+ ommlds-0.0.0.dev459.dist-info/entry_points.txt,sha256=Z5YWtX7ClfiCKdW-dd_CSVvM0h4yQpJPi-2G3q6gNFo,35
332
+ ommlds-0.0.0.dev459.dist-info/top_level.txt,sha256=Rbnk5d5wi58vnAXx13WFZqdQ4VX8hBCS2hEL3WeXOhY,7
333
+ ommlds-0.0.0.dev459.dist-info/RECORD,,