
    nϞi3R                       d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZ d dlmZmZmZmZmZ d dlZd dlmZ d dlmZ d dlmZ d d	lmZ d
dlmZmZ d
dlmZm Z  d
dl!m"Z"m#Z#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. d
dl/m0Z0m1Z1 d
dl2m3Z3 d
dl4m5Z5 ddl6m7Z7m8Z8 d
dl9m:Z:m;Z;  G d de	e7         Z< G d de	e7         Z= G d de	e7         Z> G d de	e7         Z?	 	 	 	 	 	 d"dZ@dZAeeefZBed 	 	 	 	 	 	 	 	 	 d#d!ZCy)$    )annotationsN)TracebackType)TYPE_CHECKINGAnyTypeGenericCallablecast)SelfIterator	AwaitableAsyncIteratorassert_never)	BaseModel)BetaToolUseBlock)BetaMCPToolUseBlock)BetaServerToolUseBlock   )	NOT_GIVENNotGiven)consume_sync_iteratorconsume_async_iterator)buildconstruct_typeconstruct_type_unchecked   )	BetaCitationEventBetaThinkingEventBetaInputJsonEventBetaSignatureEventBetaCompactionEventParsedBetaTextEventParsedBetaMessageStopEventParsedBetaMessageStreamEventParsedBetaContentBlockStopEvent)StreamAsyncStream)BetaRawMessageStreamEvent)is_given   )ResponseFormatT
parse_text)ParsedBetaMessageParsedBetaContentBlockc                      e Zd ZU ded<   	 	 	 	 	 	 	 ddZedd       Zedd       ZddZddZ	ddZ
	 	 	 	 	 	 	 	 dd	Zdd
ZddZddZddZedd       ZddZddZy)BetaMessageStreamIterator[str]text_streamc                    || _         | j                         | _        | j                         | _        d | _        || _        y N)_raw_stream__stream_text__r2   
__stream__	_iterator*_BetaMessageStream__final_message_snapshot!_BetaMessageStream__output_formatself
raw_streamoutput_formats      h/var/www/html/jploft-chatbot/venv/lib/python3.12/site-packages/anthropic/lib/streaming/_beta_messages.py__init__zBetaMessageStream.__init__/   ;    
 &//1*SW%,    c                .    | j                   j                  S r4   r5   responser<   s    r?   rE   zBetaMessageStream.response:       (((rB   c                L    | j                   j                  j                  d      S Nz
request-idrE   headersgetrF   s    r?   
request_idzBetaMessageStream.request_id>       }}$$((66rB   c                6    | j                   j                         S r4   )r8   __next__rF   s    r?   rP   zBetaMessageStream.__next__B   s    ~~&&((rB   c              #  6   K   | j                   D ]  }|  y wr4   r8   r<   items     r?   __iter__zBetaMessageStream.__iter__E   s     NN 	DJ	s   c                    | S r4    rF   s    r?   	__enter__zBetaMessageStream.__enter__I   s    rB   c                $    | j                          y r4   closer<   exc_typeexcexc_tbs       r?   __exit__zBetaMessageStream.__exit__L   s     	

rB   c                8    | j                   j                          yz
        Close the response and release the connection.

        Automatically called if the response body is read to completion.
        Nr5   r[   rF   s    r?   r[   zBetaMessageStream.closeT   s     	 rB   c                V    | j                          | j                  J | j                  S )qWaits until the stream has been read to completion and returns
        the accumulated `Message` object.
        )
until_doner9   rF   s    r?   get_final_messagez#BetaMessageStream.get_final_message\   s,     	,,888,,,rB   c           	     N   | j                         }g }|j                  D ]-  }|j                  dk(  s|j                  |j                         / |s@t        ddj                  |j                  D cg c]  }|j                   c}       d      dj                  |      S c c}w )Returns all `text` content blocks concatenated together.

        > [!NOTE]
        > Currently the API will only respond with a single content block.

        Will raise an error if no `text` content blocks were returned.
        textc.get_final_text() can only be called when the API returns a `text` content block.
The API returned ,Q content block type(s) that you can access by calling get_final_message().content rg   contenttypeappendrj   RuntimeErrorjoinr<   messagetext_blocksblockbs        r?   get_final_textz BetaMessageStream.get_final_textd   s     ((*!#__ 	/EzzV#""5::.	/ vwzww  RY  Ra  Ra  Ab  MN  BC  BH  BH  Ab  xc  wd  du  v  ww{## Abs   0B"c                    t        |        y)z)Blocks until the stream has been consumedN)r   rF   s    r?   rf   zBetaMessageStream.until_doney   s
    d#rB   c                6    | j                   J | j                   S r4   )r9   rF   s    r?   current_message_snapshotz*BetaMessageStream.current_message_snapshot~        ,,888,,,rB   c              #     K   | j                   D ]j  }t        || j                  | j                  j                  j
                  | j                        | _        t        || j                        }|D ]  }|  l y wN)eventcurrent_snapshotrequest_headersr>   )r   message_snapshot)	r5   accumulate_eventr9   rE   requestrK   r:   build_eventsr}   r<   	sse_eventevents_to_firer   s       r?   r7   zBetaMessageStream.__stream__   sx     )) 
	I,<!%!>!> $ 5 5 = ="22	-D) *	DLiLijN' 
	s   A;A=c              #     K   | D ]D  }|j                   dk(  s|j                  j                   dk(  s-|j                  j                   F y wNcontent_block_delta
