
     `iI                       d dl m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mZmZmZmZmZmZ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- ddl.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4m5Z5  G d dee1                   Z6 G d dee1                   Z7 G d dee1                   Z8 G d dee1                   Z9d+d#Z:d$Z;eefZ<e"d%d,d*Z=dS )-    )annotations)TracebackType)TYPE_CHECKINGAnyTypeGenericCallablecast)SelfIterator	AwaitableAsyncIteratorassert_neverN)	BaseModel)ToolUseBlock)ServerToolUseBlock   )	TextEventCitationEventThinkingEventInputJsonEventSignatureEventParsedMessageStopEventParsedMessageStreamEventParsedContentBlockStopEvent   )RawMessageStreamEvent)	NOT_GIVENNotGiven)consume_sync_iteratorconsume_async_iterator)buildconstruct_typeconstruct_type_unchecked)StreamAsyncStream)is_given   )ResponseFormatT
parse_text)ParsedMessageParsedContentBlockc                      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MessageStreamIterator[str]text_stream
raw_streamStream[RawMessageStreamEvent]output_formatResponseFormatT | NotGivenreturnNonec                    || _         |                                 | _        |                                 | _        d | _        || _        d S N)_raw_stream__stream_text__r0   
__stream__	_iterator&_MessageStream__final_message_snapshot_MessageStream__output_formatselfr1   r3   s      u/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/anthropic/lib/streaming/_messages.py__init__zMessageStream.__init__,   G    
 &//11**OS%,    httpx.Responsec                    | j         j        S r8   r9   responser@   s    rA   rH   zMessageStream.response7       ((rD   
str | Nonec                @    | j         j                            d          S Nz
request-idrH   headersgetrI   s    rA   
request_idzMessageStream.request_id;       }$((666rD   )ParsedMessageStreamEvent[ResponseFormatT]c                4    | j                                         S r8   )r<   __next__rI   s    rA   rU   zMessageStream.__next__?   s    ~&&(((rD   3Iterator[ParsedMessageStreamEvent[ResponseFormatT]]c              #  &   K   | j         D ]}|V  d S r8   r<   r@   items     rA   __iter__zMessageStream.__iter__B   s,      N 	 	DJJJJ	 	rD   r   c                    | S r8    rI   s    rA   	__enter__zMessageStream.__enter__F   s    rD   exc_typetype[BaseException] | NoneexcBaseException | Noneexc_tbTracebackType | Nonec                .    |                                   d S r8   closer@   r_   ra   rc   s       rA   __exit__zMessageStream.__exit__I   s     	

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

        Automatically called if the response body is read to completion.
        Nr9   rg   rI   s    rA   rg   zMessageStream.closeQ   s     	     rD   ParsedMessage[ResponseFormatT]c                J    |                                   | j        J | j        S )qWaits until the stream has been read to completion and returns
        the accumulated `Message` object.
        )
until_doner=   rI   s    rA   get_final_messagezMessageStream.get_final_messageY   s,     	,888,,rD   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     rA   
<listcomp>z0MessageStream.get_final_text.<locals>.<listcomp>q   A      Ab  Ab  Ab  MN  BC  BH  Ab  Ab  AbrD   Q content block type(s) that you can access by calling get_final_message().content rq   contentrz   appendru   RuntimeErrorjoinr@   messagetext_blocksblocks       rA   get_final_textzMessageStream.get_final_texta   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{###rD   c                $    t          |            dS )z)Blocks until the stream has been consumedN)r    rI   s    rA   rp   zMessageStream.until_donev   s    d#####rD   c                "    | j         J | j         S r8   )r=   rI   s    rA   current_message_snapshotz&MessageStream.current_message_snapshot{       ,888,,rD   c              #     K   | j         D ]B}t          || j        | j                  | _        t	          || j                  }|D ]}|V  Cd S N)eventcurrent_snapshotr3   )r   message_snapshot)r9   accumulate_eventr=   r>   build_eventsr   r@   	sse_eventevents_to_firer   s       rA   r;   zMessageStream.__stream__   s~      ) 		 		I,<!%!>"2- - -D) *	DLijjjN'  		 		rD   c              #  f   K   | D ]+}|j         dk    r|j        j         dk    r|j        j        V  ,d S Ncontent_block_delta
text_deltarz   deltaru   r@   chunks     rA   r:   zMessageStream.__stream_text__   sN       	' 	'Ez222u{7G<7W7Wk&&&&	' 	'rD   N)r1   r2   r3   r4   r5   r6   r5   rE   r5   rK   r5   rS   )r5   rV   r5   r   r_   r`   ra   rb   rc   rd   r5   r6   r5   r6   r5   rm   r5   rr   )r5   r/   )__name__
__module____qualname____annotations__rB   propertyrH   rQ   rU   r[   r^   ri   rg   rq   r   rp   r   r;   r:   r]   rD   rA   r.   r.   !   sc        	- 	- 	- 	- ) ) ) X) 7 7 7 X7) ) ) )         ! ! ! !- - - -$ $ $ $*$ $ $ $
 - - - X-
 
 
 
