
    7jKP                       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jD                        Z# G d dee!   e#      Z$ G d dejD                        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+y)    )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y)_SyncStreamMetac                b    ddl m} t        ||      rt        j                  dt
        d       yy)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)selfinstancer   s      J/var/www/html/qr/venv/lib/python3.12/site-packages/anthropic/_streaming.py__instancecheck__z!_SyncStreamMeta.__instancecheck__   s1     	1h.MM a"
     Nr'   r   returnbool__name__
__module____qualname__r   r)    r*   r(   r   r           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	e
dd       ZddZddZ	 	 	 	 	 	 	 	 ddZddZy)StreamzJProvides the core interface to iterate over a synchronous stream response.httpx.ResponseresponseNOptional[FinalRequestOptions]_optionsSSEBytesDecoder_decoderoptionsc                   || _         || _        || _        || _        |j	                         | _        | j                         | _        y Nr7   _cast_to_clientr9   _make_sse_decoderr;   
__stream__	_iteratorr&   cast_tor7   clientr=   s        r(   __init__zStream.__init__4   >     !002*r*   c                6    | j                   j                         S r?   )rE   __next__r&   s    r(   rL   zStream.__next__C   s    ~~&&((r*   c              #  6   K   | j                   D ]  }|  y wr?   rE   r&   items     r(   __iter__zStream.__iter__F   s     NN 	DJ	s   c              #     K   | j                   j                  | j                  j                               E d {    y 7 wr?   )r;   
iter_bytesr7   rM   s    r(   _iter_eventszStream._iter_eventsJ   s+     ==++DMM,D,D,FGGGs   7A?Ac                P    t               j                  | j                               S zIterate the raw Server-Sent Events from `response`, before any JSON
        parsing or event-name filtering.

        This reads the response body directly, so the response is consumed.
        )
SSEDecoderrT   r7   s    r(   
raw_eventszStream.raw_eventsM   s      |&&x':':'<==r*   c              #  2  K   t        t        | j                        }| j                  }| j                  j
                  }| j                         }	 |D ]n  }|j                  dk(  r ||j                         ||       |j                  dk(  s|j                  dk(  s~|j                  dk(  sn|j                  dk(  s^|j                  dk(  sN|j                  dk(  s>|j                  d	k(  s.|j                  d
k(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s~|j                  dk(  sn|j                  dk(  s^|j                  dk(  sN|j                  dk(  s>|j                  dk(  s.|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  d k(  s|j                  d!k(  s|j                  d"k(  s|j                  d#k(  s|j                  d$k(  s|j                  d%k(  sx|j                  d&k(  si|j                  d'k(  sZ|j                  d(k(  sK|j                  d)k(  s<|j                  d*k(  s-|j                  d+k(  s|j                  d,k(  s|j                  d-k(  r;|j                         }t        |      rd.|vr|j                  |d.<    ||||       |j                  d/k(  r|j                  d0k(  s)|j                  }	 |j                         }| }| j                  j                  ||| j                  2       	 |j                          y # t        $ r  |j                  xs d1|j                   }Y cw xY w# |j                          w xY ww3N
completion)datarG   r7   message_startmessage_deltamessage_stopcontent_block_startcontent_block_deltacontent_block_stopmessagezuser.messagezuser.interruptzuser.tool_confirmationzuser.custom_tool_resultzuser.tool_resultzagent.messagezagent.thinkingzagent.tool_usezagent.tool_resultzagent.mcp_tool_usezagent.mcp_tool_resultzagent.custom_tool_usezagent.thread_context_compactedzsession.status_runningzsession.status_idlezsession.status_rescheduledzsession.status_terminatedzsession.errorzsession.deletedzsession.updatedzspan.model_request_startzspan.model_request_endzspan.outcome_evaluation_startzspan.outcome_evaluation_ongoingzspan.outcome_evaluation_endzuser.define_outcomezagent.thread_message_receivedzagent.thread_message_sentz%agent.session_thread_message_receivedz!agent.session_thread_message_sentzsession.thread_createdzsession.thread_status_createdzsession.thread_status_runningzsession.thread_status_idlez!session.thread_status_rescheduledz session.thread_status_terminatedtypepingerrorzError code: )bodyr7   )r   r   rA   r7   rB   _process_response_datarU   eventjsonr   r^   	Exceptionstatus_code_make_status_errorclose	r&   rG   r7   process_dataiteratorsser^   ri   err_msgs	            r(   rD   zStream.__stream__V   s    sDMM*==||::$$&K	 G99,&CHHJRZ[[ II0yyO3yyN2yy$99yy$99yy$88yyI-yyN2yy$44yy$<<yy$==yy$66yyO3yy$44yy$44yy$77yy$88yy$;;yy$;;yy$DDyy$<<yy$99yy$@@yy$??yyO3yy$55yy$55yy$>>yy$<<yy$CCyy$EEyy$AAyy$99yy$CCyy$??yy$KKyy$GGyy$<<yy$CCyy$CCyy$@@yy$GGyy$FF88:Dt}t);'*yyV&D'HUU99&99'88DT"xxz%)F ,,99!!% :  GGT NN % T"%(("SX=Q=Q<R.ST NNsI   APL)P ;P O)P P&O?<P >O??P PPc                    | S r?   r2   rM   s    r(   	__enter__zStream.__enter__   s    r*   c                $    | j                          y r?   rp   r&   exc_typeexcexc_tbs       r(   __exit__zStream.__exit__   s     	

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

        Automatically called if the response body is read to completion.
        N)r7   rp   rM   s    r(   rp   zStream.close   s     	r*   )
rG   type[_T]r7   r6   rH   r   r=   r8   r,   Noner,   r   )r,   zIterator[_T])r,   Iterator[ServerSentEvent])r7   r6   r,   r   r,   r   r{   ztype[BaseException] | Noner|   zBaseException | Noner}   zTracebackType | Noner,   r   r,   r   )r/   r0   r1   __doc____annotations__r9   rI   rL   rR   rU   staticmethodrZ   rD   rw   r~   rp   r2   r*   r(   r5   r5   -   s    T.2H+2 26+ + !	+
 + /+ 
+)H > >Qf, " %	
 
r*   r5   )	metaclassc                      e Zd Zedd       Zy)_AsyncStreamMetac                b    ddl m} t        ||      rt        j                  dt
        d       yy)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__   s2     	6h 23MM k"
 r*   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	e
dd       ZddZddZ	 	 	 	 	 	 	 	 ddZddZy)AsyncStreamzLProvides the core interface to iterate over an asynchronous stream response.r6   r7   Nr8   r9   zSSEDecoder | SSEBytesDecoderr;   r<   c                   || _         || _        || _        || _        |j	                         | _        | j                         | _        y r?   r@   rF   s        r(   rI   zAsyncStream.__init__   rJ   r*   c                R   K   | j                   j                          d {   S 7 wr?   )rE   	__anext__rM   s    r(   r   zAsyncStream.__anext__   s     ^^--////s   '%'c               H   K   | j                   2 3 d {   }| 7 
6 y wr?   rO   rP   s     r(   	__aiter__zAsyncStream.__aiter__   s&     .. 	 	$J	.s   "  " "c                  K   | j                   j                  | j                  j                               2 3 d {   }| 7 
6 y wr?   )r;   aiter_bytesr7   )r&   rt   s     r(   rU   zAsyncStream._iter_events   s?     224==3L3L3NO 	 	#I	Os%   4A	AAAA	AA	c                P    t               j                  | j                               S rW   )rX   r   rY   s    r(   rZ   zAsyncStream.raw_events   s      |''(<(<(>??r*   c               j  K   t        t        | j                        }| j                  }| j                  j
                  }| j                         }	 |2 3 d {   }|j                  dk(  r ||j                         ||       |j                  dk(  s|j                  dk(  s~|j                  dk(  sn|j                  dk(  s^|j                  dk(  sN|j                  dk(  s>|j                  d	k(  s.|j                  d
k(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s~|j                  dk(  sn|j                  dk(  s^|j                  dk(  sN|j                  dk(  s>|j                  dk(  s.|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  d k(  s|j                  d!k(  s|j                  d"k(  s|j                  d#k(  s|j                  d$k(  s|j                  d%k(  sx|j                  d&k(  si|j                  d'k(  sZ|j                  d(k(  sK|j                  d)k(  s<|j                  d*k(  s-|j                  d+k(  s|j                  d,k(  s|j                  d-k(  r<|j                         }t        |      rd.|vr|j                  |d.<    ||||       |j                  d/k(  r|j                  d0k(  s0|j                  }	 |j                         }| }| j                  j                  ||| j                  2      7 t# t        $ r  |j                  xs d1|j                   }Y Sw xY w6 	 |j                          d {  7   y # |j                          d {  7   w xY wwr\   )r   r   rA   r7   rB   rj   rU   rk   rl   r   r^   rm   rn   ro   acloserq   s	            r(   rD   zAsyncStream.__stream__   s    sDMM*==||::$$&K	$% G Gc99,&CHHJRZ[[ II0yyO3yyN2yy$99yy$99yy$88yyI-yyN2yy$44yy$<<yy$==yy$66yyO3yy$44yy$44yy$77yy$88yy$;;yy$;;yy$DDyy$<<yy$99yy$@@yy$??yyO3yy$55yy$55yy$>>yy$<<yy$CCyy$EEyy$AAyy$99yy$CCyy$??yy$KKyy$GGyy$<<yy$CCyy$CCyy$@@yy$GGyy$FF88:Dt}t);'*yyV&D'HUU99&99'88DT"xxz%)F ,,99!!% :  GG@ % T"%(("SX=Q=Q<R.STA &T //###(//###s   AP3P O9O
O9L&P P O"(P 
O9&O63P 5O66P ;P3PP3P0)P,*P00P3c                   K   | S wr?   r2   rM   s    r(   
__aenter__zAsyncStream.__aenter__O  s     s   c                @   K   | j                          d {    y 7 wr?   ry   rz   s       r(   	__aexit__zAsyncStream.__aexit__R  s      jjls   c                T   K   | j                   j                          d{    y7 wr   )r7   r   rM   s    r(   rp   zAsyncStream.closeZ  s      mm""$$$s   (&()
rG   r   r7   r6   rH   r   r=   r8   r,   r   r   )r,   zAsyncIterator[_T])r,   AsyncIterator[ServerSentEvent])r7   r6   r,   r   r   r   r   )r/   r0   r1   r   r   r9   rI   r   r   rU   r   rZ   rD   r   r   rp   r2   r*   r(   r   r      s    V.2H+2** 26+ + !	+
 + /+ 
+0 @ @Q$f, " %	
 
%r*   r   c                      e Zd Zdddddd	 	 	 	 	 	 	 	 	 	 	 ddZe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y)ServerSentEventNrk   r^   idretryrawc               n    |d}|| _         || _        |xs d | _        || _        ||| _        y g | _        y )N )_id_data_event_retry_raw)r&   rk   r^   r   r   r   s         r(   rI   zServerSentEvent.__init__d  s?     <D
mt?C		r*   c                    | j                   S r?   )r   rM   s    r(   rk   zServerSentEvent.eventv      {{r*   c                    | j                   S r?   )r   rM   s    r(   r   zServerSentEvent.idz  s    xxr*   c                    | j                   S r?   )r   rM   s    r(   r   zServerSentEvent.retry~  r   r*   c                    | j                   S r?   )r   rM   s    r(   r^   zServerSentEvent.data  s    zzr*   c                    | j                   S )zThe original wire lines this event was decoded from, without trailing newlines.

        Includes SSE fields the decoder does not otherwise model (comment lines,
        unknown fields). Empty for events that were constructed rather than decoded.
        )r   rM   s    r(   r   zServerSentEvent.raw  s     yyr*   c                @    t        j                  | j                        S r?   )rl   loadsr^   rM   s    r(   rl   zServerSentEvent.json  s    zz$))$$r*   c           	     p    d| j                    d| j                   d| j                   d| j                   d	S )NzServerSentEvent(event=z, data=z, id=z, retry=))rk   r^   r   r   rM   s    r(   __repr__zServerSentEvent.__repr__  s9    '

|7499+U477)S[\`\f\f[gghiir*   )rk   
str | Noner^   r   r   r   r   
int | Noner   zlist[str] | Noner,   r   )r,   r   )r,   r   )r,   str)r,   	list[str])r,   r   )r/   r0   r1   rI   propertyrk   r   r   r^   r   rl   r   r   r2   r*   r(   r   r   c  s     !  $3 3 	3
 3 3 3 
3$          % j jr*   r   c                  p    e Zd ZU ded<   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	y)rX   r   r   r   r   r   r   _last_event_idr   c                J    d | _         g | _        d | _        d | _        g | _        y r?   )r   r   r   r   r   rM   s    r(   rI   zSSEDecoder.__init__  s&    
"	r*   c              #     K   | j                  |      D ]@  }|j                         D ]+  }|j                  d      }| j                  |      }|s(| - B yw)^Given an iterator that yields raw binary data, iterate over it & yield every event encounteredutf-8N)_iter_chunks
splitlinesdecoder&   rs   chunkraw_linelinert   s         r(   rT   zSSEDecoder.iter_bytes  s\     &&x0 	E!,,. w/kk$'I		s   AA	Ac              #     K   d}|D ]6  }|j                  d      D ]  }||z  }|j                  d      s| d}! 8 |r| yyw)^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&   rs   r^   r   r   s        r(   r   zSSEDecoder._iter_chunks  sf      	E(($(7 ==!@AJD		 J s
   3AAc                  K   | j                  |      2 3 d{   }|j                         D ],  }|j                  d      }| j                  |      }|s(| . I7 D6 yw)r   Nr   )_aiter_chunksr   r   r   s         r(   r   zSSEDecoder.aiter_bytes  se     --h7 	 	%!,,. w/kk$'I		7s+   A!AAA8A!A!AA!c                  K   d}|2 3 d{   }|j                  d      D ]   }||z  }|j                  d      s| d}" ?7 :6 |r| yyw)r   r*   NTr   r   r   r   s        r(   r   zSSEDecoder._aiter_chunks  sn     # 	 	%(($(7 ==!@AJD		8 J s*   AAAA,A
AA
Ac                   |s| j                   s,| j                  s | j                  s| j                  g | _        y t        | j                   dj                  | j                        | j                  | j                  | j                        }d | _         g | _        d | _        g | _        |S | j                  j                  |       |j                  d      ry |j                  d      \  }}}|j                  d      r|dd  }|dk(  r|| _         y |dk(  r| j                  j                  |       y |dk(  rd	|v r	 y || _        y |d
k(  r	 t        |      | _        y 	 y # t        t        f$ r Y y w xY w)N
r   : r   rk   r^   r    r   )r   r   r   r   r   r   joinappend
startswith	partitionint	TypeError
ValueError)r&   r   rt   	fieldname_values         r(   r   zSSEDecoder.decode  s~    ;;tzz$:M:MRVR]R]Re	!kkYYtzz*&&kkIIC DKDJDKDIJ		??3"nnS1	1eC !"IEDK   & JJe$  $u}  ',#  '!!%j   z*  s   	E E.-E.Nr   rs   Iterator[bytes]r,   r   )rs   r   r,   r   rs   AsyncIterator[bytes]r,   r   )rs   r   r,   r   )r   r   r,   zServerSentEvent | None)
r/   r0   r1   r   rI   rT   r   r   r   r   r2   r*   r(   rX   rX     s=    
O

3r*   rX   c                      e Zd ZddZddZy)r:   c                     y)r   Nr2   r&   rs   s     r(   rT   zSSEBytesDecoder.iter_bytes	      r*   c                     y)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   rT   r   r2   r*   r(   r:   r:     s    r*   r:   c                z    t        |       xs | }t        j                  |      xr 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   )typorigins     r(   is_stream_class_typer     s0    _#F??6"Pz&6;:O'PPr*   )failure_messagec          	     H    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   )
stream_clsr   r5   r   s       r(   extract_stream_chunk_typer     s-     2%-/DE'	 r*   )r   rf   r,   z;TypeGuard[type[Stream[object]] | type[AsyncStream[object]]])r   rf   r   r   r,   rf   ),
__future__r   abcrl   r   r#   typesr   typingr   r   r   r   r	   r
   r   r   typing_extensionsr   r   r   r   r   r   httpx_utilsr   r   rB   r   r   _modelsr   r   ABCMetar   r5   r   r   r   rX   r:   r   r   r2   r*   r(   <module>r     s    " 
     ` ` ` ` `  72, T]ckk *MWR[O M`s{{ *N%'"+)9 N%b1j 1jhm m` h  Q #'   
	r*   