
    LhG                       d dl mZ d dlmZ d dl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mZ ddl m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d
dl)m*Z*m+Z+ d
dl,m-Z-m.Z.m/Z/  G d d      Z0 G d d      Z1 G d d      Z2 G d d      Z3	 	 	 	 	 	 ddZ4dZ5eeefZ6	 	 	 	 	 	 	 	 ddZ7y)    )annotations)TracebackType)TYPE_CHECKINGAnyTypeCallablecast)SelfIterator	AwaitableAsyncIteratorassert_neverN)	BaseModel)BetaToolUseBlock)BetaMCPToolUseBlock)BetaServerToolUseBlock   )consume_sync_iteratorconsume_async_iterator)buildconstruct_typeconstruct_type_unchecked   )BetaTextEventBetaCitationEventBetaThinkingEventBetaInputJsonEventBetaSignatureEventBetaMessageStopEventBetaMessageStreamEventBetaContentBlockStopEvent)StreamAsyncStream)BetaMessageBetaContentBlockBetaRawMessageStreamEventc                      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                t    || _         | j                         | _        | j                         | _        d | _        y N)_raw_stream__stream_text__r*   
__stream__	_iterator*_BetaMessageStream__final_message_snapshotself
raw_streams     Y/var/www/html/venv/lib/python3.12/site-packages/anthropic/lib/streaming/_beta_messages.py__init__zBetaMessageStream.__init__)   1    %//1*<@%    c                .    | j                   j                  S r,   r-   responser3   s    r5   r;   zBetaMessageStream.response/       (((r8   c                L    | j                   j                  j                  d      S Nz
request-idr;   headersgetr<   s    r5   
request_idzBetaMessageStream.request_id3       }}$$((66r8   c                6    | j                   j                         S r,   )r0   __next__r<   s    r5   rF   zBetaMessageStream.__next__7   s    ~~&&((r8   c              #  6   K   | j                   D ]  }|  y wr,   r0   r3   items     r5   __iter__zBetaMessageStream.__iter__:   s     NN 	DJ	s   c                    | S r,    r<   s    r5   	__enter__zBetaMessageStream.__enter__>   s    r8   c                $    | j                          y r,   closer3   exc_typeexcexc_tbs       r5   __exit__zBetaMessageStream.__exit__A   s     	

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

        Automatically called if the response body is read to completion.
        Nr-   rQ   r<   s    r5   rQ   zBetaMessageStream.closeI   s     	 r8   c                V    | j                          | j                  J | j                  S )qWaits until the stream has been read to completion and returns
        the accumulated `Message` object.
        )
until_doner1   r<   s    r5   get_final_messagez#BetaMessageStream.get_final_messageQ   s,     	,,888,,,r8   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 r]   contenttypeappendr`   RuntimeErrorjoinr3   messagetext_blocksblockbs        r5   get_final_textz BetaMessageStream.get_final_textY   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   r<   s    r5   r\   zBetaMessageStream.until_donen   s
    d#r8   c                6    | j                   J | j                   S r,   )r1   r<   s    r5   current_message_snapshotz*BetaMessageStream.current_message_snapshots        ,,888,,,r8   c              #     K   | j                   D ]_  }t        || j                  | j                  j                  j
                        | _        t        || j                        }|D ]  }|  a y wN)eventcurrent_snapshotrequest_headers)rw   message_snapshot)r-   accumulate_eventr1   r;   requestrA   build_eventsrs   r3   	sse_eventevents_to_firerw   s       r5   r/   zBetaMessageStream.__stream__x   so     )) 		I,<!%!>!> $ 5 5 = =-D) *	DLiLijN' 		s   A0A2c              #     K   | D ]D  }|j                   dk(  s|j                  j                   dk(  s-|j                  j                   F y wNcontent_block_delta