' ' ' ' ' 'rD   r.   c                  *    e Zd ZdZddZdd
ZddZdS )MessageStreamManagerzWrapper over MessageStream that is returned by `.stream()`.

    ```py
    with client.messages.stream(...) as stream:
        for chunk in stream:
            ...
    ```
    api_request+Callable[[], Stream[RawMessageStreamEvent]]r3   r4   r5   r6   c               0    d | _         || _        || _        d S r8   )_MessageStreamManager__stream"_MessageStreamManager__api_request$_MessageStreamManager__output_formatr@   r   r3   s      rA   rB   zMessageStreamManager.__init__   s#     @D(,rD   MessageStream[ResponseFormatT]c                n    |                                  }t          || j                  | _        | j        S Nr3   )r   r.   r   r   r@   r1   s     rA   r^   zMessageStreamManager.__enter__   s2    ''))
%j@TUUU}rD   r_   r`   ra   rb   rc   rd   c                J    | j         | j                                          d S d S r8   )r   rg   rh   s       rA   ri   zMessageStreamManager.__exit__   s.     =$M!!!!! %$rD   N)r   r   r3   r4   r5   r6   )r5   r   r   )r   r   r   __doc__rB   r^   ri   r]   rD   rA   r   r      sZ         - - - -   
" " " " " "rD   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AsyncMessageStreamAsyncIterator[str]r0   r1   "AsyncStream[RawMessageStreamEvent]r3   r4   r5   r6   c                    || _         |                                 | _        |                                 | _        d | _        || _        d S r8   )r9   r:   r0   r;   r<   +_AsyncMessageStream__final_message_snapshot"_AsyncMessageStream__output_formatr?   s      rA   rB   zAsyncMessageStream.__init__   rC   rD   rE   c                    | j         j        S r8   rG   rI   s    rA   rH   zAsyncMessageStream.response   rJ   rD   rK   c                @    | j         j                            d          S rM   rN   rI   s    rA   rQ   zAsyncMessageStream.request_id   rR   rD   rS   c                D   K   | j                                          d {V S r8   )r<   	__anext__rI   s    rA   r   zAsyncMessageStream.__anext__   s,      ^--/////////rD   8AsyncIterator[ParsedMessageStreamEvent[ResponseFormatT]]c               4   K   | j         2 3 d {V }|W V  6 d S r8   rX   rY   s     rA   	__aiter__zAsyncMessageStream.__aiter__   sF      . 	 	 	 	 	 	 	$JJJJJ )..s   r   c                
   K   | S r8   r]   rI   s    rA   
__aenter__zAsyncMessageStream.__aenter__   s      rD   r_   r`   ra   rb   rc   rd   c                >   K   |                                   d {V  d S r8   rf   rh   s       rA   	__aexit__zAsyncMessageStream.__aexit__   s.       jjllrD   c                H   K   | j                                          d{V  dS rk   rl   rI   s    rA   rg   zAsyncMessageStream.close   s5       $$&&&&&&&&&&&rD   rm   c                Z   K   |                                   d{V  | j        J | j        S )ro   N)rp   r   rI   s    rA   rq   z$AsyncMessageStream.get_final_message   sB       oo,888,,rD   rr   c                4  K   |                                   d{V }g }|j        D ]'}|j        dk    r|                    |j                   (|s5t          dd                    d |j        D                        d          d                    |          S )rt   Nru   rv   rw   c                    g | ]	}|j         
S r]   ry   r{   s     rA   r~   z5AsyncMessageStream.get_final_text.<locals>.<listcomp>  r   rD   r   r   r   r   s       rA   r   z!AsyncMessageStream.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{###rD   c                4   K   t          |            d{V  dS )z(Waits until the stream has been consumedN)r!   rI   s    rA   rp   zAsyncMessageStream.until_done
  s,      $T***********rD   c                "    | j         J | j         S r8   )r   rI   s    rA   r   z+AsyncMessageStream.current_message_snapshot  r   rD   c                  K   | j         2 3 d {V }t          || j        | j                  | _        t	          || j                  }|D ]}|W V  I6 d S r   )r9   r   r   r   r   r   r   s       rA   r;   zAsyncMessageStream.__stream__  s      #/ 		 		 		 		 		 		 		),<!%!>"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     rA   r:   z"AsyncMessageStream.__stream_text__   si       	' 	' 	' 	' 	' 	' 	'%z222u{7G<7W7Wk&&&&&  44s   7N)r1   r   r3   r4   r5   r6   r   r   r   )r5   r   r   r   r   r   r   )r5   r   )r   r   r   r   rB   r   rH   rQ   r   r   r   r   rg   rq   r   rp   r   r;   r:   r]   rD   rA   r   r      sc        ####	- 	- 	- 	- ) ) ) X) 7 7 7 X70 0 0 0         ' ' ' '- - - -$ $ $ $*+ + + +
 - - - X-
 
 
 
' ' ' ' ' 'rD   r   c                  0    e Zd ZdZeddd	ZddZddZdS )AsyncMessageStreamManagera"  Wrapper over AsyncMessageStream 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.messages.stream(...) as stream:
        async for chunk in stream:
            ...
    ```
    r   r   -Awaitable[AsyncStream[RawMessageStreamEvent]]r3   r4   r5   r6   c               0    d | _         || _        || _        d S r8   )"_AsyncMessageStreamManager__stream'_AsyncMessageStreamManager__api_request)_AsyncMessageStreamManager__output_formatr   s      rA   rB   z"AsyncMessageStreamManager.__init__2  s#     EI(,rD   #AsyncMessageStream[ResponseFormatT]c                d   K   | j          d {V }t          || j                  | _        | j        S r   )r   r   r   r   r   s     rA   r   z$AsyncMessageStreamManager.__aenter__<  s?      -------
*:TEYZZZ}rD   r_   r`   ra   rb   rc   rd   c                Z   K   | j         !| j                                          d {V  d S d S r8   )r   rg   rh   s       rA   r   z#AsyncMessageStreamManager.__aexit__A  sD       =$-%%''''''''''' %$rD   N)r   r   r3   r4   r5   r6   )r5   r   r   )r   r   r   r   r   rB   r   r   r]   rD   rA   r   r   &  si        	 	 5>	- - - - - -   
( ( ( ( ( (rD   r   r   r   r   rm   r5   /list[ParsedMessageStreamEvent[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|                    |            n]| 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    rG|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)rz   r   content_block_startr   r   ru   )rz   ru   snapshotinput_json_deltatool_use
input_json)rz   partial_jsonr   citations_deltacitation)rz   r   r   thinking_deltathinking)rz   r   r   signature_delta	signature)rz   r   content_block_stop)rz   indexcontent_block)rz   r   r"   r   r)   r   r   r   r   ru   r   r   inputr   r   	citationsr   r   r   r   r   r   r   )r   r   r   r   event_to_fires        rA   r   r   K  s]   
 GINz_$$e$$$$		&	&e$$$$	~	%	%(9Xhiii	
 	
 	
 	
 
,	,	,e$$$$	,	,	,e$$$(0=;|++!V++%%!#"[-!.!3	     [!333!Z//%%&)%*[%=!.!4	     [!222!V++%%%'!&!5!.!8!>B	     [!111!Z//%%%'!&!5!.!7	     [!222!Z//%%&("/"9       *U[)))	+	+	+(0='%+'	
 
 
 	m,,,,  	 rD   
__json_bufr   r   %ParsedMessage[ResponseFormatT] | Noner3   r4   c                	   t          t          t          |           t                    st          t          t          t          t          t                   t                    |                     } t          t          t          |           t                    s"t          d|  dt          |                      ||| 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                                                                       n| j        dk    r|j        | j                 }| j        j        d	k    r'|j        d
k    r|xj        | j        j        z  c_        n| j        j        dk    rt          |t0                    rvddlm} t          t6          t9          |t:          d                    }|t7          | j        j        d          z  }|r ||d          |_        tA          |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_#        nh| j        j        dk    r|j        dk    r| j        j$        |_$        n:tJ          rtM          | j                   n| j        dk    rG|j        | j                 }|j        d
k    r)tO          |          rtQ          |j        |          |_)        n| j        dk    r| j        j*        |_*        | j        j+        |_+        | j,        j-        |j,        _-        | j,        j.        | j,        j.        |j,        _.        | j,        j/        | j,        j/        |j,        _/        | j,        j0        | j,        j0        |j,        _0        | j,        j1        | j,        j1        |j,        _1        |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   ru   r   r   )	from_jsonrD   zutf-8T)partial_moder   r   r   r   r   r   r]   )2
isinstancer
   r   r   r   r$   r   	TypeErrorrz   r+   r)   	constructr   to_dictr   r   r   r#   r,   r   