text_deltarq   deltarj   r<   chunks     r?   r6   z!BetaMessageStream.__stream_text__   sC      	'Ezz22u{{7G7G<7Wkk&&&	's   AAAN)r=   z!Stream[BetaRawMessageStreamEvent]r>   ResponseFormatT | NotGivenreturnNoner   zhttpx.Responser   z
str | Noner   z-ParsedBetaMessageStreamEvent[ResponseFormatT])r   z7Iterator[ParsedBetaMessageStreamEvent[ResponseFormatT]]r   r   r]   ztype[BaseException] | Noner^   zBaseException | Noner_   zTracebackType | Noner   r   r   r   r   "ParsedBetaMessage[ResponseFormatT]r   str)r   r1   )__name__
__module____qualname____annotations__r@   propertyrE   rM   rP   rU   rX   r`   r[   rg   rz   rf   r}   r7   r6   rW   rB   r?   r0   r0   $   s    	-5	- 2	- 
		- ) ) 7 7), " %	
 
!-$*$
 - -'rB   r0   c                  D    e Zd ZdZ	 	 	 	 	 	 ddZddZ	 	 	 	 	 	 	 	 ddZy)	BetaMessageStreamManagerzWrapper over MessageStream that is returned by `.stream()`.

    ```py
    with client.beta.messages.stream(...) as stream:
        for chunk in stream:
            ...
    ```
    c               .    d | _         || _        || _        y r4   )!_BetaMessageStreamManager__stream&_BetaMessageStreamManager__api_request(_BetaMessageStreamManager__output_formatr<   api_requestr>   s      r?   r@   z!BetaMessageStreamManager.__init__   s     DH(,rB   c                r    | j                         }t        || j                        | _        | j                  S Nr>   )r   r0   r   r   r<   r=   s     r?   rX   z"BetaMessageStreamManager.__enter__   s.    '')
)*DDXDXY}}rB   c                R    | j                   | j                   j                          y y r4   )r   r[   r\   s       r?   r`   z!BetaMessageStreamManager.__exit__   s#     ==$MM! %rB   N)r   z/Callable[[], Stream[BetaRawMessageStreamEvent]]r>   r   r   r   )r   z"BetaMessageStream[ResponseFormatT]r   )r   r   r   __doc__r@   rX   r`   rW   rB   r?   r   r      sX    -D- 2	-
 
-
"," "" %	"
 
"rB   r   c                      e Zd ZU ded<   	 	 	 	 	 	 	 ddZedd       Zedd       ZddZddZ	ddZ
	 	 	 	 	 	 	 	 dd	Zdd
