
    -:j                        d dl mZ d dlZd dlmZmZmZmZmZ d dl	m
Z
 d dlZddlmZ erddlmZmZ  G d d	ee         Z G d
 dee         Z G d d      Z G d d      Zy)    )annotationsN)TYPE_CHECKINGAnyGenericIteratorAsyncIterator)override   )	ResponseT)SyncAPIClientAsyncAPIClientc                  T    e Zd ZU dZded<   	 	 	 	 	 	 	 	 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responsec               v    || _         || _        || _        t               | _        | j                         | _        y Nr   _cast_to_client
SSEDecoder_decoder
__stream__	_iteratorselfcast_tor   clients       V/var/www/html/tokenscope/api/venv/lib/python3.12/site-packages/anthropic/_streaming.py__init__zStream.__init__   0     !"*    c                6    | j                   j                         S r   )r   __next__r   s    r   r$   zStream.__next__"   s    ~~&&((r"   c              #  6   K   | j                   D ]  }|  y wr   r   r   items     r   __iter__zStream.__iter__%   s     NN 	DJ	s   c              #     K   | j                   j                  | j                  j                               E d {    y 7 wr   )r   iterr   
iter_linesr%   s    r   _iter_eventszStream._iter_events)   s+     ==%%dmm&>&>&@AAAs   7A?Ac              #    K   | j                   }| j                  }| j                  j                  }| j	                         }|D ]  }|j
                  dk(  r ||j                         ||       |j
                  dk(  r=|j
                  dk(  sM|j                  }	 |j                         }| }| j                  j                  ||| j                         |D ]  } y # t        $ r  |j                  xs d|j                   }Y Yw xY wwN
completion)datar   r   pingerrorzError code: )bodyr   r   r   r   _process_response_datar.   eventjsonr2   	Exceptionstatus_code_make_status_errorr   r   r   process_dataiteratorsser5   err_msgs           r   r   zStream.__stream__,   s    --==||::$$& 	CyyL("
GhWWyyF"yyG#xxP88:D!%G ll55!]] 6  !	.  	C	 ! P!hhOL9M9M8N*OGPs0   BDDC!01D!&D
D	D

DN)r   type[ResponseT]r   r   r   r   returnNonerC   r   )rC   zIterator[ResponseT])rC   Iterator[ServerSentEvent])
__name__
__module____qualname____doc____annotations__r    r$   r*   r.   r    r"   r   r   r      sM    T+ !+ !	+
 + 
+)Br"   r   c                  T    e Zd ZU dZded<   	 	 	 	 	 	 	 	 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.r   r   c               v    || _         || _        || _        t               | _        | j                         | _        y r   r   r   s       r   r    zAsyncStream.__init__R   r!   r"   c                R   K   | j                   j                          d {   S 7 wr   )r   	__anext__r%   s    r   rQ   zAsyncStream.__anext___   s     ^^--////s   '%'c               H   K   | j                   2 3 d {   }| 7 
6 y wr   r'   r(   s     r   	__aiter__zAsyncStream.__aiter__b   s&     .. 	 	$J	.s   "  " "c                  K   | j                   j                  | j                  j                               2 3 d {   }| 7 
6 y wr   )r   aiterr   aiter_lines)r   r@   s     r   r.   zAsyncStream._iter_eventsf   s?     ,,T]]-F-F-HI 	 	#I	Is%   4A	AAAA	AA	c               >  K   | j                   }| j                  }| j                  j                  }| j	                         }|2 3 d {   }|j
                  dk(  r ||j                         ||       |j
                  dk(  rD|j
                  dk(  sT|j                  }	 |j                         }| }| j                  j                  ||| j                        7 # t        $ r  |j                  xs d|j                   }Y Rw xY w6 |2 3 d {  7  }6 y wr0   r6   r=   s           r   r   zAsyncStream.__stream__j   s    --==||::$$&! 	 	#yyL("