model_dumpr   r   ru   TRACKS_TOOL_INPUTjiterr   bytesgetattrJSON_BUF_PROPERTYr   r   setattrr   r   r   r   r   r   r'   r*   parsed_outputstop_reasonstop_sequenceusageoutput_tokensinput_tokenscache_creation_input_tokenscache_read_input_tokensserver_tool_use)r   r   r3   r   r   json_bufr   s          rA   r   r     s?    d3&&	22 	s!$4 568MNN  
 
 $sE**I66 	sqZ_qqdhindodoqqrrr:((o68O8u8uRVWZ\a\i\q\q\s\sRtRt8u8uvvv]%*]]]^^^z*** ''%7u?R?]?]?_?_``` 	
 	
 	
 	
 
,	,	,"*5;7;|++|v%% 00[!333'#455 >++++++
  ww8I3'O'OPPE%+":GDDD K$-IhT$J$J$JGM!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, ;#/27+2J"/;2>AFAh">;.:=B[=`":;&25:[5P"2rD   )r   r   r   rm   r5   r   )r   r   r   r   r3   r4   r5   rm   )>
__future__r   typesr   typingr   r   r   r   r	   r
   typing_extensionsr   r   r   r   r   httpxpydanticr   anthropic.types.tool_use_blockr   %anthropic.types.server_tool_use_blockr   _typesr   r   r   r   r   r   r   r   r   r   r   _utilsr    r!   _modelsr"   r#   r$   
_streamingr%   r&   _utils._utilsr'   _parse._responser)   r*   types.parsed_messager+   r,   r.   r   r   r   r   r
  r  r   r]   rD   rA   <module>r%     s   " " " " " "       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        7 7 7 7 7 7 D D D D D D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 + * * * * * ) ) ) ) ) ) ) ) C C C C C C C C F F F F F F F F F F - - - - - - - - % % % % % % : : : : : : : : E E E E E E E En' n' n' n' n'GO, n' n' n'b "  "  "  "  "7?3  "  "  "Fn' n' n' n' n'1 n' n' n'b"( "( "( "( "( 8 "( "( "(J[ [ [ [| !    1:	U U U U U U U UrD   