
    2hm4                    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       I/var/www/auris/envauris/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              #  6  #    [        [        U R                  5      nU R                  nU R                  R
                  nU R                  5       nU GH9  nUR                  R                  S5      (       a    GOUR                  b  UR                  R                  S5      (       d`  UR                  R                  S5      (       d@  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Mj  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)N[DONE]	response.transcript.zimage_edit.zimage_generation.errormessage"An error occurred during streamingrD   requestbodydatar*   r   rJ   eventr   r   r#   r   r$   _process_response_datar=   rJ   
startswithrL   jsonr   get
isinstancestrr   rG   
r)   r*   r   process_dataiteratorsserJ   rD   rC   _sses
             r,   r&   Stream.__stream__4   s    sDMM*==||::$$&Cxx""8,,yy 		$$[11		$$]33		$$]33		$$%899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oY ^ D s   JJc                    U $ r!    r3   s    r,   	__enter__Stream.__enter__l   s    r0   c                $    U R                  5         g r!   closer)   exc_typeexcexc_tbs       r,   __exit__Stream.__exit__o   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   r`   r3   s    r,   r`   Stream.closew   s     	r0   r#   r$   r   r'   r   N)r*   type[_T]r   r   r+   r   returnNonerl   r   )rl   zIterator[_T])rl   Iterator[ServerSentEvent]rl   r   rb   ztype[BaseException] | Nonerc   zBaseException | Nonerd   zTracebackType | Nonerl   rm   rl   rm   )__name__
__module____qualname____firstlineno____doc____annotations__r-   r2   r9   r=   r&   r\   re   r`   __static_attributes__r[   r0   r,   r   r      s    T+ + !	+
 + 
+)H6p, " %	
 
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,   r   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)   rW   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)
Nr@   rA   rB   rC   rD   rE   rF   rI   rK   rM   rT   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!   r[   r3   s    r,   
__aenter__AsyncStream.__aenter__   s
     s   c                @   #    U R                  5       I S h  vN   g  N7fr!   r_   ra   s       r,   	__aexit__AsyncStream.__aexit__   s      jjls   c                T   #    U R                   R                  5       I Sh  vN   g N7frh   )r   acloser3   s    r,   r`   AsyncStream.close   s      mm""$$$s   (&(rj   N)r*   rk   r   r   r+   r   rl   rm   rn   )rl   zAsyncIterator[_T])rl   AsyncIterator[ServerSentEvent]rp   rq   rr   )rs   rt   ru   rv   rw   rx   r-   r   r   r=   r&   r   r   r`   ry   r[   r0   r,   r{   r{      s    V**+ + !	+
 + 
+01f, " %	
 
%r0   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)ServerSentEvent   NrL   rJ   idretryc               R    Uc  SnX0l         X l        U=(       d    S U l        X@l        g )N )_id_data_event_retry)r)   rL   rJ   r   r   s        r,   r-   ServerSentEvent.__init__   s(     <D
mtr0   c                    U R                   $ r!   )r   r3   s    r,   rL   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,   rJ   ServerSentEvent.data  s    zzr0   c                B    [         R                  " U R                  5      $ r!   )rP   loadsrJ   r3   s    r,   rP   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   )
rL   
str | NonerJ   r   r   r   r   
int | Nonerl   rm   )rl   r   )rl   r   )rl   rS   )rl   r   )rs   rt   ru   rv   r-   propertyrL   r   r   rJ   rP   r   r   ry   r[   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)   rV   chunkraw_linelinerW   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)   rV   rJ   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_bytes1  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_chunks;  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   rL   rJ   r    r   )r   r   r   r   r   joinrO   	partitionappendint	TypeError
ValueError)r)   r   rW   	fieldname_values         r,   r   SSEDecoder.decodeG  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   Nrr   rV   Iterator[bytes]rl   ro   )rV   r   rl   r   rV   AsyncIterator[bytes]rl   r   )rV   r   rl   r   )r   rS   rl   zServerSentEvent | None)rs   rt   ru   rv   rx   r-   r<   r   r   r   r   ry   r[   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   ix  c                    g)r   Nr[   r)   rV   s     r,   r<   SSEBytesDecoder.iter_bytesz      r0   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   r0   r[   Nr   r   )rs   rt   ru   rv   r<   r   ry   r[   r0   r,   r   r   x  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   r{   )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   r{   r   ztuple[type, ...])indexgeneric_basesr   )_base_clientr   r{   r   r   )
stream_clsr   r   r{   s       r,   extract_stream_chunk_typer     s+     2%-/DE'	 r0   )r   typerl   z;TypeGuard[type[Stream[object]] | type[AsyncStream[object]]])r   r   r   r   rl   r   )&
__future__r   rP   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   r{   r   r   r   r   r   r[   r0   r,   <module>r     s    "    V V V ` `  : !, T]gWR[ gTc%'"+ c%L&j &jRf fR h  Q #'   
	r0   