GhWWyyF"yyG#xxP88:D!%G ll55!]] 6  !	 ! P!hhOL9M9M8N*OGP ". " 	 	# "sg   ADDCDADD$C!7(DD!&D
D	D

DDDDDN)r   rB   r   r   r   r   rC   rD   rE   )rC   zAsyncIterator[ResponseT])rC   AsyncIterator[ServerSentEvent])
rG   rH   rI   rJ   rK   r    rQ   rS   r.   r   rL   r"   r   rN   rN   M   sL    V+ !+ !	+
 + 
+0r"   rN   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y)ServerSentEventNr8   r2   idretryc               L    |d}|| _         || _        |xs d | _        || _        y )N )_id_data_event_retry)r   r8   r2   r\   r]   s        r   r    zServerSentEvent.__init__   s.     <D
mtr"   c                    | j                   S r   )rb   r%   s    r   r8   zServerSentEvent.event       {{r"   c                    | j                   S r   )r`   r%   s    r   r\   zServerSentEvent.id   s    xxr"   c                    | j                   S r   )rc   r%   s    r   r]   zServerSentEvent.retry   re   r"   c                    | j                   S r   )ra   r%   s    r   r2   zServerSentEvent.data   s    zzr"   c                @    t        j                  | j                        S r   )r9   loadsr2   r%   s    r   r9   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=)r[   r%   s    r   __repr__zServerSentEvent.__repr__   s9    '

|7499+U477)S[\`\f\f[gghiir"   )
r8   
str | Noner2   rn   r\   rn   r]   
int | NonerC   rD   )rC   rn   )rC   ro   )rC   str)rC   r   )rG   rH   rI   r    propertyr8   r\   r]   r2   r9   r	   rm   rL   r"   r   rZ   rZ      s     !   	
   
         % j jr"   rZ   c                  V    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y)r   z	list[str]ra   rn   rb   ro   rc   _last_event_idc                <    d | _         g | _        d | _        d | _        y r   )rb   ra   rs   rc   r%   s    r   r    zSSEDecoder.__init__   s    
"r"   c              #  l   K   |D ]+  }|j                  d      }| j                  |      }|(| - yw)zTGiven an iterator that yields lines, iterate over it & yield every event encountered
Nrstripdecoder   r?   liner@   s       r   r,   zSSEDecoder.iter   s;      	D;;t$D++d#C			s   *44c               ~   K   |2 3 d{   }|j                  d      }| j                  |      }|.| 47 /6 yw)zZGiven an async iterator that yields lines, iterate over it & yield every event encounteredNrv   rw   rz   s       r   rU   zSSEDecoder.aiter   sC     " 	 	$;;t$D++d#C			(s    =;9;%==;=c                z   |s| j                   s%| j                  s| j                  s| j                  y t	        | j                   dj                  | j                        | j                  | j                        }d | _         g | _        d | _        |S |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)Nrv   r[   : r
   r8   r2   r\    r]   )rb   ra   rs   rc   rZ   join
startswith	partitionappendint	TypeError
ValueError)r   r{   r@   	fieldname_values         r   ry   zSSEDecoder.decode   sW    ;;tzz$:M:MRVR]R]Re!kkYYtzz*&&kk	C DKDJDKJ??3"nnS1	1eC !"IEDK   & JJe$  $u}  ',#  '!!%j   z*  s   D( (D:9D:N)rC   rD   )r?   zIterator[str]rC   rF   )r?   zAsyncIterator[str]rC   rX   )r{   rp   rC   zServerSentEvent | None)rG   rH   rI   rK   r    r,   rU   ry   rL   r"   r   r   r      s.    .r"   r   )
__future__r   r9   typingr   r   r   r   r   typing_extensionsr	   httpx_typesr   _base_clientr   r   r   rN   rZ   r   rL   r"   r   <module>r      s]    "  G G &  ;:WY :z;')$ ;|&j &jRJ Jr"   