
    U th3                       d dl m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 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 erdd	lmZmZ  e
d
          Z G d de	e                   Z G d de	e                   Z  G d d          Z! G d d          Z"e G d de                      Z#ddZ$ddd dZ%dS )!    )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                  h    e Zd ZU dZded<   de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S )&StreamzJProvides the core interface to iterate over a synchronous stream response.httpx.ResponseresponseSSEBytesDecoder_decodercast_totype[_T]clientr   returnNonec                   || _         || _        || _        |                                | _        |                                 | _        d S Nr   _cast_to_client_make_sse_decoderr   
__stream__	_iteratorselfr   r   r!   s       e/var/www/html/mycamper/aliexpress-site/backend/venv/lib/python3.11/site-packages/openai/_streaming.py__init__zStream.__init__   A     !0022**    r   c                4    | j                                         S r%   )r+   __next__r-   s    r.   r3   zStream.__next__*   s    ~&&(((r1   Iterator[_T]c              #  &   K   | j         D ]}|V  d S r%   r+   r-   items     r.   __iter__zStream.__iter__-   s,      N 	 	DJJJJ	 	r1   Iterator[ServerSentEvent]c              #  x   K   | j                             | j                                                  E d {V  d S r%   )r   
iter_bytesr   r4   s    r.   _iter_eventszStream._iter_events1   sB      =++DM,D,D,F,FGGGGGGGGGGGr1   c              #  v  K   t          t          | j                  }| j        }| j        j        }|                                 }|D ]}|j                            d          r n|j	        4|j	                            d          s|j	                            d          r|
                                }t          |          r|                    d          rvd }|                    d          }t          |          r|                    d          }|rt          |t                    sd}t          || j        j        |d                    ||||          V  |
                                }|j	        dk    rt          |          r|                    d          rvd }|                    d          }t          |          r|                    d          }|rt          |t                    sd}t          || j        j        |d                    |||j	        d	||          V  |D ]}	d S 
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*   zStream.__stream__4   sr     sDM**=|:$$&& '	p '	pCx""8,, y CI$8$8$E$E I]I]^kIlIl xxzzd## (9(9 "G HHW--E!%(( 7"'))I"6"6" G*Wc*B*B G"F" ' $ 5!']    #lgQQQQQQQ xxzz9''Jt,<,<''ARAR'"G HHW--E!%(( 7"'))I"6"6" G*Wc*B*B G"F" ' $ 5!']    #l	(J(JT[fnooooooo  	 	D	 	r1   r   c                    | S r%    r4   s    r.   	__enter__zStream.__enter__g   s    r1   exc_typetype[BaseException] | NoneexcBaseException | Noneexc_tbTracebackType | Nonec                .    |                                   d S r%   closer-   rV   rX   rZ   s       r.   __exit__zStream.__exit__j   s     	

r1   c                8    | j                                          dS z
        Close the response and release the connection.

        Automatically called if the response body is read to completion.
        N)r   r^   r4   s    r.   r^   zStream.closer   s     	r1   N)r   r    r   r   r!   r   r"   r#   r"   r   )r"   r5   )r"   r;   r"   r   rV   rW   rX   rY   rZ   r[   r"   r#   r"   r#   )__name__
