
     `iO                       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- d
dl.m/Z/m0Z0 d
dl1m2Z2 d
dl3m4Z4 ddl5m6Z6m7Z7 d
dl8m9Z9m:Z:  G d de	e6                   Z; G d de	e6                   Z< G d de	e6                   Z= G d de	e6                   Z>d.d$Z?d%Z@eeefZAed&d/d-ZBdS )0    )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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d$S )0BetaMessageStreamIterator[str]text_stream
raw_stream!Stream[BetaRawMessageStreamEvent]output_formatResponseFormatT | NotGivenreturnNonec                    || _         |                                 | _        |                                 | _        d | _        || _        d S N)_raw_stream__stream_text__r1   
__stream__	_iterator*_BetaMessageStream__final_message_snapshot!_BetaMessageStream__output_formatselfr2   r4   s      z/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/anthropic/lib/streaming/_beta_messages.py__init__zBetaMessageStream.__init__.   G    
 &//11**SW%,    httpx.Responsec                    | j         j        S r9   r:   responserA   s    rB   rI   zBetaMessageStream.response9       ((rE   
str | Nonec                @    | j         j                            d          S Nz
request-idrI   headersgetrJ   s    rB   
request_idzBetaMessageStream.request_id=       }$((666rE   -ParsedBetaMessageStreamEvent[ResponseFormatT]c                4    | j                                         S r9   )r=   __next__rJ   s    rB   rV   zBetaMessageStream.__next__A   s    ~&&(((rE   7Iterator[ParsedBetaMessageStreamEvent[ResponseFormatT]]c              #  &   K   | j         D ]}|V  d S r9   r=   rA   items     rB   __iter__zBetaMessageStream.__iter__D   s,      N 	 	DJJJJ	 	rE   r   c                    | S r9    rJ   s    rB   	__enter__zBetaMessageStream.__enter__H   s    rE   exc_typetype[BaseException] | NoneexcBaseException | Noneexc_tbTracebackType | Nonec                .    |                                   d S r9   closerA   r`   rb   rd   s       rB   __exit__zBetaMessageStream.__exit__K   s     	

rE   c                8    | j                                          dS z
        Close the response and release the connection.

        Automatically called if the response body is read to completion.
        Nr:   rh   rJ   s    rB   rh   zBetaMessageStream.closeS   s     	     rE   "ParsedBetaMessage[ResponseFormatT]c                J    |                                   | j        J | j        S )qWaits until the stream has been read to completion and returns
        the accumulated `Message` object.
        )