text_deltarg   deltar`   r3   chunks     r5   r.   z!BetaMessageStream.__stream_text__   sC      	'Ezz22u{{7G7G<7Wkk&&&	's   AAAN)r4   z!Stream[BetaRawMessageStreamEvent]returnNoner   zhttpx.Responser   z
str | Noner   r    )r   z Iterator[BetaMessageStreamEvent]r   r
   rS   ztype[BaseException] | NonerT   zBaseException | NonerU   zTracebackType | Noner   r   r   r   r   r$   r   str)r   r)   )__name__
__module____qualname____annotations__r6   propertyr;   rC   rF   rK   rN   rV   rQ   r]   rp   r\   rs   r/   r.   rM   r8   r5   r(   r(      s    A ) ) 7 7), " %	
 
!-$*$
 - -
'r8   r(   c                  @    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 r,   )!_BetaMessageStreamManager__stream&_BetaMessageStreamManager__api_requestr3   api_requests     r5   r6   z!BetaMessageStreamManager.__init__   s     37(r8   c                Z    | j                         }t        |      | _        | j                  S r,   )r   r(   r   r2   s     r5   rN   z"BetaMessageStreamManager.__enter__   s&    '')
)*5}}r8   c                R    | j                   | j                   j                          y y r,   )r   rQ   rR   s       r5   rV   z!BetaMessageStreamManager.__exit__   s#     ==$MM! %r8   N)r   z/Callable[[], Stream[BetaRawMessageStreamEvent]]r   r   )r   r(   r   )r   r   r   __doc__r6   rN   rV   rM   r8   r5   r   r      sN    )D) 
)
"," "" %	"
 
"r8   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]r*   c                t    || _         | j                         | _        | j                         | _        d | _        y r,   )r-   r.   r*   r/   r0   /_BetaAsyncMessageStream__final_message_snapshotr2   s     r5   r6   zBetaAsyncMessageStream.__init__   r7   r8   c                .    | j                   j                  S r,   r:   r<   s    r5   r;   zBetaAsyncMessageStream.response   r=   r8   c                L    | j                   j                  j                  d      S r?   r@   r<   s    r5   rC   z!BetaAsyncMessageStream.request_id   rD   r8   c                R   K   | j                   j                          d {   S 7 wr,   )r0   	__anext__r<   s    r5   r   z BetaAsyncMessageStream.__anext__   s     ^^--////s   '%'c               H   K   | j                   2 3 d {   }| 7 
6 y wr,   rH   rI   s     r5   	__aiter__z BetaAsyncMessageStream.__aiter__   s&     .. 	 	$J	.s   "  " "c                   K   | S wr,   rM   r<   s    r5   
__aenter__z!BetaAsyncMessageStream.__aenter__   s     s   c                @   K   | j                          d {    y 7 wr,   rP   rR   s       r5   	__aexit__z BetaAsyncMessageStream.__aexit__   s      jjls   c                T   K   | j                   j                          d{    y7 wrX   rY   r<   s    r5   rQ   zBetaAsyncMessageStream.close   s       $$&&&s   (&(c                r   K   | j                          d{    | j                  J | j                  S 7 w)r[   N)r\   r   r<   s    r5   r]   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)r_   Nr`   ra   rb   rc   rd   re   rk   s        r5   rp   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   r<   s    r5   r\   z!BetaAsyncMessageStream.until_done   s     $T***s   c                6    | j                   J | j                   S r,   )r   r<   s    r5   rs   z/BetaAsyncMessageStream.current_message_snapshot   rt   r8   c                  K   | j                   2 3 d {   }t        || j                  | j                  j                  j
                        | _        t        || j                        }|D ]  }| 	 h7 c6 y wrv   )r-   r{   r   r;   r|   rA   r}   rs   r~   s       r5   r/   z!BetaAsyncMessageStream.__stream__  sx     #// 		 		),<!%!>!> $ 5 5 = =-D) *	DLiLijN' 		/s&   A;A9A7A9A A;7A99A;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     r5   r.   z&BetaAsyncMessageStream.__stream_text__  sK      	' 	'%zz22u{{7G7G<7Wkk&&&	'4s/   AAAAAAAAAN)r4   z&AsyncStream[BetaRawMessageStreamEvent]r   r   r   r   r   )r   z%AsyncIterator[BetaMessageStreamEvent]r   r   r   r   r   )r   r   )r   r   r   r   r6   r   r;   rC   r   r   r   r   rQ   r]   rp   r\   rs   r/   r.   rM   r8   r5   r   r      s    ##A ) ) 7 70, " %	
 
'-$*+
 - -
'r8   r   c                  @    e Zd ZdZ	 	 	 	 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:
            ...
    ```
    c                     d | _         || _        y r,   )&_BetaAsyncMessageStreamManager__stream+_BetaAsyncMessageStreamManager__api_requestr   s     r5   r6   z&BetaAsyncMessageStreamManager.__init__"  s     8<(r8   c                n   K   | j                    d {   }t        |      | _        | j                  S 7  wr,   )r   r   r   r2   s     r5   r   z(BetaAsyncMessageStreamManager.__aenter__)  s/     ---
.z:}} .s   53!5c                n   K   | j                   #| j                   j                          d {    y y 7 wr,   )r   rQ   rR   s       r5   r   z'BetaAsyncMessageStreamManager.__aexit__.  s0      ==$--%%''' %'s   *535N)r   z1Awaitable[AsyncStream[BetaRawMessageStreamEvent]]r   r   )r   r   r   )r   r   r   r   r6   r   r   rM   r8   r5   r   r     sN    	)F) 
)
(,( "( %	(
 
(r8   r   c           	        g }| j                   dk(  r|j                  |        |S | j                   dk(  r|j                  |        |S | j                   dk(  r#|j                  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(  r!|j                  t        t        d| j                  j                  |j                  xs g              |S | j                  j                   dk(  rQ|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 t&        rt)        | j                         |S | j                   dk(  rG|j                  | j
                     }|j                  t        t*        d| j
                  |             |S t&        rt)        |        |S )Nmessage_startmessage_deltamessage_stop)rg   rl   content_block_startr   r   r`   )rg   r`   snapshotinput_json_deltatool_usemcp_tool_use
input_json)rg   partial_jsonr   citations_deltacitation)rg   r   r   thinking_deltathinking)rg   r   r   signature_delta	signature)rg   r   content_block_stop)rg   indexcontent_block)rg   rh   r   r   rf   r   r   r   r`   r   r   inputr   r   	citationsr   r   r   r   r   r   r!   )rw   rz   r   r   s       r5   r}   r}   8  s5   
 46Nzz_$e$X W 
	&e$T S 
