
    !Ii6                       S SK Jr  S SKrS SKrS SKrS SKrS SKJr  S SKJ	r	J
r
JrJrJrJrJr  S SKJrJrJrJrJrJr  S SKrSSKJrJr  \	(       a  SSKJrJr  \" S	5      r " S
 S\R>                  5      r  " S S\\   \ S9r! " S S\R>                  5      r" " S S\\   \"S9r# " S S5      r$ " S S5      r%\ " S S\5      5       r&SS jr'SS.     SS jjr(g)    )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                  (    \ rS rSr\SS j5       rSrg)_SyncStreamMeta   c                f    SSK Jn  [        X5      (       a  [        R                  " S[
        SS9  gg)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      :/venv/lib/python3.13/site-packages/anthropic/_streaming.py__instancecheck__!_SyncStreamMeta.__instancecheck__   s2     	1h..MM a"
      Nr&   r   returnbool__name__
__module____qualname____firstlineno__r   r(   __static_attributes__r+   r*   r'   r   r           r*   r   c                      \ rS rSr% SrS\S'   S\S'           SS jrSS jrSS	 jrSS
 jr	SS jr
SS jr        SS jrSS jrSrg)Stream,   zJProvides the core interface to iterate over a synchronous stream response.httpx.ResponseresponseSSEBytesDecoder_decoderc               |    X l         Xl        X0l        UR                  5       U l        U R                  5       U l        g Nr:   _cast_to_client_make_sse_decoderr<   
__stream__	_iteratorr%   cast_tor:   clients       r'   __init__Stream.__init__3   1     !002*r*   c                6    U R                   R                  5       $ r>   )rD   __next__r%   s    r'   rL   Stream.__next__@   s    ~~&&((r*   c              #  :   #    U R                    H  nUv   M	     g 7fr>   rD   r%   items     r'   __iter__Stream.__iter__C   s     NNDJ #s   c              #     #    U R                   R                  U R                  R                  5       5       S h  vN   g  N7fr>   )r<   
iter_bytesr:   rM   s    r'   _iter_eventsStream._iter_eventsG   s*     ==++DMM,D,D,FGGGs   7A?Ac              #    #    [        [        U R                  5      nU R                  nU R                  R
                  nU R                  5       nU GH/  nUR                  S:X  a  U" UR                  5       XS9v   UR                  S:X  dP  UR                  S:X  d@  UR                  S:X  d0  UR                  S:X  d   UR                  S:X  d  UR                  S:X  a>  UR                  5       n[        U5      (       a  S	U;  a  UR                  US	'   U" XaUS9v   UR                  S
:X  a  M  UR                  S:X  d  M  UR                  n UR                  5       nU nU R                  R                  UUU R                  S9e   U H  n	M     g ! [         a%    UR                  =(       d    SUR                   3n N_f = f7fN
completion)datarF   r:   message_startmessage_deltamessage_stopcontent_block_startcontent_block_deltacontent_block_stoptypepingerrorzError code: )bodyr:   r   r   r@   r:   rA   _process_response_datarW   eventjsonr   r\   	Exceptionstatus_code_make_status_error
r%   rF   r:   process_dataiteratorsser\   rf   err_msg_sses
             r'   rC   Stream.__stream__J   s    sDMM*==||::$$&CyyL("
GWW 		_,99/99.99 5599 5599 44xxz4==V4%7#&99DL"QQyyF"yyG#xxP88:D!%G ll55!]] 6  = J D  ! P!hhOL9M9M8N*OGPs0   D8G>GF1G,F>;G=F>>Gc                    U $ r>   r+   rM   s    r'   	__enter__Stream.__enter__x   s    r*   c                $    U R                  5         g r>   closer%   exc_typeexcexc_tbs       r'   __exit__Stream.__exit__{   s     	

r*   c                8    U R                   R                  5         gzr
Close the response and release the connection.

Automatically called if the response body is read to completion.
N)r:   rz   rM   s    r'   rz   Stream.close   s     	r*   r@   rA   r<   rD   r:   N)rF   type[_T]r:   r9   rG   r   r-   Noner-   r   )r-   zIterator[_T])r-   Iterator[ServerSentEvent]r-   r   r|   ztype[BaseException] | Noner}   zBaseException | Noner~   zTracebackType | Noner-   r   r-   r   )r0   r1   r2   r3   __doc____annotations__rH   rL   rS   rW   rC   rv   r   rz   r4   r+   r*   r'   r7   r7   ,   s    T+ + !	+
 + 
+)H,\, " %	
 