ZddZddZddZedd       ZddZddZy)BetaAsyncMessageStreamAsyncIterator[str]r2   c                    || _         | j                         | _        | j                         | _        d | _        || _        y r4   )r5   r6   r2   r7   r8   /_BetaAsyncMessageStream__final_message_snapshot&_BetaAsyncMessageStream__output_formatr;   s      r?   r@   zBetaAsyncMessageStream.__init__   rA   rB   c                .    | j                   j                  S r4   rD   rF   s    r?   rE   zBetaAsyncMessageStream.response   rG   rB   c                L    | j                   j                  j                  d      S rI   rJ   rF   s    r?   rM   z!BetaAsyncMessageStream.request_id   rN   rB   c                R   K   | j                   j                          d {   S 7 wr4   )r8   	__anext__rF   s    r?   r   z BetaAsyncMessageStream.__anext__   s     ^^--////s   '%'c               H   K   | j                   2 3 d {   }| 7 
6 y wr4   rR   rS   s     r?   	__aiter__z BetaAsyncMessageStream.__aiter__   s&     .. 	 	$J	.s   "  " "c                   K   | S wr4   rW   rF   s    r?   
__aenter__z!BetaAsyncMessageStream.__aenter__   s     s   c                @   K   | j                          d {    y 7 wr4   rZ   r\   s       r?   	__aexit__z BetaAsyncMessageStream.__aexit__   s      jjls   c                T   K   | j                   j                          d{    y7 wrb   rc   rF   s    r?   r[   zBetaAsyncMessageStream.close   s       $$&&&s   (&(c                r   K   | j                          d{    | j                  J | j                  S 7 w)re   N)rf   r   rF   s    r?   rg   z(BetaAsyncMessageStream.get_final_message   s;      oo,,888,,, 	 s   757c           	     j  K   | j                          d{   }g }|j                  D ]-  }|j                  dk(  s|j                  |j                         / |s@t        ddj                  |j                  D cg c]  }|j                   c}       d      dj                  |      S 7 c c}w w)ri   Nrj   rk   rl   rm   rn   ro   ru   s        r?   rz   z%BetaAsyncMessageStream.get_final_text   s      ..00!#__ 	/EzzV#""5::.	/ vwzww  RY  Ra  Ra  Ab  MN  BC  BH  BH  Ab  xc  wd  du  v  ww{## 1 Abs&   B3B,$B3>B3:B. B3.B3c                6   K   t        |        d{    y7 w)z(Waits until the stream has been consumedN)r   rF   s    r?   rf   z!BetaAsyncMessageStream.until_done  s     $T***s   c                6    | j                   J | j                   S r4   )r   rF   s    r?   r}   z/BetaAsyncMessageStream.current_message_snapshot  r~   rB   c                 K   | j                   2 3 d {   }t        || j                  | j                  j                  j
                  | j                        | _        t        || j                        }|D ]  }| 	 s7 n6 y wr   )	r5   r   r   rE   r   rK   r   r   r}   r   s       r?   r7   z!BetaAsyncMessageStream.__stream__  s     #// 
	 
	),<!%!>!> $ 5 5 = ="22	-D) *	DLiLijN' 
	/s&   BBBBA+BBBc                  K   | 2 3 d {   }|j                   dk(  s|j                  j                   dk(  s3|j                  j                   M7 H6 y wr   r   r   s     r?   r6   z&BetaAsyncMessageStream.__stream_text__%  sK      	' 	'%zz22u{{7G7G<7Wkk&&&	'4s/   AAAAAAAAAN)r=   z&AsyncStream[BetaRawMessageStreamEvent]r>   r   r   r   r   r   r   )r   z<AsyncIterator[ParsedBetaMessageStreamEvent[ResponseFormatT]]r   r   r   r   r   )r   r   )r   r   r   r   r@   r   rE   rM   r   r   r   r   r[   rg   rz   rf   r}   r7   r6   rW   rB   r?   r   r      s    ##	-:	- 2	- 
		- ) ) 7 70, " %	
 
'-$*+
 - -'rB   r   c                  H    e Zd ZdZed	 	 	 	 	 ddZddZ	 	 	 	 	 	 	 	 d	dZy)
BetaAsyncMessageStreamManagera+  Wrapper over BetaAsyncMessageStream that is returned by `.stream()`
    so that an async context manager can be used without `await`ing the
    original client call.

    ```py
    async with client.beta.messages.stream(...) as stream:
        async for chunk in stream:
            ...
    ```
    r   c               .    d | _         || _        || _        y r4   )&_BetaAsyncMessageStreamManager__stream+_BetaAsyncMessageStreamManager__api_request-_BetaAsyncMessageStreamManager__output_formatr   s      r?   r@   z&BetaAsyncMessageStreamManager.__init__7  s     IM(,rB   c                   K   | j                    d {   }t        || j                        | _        | j                  S 7 ,wr   )r   r   r   r   r   s     r?   r   z(BetaAsyncMessageStreamManager.__aenter__A  s7     ---
.zI]I]^}} .s   A?-Ac                n   K   | j                   #| j                   j                          d {    y y 7 wr4   )r   r[   r\   s       r?   r   z'BetaAsyncMessageStreamManager.__aexit__F  s0      ==$--%%''' %'s   *535N)r   z1Awaitable[AsyncStream[BetaRawMessageStreamEvent]]r>   r   r   r   )r   z'BetaAsyncMessageStream[ResponseFormatT]r   )r   r   r   r   r   r@   r   r   rW   rB   r?   r   r   +  s]    	 5>	-F- 2	-
 
