
    Oj=                       d dl m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 ddlmZmZ dd	lmZ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
e'         Z( G d de
e'         Z) G d d      Z* ejV                  d      Z, G d d      Z- G d d      Z.e G d de             Z/ddZ0dd	 	 	 	 	 ddZ1y)    )annotationsN)TracebackType)TYPE_CHECKINGAnyGenericTypeVarIteratorOptionalAsyncIteratorcast)SelfProtocol	TypeGuardoverride
get_originruntime_checkable   )
is_mappingextract_type_var_from_base)request_exceptionstimeout_exceptions)APIErrorAPITimeoutErrorAPIConnectionError)OpenAIAsyncOpenAI)FinalRequestOptions_Tc                      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	ddZ
ddZ	 	 	 	 	 	 	 	 ddZddZy)StreamzJProvides the core interface to iterate over a synchronous stream response.httpx2.ResponseresponseNOptional[FinalRequestOptions]_optionsSSEBytesDecoder_decoderoptionsc                   || _         || _        || _        || _        |j	                         | _        | j                         | _        y Nr"   _cast_to_clientr$   _make_sse_decoderr&   
__stream__	_iteratorselfcast_tor"   clientr(   s        h/var/www/origus_pro_usr/data/www/origus.pro/core/.venv/lib/python3.12/site-packages/openai/_streaming.py__init__zStream.__init__    >     !002*    c                6    | j                   j                         S r*   )r0   __next__r2   s    r5   r:   zStream.__next__/   s    ~~&&((r8   c              #  6   K   | j                   D ]  }|  y wr*   r0   r2   items     r5   __iter__zStream.__iter__2   s     NN 	DJ	s   c              #  V  K   	 | j                   j                  | j                  j                               E d {    y 7 # t               $ r&}t	        | j                  j
                        |d }~wt               $ r&}t        | j                  j
                        |d }~ww xY wwN)request)r&   
iter_bytesr"   r   r   rC   r   r   )r2   errs     r5   _iter_eventszStream._iter_events6   s     	M}}//0H0H0JKKK!# 	J!$--*?*?@cI!# 	M$T]]-B-BCL	MsC   B)6A A A B) A B&!A00B& !B!!B&&B)c              #    K   t        t        | j                        }| j                  }| j                  j
                  }| j                         }	 |D ]  }|j                  j                  d      r n|j                  r|j                  j                  d      r|j                         }|j                  dk(  rt        |      ry|j                  d      rhd }|j                  d      }t        |      r|j                  d      }|rt        |t              sd}t        || j                  j                   |d          |||j                  d||       |j                         }t        |      ry|j                  d      rhd }|j                  d      }t        |      r|j                  d      }|rt        |t              sd}t        || j                  j                   |d          || j"                  %| j"                  j$                  r||j                  dn|||        |j'                          y # |j'                          w xY ww	Nz[DONE]zthread.errormessagez"An error occurred during streaming)rJ   rC   body)dataevent)rL   r3   r"   )r   r   r,   r"   r-   _process_response_datarF   rL   
startswithrM   jsonr   get
isinstancestrr   rC   r$   synthesize_event_and_dataclose	r2   r3   r"   process_dataiteratorsserL   rJ   rI   s	            r5   r/   zStream.__stream__>   s    sDMM*==||::$$&1	 -88&&x0 99!5!5i!@88:DyyG+
40@TXXgEV"& $ 1%e,&+ii	&:G&j#.F&JG&$+$(MM$9$9!%g  'TCII,NX_jrss88:D!$'DHHW,="& $ 1%e,&+ii	&:G&j#.F&JG&$+$(MM$9$9!%g  '==49`9` '+SYY?! '!) O-` NNHNNs   AIGI  /I IIc                    | S r*    r;   s    r5   	__enter__zStream.__enter__w   s    r8   c                $    | j                          y r*   rU   r2   exc_typeexcexc_tbs       r5   __exit__zStream.__exit__z   s     	

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

        Automatically called if the response body is read to completion.
        N)r"   rU   r;   s    r5   rU   zStream.close   s     	r8   )
r3   type[_T]r"   r!   r4   r   r(   r#   returnNonerg   r   )rg   zIterator[_T])rg   Iterator[ServerSentEvent]rg   r   r`   ztype[BaseException] | Nonera   zBaseException | Nonerb   zTracebackType | Nonerg   rh   rg   rh   )__name__
__module____qualname____doc____annotations__r$   r6   r:   r@   rF   r/   r\   rc   rU   r[   r8   r5   r    r       s    T.2H+2 26+ + "	+
 + /+ 
+)M7r, " %	
 