r*   r7   )	metaclassc                  (    \ rS rSr\SS j5       rSrg)_AsyncStreamMeta   c                f    SSK Jn  [        X5      (       a  [        R                  " S[
        SS9  gg)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(   "_AsyncStreamMeta.__instancecheck__   s2     	6h33MM k"
 r*   r+   Nr,   r/   r+   r*   r'   r   r      r5   r*   r   c                      \ rS rSr% SrS\S'   S\S'           SS jrSS jrSS	 jrSS
 jr	SS jr
SS jr        SS jrSS jrSrg)AsyncStream   zLProvides the core interface to iterate over an asynchronous stream response.r9   r:   zSSEDecoder | SSEBytesDecoderr<   c               |    X l         Xl        X0l        UR                  5       U l        U R                  5       U l        g r>   r?   rE   s       r'   rH   AsyncStream.__init__   rJ   r*   c                R   #    U R                   R                  5       I S h  vN $  N7fr>   )rD   	__anext__rM   s    r'   r   AsyncStream.__anext__   s     ^^--////s   '%'c               J   #    U R                     S h  vN nU7v   M   N
 g 7fr>   rP   rQ   s     r'   	__aiter__AsyncStream.__aiter__   s     .. 	$J	.s   #!!#!#c                  #    U R                   R                  U R                  R                  5       5        S h  vN nU7v   M   N
 g 7fr>   )r<   aiter_bytesr:   )r%   rq   s     r'   rW   AsyncStream._iter_events   s8     224==3L3L3NO 	#I	Os%   4A
AAAA
AA
c                 #    [        [        U R                  5      nU R                  nU R                  R
                  nU R                  5       nU  S h  vN nUR                  S:X  a  U" UR                  5       XS97v   UR                  S:X  dP  UR                  S:X  d@  UR                  S:X  d0  UR                  S:X  d   UR                  S:X  d  UR                  S:X  a?  UR                  5       n[        U5      (       a  S	U;  a  UR                  US	'   U" XaUS97v   UR                  S
:X  a  M  UR                  S:X  d  M  UR                  n UR                  5       nU nU R                  R                  UUU R                  S9e GN5! [         a%    UR                  =(       d    SUR                   3n NVf = f
 U  S h  vN  n	M  
 g 7frZ   rg   rn   s
             r'   rC   AsyncStream.__stream__   s    sDMM*==||::$$&! "	#yyL("
GWW 		_,99/99.99 5599 5599 44xxz4==V4%7#&99DL"QQyyF"yyG#xxP88:D!%G ll55!]] 6  ="	6 ! P!hhOL9M9M8N*OGP7 "J # 	 	$ #sg   AGF?F
F?C(GGF%%G
F?,F<9G;F<<GGG	GGc                   #    U $ 7fr>   r+   rM   s    r'   
__aenter__AsyncStream.__aenter__   s
     s   c                @   #    U R                  5       I S h  vN   g  N7fr>   ry   r{   s       r'   	__aexit__AsyncStream.__aexit__   s      jjls   c                T   #    U R                   R                  5       I Sh  vN   g N7fr   )r:   acloserM   s    r'   rz   AsyncStream.close   s      mm""$$$s   (&(r   N)rF   r   r:   r9   rG   r   r-   r   r   )r-   zAsyncIterator[_T])r-   AsyncIterator[ServerSentEvent]r   r   r   )r0   r1   r2   r3   r   r   rH   r   r   rW   rC   r   r   rz   r4   r+   r*   r'   r   r      s    V**+ + !	+
 + 
+0,\, " %	
 
%r*   r   c                      \ rS rSrSSSSS.         SS jjr\SS j5       r\SS j5       r\SS j5       r\SS j5       r	SS	 jr
\SS
 j5       rSrg)ServerSentEventi  Nri   r\   idretryc               R    Uc  SnX0l         X l        U=(       d    S U l        X@l        g )N )_id_data_event_retry)r%   ri   r\   r   r   s        r'   rH   ServerSentEvent.__init__  s(     <D