~	%e$8~WghiP O 
,	,e$L K 
,	,e$(00=;;|+!!V+%%%#"[[--!.!3!3	~ o [[!33!!Z/=3E3E3W%%*)%*[[%=%=!.!4!4	j [ [[!22!!V+%%)'!&!5!5!.!8!8!>B	V G [[!11!!Z/%%)'!&!5!5!.!7!7	B 3 [[!22!!Z/%%*("/"9"9    U[[)  
+	+(00=+2Fekkivw	
  r8   
__json_bufc           
     
   t        t        t        |       t              slt        t        t        t        t        t           t              |             } t        t        t        |       t              st        d|  dt        |              |c| j                  dk(  r;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(  rg|j                  | j(                     }| j*                  j                  d	k(  r;|j                  d
k(  r#|xj,                  | j*                  j,                  z  c_        |S | j*                  j                  dk(  rt        |t.              rddlm} t        t4        t7        |t8        d            }|t5        | j*                  j:                  d      z  }|r:	 |r|j=                  dd      nd}d|v r ||d      |_        n ||d      |_        tE        |t8        |       |S | j*                  j                  dk(  rk|j                  d
k(  r|jF                  s| j*                  jH                  g|_#        |S |jF                  j                  | j*                  jH                         |S | j*                  j                  dk(  r:|j                  dk(  r|xjJ                  | j*                  jJ                  z  c_%        |S | j*                  j                  dk(  r,|j                  dk(  r8| j*                  jL                  |_&        |S tN        rtQ        | j*                         |S | j                  dk(  rs| j*                  jR                  |_)        | j*                  jT                  |_*        | j*                  jV                  |_+        | jX                  jZ                  |jX                  _-        | j\                  |_.        | jX                  j^                  %| jX                  j^                  |jX                  _/        | jX                  j`                  %| jX                  j`                  |jX                  _0        | jX                  jb                  %| jX                  jb                  |jX                  _1        | jX                  jd                  %| jX                  jd                  |jX                  _2        |S # t@        $ r&}tA        d| d|jC                  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   r`   r   r   )	from_jsonr8   zutf-8zanthropic-betard   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   rM   )3
isinstancer	   r   r   r&   r   r   	TypeErrorrg   r$   	constructrl   to_dictri   rf   rh   r%   r   r   
model_dumpr   r   r`   TRACKS_TOOL_INPUTjiterr   bytesgetattrJSON_BUF_PROPERTYr   rB   r   
ValueErrordecodesetattrr   r   r   r   r   r   	containerstop_reasonstop_sequenceusageoutput_tokenscontext_managementinput_tokenscache_creation_input_tokenscache_read_input_tokensserver_tool_use)rw   rx   ry   rf   r   json_bufanthropic_betaes           r5   r{   r{     s    d3&	2%$4 9:<UV
 $sE*I6YZ_Y``cdhindocpqrr::(((N4U]]5J5J5L+MNN9%**E\]^^zz**  '' %5U=P=P=[=[=]^	
H } 
,	,"**5;;7;;|+||v% 0 00t s [[!33'#45+
  ww8I3'OPE%++":":GDD
!Ve)<)<=Mr)RkmC~U,5hM_,`GM,5hT,RGM !2H=D C [[!22||v%(().)=)=(>G%< 9 %%,,U[[-A-AB8 7 [[!11||z)  EKK$8$88 2 1 [[!22||z)$)KK$9$9!, ' U[[)$ # 
	&%*[[%:%:"',{{'>'>$).)B)B&/4{{/H/H,.3.F.F+ ;;##/27++2J2J""/;;22>AFAhAh"">;;..:=B[[=`=`"":;;&&25:[[5P5P""2O & !( G  HI  GJ  JR  S[  Sb  Sb  cj  Sk  Rl  m !!s   9U 	U<!U77U<)rw   r&   rz   r$   r   zlist[BetaMessageStreamEvent])rw   r&   rx   zBetaMessage | Nonery   zhttpx.Headersr   r$   )8
__future__r   typesr   typingr   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   _utilsr   r   _modelsr   r   r   _beta_typesr   r   r   r   r   r   r    r!   
_streamingr"   r#   
types.betar$   r%   r&   r(   r   r   r   r}   r   r   r{   rM   r8   r5   <module>r     s    "  ; ; T T   E L R C F F	 	 	 . R Ri' i'X" "@i' i'X( (DT$T "T "	Tn !   ]$] )] #	]
 ]r8   