r8   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	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"   Nr#   r$   zSSEDecoder | SSEBytesDecoderr&   r'   c                   || _         || _        || _        || _        |j	                         | _        | j                         | _        y r*   r+   r1   s        r5   r6   zAsyncStream.__init__   r7   r8   c                R   K   | j                   j                          d {   S 7 wr*   )r0   	__anext__r;   s    r5   rw   zAsyncStream.__anext__   s     ^^--////s   '%'c               H   K   | j                   2 3 d {   }| 7 
6 y wr*   r=   r>   s     r5   	__aiter__zAsyncStream.__aiter__   s&     .. 	 	$J	.s   "  " "c               f  K   	 | j                   j                  | j                  j                               2 3 d {   }| 7 
6 y # t               $ r&}t	        | j                  j
                        |d }~wt               $ r&}t        | j                  j
                        |d }~ww xY wwrB   )r&   aiter_bytesr"   r   r   rC   r   r   )r2   rY   rE   s      r5   rF   zAsyncStream._iter_events   s     	M!]]66t}}7P7P7RS  c	S!# 	J!$--*?*?@cI!# 	M$T]]-B-BCL	MsT   B13A
 AAAA
 AA
 	B1
B.!A88B.!B))B..B1c                 K   t        t        | j                        }| j                  }| j                  j
                  }| j                         }	 |2 3 d {   }|j                  j                  d      r n|j                  r|j                  j                  d      r|j                         }|j                  dk(  rt        |      ry|j                  d      rhd }|j                  d      }t        |      r|j                  d      }|rt        |t              sd}t        || j                  j                   |d          |||j                  d||       |j                         }t        |      ry|j                  d      rhd }|j                  d      }t        |      r|j                  d      }|rt        |t              sd}t        || j                  j                   |d          || j"                  %| j"                  j$                  r||j                  dn|||       |j'                          d {    y 7 6 7 
# |j'                          d {  7   w xY wwrH   )r   r   r,   r"   r-   rN   rF   rL   rO   rM   rP   r   rQ   rR   rS   r   rC   r$   rT   acloserV   s	            r5   r/   zAsyncStream.__stream__   s    sDMM*==||::$$&1	$% - -c88&&x0 99!5!5i!@88:DyyG+
40@TXXgEV"& $ 1%e,&+ii	&:G&j#.F&JG&$+$(MM$9$9!%g  'TCII,NX_jrss88:D!$'DHHW,="& $ 1%e,&+ii	&:G&j#.F&JG&$+$(MM$9$9!%g  '==49`9` '+SYY?! '!)  //###a-X` $(//###sa   AI3I IIIGI 5I3I	I3II I3I0)I,*I00I3c                   K   | S wr*   r[   r;   s    r5   
__aenter__zAsyncStream.__aenter__   s     s   c                @   K   | j                          d {    y 7 wr*   r^   r_   s       r5   	__aexit__zAsyncStream.__aexit__   s      jjl   c                T   K   | j                   j                          d{    y7 wre   )r"   r}   r;   s    r5   rU   zAsyncStream.close   s      mm""$$$s   (&(c                @   K   | j                          d{    y7 w)zCClose the response and release the connection. Alias for `close()`.Nr^   r;   s    r5   r}   zAsyncStream.aclose   s     jjlr   )
r3   rf   r"   r!   r4   r   r(   r#   rg   rh   ri   )rg   zAsyncIterator[_T])rg   AsyncIterator[ServerSentEvent]rk   rl   rm   )rn   ro   rp   rq   rr   r$   r6   rw   ry   rF   r/   r   r   rU   r}   r[   r8   r5   rt   rt      s    V.2H+2** 26+ + "	+
 + /+ 
+0M7$r, " %	
 
%r8   rt   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rM   rL   idretryc               L    |d}|| _         || _        |xs d | _        || _        y )N )_id_data_event_retry)r2   rM   rL   r   r   s        r5   r6   zServerSentEvent.__init__  s.     <D
mtr8   c                    | j                   S r*   )r   r;   s    r5   rM   zServerSentEvent.event      {{r8   c                    | j                   S r*   )r   r;   s    r5   r   zServerSentEvent.id  s    xxr8   c                    | j                   S r*   )r   r;   s    r5   r   zServerSentEvent.retry  r   r8   c                    | j                   S r*   )r   r;   s    r5   rL   zServerSentEvent.data  s    zzr8   c                @    t        j                  | j                        S r*   )rP   loadsrL   r;   s    r5   rP   zServerSentEvent.json#  s    zz$))$$r8   c           	     p    d| j                    d| j                   d| j                   d| j                   d	S )NzServerSentEvent(event=z, data=z, id=z, retry=)r   r;   s    r5   __repr__zServerSentEvent.__repr__&  s9    '

