Skip to content

Commit 0bcbcd0

Browse files
committed
Just require python 3.11 with Anthropic
1 parent 52a3ef5 commit 0bcbcd0

File tree

2 files changed

+19
-33
lines changed

2 files changed

+19
-33
lines changed

pkg-py/src/shinychat/_chat_normalize.py

Lines changed: 17 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import annotations
22

3+
import sys
34
from functools import singledispatch
45

56
from htmltools import HTML, Tagifiable
@@ -180,25 +181,6 @@ def _(chunk: ChatCompletionChunk) -> ChatMessage:
180181

181182
try:
182183
from anthropic.types import Message as AnthropicMessage
183-
from anthropic.types import (
184-
RawContentBlockDeltaEvent,
185-
RawContentBlockStartEvent,
186-
RawContentBlockStopEvent,
187-
RawMessageDeltaEvent,
188-
RawMessageStartEvent,
189-
RawMessageStopEvent,
190-
)
191-
192-
# Create a non-annotated type alias for RawMessageStreamEvent
193-
# (so it works with singledispatch)
194-
RawMessageStreamEvent = (
195-
RawMessageStartEvent
196-
| RawMessageDeltaEvent
197-
| RawMessageStopEvent
198-
| RawContentBlockStartEvent
199-
| RawContentBlockDeltaEvent
200-
| RawContentBlockStopEvent
201-
)
202184

203185
@get_message_content.register
204186
def _(message: AnthropicMessage) -> ChatMessage:
@@ -210,18 +192,22 @@ def _(message: AnthropicMessage) -> ChatMessage:
210192
)
211193
return ChatMessage(content=content.text, role="assistant")
212194

213-
@get_message_chunk_content.register
214-
def _(chunk: RawMessageStreamEvent) -> ChatMessage:
215-
content = ""
216-
if chunk.type == "content_block_delta":
217-
if chunk.delta.type != "text_delta":
218-
raise ValueError(
219-
f"Anthropic message delta type {chunk.delta.type} not supported. "
220-
"Only 'text_delta' type is supported"
221-
)
222-
content = chunk.delta.text
223-
224-
return ChatMessage(content=content, role="assistant")
195+
# Old versions of singledispatch doesn't seem to support union types
196+
if sys.version_info >= (3, 11):
197+
from anthropic.types import RawMessageStreamEvent
198+
199+
@get_message_chunk_content.register
200+
def _(chunk: RawMessageStreamEvent) -> ChatMessage:
201+
content = ""
202+
if chunk.type == "content_block_delta":
203+
if chunk.delta.type != "text_delta":
204+
raise ValueError(
205+
f"Anthropic message delta type {chunk.delta.type} not supported. "
206+
"Only 'text_delta' type is supported"
207+
)
208+
content = chunk.delta.text
209+
210+
return ChatMessage(content=content, role="assistant")
225211
except ImportError:
226212
pass
227213

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ Changelog = "https://github.com/posit-dev/shinychat/blob/main/pkg-py/CHANGELOG.m
2424

2525
[project.optional-dependencies]
2626
providers = [
27-
"anthropic",
27+
"anthropic;python_version>='3.11'",
2828
"chatlas>=0.6.1",
29-
"google-generativeai;python_version>='3.9'",
29+
"google-generativeai",
3030
"langchain-core",
3131
"ollama>=0.4.0",
3232
"openai",

0 commit comments

Comments
 (0)