until_doner>   rJ   s    rB   get_final_messagez#BetaMessageStream.get_final_message[   s,     	,888,,rE   strc                $   |                                  }g }|j        D ]'}|j        dk    r|                    |j                   (|s5t          dd                    d |j        D                        d          d                    |          S )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 ,c                    g | ]	}|j         
S r^   type.0bs     rB   
<listcomp>z4BetaMessageStream.get_final_text.<locals>.<listcomp>s   A      Ab  Ab  Ab  MN  BC  BH  Ab  Ab  AbrE   Q content block type(s) that you can access by calling get_final_message().content rr   contentr{   appendrv   RuntimeErrorjoinrA   messagetext_blocksblocks       rB   get_final_textz BetaMessageStream.get_final_textc   s     ((**!#_ 	/ 	/EzV##""5:... 	 vwzww  Ab  Ab  RY  Ra  Ab  Ab  Ab  xc  xc  v  v  v   ww{###rE   c                $    t          |            dS )z)Blocks until the stream has been consumedN)r   rJ   s    rB   rq   zBetaMessageStream.until_donex   s    d#####rE   c                "    | j         J | j         S r9   )r>   rJ   s    rB   current_message_snapshotz*BetaMessageStream.current_message_snapshot}       ,888,,rE   c              #     K   | j         D ]R}t          || j        | j        j        j        | j                  | _        t          || j                  }|D ]}|V  Sd S N)eventcurrent_snapshotrequest_headersr4   )r   message_snapshot)	r:   accumulate_eventr>   rI   requestrP   r?   build_eventsr   rA   	sse_eventevents_to_firer   s       rB   r<   zBetaMessageStream.__stream__   s      ) 
	 
	I,<!%!> $ 5 ="2	- - -D) *	DLijjjN'  
	 
	rE   c              #  f   K   | D ]+}|j         dk    r|j        j         dk    r|j        j        V  ,d S Ncontent_block_delta
text_deltar{   deltarv   rA   chunks     rB   r;   z!BetaMessageStream.__stream_text__   sN       	' 	'Ez222u{7G<7W7Wk&&&&	' 	'rE   N)r2   r3   r4   r5   r6   r7   r6   rF   r6   rL   r6   rT   )r6   rW   r6   r   r`   ra   rb   rc   rd   re   r6   r7   r6   r7   r6   rn   r6   rs   )r6   r0   )__name__
__module____qualname____annotations__rC   propertyrI   rR   rV   r\   r_   rj   rh   rr   r   rq   r   r<   r;   r^   rE   rB   r/   r/   #   sc        	- 	- 	- 	- ) ) ) X) 7 7 7 X7) ) ) )         ! ! ! !- - - -$ $ $ $*$ $ $ $
 - - - X-   ' ' ' ' ' 'rE   r/   c                  *    e Zd ZdZddZdd
ZddZdS )BetaMessageStreamManagerzWrapper over MessageStream that is returned by `.stream()`.

    ```py
    with client.beta.messages.stream(...) as stream:
        for chunk in stream:
            ...
    ```
    api_request/Callable[[], Stream[BetaRawMessageStreamEvent]]r4   r5   r6   r7   c               0    d | _         || _        || _        d S r9   )!_BetaMessageStreamManager__stream&_BetaMessageStreamManager__api_request(_BetaMessageStreamManager__output_formatrA   r   r4   s      rB   rC   z!BetaMessageStreamManager.__init__   s#     DH(,rE   "BetaMessageStream[ResponseFormatT]c                n    |                                  }t          || j                  | _        | j        S Nr4   )r   r/   r   r   rA   r2   s     rB   r_   z"BetaMessageStreamManager.__enter__   s2    ''))
)*DDXYYY}rE   r`   ra   rb   rc   rd   re   c                J    | j         | j                                          d S d S r9   )r   rh   ri   s       rB   rj   z!BetaMessageStreamManager.__exit__   s.     =$M!!!!! %$rE   N)r   r   r4   r5   r6   r7   )r6   r   r   )r   r   r   __doc__rC   r_   rj   r^   rE   rB   r   r      sZ         - - - -   
" " " " " "rE   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d$S )0BetaAsyncMessageStreamAsyncIterator[str]r1   r2   &AsyncStream[BetaRawMessageStreamEvent]r4   r5   r6   r7   c                    || _         |                                 | _        |                                 | _        d | _        || _        d S r9   )r:   r;   r1   r<   r=   /_BetaAsyncMessageStream__final_message_snapshot&_BetaAsyncMessageStream__output_formatr@   s      rB   rC   zBetaAsyncMessageStream.__init__   rD   rE   rF   c                    | j         j        S r9   rH   rJ   s    rB   rI   zBetaAsyncMessageStream.response   rK   rE   rL   c                @    | j         j                            d          S rN   rO   rJ   s    rB   rR   z!BetaAsyncMessageStream.request_id   rS   rE   rT   c                D   K   | j                                          d {V S r9   )r=   	__anext__rJ   s    rB   r   z BetaAsyncMessageStream.__anext__   s,      ^--/////////rE   <AsyncIterator[ParsedBetaMessageStreamEvent[ResponseFormatT]]c               4   K   | j         2 3 d {V }|W V  6 d S r9   rY   rZ   s     rB   	__aiter__z BetaAsyncMessageStream.__aiter__   sF      . 	 	 	 	 	 	 	$JJJJJ )..s   r   c                
   K   | S r9   r^   rJ   s    rB   