-
(,( "( %	(
 
(rB   r   c           	        g }| j                   dk(  r|j                  |        |S | j                   dk(  r|j                  |        |S | j                   dk(  r*|j                  t        t        t           d|             |S | j                   dk(  r|j                  |        |S | j                   dk(  r|j                  |        |j
                  | j                     }| j                  j                   dk(  rR|j                   dk(  r\|j                  t        t        d| j                  j                  |j                  	             |S | j                  j                   d
k(  ra|j                   dk(  s|j                   dk(  r|j                  t        t        d| j                  j                  |j                               |S | j                  j                   dk(  rV|j                   dk(  rw|j                  t        t        d| j                  j                  |j                  xs g              |S | j                  j                   dk(  rR|j                   dk(  r|j                  t        t         d| j                  j"                  |j"                               |S | j                  j                   dk(  r=|j                   dk(  r+|j                  t        t$        d|j&                               	 |S | j                  j                   dk(  r<|j                   dk(  rH|j                  t        t(        d|j
                               |S t*        rt-        | j                         |S | j                   dk(  rI|j
                  | j                     }t        t.        d| j                  |      }|j                  |       |S t*        rt-        |        |S )Nmessage_startmessage_deltamessage_stop)rq   rv   content_block_startr   r   rj   )rq   rj   snapshotinput_json_deltatool_usemcp_tool_use
input_json)rq   partial_jsonr   citations_deltacitation)rq   r   r   thinking_deltathinking)rq   r   r   signature_delta	signature)rq   r   compaction_delta
compaction)rq   rp   content_block_stop)rq   indexcontent_block)rq   rr   r   r#   r+   rp   r   r   r"   rj   r   r   inputr   r   	citationsr   r   r    r   r!   r   r   r%   )r   r   r   r   event_to_fires        r?   r   r   P  s   
 KMNzz_$e$x w 
	&e$t s 
~	%,_=N\lm	
p k 
,	,e$h g 
,	,e$(00=;;|+!!V+%%+#"[[--!.!3!3	Z K [[!33!!Z/=3E3E3W%%*)%*[[%=%=!.!4!4	F w [[!22!!V+%%)'!&!5!5!.!8!8!>B	r c [[!11!!Z/%%)'!&!5!5!.!7!7	^ O [[!22!!Z/%%*("/"9"9 < ; [[!33!!\1%%+) - 5 56 % U[[)" ! 
+	+(00=+%++'	
 	m,  rB   
__json_bufr   c                   t        t        t        |       t              svt        t        t        t        t        t           t              |             } t        t        t        |       t              s$t        d|  dt        j                  |              |x| j                  dk(  rPt        t        t           t        j                  d i t        t        | j                  j                                     S t        d| j                   d      | j                  dk(  rR|j                   j#                  t        t        t%        t&        | j(                  j                                            |S | j                  dk(  r|j                   | j*                     }| j,                  j                  d	k(  r;|j                  d
k(  rh|xj.                  | j,                  j.                  z  c_        |S | j,                  j                  dk(  rt        |t0              rddlm} t        t6        t9        |t:        d            }|t7        | j,                  j<                  d      z  }|r:	 |r|j?                  dd      nd}d|v r ||d      |_         n ||d      |_         tG        |t:        |       |S | j,                  j                  dk(  rk|j                  d
k(  rS|jH                  s| j,                  jJ                  g|_$        |S |jH                  j#                  | j,                  jJ                         |S | j,                  j                  dk(  r:|j                  dk(  r|xjL                  | j,                  jL                  z  c_&        |S | j,                  j                  dk(  r,|j                  dk(  r}| j,                  jN                  |_'        |S | j,                  j                  dk(  r,|j                  dk(  r8| j,                  j                   |_        |S tP        rtS        | j,                         |S | j                  dk(  rP|j                   | j*                     }	|	j                  d
k(  r&tU        |      rtW        |	j.                  |      |	_,        |S | j                  dk(  r| j,                  jZ                  |_-        | j,                  j\                  |_.        | j,                  j^                  |_/        | j`                  jb                  |j`                  _1        | jd                  |_2        | j`                  jf                  %| j`                  jf                  |j`                  _3        | j`                  jh                  %| j`                  jh                  |j`                  _4        | j`                  jj                  %| j`                  jj                  |j`                  _5        | j`                  jl                  %| j`                  jl                  |j`                  _6        | j`                  jn                  %| j`                  jn                  |j`                  _7        |S # tB        $ r&}tC        d| d|jE                  d             |d }~ww xY w)!N)type_valuez;Unexpected event runtime type, after deserialising twice - z - r   zUnexpected event order, got z before "message_start"r   r   r   rj   r   r   )	from_jsonrB   zutf-8zanthropic-betarn   z&fine-grained-tool-streaming-2025-05-14ztrailing-strings)partial_modeTzhUnable to parse tool parameter JSON from model. Please retry your request or adjust your prompt. Error: z. JSON: r   r   r   r   r   r   r   r   rW   )8
isinstancer
   r   r   r(   r   r   	TypeErrorbuiltinsrq   r-   r+   	constructrv   to_dictrs   rp   rr   r   r.   r   r   r   rj   TRACKS_TOOL_INPUTjiterr   bytesgetattrJSON_BUF_PROPERTYr   rL   r   
ValueErrordecodesetattrr   r   r   r   r   r   r)   r,   parsed_output	containerstop_reasonstop_sequenceusageoutput_tokenscontext_managementinput_tokenscache_creation_input_tokenscache_read_input_tokensserver_tool_use
iterations)
r   r   r   r>   rp   r   json_bufanthropic_betaer   s
             r?   r   r     s    d3&	2%$4 9:<UV
 $sE*I6MeWTWX`XeXefkXlWmn  ::(!/24E4O4O4uRVWZ\a\i\i\q\q\sRt4u  9%**E\]^^zz**  ''%;5CVCVC^C^C`a	
Z O 
,	,"**5;;7;;|+||v% 0 00F E [[!33'#45+
  ww8I3'OPE%++":":GDD
!Ve)<)<=Mr)RkmC~U,5hM_,`GM,5hT,RGM !2H=V U [[!22||v%(().)=)=(>G%N K %%,,U[[-A-ABJ I [[!11||z)  EKK$8$88 D C [[!22||z)$)KK$9$9!> = [[!33|||+"'++"5"58 3 U[[)0 / 
+	+(00='H],C*4]5G5G*WM'( ' 
	&%*[[%:%:"',{{'>'>$).)B)B&/4{{/H/H,.3.F.F+ ;;##/27++2J2J""/;;22>AFAhAh"">;;..:=B[[=`=`"":;;&&25:[[5P5P""2;;!!-050F0F""-a & !( G  HI  GJ  JR  S[  Sb  Sb  cj  Sk  Rl  m !!s   "9Y 	Y:!Y55Y:)r   r(   r   r   r   z3list[ParsedBetaMessageStreamEvent[ResponseFormatT]])
r   r(   r   z)ParsedBetaMessage[ResponseFormatT] | Noner   zhttpx.Headersr>   r   r   r   )D
__future__r   r   typesr   typingr   r   r   r   r	   r
   typing_extensionsr   r   r   r   r   httpxpydanticr   (anthropic.types.beta.beta_tool_use_blockr   ,anthropic.types.beta.beta_mcp_tool_use_blockr   /anthropic.types.beta.beta_server_tool_use_blockr   _typesr   r   _utilsr   r   _modelsr   r   r   _beta_typesr   r   r   r    r!   r"   r#   r$   r%   
_streamingr&   r'   
types.betar(   _utils._utilsr)   _parse._responser+   r,   types.beta.parsed_beta_messager-   r.   r0   r   r   r   r   r   r   r   rW   rB   r?   <module>r     s#   "   D D T T   E L R ) C F F
 
 
 . 3 % : Wo'0 o'd "w7  "Fo'W_5 o'd"(GO$< "(Jd$d 9d 9	dN !    1:k$k @k #	k
 .k (krB   