mtr*   c                    U R                   $ r>   )r   rM   s    r'   ri   ServerSentEvent.event      {{r*   c                    U R                   $ r>   )r   rM   s    r'   r   ServerSentEvent.id  s    xxr*   c                    U R                   $ r>   )r   rM   s    r'   r   ServerSentEvent.retry  r   r*   c                    U R                   $ r>   )r   rM   s    r'   r\   ServerSentEvent.data  s    zzr*   c                B    [         R                  " U R                  5      $ r>   )rj   loadsr\   rM   s    r'   rj   ServerSentEvent.json#  s    zz$))$$r*   c           	     p    SU R                    SU R                   SU R                   SU R                   S3	$ )NzServerSentEvent(event=z, data=z, id=z, retry=)r   rM   s    r'   __repr__ServerSentEvent.__repr__&  s9    '

|7499+U477)S[\`\f\f[gghiir*   )r   r   r   r   )
ri   
str | Noner\   r   r   r   r   
int | Noner-   r   )r-   r   )r-   r   )r-   str)r-   r   )r0   r1   r2   r3   rH   propertyri   r   r   r\   rj   r   r   r4   r+   r*   r'   r   r     s     !   	
   
         % j jr*   r   c                  z    \ rS rSr% S\S'   S\S'   S\S'   S\S'   SS	 jrSS
 jrSS jrSS jrSS jr	SS jr
Srg)
SSEDecoderi+  z	list[str]r   r   r   r   r   _last_event_idc                <    S U l         / U l        S U l        S U l        g r>   )r   r   r   r   rM   s    r'   rH   SSEDecoder.__init__1  s    
"r*   c              #     #    U R                  U5       HI  nUR                  5        H2  nUR                  S5      nU R                  U5      nU(       d  M.  Uv   M4     MK     g7f)^Given an iterator that yields raw binary data, iterate over it & yield every event encounteredutf-8N)_iter_chunks
splitlinesdecoder%   rp   chunkraw_linelinerq   s         r'   rV   SSEDecoder.iter_bytes7  sS     &&x0E!,,.w/kk$'3I	 / 1s   AA"A"c              #     #    SnU H;  nUR                  SS9 H%  nX$-  nUR                  S5      (       d  M  Uv   SnM'     M=     U(       a  Uv   gg7f)^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%   rp   r\   r   r   s        r'   r   SSEDecoder._iter_chunksA  s\     E(($(7==!@AAJD	 8  J s
   2AAc                  #    U R                  U5        Sh  vN nUR                  5        H3  nUR                  S5      nU R                  U5      nU(       d  M.  U7v   M5     MR   NM
 g7f)r   Nr   )_aiter_chunksr   r   r   s         r'   r   SSEDecoder.aiter_bytesM  s[     --h7 	%!,,.w/kk$'3I	 /	7s+   A*A(A&A(;A*A*&A((A*c                  #    SnU  Sh  vN nUR                  SS9 H&  nX$-  nUR                  S5      (       d  M  U7v   SnM(     MD   N?
 U(       a  U7v   gg7f)r   r*   NTr   r   r   r   s        r'   r   SSEDecoder._aiter_chunksW  sc     # 	%(($(7==!@AAJD	 8	8 J s*   AAAA+AAAAc                   U(       d  U R                   (       d0  U R                  (       d  U R                  (       d  U R                  c  g [	        U R                   SR                  U R                  5      U R                  U R                  S9nS U l         / U l        S U l        U$ UR                  S5      (       a  g UR                  S5      u  p4nUR                  S5      (       a  USS  nUS:X  a  XPl         g US:X  a  U R                  R                  U5        g US:X  a  S	U;   a   g XPl         g US
:X  a   [        U5      U l        g  g ! [        [        4 a     g f = f)N
r   : r   ri   r\   r    r   )r   r   r   r   r   join
startswith	partitionappendint	TypeError
ValueError)r%   r   rq   	fieldname_values         r'   r   SSEDecoder.decodec  sW    ;;tzz$:M:MRVR]R]Re!kkYYtzz*&&kk	C DKDJDKJ??3"nnS1	eC  !"IEK   & JJe$  $u}  ',#  '!!%j   z*  s   5E EE)r   r   r   r   Nr   rp   Iterator[bytes]r-   r   )rp   r   r-   r   rp   AsyncIterator[bytes]r-   r   )rp   r   r-   r   )r   r   r-   zServerSentEvent | None)r0   r1   r2   r3   r   rH   rV   r   r   r   r   r4   r+   r*   r'   r   r   +  s8    

.r*   r   c                  (    \ rS rSrSS jrSS jrSrg)r;   i  c                    g)r   Nr+   r%   rp   s     r'   rV   SSEBytesDecoder.iter_bytes      r*   c                    g)zdGiven an async iterator that yields raw binary data, iterate over it & yield every event encounteredNr+   r  s     r'   r   SSEBytesDecoder.aiter_bytes  r  r*   r+   Nr   r   )r0   r1   r2   r3   rV   r   r4   r+   r*   r'   r;   r;     s    r*   r;   c                    [        U 5      =(       d    U n[        R                  " U5      =(       a    [        U[        [
        45      $ )zaTypeGuard for determining whether or not the given type is a subclass of `Stream` / `AsyncStream`)r   inspectisclass
issubclassr7   r   )typorigins     r'   is_stream_class_typer    s0    _#F??6"Pz&6;:O'PPr*   )failure_messagec          	     @    SSK JnJn  [        U S[	        SX#45      US9$ )zGiven 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   )r7   r   r   ztuple[type, ...])indexgeneric_basesr  )_base_clientr7   r   r   r   )
stream_clsr  r7   r   s       r'   extract_stream_chunk_typer    s+     2%-/DE'	 r*   )r  rc   r-   z;TypeGuard[type[Stream[object]] | type[AsyncStream[object]]])r  rc   r  r   r-   rc   ))
__future__r   abcrj   r	  r"   typesr   typingr   r   r   r   r	   r
   r   typing_extensionsr   r   r   r   r   r   httpx_utilsr   r   rA   r   r   r   ABCMetar   r7   r   r   r   r   r;   r  r  r+   r*   r'   <module>r     s    " 
     V V V ` `  72 T]ckk *]WR[O ]@s{{ *^%'"+)9 ^%B&j &jRf fR h  Q #'   
	r*   