__aenter__z!BetaAsyncMessageStream.__aenter__   s      rE   r`   ra   rb   rc   rd   re   c                >   K   |                                   d {V  d S r9   rg   ri   s       rB   	__aexit__z BetaAsyncMessageStream.__aexit__   s.       jjllrE   c                H   K   | j                                          d{V  dS rl   rm   rJ   s    rB   rh   zBetaAsyncMessageStream.close   s5       $$&&&&&&&&&&&rE   rn   c                Z   K   |                                   d{V  | j        J | j        S )rp   N)rq   r   rJ   s    rB   rr   z(BetaAsyncMessageStream.get_final_message   sB       oo,888,,rE   rs   c                4  K   |                                   d{V }g }|j        D ]'}|j        dk    r|                    |j                   (|s5t          dd                    d |j        D                        d          d                    |          S )ru   Nrv   rw   rx   c                    g | ]	}|j         
S r^   rz   r|   s     rB   r   z9BetaAsyncMessageStream.get_final_text.<locals>.<listcomp>  r   rE   r   r   r   r   s       rB   r   z%BetaAsyncMessageStream.get_final_text   s       ..00000000!#_ 	/ 	/EzV##""5:... 	 vwzww  Ab  Ab  RY  Ra  Ab  Ab  Ab  xc  xc  v  v  v   ww{###rE   c                4   K   t          |            d{V  dS )z(Waits until the stream has been consumedN)r   rJ   s    rB   rq   z!BetaAsyncMessageStream.until_done  s,      $T***********rE   c                "    | j         J | j         S r9   )r   rJ   s    rB   r   z/BetaAsyncMessageStream.current_message_snapshot  r   rE   c                  K   | j         2 3 d {V }t          || j        | j        j        j        | j                  | _        t          || j                  }|D ]}|W V  Y6 d S r   )	r:   r   r   rI   r   rP   r   r   r   r   s       rB   r<   z!BetaAsyncMessageStream.__stream__  s      #/ 
	 
	 
	 
	 
	 
	 
	),<!%!> $ 5 ="2	- - -D) *	DLijjjN'    0//s   A#c               t   K   | 2 3 d {V }|j         dk    r|j        j         dk    r|j        j        W V  26 d S r   r   r   s     rB   r;   z&BetaAsyncMessageStream.__stream_text__$  si       	' 	' 	' 	' 	' 	' 	'%z222u{7G<7W7Wk&&&&&  44s   7N)r2   r   r4   r5   r6   r7   r   r   r   )r6   r   r   r   r   r   r   )r6   r   )r   r   r   r   rC   r   rI   rR   r   r   r   r   rh   rr   r   rq   r   r<   r;   r^   rE   rB   r   r      sc        ####	- 	- 	- 	- ) ) ) X) 7 7 7 X70 0 0 0         ' ' ' '- - - -$ $ $ $*+ + + +
 - - - X-   ' ' ' ' ' 'rE   r   c                  0    e Zd ZdZeddd	ZddZddZdS )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   r   1Awaitable[AsyncStream[BetaRawMessageStreamEvent]]r4   r5   r6   r7   c               0    d | _         || _        || _        d S r9   )&_BetaAsyncMessageStreamManager__stream+_BetaAsyncMessageStreamManager__api_request-_BetaAsyncMessageStreamManager__output_formatr   s      rB   rC   z&BetaAsyncMessageStreamManager.__init__6  s#     IM(,rE   'BetaAsyncMessageStream[ResponseFormatT]c                d   K   | j          d {V }t          || j                  | _        | j        S r   )r   r   r   r   r   s     rB   r   z(BetaAsyncMessageStreamManager.__aenter__@  s?      -------
.zI]^^^}rE   r`   ra   rb   rc   rd   re   c                Z   K   | j         !| j                                          d {V  d S d S r9   )r   rh   ri   s       rB   r   z'BetaAsyncMessageStreamManager.__aexit__E  sD       =$-%%''''''''''' %$rE   N)r   r   r4   r5   r6   r7   )r6   r   r   )r   r   r   r   r   rC   r   r   r^   rE   rB   r   r   *  si        	 	 5>	- - - - - -   
( ( ( ( ( (rE   r   r   r'   r   rn   r6   3list[ParsedBetaMessageStreamEvent[ResponseFormatT]]c                *   g }| j         dk    r|                    |            n| j         dk    r|                    |            n| j         dk    r7|                    t          t          t                   d|                     n| j         dk    r|                    |            nh| j         dk    r|                    |            |j        | j                 }| j        j         dk    rG|j         dk    r:|                    t          t          d| j        j	        |j	        	                     n| j        j         d
k    rR|j         dk    s|j         dk    r:|                    t          t          d| j        j        |j                             n|| j        j         dk    rI|j         dk    r<|                    t          t          d| j        j        |j        pg                      n#| j        j         dk    rF|j         dk    r:|                    t          t           d| j        j        |j                             n| j        j         dk    r;|j         dk    r/|                    t          t$          d|j                             nt(          rt+          | j                   nf| j         dk    rE|j        | j                 }t          t,          d| j        |          }|                    |           nt(          rt+          |            |S )Nmessage_startmessage_deltamessage_stop)r{   r   content_block_startr   r   rv   )r{   rv   snapshotinput_json_deltatool_usemcp_tool_use
input_json)r{   partial_jsonr   citations_deltacitation)r{   r   r   thinking_deltathinking)r{   r   r   signature_delta	signature)r{   r   content_block_stop)r{   indexcontent_block)r{   r   r   r"   r*   r   r   r   r!   rv   r   r   inputr   r   	citationsr   r   r    r   r   r   r$   )r   r   r   r   event_to_fires        rB   r   r   O  sj   
 KMNz_$$e$$$$		&	&e$$$$	~	%	%,_=N\lmmm	
 	
 	
 	
 
,	,	,e$$$$	,	,	,e$$$(0=;|++!V++%%+#"[-!.!3	     [!333!Z//=3E3W3W%%*)%*[%=!.!4	     [!222!V++%%)'!&!5!.!8!>B	     [!111!Z//%%)'!&!5!.!7	     [!222!Z//%%*("/"9       *U[)))	+	+	+(0=+%+'	
 
 
 	m,,,,  	 rE   
__json_bufr   r   )ParsedBetaMessage[ResponseFormatT] | Noner   httpx.Headersr4   r5   c                8
   t          t          t          |           t                    st          t          t          t          t          t                   t                    |                     } t          t          t          |           t                    s't          d|  dt          j	        |                      ||| j	        dk    rYt          t          t                   t          j        di t          t          | j                                                            S t          d| j	         d          | j	        dk    rZ|j                            t          t          t%          t&          | j                                                                       nx| j	        dk    r2|j        | j                 }| j        j	        d	k    r'|j	        d
k    r|xj        | j        j        z  c_        n#| j        j	        dk    rt          |t0                    rddlm} t          t6          t9          |t:          d                    }|t7          | j        j        d          z  }|r	 |r|                    dd          nd}d|v r ||d          |_         n ||d          |_         n;# tB          $ r.}tC          d| d|"                    d                     |d }~ww xY wtG          |t:          |           n| j        j	        dk    rL|j	        d
k    r?|j$        s| j        j%        g|_$        n|j$                            | j        j%                   n| j        j	        dk    r'|j	        dk    r|xj&        | j        j&        z  c_&        n| j        j	        dk    r|j	        dk    r| j        j'        |_'        nWtP          rtS          | j                   n:| j	        dk    rG|j        | j                 }	|	j	        d
k    r)tU          |          rtW          |	j        |          |	_,        n| j	        dk    r| j        j-        |_-        | j        j.        |_.        | j        j/        |_/        | j0        j1        |j0        _1        | j2        |_2        | j0        j3        | j0        j3        |j0        _3        | j0        j4        | j0        j4        |j0        _4        | j0        j5        | j0        j5        |j0        _5        | j0        j6        | j0        j6        |j0        _6        |S )N)type_valuez;Unexpected event runtime type, after deserialising twice - z - r   zUnexpected event order, got z before "message_start"r   r   r   rv   r   r   )	from_jsonrE   zutf-8zanthropic-betar   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^   )7
isinstancer
   r   r   r'   r   r   	TypeErrorbuiltinsr{   r,   r*   	constructr   to_dictr   r   r   r   r-   r   r   r   rv   TRACKS_TOOL_INPUTjiterr  bytesgetattrJSON_BUF_PROPERTYr   rQ   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)
r   r   r   r4   r   r  json_bufanthropic_betaer   s
             rB   r   r     s:    d3&&	22 %$4 9:<UVV  
 
 $sE**I66 	nennX`XefkXlXlnn   :((!/24E4O4u4uRVWZ\a\i\q\q\s\sRtRt4u4u   ]%*]]]^^^z*** ''%;5CVC^C^C`C`aaa 	
 	
 	
 	
 
,	,	,"*5;7;|++|v%% 00[!333'#455 >++++++
  ww8I3'O'OPPE%+":GDDD !
!Ve)m)<)<=Mr)R)R)RkmC~UU,5IhM_,`,`,`GMM,5IhT,R,R,RGM% ! ! !( m  HI  m  m  S[  Sb  Sb  cj  Sk  Sk  m  m  !!
 !2H===[!222|v%%( C).)=(>G%%%,,U[-ABBB[!111|z))  EK$88  [!222|z))$)K$9!  *U[)))	+	+	+(0=''H],C,C'*4]5G*W*WM'		&	&%*[%:"',{'>$).)B&/4{/H,.3.F+ ;#/27+2J"/;2>AFAh">;.:=B[=`":;&25:[5P"2s   +AJ/ /
K'9)K""K')r   r'   r   rn   r6   r   )
r   r'   r   r   r   r   r4   r5   r6   rn   )C
__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$   
_streamingr%   r&   
types.betar'   _utils._utilsr(   _parse._responser*   r+   types.beta.parsed_beta_messager,   r-   r/   r   r   r   r   r  r  r   r^   rE   rB   <module>r3     s6   " " " " " "        D D D D D D D D D D D D D D D D T T T T T T T T T T T T T T        E E E E E E L L L L L L R R R R R R ) ) ) ) ) ) ) ) C C C C C C C C F F F F F F F F F F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 . - - - - - - - 3 3 3 3 3 3 % % % % % % : : : : : : : : W W W W W W W Wo' o' o' o' o'0 o' o' o'd "  "  "  "  "w7  "  "  "Fo' o' o' o' o'W_5 o' o' o'd"( "( "( "( "(GO$< "( "( "(J[ [ [ [| !    1:f f f f f f f frE   