11from __future__ import annotations
22
3+ import sys
34from functools import singledispatch
45
56from htmltools import HTML , Tagifiable
@@ -180,25 +181,6 @@ def _(chunk: ChatCompletionChunk) -> ChatMessage:
180181
181182try :
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" )
225211except ImportError :
226212 pass
227213
0 commit comments