
     `i8                       d dl mZ d dlZd dlZd dl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mZ d dlmZmZmZmZmZmZ d dlZddlmZmZ e	rddlmZmZ  ed	          Z G d
 dej                  Z  G d dee         e           Z! G d dej                  Z" G d dee         e"          Z# G d d          Z$ G d d          Z%e G d de                      Z&d#dZ'ddd$d"Z(dS )%    )annotationsN)TracebackType)TYPE_CHECKINGAnyGenericTypeVarIteratorAsyncIteratorcast)SelfProtocol	TypeGuardoverride
get_originruntime_checkable   )is_dictextract_type_var_from_base)	AnthropicAsyncAnthropic_Tc                  &    e Zd Zedd            ZdS )_SyncStreamMetainstancer   returnboolc                n    ddl m} t          ||          rt          j        dt
          d           dS dS )Nr   )MessageStreamzUsing `isinstance()` to check if a `MessageStream` object is an instance of `Stream` is deprecated & will be removed in the next major version   
stacklevelTF)lib.streamingr   
isinstancewarningswarnDeprecationWarning)selfr   r   s      h/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/anthropic/_streaming.py__instancecheck__z!_SyncStreamMeta.__instancecheck__   sY     	100000h.. 	M a"   
 4u    Nr   r   r   r   __name__
__module____qualname__r   r)    r*   r(   r   r      2           X  r*   r   c                  h    e Zd ZU dZded<   ded<   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S )&StreamzJProvides the core interface to iterate over a synchronous stream response.httpx.ResponseresponseSSEBytesDecoder_decodercast_totype[_T]clientr   r   Nonec                   || _         || _        || _        |                                | _        |                                 | _        d S Nr5   _cast_to_client_make_sse_decoderr7   
__stream__	_iteratorr'   r8   r5   r:   s       r(   __init__zStream.__init__3   A     !0022**r*   r   c                4    | j                                         S r=   )rC   __next__r'   s    r(   rH   zStream.__next__@   s    ~&&(((r*   Iterator[_T]c              #  &   K   | j         D ]}|V  d S r=   rC   r'   items     r(   __iter__zStream.__iter__C   s,      N 	 	DJJJJ	 	r*   Iterator[ServerSentEvent]c              #  x   K   | j                             | j                                                  E d {V  d S r=   )r7   
iter_bytesr5   rI   s    r(   _iter_eventszStream._iter_eventsG   sB      =++DM,D,D,F,FGGGGGGGGGGGr*   c              #  L  K   t          t          | j                  }| j        }| j        j        }|                                 }	 |D ]-}|j        dk    r" ||                                ||          V  |j        dk    s7|j        dk    s,|j        dk    s!|j        dk    s|j        dk    s|j        dk    rA|                                }t          |          rd	|vr
|j        |d	<    ||||          V  |j        d
k    r|j        dk    rc|j
        }	 |                                }| }n!# t          $ r |j
        p	d|j         }Y nw xY w| j                            ||| j                  /	 |                                 d S # |                                 w xY wN
completion)datar8   r5   message_startmessage_deltamessage_stopcontent_block_startcontent_block_deltacontent_block_stoptypepingerrorzError code: )bodyr5   )r   r   r?   r5   r@   _process_response_datarS   eventjsonr   rW   	Exceptionstatus_code_make_status_errorclose	r'   r8   r5   process_dataiteratorsserW   ra   err_msgs	            r(   rB   zStream.__stream__J   s      sDM**=|:$$&&&	 " "9,,&,CHHJJRZ[[[[[[ I00yO33yN22y$999y$999y$88888::Dt}} 1t););'*yV&,D'HUUUUUU9&&9''8DT"xxzz%))$ T T T"%("S.SX=Q.S.ST ,99!!% :    (+"J NNHNNs1   CF D10F 1EF E'F F#r   c                    | S r=   r0   rI   s    r(   	__enter__zStream.__enter__x   s    r*   exc_typetype[BaseException] | NoneexcBaseException | Noneexc_tbTracebackType | Nonec                .    |                                   d S r=   rh   r'   rp   rr   rt   s       r(   __exit__zStream.__exit__{   s     	

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

        Automatically called if the response body is read to completion.
        N)r5   rh   rI   s    r(   rh   zStream.close   s     	r*   N)r8   r9   r5   r4   r:   r   r   r;   r   r   )r   rJ   )r   rP   r   r   rp   rq   rr   rs   rt   ru   r   r;   r   r;   )r-   r.   r/   __doc____annotations__rE   rH   rO   rS   rB   ro   ry   rh   r0   r*   r(   r3   r3   ,   s         TT+ + + +) ) ) )   H H H H, , , ,\           r*   r3   )	metaclassc                  &    e Zd Zedd            ZdS )_AsyncStreamMetar   r   r   r   c                n    ddl m} t          ||          rt          j        dt
          d           dS dS )Nr   )AsyncMessageStreamzUsing `isinstance()` to check if a `AsyncMessageStream` object is an instance of `AsyncStream` is deprecated & will be removed in the next major versionr   r    TF)r"   r   r#   r$   r%   r&   )r'   r   r   s      r(   r)   z"_AsyncStreamMeta.__instancecheck__   sZ     	655555h 233 	M k"   
 4ur*   Nr+   r,   r0   r*   r(   r   r      r1   r*   r   c                  h    e Zd ZU dZded<   ded<   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S )&AsyncStreamzLProvides the core interface to iterate over an asynchronous stream response.r4   r5   zSSEDecoder | SSEBytesDecoderr7   r8   r9   r:   r   r   r;   c                   || _         || _        || _        |                                | _        |                                 | _        d S r=   r>   rD   s       r(   rE   zAsyncStream.__init__   rF   r*   r   c                D   K   | j                                          d {V S r=   )rC   	__anext__rI   s    r(   r   zAsyncStream.__anext__   s,      ^--/////////r*   AsyncIterator[_T]c               4   K   | j         2 3 d {V }|W V  6 d S r=   rL   rM   s     r(   	__aiter__zAsyncStream.__aiter__   sF      . 	 	 	 	 	 	 	$JJJJJ )..s   AsyncIterator[ServerSentEvent]c                  K   | j                             | j                                                  2 3 d {V }|W V  6 d S r=   )r7   aiter_bytesr5   )r'   rl   s     r(   rS   zAsyncStream._iter_events   se      224=3L3L3N3NOO 	 	 	 	 	 	 	#IIIII POOs   Ac               r  K   t          t          | j                  }| j        }| j        j        }|                                 }	 |2 3 d {V }|j        dk    r# ||                                ||          W V  |j        dk    s7|j        dk    s,|j        dk    s!|j        dk    s|j        dk    s|j        dk    rB|                                }t          |          rd	|vr
|j        |d	<    ||||          W V  |j        d
k    r|j        dk    rc|j
        }	 |                                }| }n!# t          $ r |j
        p	d|j         }Y nw xY w| j                            ||| j                  56 	 |                                 d {V  d S # |                                 d {V  w xY wrU   )r   r   r?   r5   r@   rb   rS   rc   rd   r   rW   re   rf   rg   acloseri   s	            r(   rB   zAsyncStream.__stream__   sE     sDM**=|:$$&&&	$% " " " " " " "c9,,&,CHHJJRZ[[[[[[[ I00yO33yN22y$999y$999y$88888::Dt}} 1t););'*yV&,D'HUUUUUUU9&&9''8DT"xxzz%))$ T T T"%("S.SX=Q.S.ST ,99!!% :    (+ &XJ //###########(//##########s=   F E<CF D76F 7EF E(F F6r   c                
   K   | S r=   r0   rI   s    r(   
__aenter__zAsyncStream.__aenter__   s      r*   rp   rq   rr   rs   rt   ru   c                >   K   |                                   d {V  d S r=   rw   rx   s       r(   	__aexit__zAsyncStream.__aexit__   s.       jjllr*   c                H   K   | j                                          d{V  dS r{   )r5   r   rI   s    r(   rh   zAsyncStream.close   s4       m""$$$$$$$$$$$r*   N)r8   r9   r5   r4   r:   r   r   r;   r|   )r   r   )r   r   r}   r~   r   )r-   r.   r/   r   r   rE   r   r   rS   rB   r   r   rh   r0   r*   r(   r   r      s         VV****+ + + +0 0 0 0      ,$ ,$ ,$ ,$\      % % % % % %r*   r   c                      e Zd ZdddddddZedd            Zedd            Zedd            Zedd            ZddZ	e
dd            ZdS )ServerSentEventNrc   rW   idretryrc   
str | NonerW   r   r   
int | Noner   r;   c               J    |d}|| _         || _        |pd | _        || _        d S )N )_id_data_event_retry)r'   rc   rW   r   r   s        r(   rE   zServerSentEvent.__init__  s2     <D
mtr*   c                    | j         S r=   )r   rI   s    r(   rc   zServerSentEvent.event  
    {r*   c                    | j         S r=   )r   rI   s    r(   r   zServerSentEvent.id  s	    xr*   c                    | j         S r=   )r   rI   s    r(   r   zServerSentEvent.retry  r   r*   strc                    | j         S r=   )r   rI   s    r(   rW   zServerSentEvent.data  s
    zr*   r   c                4    t          j        | j                  S r=   )rd   loadsrW   rI   s    r(   rd   zServerSentEvent.json#  s    z$)$$$r*   c           	     H    d| j          d| j         d| j         d| j         d	S )NzServerSentEvent(event=z, data=z, id=z, retry=)r   rI   s    r(   __repr__zServerSentEvent.__repr__&  s5    i
ii49ii47ii\`\fiiiir*   )
rc   r   rW   r   r   r   r   r   r   r;   )r   r   )r   r   )r   r   )r   r   )r-   r.   r/   rE   propertyrc   r   r   rW   rd   r   r   r0   r*   r(   r   r     s         !           X    X    X    X% % % % j j j Xj j jr*   r   c                  h    e Zd ZU ded<   ded<   ded<   ded<   dd
ZddZddZddZddZddZ	dS )
SSEDecoderz	list[str]r   r   r   r   r   _last_event_idr   r;   c                >    d | _         g | _        d | _        d | _        d S r=   )r   r   r   r   rI   s    r(   rE   zSSEDecoder.__init__1  s#    
"r*   rk   Iterator[bytes]rP   c              #     K   |                      |          D ]I}|                                D ]2}|                    d          }|                     |          }|r|V  3JdS )^Given an iterator that yields raw binary data, iterate over it & yield every event encounteredutf-8N)_iter_chunks
splitlinesdecoder'   rk   chunkraw_linelinerl   s         r(   rR   zSSEDecoder.iter_bytes7  s      &&x00 	 	E!,,..  w//kk$'' III		 	r*   c              #     K   d}|D ];}|                     d          D ]"}||z  }|                    d          r|V  d}#<|r|V  dS dS )^Given an iterator that yields raw binary data, iterate over it and yield individual SSE chunksr*   Tkeependss   s   

s   

Nr   endswithr'   rk   rW   r   r   s        r(   r   zSSEDecoder._iter_chunksA  s       	 	E(($(77  ==!@AA JJJD	
  	JJJJJ	 	r*   AsyncIterator[bytes]r   c                  K   |                      |          2 3 d{V }|                                D ]3}|                    d          }|                     |          }|r|W V  4P6 dS )r   Nr   )_aiter_chunksr   r   r   s         r(   r   zSSEDecoder.aiter_bytesM  s      --h77 	 	 	 	 	 	 	%!,,..  w//kk$'' IIII	 877s   A(c                  K   d}|2 3 d{V }|                     d          D ]#}||z  }|                    d          r|W V  d}$B6 |r|W V  dS dS )r   r*   NTr   r   r   r   s        r(   r   zSSEDecoder._aiter_chunksW  s      # 	 	 	 	 	 	 	%(($(77  ==!@AA JJJJD	 $  	JJJJJJ	 	s   A	r   r   ServerSentEvent | Nonec                r   |so| j         s| j        s| j        s	| j        d S t	          | j         d                    | j                  | j        | j                  }d | _         g | _        d | _        |S |                    d          rd S |                    d          \  }}}|                    d          r
|dd          }|dk    r|| _         nh|dk    r| j                            |           nG|dk    rd	|v rn<|| _        n4|d
k    r-	 t          |          | _        n# t          t          f$ r Y nw xY w	 d S )N
r   : r   rc   rW   r    r   )r   r   r   r   r   join
startswith	partitionappendint	TypeError
ValueError)r'   r   rl   	fieldname_values         r(   r   zSSEDecoder.decodec  s     	; tz $:M RVR]Ret!kYYtz**&k	  C DKDJDKJ??3 	4"nnS11	1eC   	!""IEDKK&  Je$$$$$u}}&+##'!!!%jjz*    ts   
D D32D3Nr   rk   r   r   rP   )rk   r   r   r   rk   r   r   r   )rk   r   r   r   )r   r   r   r   )
r-   r.   r/   r   rE   rR   r   r   r   r   r0   r*   r(   r   r   +  s               
 
 
 
   
 
 
 
. . . . . .r*   r   c                      e Zd Zd
dZddZd	S )r6   rk   r   r   rP   c                    dS )r   Nr0   r'   rk   s     r(   rR   zSSEBytesDecoder.iter_bytes      r*   r   r   c                    dS )zdGiven an async iterator that yields raw binary data, iterate over it & yield every event encounteredNr0   r   s     r(   r   zSSEBytesDecoder.aiter_bytes  r   r*   Nr   r   )r-   r.   r/   rR   r   r0   r*   r(   r6   r6     s<                r*   r6   typr^   r   ;TypeGuard[type[Stream[object]] | type[AsyncStream[object]]]c                    t          |           p| }t          j        |          ot          |t          t
          f          S )zaTypeGuard for determining whether or not the given type is a subclass of `Stream` / `AsyncStream`)r   inspectisclass
issubclassr3   r   )r   origins     r(   is_stream_class_typer     s6    __#F?6""Pz&6;:O'P'PPr*   )failure_message
stream_clsr   r   c          	     X    ddl m}m} t          | dt	          d||f          |          S )a  Given a type like `Stream[T]`, returns the generic type variable `T`.

    This also handles the case where a concrete subclass is given, e.g.
    ```py
    class MyStream(Stream[bytes]):
        ...

    extract_stream_chunk_type(MyStream) -> bytes
    ```
    r   )r3   r   r   ztuple[type, ...])indexgeneric_basesr   )_base_clientr3   r   r   r   )r   r   r3   r   s       r(   extract_stream_chunk_typer     sO     21111111%-/DEE'	   r*   )r   r^   r   r   )r   r^   r   r   r   r^   ))
__future__r   abcrd   r   r$   typesr   typingr   r   r   r   r	   r
   r   typing_extensionsr   r   r   r   r   r   httpx_utilsr   r   r@   r   r   r   ABCMetar   r3   r   r   r   r   r6   r   r   r0   r*   r(   <module>r      s   " " " " " " 



          V V V V V V V V V V V V V V V V V V ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `  7 7 7 7 7 7 7 7 322222222 WT]]    ck   *] ] ] ] ]WR[O ] ] ] ]@    s{   *^% ^% ^% ^% ^%'"+)9 ^% ^% ^% ^%B&j &j &j &j &j &j &j &jRf f f f f f f fR     h   Q Q Q Q #'       r*   