
    h3                    h   S SK J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  SSKJr  \(       a  SS	KJrJr  \
" S
5      r " S S\	\   5      r " S S\	\   5      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_mappingextract_type_var_from_base)APIError)OpenAIAsyncOpenAI_Tc                      \ 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selfcast_tor   clients       C/var/www/html/env/lib/python3.13/site-packages/openai/_streaming.py__init__Stream.__init__   1     !002*    c                6    U R                   R                  5       $ r!   )r'   __next__r)   s    r,   r2   Stream.__next__*   s    ~~&&((r0   c              #  :   #    U R                    H  nUv   M	     g 7fr!   r'   r)   items     r,   __iter__Stream.__iter__-   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   r3   s    r,   _iter_eventsStream._iter_events1   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                  R                  S5      (       a    GOUR                  b@  UR                  R                  S5      (       d   UR                  R                  S5      (       a  UR                  5       n[        U5      (       a  UR                  S5      (       at  S nUR                  S5      n[        U5      (       a  UR                  S5      nU(       a  [        U[        5      (       d  Sn[        UU R                  R                   US   S9eU" XaUS9v   GM*  UR                  5       nUR                  S:X  a  [        U5      (       a  UR                  S5      (       at  S nUR                  S5      n[        U5      (       a  UR                  S5      nU(       a  [        U[        5      (       d  Sn[        UU R                  R                   US   S9eU" XeR                  S	.XS9v   GM     U H  n	M     g 7f
Nz[DONE]z	response.ztranscript.errormessagez"An error occurred during streaming)rB   requestbody)datar*   r   )rE   eventr   r   r#   r   r$   _process_response_datar=   rE   
startswithrF   jsonr   get
isinstancestrr   rC   
r)   r*   r   process_dataiteratorsserE   rB   rA   _sses
             r,   r&   Stream.__stream__4   s    sDMM*==||::$$&Cxx""8,,yy CII$8$8$E$EI]I]^kIlIlxxzd##(9(9"G HHW-E!%(("'))I"6"*Wc*B*B"F" ' $ 5 5!']  #QQ xxz99'Jt,<,<'ARAR"G HHW-E!%(("'))I"6"*Wc*B*B"F" ' $ 5 5!']  #		(JT[ooO T D s   IIc                    U $ r!    r3   s    r,   	__enter__Stream.__enter__g   s    r0   c                $    U R                  5         g r!   closer)   exc_typeexcexc_tbs       r,   __exit__Stream.__exit__j   s     	

r0   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   r3   s    r,   rZ   Stream.closer   s     	r0   r#   r$   r   r'   r   N)r*   type[_T]r   r   r+   r   returnNonerf   r   )rf   zIterator[_T])rf   Iterator[ServerSentEvent]rf   r   r\   ztype[BaseException] | Noner]   zBaseException | Noner^   zTracebackType | Nonerf   rg   rf   rg   )__name__
__module____qualname____firstlineno____doc____annotations__r-   r2   r9   r=   r&   rV   r_   rZ   __static_attributes__rU   r0   r,   r   r      s    T+ + !	+
 + 
+)H1f, " %	
 
r0   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.r   r   zSSEDecoder | SSEBytesDecoderr   c               |    X l         Xl        X0l        UR                  5       U l        U R                  5       U l        g r!   r"   r(   s       r,   r-   AsyncStream.__init__   r/   r0   c                R   #    U R                   R                  5       I S h  vN $  N7fr!   )r'   	__anext__r3   s    r,   rz   AsyncStream.__anext__   s     ^^--////s   '%'c               J   #    U R                     S h  vN nU7v   M   N
 g 7fr!   r6   r7   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,   r=   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                  R                  S5      (       a    GOUR                  b@  UR                  R                  S5      (       d   UR                  R                  S5      (       a  UR                  5       n[        U5      (       a  UR                  S5      (       at  S nUR                  S5      n[        U5      (       a  UR                  S5      nU(       a  [        U[        5      (       d  Sn[        UU R                  R                   US   S9eU" XaUS97v   GM0  UR                  5       nUR                  S:X  a  [        U5      (       a  UR                  S5      (       at  S nUR                  S5      n[        U5      (       a  UR                  S5      nU(       a  [        U[        5      (       d  Sn[        UU R                  R                   US   S9eU" XeR                  S	.XS97v   GM  U  S h  vN n	M   GN
 N N
 g 7fr@   rG   rN   s
             r,   r&   AsyncStream.__stream__   s    sDMM*==||::$$&! '	p#xx""8,,yy CII$8$8$E$EI]I]^kIlIlxxzd##(9(9"G HHW-E!%(("'))I"6"*Wc*B*B"F" ' $ 5 5!']  #QQ xxz99'Jt,<,<'ARAR"G HHW-E!%(("'))I"6"*Wc*B*B"F" ' $ 5 5!']  #		(JT[oo # 	$W'	pT	(sO   AI*I$I!I$G=I*I(I&I(I*!I$$I*&I((I*c                   #    U $ 7fr!   rU   r3   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rb   )r   acloser3   s    r,   rZ   AsyncStream.close   s      mm""$$$s   (&(rd   N)r*   re   r   r   r+   r   rf   rg   rh   )rf   zAsyncIterator[_T])rf   AsyncIterator[ServerSentEvent]rj   rk   rl   )rm   rn   ro   rp   rq   rr   r-   rz   r}   r=   r&   r   r   rZ   rs   rU   r0   r,   ru   ru   {   s    V**+ + !	+
 + 
+01f, " %	
 
%r0   ru   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)ServerSentEvent   NrF   rE   idretryc               R    Uc  SnX0l         X l        U=(       d    S U l        X@l        g )N )_id_data_event_retry)r)   rF   rE   r   r   s        r,   r-   ServerSentEvent.__init__   s(     <D
mtr0   c                    U R                   $ r!   )r   r3   s    r,   rF   ServerSentEvent.event       {{r0   c                    U R                   $ r!   )r   r3   s    r,   r   ServerSentEvent.id   s    xxr0   c                    U R                   $ r!   )r   r3   s    r,   r   ServerSentEvent.retry   r   r0   c                    U R                   $ r!   )r   r3   s    r,   rE   ServerSentEvent.data   s    zzr0   c                B    [         R                  " U R                  5      $ r!   )rJ   loadsrE   r3   s    r,   rJ   ServerSentEvent.json  s    zz$))$$r0   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   r3   s    r,   __repr__ServerSentEvent.__repr__  s9    '

|7499+U477)S[\`\f\f[gghiir0   )r   r   r   r   )
rF   
str | NonerE   r   r   r   r   
int | Nonerf   rg   )rf   r   )rf   r   )rf   rM   )rf   r   )rm   rn   ro   rp   r-   propertyrF   r   r   rE   rJ   r   r   rs   rU   r0   r,   r   r      s     !   	
   
         % j jr0   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   r3   s    r,   r-   SSEDecoder.__init__  s    
"r0   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,   r<   SSEDecoder.iter_bytes  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 chunksr0   Tkeependss   s   

s   

Nr   endswithr)   rP   rE   r   r   s        r,   r   SSEDecoder._iter_chunks   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_bytes,  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   r0   NTr   r   r   r   s        r,   r   SSEDecoder._aiter_chunks6  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   rF   rE   r    r   )r   r   r   r   r   joinrI   	partitionappendint	TypeError
ValueError)r)   r   rQ   	fieldname_values         r,   r   SSEDecoder.decodeB  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   Nrl   rP   Iterator[bytes]rf   ri   )rP   r   rf   r   rP   AsyncIterator[bytes]rf   r   )rP   r   rf   r   )r   rM   rf   zServerSentEvent | None)rm   rn   ro   rp   rr   r-   r<   r   r   r   r   rs   rU   r0   r,   r   r   
  s8    

.r0   r   c                  (    \ rS rSrSS jrSS jrSrg)r   is  c                    g)r   NrU   r)   rP   s     r,   r<   SSEBytesDecoder.iter_bytesu      r0   c                    g)zdGiven an async iterator that yields raw binary data, iterate over it & yield every event encounteredNrU   r   s     r,   r   SSEBytesDecoder.aiter_bytesy  r   r0   rU   Nr   r   )rm   rn   ro   rp   r<   r   rs   rU   r0   r,   r   r   s  s    r0   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
issubclassr   ru   )typorigins     r,   is_stream_class_typer   ~  s0    _#F??6"Pz&6;:O'PPr0   )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   )r   ru   r   ztuple[type, ...])indexgeneric_basesr   )_base_clientr   ru   r   r   )
stream_clsr   r   ru   s       r,   extract_stream_chunk_typer     s+     2%-/DE'	 r0   )r   typerf   z;TypeGuard[type[Stream[object]] | type[AsyncStream[object]]])r   r   r   r   rf   r   )&
__future__r   rJ   r   typesr   typingr   r   r   r   r	   r
   r   typing_extensionsr   r   r   r   r   r   httpx_utilsr   r   _exceptionsr   r$   r   r   r   r   ru   r   r   r   r   r   rU   r0   r,   <module>r      s    "    V V V ` `  : !, T]bWR[ bJc%'"+ c%L&j &jRf fR h  Q #'   
	r0   