|7499+U477)S[\`\f\f[gghiir8   )
rM   
str | NonerL   r   r   r   r   
int | Nonerg   rh   )rg   r   )rg   r   )rg   rS   )rg   r   )rn   ro   rp   r6   propertyrM   r   r   rL   rP   r   r   r[   r8   r5   r   r     s     !   	
   
         % j jr8   r   s   [\r\n]c                  0    e Zd ZdZddZddZd	dZd
dZy)_SSELineDecoderzFIncrementally split CR, LF, and CRLF without copying growing prefixes.c                0    t               | _        d| _        y )NF)	bytearray_buffer_skip_lfr;   s    r5   r6   z_SSELineDecoder.__init__1  s     {r8   c                R    | j                   j                  t        |      ||        y r*   )r   extend
memoryview)r2   chunkstartends       r5   _appendz_SSELineDecoder._append5  s     Ju-eC89r8   c              #    K   d}t         j                  |      D ]  }|j                         }| j                  r||k(  r||   dk(  rd| _        |dz   }9d| _        | j	                  |||       t        | j                        }| j                  j                          ||   dk(  | _        |dz   }|  |t        |      k  r$d| _        | j	                  ||t        |             y y w)Nr   
   Fr      )	_SSE_LINE_ENDfinditerr   r   r   bytesr   clearlen)r2   r   r   matchr   lines         r5   feedz_SSELineDecoder.feed8  s     "++E2 	E++-C}}%*2B %a!DMLLs+&DLL !#J",DM!GEJ	 3u:!DMLLs5z2 s   C%C'c              #     K   | j                   r4t        | j                         }| j                   j                          | y y wr*   )r   r   r   )r2   r   s     r5   finishz_SSELineDecoder.finishK  s5     <<&DLL J s   AANrm   )r   r   r   intr   r   rg   rh   )r   r   rg   Iterator[bytes])rg   r   )rn   ro   rp   rq   r6   r   r   r   r[   r8   r5   r   r   .  s    P:3&r8   r   c                  j    e Zd ZU dZ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)
SSEDecoderzEDecode SSE incrementally without imposing a line or event size limit.z	list[str]r   r   r   r   r   _last_event_idc                $    | j                          y r*   )_resetr;   s    r5   r6   zSSEDecoder.__init__Z  s    r8   c                <    d | _         g | _        d | _        d | _        y r*   )r   r   r   r   r;   s    r5   r   zSSEDecoder._reset]  s    
"r8   c              #  h   K   |D ])  }| j                  |j                  d            }|s&| + y w)Nzutf-8)decode)r2   linesraw_linerY   s       r5   _decode_lineszSSEDecoder._decode_linesc  s4      	H++hoog67C		s   (22c              #     K   t               }	 |D ]*  }| j                  |j                  |            E d{    , | j                  |j                               E d{    | j	                          y7 >7 # | j	                          w xY ww)z5Given raw binary data, yield every event encountered.Nr   r   r   r   r   )r2   rX   decoderr   s       r5   rD   zSSEDecoder.iter_bytesi  sy     !#	! C--gll5.ABBBC))'..*:;;;KKM C;KKMs>   B(A9 A5(A9 A7 A9 $B5A9 7A9 9BBc               2  K   t               }	 |2 3 d{   }| j                  |j                  |            D ]  }| 	 47 /6 | j                  |j                               D ]  }| 	 	 | j	                          y# | j	                          w xY ww)z;Given async raw binary data, yield every event encountered.Nr   )r2   rX   r   r   rY   s        r5   r{   zSSEDecoder.aiter_bytess  s     !#	'  e--gll5.AB CIx ))'..*:; 	 KKMDKKMs<   BB AAA,B A*B 1BBB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)N
r   : r   rM   rL   r    r   )r   r   r   r   r   joinrO   	partitionappendr   	TypeError
ValueError)r2   r   rY   	fieldname_values         r5   r   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:Nrm   )r   r   rg   rj   rX   r   rg   rj   rX   zAsyncIterator[bytes]rg   r   )r   rS   rg   zServerSentEvent | None)rn   ro   rp   rq   rr   r6   r   r   rD   r{   r   r[   r8   r5   r   r   R  s;    O
.r8   r   c                      e Zd ZddZddZy)r%   c                     y)z^Given an iterator that yields raw binary data, iterate over it & yield every event encounteredNr[   r2   rX   s     r5   rD   zSSEBytesDecoder.iter_bytes      r8   c                     y)zdGiven an async iterator that yields raw binary data, iterate over it & yield every event encounteredNr[   r   s     r5   r{   zSSEBytesDecoder.aiter_bytes  r   r8   Nr   r   )rn   ro   rp   rD   r{   r[   r8   r5   r%   r%     s    r8   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
issubclassr    rt   )typorigins     r5   is_stream_class_typer     s0    _#F??6"Pz&6;:O'PPr8   )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   )r    rt   r   ztuple[type, ...])indexgeneric_basesr   )_base_clientr    rt   r   r   )
stream_clsr   r    rt   s       r5   extract_stream_chunk_typer     s-     2%-/DE'	 r8   )r   typerg   z;TypeGuard[type[Stream[object]] | type[AsyncStream[object]]])r   r   r   r   rg   r   )2
__future__r   rerP   r   typesr   typingr   r   r   r   r	   r
   r   r   typing_extensionsr   r   r   r   r   r   httpx2_utilsr   r   _httpx2r   r   _exceptionsr   r   r   r-   r   r   _modelsr   r   r    rt   r   compiler   r   r   r%   r   r   r[   r8   r5   <module>r      s    " 	    ` ` ` ` `  : ; F F,, T]oWR[ odt'"+ tn&j &jR 

;'! !H[ [| h  Q #'   
	r8   