__module____qualname____doc____annotations__r/   r3   r:   r>   r*   rU   r`   r^   rT   r1   r.   r   r      s         TT+ + + +) ) ) )   H H H H1 1 1 1f           r1   r   c                  h    e Zd ZU dZded<   de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S )&AsyncStreamzLProvides the core interface to iterate over an asynchronous stream response.r   r   zSSEDecoder | SSEBytesDecoderr   r   r    r!   r   r"   r#   c                   || _         || _        || _        |                                | _        |                                 | _        d S r%   r&   r,   s       r.   r/   zAsyncStream.__init__   r0   r1   r   c                D   K   | j                                          d {V S r%   )r+   	__anext__r4   s    r.   rp   zAsyncStream.__anext__   s,      ^--/////////r1   AsyncIterator[_T]c               4   K   | j         2 3 d {V }|W V  6 d S r%   r7   r8   s     r.   	__aiter__zAsyncStream.__aiter__   sF      . 	 	 	 	 	 	 	$JJJJJ )..s   AsyncIterator[ServerSentEvent]c                  K   | j                             | j                                                  2 3 d {V }|W V  6 d S r%   )r   aiter_bytesr   )r-   rQ   s     r.   r>   zAsyncStream._iter_events   se      224=3L3L3N3NOO 	 	 	 	 	 	 	#IIIII POOs   Ac                 K   t          t          | j                  }| j        }| j        j        }|                                 }|2 3 d {V }|j                            d          r n|j	        4|j	                            d          s|j	                            d          r|
                                }t          |          r|                    d          rvd }|                    d          }t          |          r|                    d          }|rt          |t                    sd}t          || j        j        |d                    ||||          W V   |
                                }|j	        dk    rt          |          r|                    d          rvd }|                    d          }t          |          r|                    d          }|rt          |t                    sd}t          || j        j        |d                    |||j	        d	||          W V  6 |2 3 d {V }	6 d S r@   rG   rN   s
             r.   r*   zAsyncStream.__stream__   s     sDM**=|:$$&&! '	p '	p '	p '	p '	p '	p '	p#x""8,, y CI$8$8$E$E I]I]^kIlIl xxzzd## (9(9 "G HHW--E!%(( 7"'))I"6"6" G*Wc*B*B G"F" ' $ 5!']    #lgQQQQQQQQ xxzz9''Jt,<,<''ARAR'"G HHW--E!%(( 7"'))I"6"6" G*Wc*B*B G"F" ' $ 5!']    #l	(J(JT[fnooooooooO "T # 	 	 	 	 	 	 	$ #((s   H:=Ir   c                
   K   | S r%   rT   r4   s    r.   
__aenter__zAsyncStream.__aenter__   s      r1   rV   rW   rX   rY   rZ   r[   c                >   K   |                                   d {V  d S r%   r]   r_   s       r.   	__aexit__zAsyncStream.__aexit__   s.       jjllr1   c                H   K   | j                                          d{V  dS rb   )r   acloser4   s    r.   r^   zAsyncStream.close   s4       m""$$$$$$$$$$$r1   N)r   r    r   r   r!   r   r"   r#   rc   )r"   rq   )r"   rt   rd   re   rf   )rg   rh   ri   rj   rk   r/   rp   rs   r>   r*   ry   r{   r^   rT   r1   r.   rm   rm   {   s         VV****+ + + +0 0 0 0      1 1 1 1f      % % % % % %r1   rm   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dS )ServerSentEventNrF   rE   idretryrF   
str | NonerE   r   r   
int | Noner"   r#   c               J    |d}|| _         || _        |pd | _        || _        d S )N )_id_data_event_retry)r-   rF   rE   r   r   s        r.   r/   zServerSentEvent.__init__   s2     <D
mtr1   c                    | j         S r%   )r   r4   s    r.   rF   zServerSentEvent.event   
    {r1   c                    | j         S r%   )r   r4   s    r.   r   zServerSentEvent.id   s	    xr1   c                    | j         S r%   )r   r4   s    r.   r   zServerSentEvent.retry   r   r1   rM   c                    | j         S r%   )r   r4   s    r.   rE   zServerSentEvent.data   s
    zr1   r   c                4    t          j        | j                  S r%   )rJ   loadsrE   r4   s    r.   rJ   zServerSentEvent.json  s    z$)$$$r1   c           	     H    d| j          d| j         d| j         d| j         d	S )NzServerSentEvent(event=z, data=z, id=z, retry=)r   r4   s    r.   __repr__zServerSentEvent.__repr__  s5    i
ii49ii47ii\`\fiiiir1   )
rF   r   rE   r   r   r   r   r   r"   r#   )r"   r   )r"   r   )r"   rM   )r"   r   )rg   rh   ri   r/   propertyrF   r   r   rE   rJ   r   r   rT   r1   r.   r   r      s         !           X    X    X    X% % % % j j j Xj j jr1   r   c                  h    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ddZddZ	dS )
SSEDecoderz	list[str]r   r   r   r   r   _last_event_idr"   r#   c                >    d | _         g | _        d | _        d | _        d S r%   )r   r   r   r   r4   s    r.   r/   zSSEDecoder.__init__  s#    
"r1   rP   Iterator[bytes]r;   c              #     K   |                      |          D ]I}|                                D ]2}|                    d          }|                     |          }|r|V  3JdS )^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=   zSSEDecoder.iter_bytes  s      &&x00 	 	E!,,..  w//kk$'' III		 	r1   c              #     K   d}|D ];}|                     d          D ]"}||z  }|                    d          r|V  d}#<|r|V  dS dS )^Given an iterator that yields raw binary data, iterate over it and yield individual SSE chunksr1   Tkeependss   s   

s   

Nr   endswithr-   rP   rE   r   r   s        r.   r   zSSEDecoder._iter_chunks   s       	 	E(($(77  ==!@AA JJJD	
  	JJJJJ	 	r1   AsyncIterator[bytes]rt   c                  K   |                      |          2 3 d{V }|                                D ]3}|                    d          }|                     |          }|r|W V  4P6 dS )r   Nr   )_aiter_chunksr   r   r   s         r.   rv   zSSEDecoder.aiter_bytes,  s      --h77 	 	 	 	 	 	 	%!,,..  w//kk$'' IIII	 877s   A(c                  K   d}|2 3 d{V }|                     d          D ]#}||z  }|                    d          r|W V  d}$B6 |r|W V  dS dS )r   r1   NTr   r   r   r   s        r.   r   zSSEDecoder._aiter_chunks6  s      # 	 	 	 	 	 	 	%(($(77  ==!@AA JJJJD	 $  	JJJJJJ	 	s   A	r   rM   ServerSentEvent | Nonec                r   |so| j         s| j        s| j        s	| j        d S t	          | j         d                    | j                  | j        | j                  }d | _         g | _        d | _        |S |                    d          rd S |                    d          \  }}}|                    d          r
|dd          }|dk    r|| _         nh|dk    r| j                            |           nG|dk    rd	|v rn<|| _        n4|d
k    r-	 t          |          | _        n# t          t          f$ r Y nw xY w	 d S )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   zSSEDecoder.decodeB  s     	; tz $:M RVR]Ret!kYYtz**&k	  C DKDJDKJ??3 	4"nnS11	1eC   	!""IEDKK&  Je$$$$$u}}&+##'!!!%jjz*    ts   
D D32D3Nrf   rP   r   r"   r;   )rP   r   r"   r   rP   r   r"   rt   )rP   r   r"   r   )r   rM   r"   r   )
rg   rh   ri   rk   r/   r=   r   rv   r   r   rT   r1   r.   r   r   
  s               
 
 
 
   
 
 
 
. . . . . .r1   r   c                      e Zd Zd
dZddZd	S )r   rP   r   r"   r;   c                    dS )r   NrT   r-   rP   s     r.   r=   zSSEBytesDecoder.iter_bytesu      r1   r   rt   c                    dS )zdGiven an async iterator that yields raw binary data, iterate over it & yield every event encounteredNrT   r   s     r.   rv   zSSEBytesDecoder.aiter_bytesy  r   r1   Nr   r   )rg   rh   ri   r=   rv   rT   r1   r.   r   r   s  s<                r1   r   typtyper"   ;TypeGuard[type[Stream[object]] | type[AsyncStream[object]]]c                    t          |           p| }t          j        |          ot          |t          t
          f          S )zaTypeGuard for determining whether or not the given type is a subclass of `Stream` / `AsyncStream`)r   inspectisclass
issubclassr   rm   )r   origins     r.   is_stream_class_typer   ~  s6    __#F?6""Pz&6;:O'P'PPr1   )failure_message
stream_clsr   r   c          	     X    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   rm   r   ztuple[type, ...])indexgeneric_basesr   )_base_clientr   rm   r   r   )r   r   r   rm   s       r.   extract_stream_chunk_typer     sO     21111111%-/DEE'	   r1   )r   r   r"   r   )r   r   r   r   r"   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   rm   r   r   r   r   r   rT   r1   r.   <module>r      sO   " " " " " "         V V V V V V V V V V V V V V V V V V ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `  : : : : : : : : ! ! ! ! ! ! -,,,,,,,, WT]]b b b b bWR[ b b bJc% c% c% c% c%'"+ c% c% c%L&j &j &j &j &j &j &j &jRf f f f f f f fR     h   Q Q Q Q #'       r1   