
    ia9                       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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 dd	l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OptionalAsyncIteratorcast)SelfProtocol	TypeGuardoverride
get_originruntime_checkable   )is_dictextract_type_var_from_base)	AnthropicAsyncAnthropic)FinalRequestOptions_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      Q/root/projects/qq-shell/venv/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                  |    e Zd ZU dZded<   dZded<   ded<   d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responseNOptional[FinalRequestOptions]_optionsSSEBytesDecoder_decoderoptionscast_totype[_T]clientr   r=   r   Nonec                   || _         || _        || _        || _        |                                | _        |                                 | _        d S Nr7   _cast_to_clientr9   _make_sse_decoderr;   
__stream__	_iteratorr)   r>   r7   r@   r=   s        r*   __init__zStream.__init__4   H     !0022**r,   r   c                4    | j                                         S rC   )rI   __next__r)   s    r*   rN   zStream.__next__C   s    ~&&(((r,   Iterator[_T]c              #  &   K   | j         D ]}|V  d S rC   rI   r)   items     r*   __iter__zStream.__iter__F   s,      N 	 	DJJJJ	 	r,   Iterator[ServerSentEvent]c              #  x   K   | j                             | j                                                  E d {V  d S rC   )r;   
iter_bytesr7   rO   s    r*   _iter_eventszStream._iter_eventsJ   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)datar>   r7   message_startmessage_deltamessage_stopcontent_block_startcontent_block_deltacontent_block_stoptypepingerrorzError code: )bodyr7   )r   r   rE   r7   rF   _process_response_datarY   eventjsonr   r]   	Exceptionstatus_code_make_status_errorclose	r)   r>   r7   process_dataiteratorsser]   rg   err_msgs	            r*   rH   zStream.__stream__M   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 rC   r2   rO   s    r*   	__enter__zStream.__enter__{   s    r,   exc_typetype[BaseException] | NoneexcBaseException | Noneexc_tbTracebackType | Nonec                .    |                                   d S rC   rn   r)   rv   rx   rz   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)r7   rn   rO   s    r*   rn   zStream.close   s     	r,   )
r>   r?   r7   r6   r@   r   r=   r8   r   rA   r   r   )r   rP   )r   rV   r   r   rv   rw   rx   ry   rz   r{   r   rA   r   rA   )r/   r0   r1   __doc____annotations__r9   rK   rN   rU   rY   rH   ru   r   rn   r2   r,   r*   r5   r5   -   s         TT.2H2222 26+ + + + + +) ) ) )   H H H H, , , ,\           r,   r5   )	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.   r2   r,   r*   r   r      r3   r,   r   c                  |    e Zd ZU dZded<   dZded<   ded<   d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.r6   r7   Nr8   r9   zSSEDecoder | SSEBytesDecoderr;   r<   r>   r?   r@   r   r=   r   rA   c                   || _         || _        || _        || _        |                                | _        |                                 | _        d S rC   rD   rJ   s        r*   rK   zAsyncStream.__init__   rL   r,   r   c                D   K   | j                                          d {V S rC   )rI   	__anext__rO   s    r*   r   zAsyncStream.__anext__   s,      ^--/////////r,   AsyncIterator[_T]c               4   K   | j         2 3 d {V }|W V  6 d S rC   rR   rS   s     r*   	__aiter__zAsyncStream.__aiter__   sF      . 	 	 	 	 	 	 	$JJJJJ )..s   AsyncIterator[ServerSentEvent]c                  K   | j                             | j                                                  2 3 d {V }|W V  6 d S rC   )r;   aiter_bytesr7   )r)   rr   s     r*   rY   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r[   )r   r   rE   r7   rF   rh   rY   ri   rj   r   r]   rk   rl   rm   aclosero   s	            r*   rH   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 rC   r2   rO   s    r*   
__aenter__zAsyncStream.__aenter__   s      r,   rv   rw   rx   ry   rz   r{   c                >   K   |                                   d {V  d S rC   r}   r~   s       r*   	__aexit__zAsyncStream.__aexit__   s.       jjllr,   c                H   K   | j                                          d{V  dS r   )r7   r   rO   s    r*   rn   zAsyncStream.close   s4       m""$$$$$$$$$$$r,   )
r>   r?   r7   r6   r@   r   r=   r8   r   rA   r   )r   r   )r   r   r   r   r   )r/   r0   r1   r   r   r9   rK   r   r   rY   rH   r   r   rn   r2   r,   r*   r   r      s         VV.2H2222**** 26+ + + + + +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ri   r]   idretryri   
str | Noner]   r   r   
int | Noner   rA   c               J    |d}|| _         || _        |pd | _        || _        d S )N )_id_data_event_retry)r)   ri   r]   r   r   s        r*   rK   zServerSentEvent.__init__  s2     <D
mtr,   c                    | j         S rC   )r   rO   s    r*   ri   zServerSentEvent.event  
    {r,   c                    | j         S rC   )r   rO   s    r*   r   zServerSentEvent.id  s	    xr,   c                    | j         S rC   )r   rO   s    r*   r   zServerSentEvent.retry   r   r,   strc                    | j         S rC   )r   rO   s    r*   r]   zServerSentEvent.data$  s
    zr,   r   c                4    t          j        | j                  S rC   )rj   loadsr]   rO   s    r*   rj   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   rO   s    r*   __repr__zServerSentEvent.__repr__+  s5    i
ii49ii47ii\`\fiiiir,   )
ri   r   r]   r   r   r   r   r   r   rA   )r   r   )r   r   )r   r   )r   r   )r/   r0   r1   rK   propertyri   r   r   r]   rj   r   r   r2   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   rA   c                >    d | _         g | _        d | _        d | _        d S rC   )r   r   r   r   rO   s    r*   rK   zSSEDecoder.__init__6  s#    
"r,   rq   Iterator[bytes]rV   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)   rq   chunkraw_linelinerr   s         r*   rX   zSSEDecoder.iter_bytes<  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)   rq   r]   r   r   s        r*   r   zSSEDecoder._iter_chunksF  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_bytesR  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_chunks\  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   ri   r]   r    r   )r   r   r   r   r   join
startswith	partitionappendint	TypeError
ValueError)r)   r   rr   	fieldname_values         r*   r   zSSEDecoder.decodeh  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   rq   r   r   rV   )rq   r   r   r   rq   r   r   r   )rq   r   r   r   )r   r   r   r   )
r/   r0   r1   r   rK   rX   r   r   r   r   r2   r,   r*   r   r   0  s               
 
 
 
   
 
 
 
. . . . . .r,   r   c                      e Zd Zd
dZddZd	S )r:   rq   r   r   rV   c                    dS )r   Nr2   r)   rq   s     r*   rX   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 encounteredNr2   r   s     r*   r   zSSEBytesDecoder.aiter_bytes  r   r,   Nr   r   )r/   r0   r1   rX   r   r2   r,   r*   r:   r:     s<                r,   r:   typrd   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
issubclassr5   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   )r5   r   r   ztuple[type, ...])indexgeneric_basesr   )_base_clientr5   r   r   r   )r   r   r5   r   s       r*   extract_stream_chunk_typer     sO     21111111%-/DEE'	   r,   )r   rd   r   r   )r   rd   r   r   r   rd   ),
__future__r   abcrj   r   r&   typesr   typingr   r   r   r   r	   r
   r   r   typing_extensionsr   r   r   r   r   r   httpx_utilsr   r   rF   r   r   _modelsr   r   ABCMetar   r5   r   r   r   r   r:   r   r   r2   r,   r*   <module>r     s   " " " " " " 



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