
    -2i5                       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       P/var/www/html/pixcura-vrs/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              #    K   t          t          | j                  }| j        }| j        j        }|                                 }	 |D ]}|j                            d          r n|j	        r|j	                            d          r|
                                }|j	        dk    rt          |          r|                    d          rvd }|                    d          }t          |          r|                    d          }|rt          |t                    sd}t          || j        j        |d                    |||j	        d||          V  |
                                }t          |          r|                    d          rvd }|                    d          }t          |          r|                    d          }|rt          |t                    sd}t          || j        j        |d                    ||||          V  |                                 d S # |                                 w xY w	Nz[DONE]zthread.errormessagez"An error occurred during streaming)rB   requestbody)dataevent)rE   r   r   )r   r   r'   r   r(   _process_response_datar>   rE   
startswithrF   jsonr   get
isinstancestrr   rC   close	r-   r   r   process_dataiteratorsserE   rB   rA   s	            r.   r*   zStream.__stream__4   sw     sDM**=|:$$&&,	 'V 'V8&&x00 E 9 "V!5!5i!@!@ "V88::DyG++
40@0@+TXXgEVEV+"& $ 1 1%e,, ;&+ii	&:&:G& Kj#.F.F K&JG&$+$(M$9!%g    ',TCI,N,NX_jrsssssss88::D!$'' DHHW,=,= "& $ 1 1%e,, ;&+ii	&:&:G& Kj#.F.F K&JG&$+$(M$9!%g    ',D'HUUUUUUU NNHNNs   GH1 1Ir   c                    | S r%    r4   s    r.   	__enter__zStream.__enter__h   s    r1   exc_typetype[BaseException] | NoneexcBaseException | Noneexc_tbTracebackType | Nonec                .    |                                   d S r%   rM   r-   rU   rW   rY   s       r.   __exit__zStream.__exit__k   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   rM   r4   s    r.   rM   zStream.closes   s     	r1   N)r   r    r   r   r!   r   r"   r#   r"   r   )r"   r5   )r"   r;   r"   r   rU   rV   rW   rX   rY   rZ   r"   r#   r"   r#   )__name__
__module____qualname____doc____annotations__r/   r3   r:   r>   r*   rT   r^   rM   rS   r1   r.   r   r      s         TT+ + + +) ) ) )   H H H H2 2 2 2h           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.   rn   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	        r|j	                            d          r|
                                }|j	        dk    rt          |          r|                    d          rvd }|                    d          }t          |          r|                    d          }|rt          |t                    sd}t          || j        j        |d                    |||j	        d||          W V  |
                                }t          |          r|                    d          rvd }|                    d          }t          |          r|                    d          }|rt          |t                    sd}t          || j        j        |d                    ||||          W V  6 |                                 d {V  d S # |                                 d {V  w xY wr@   )r   r   r'   r   r(   rG   r>   rE   rH   rF   rI   r   rJ   rK   rL   r   rC   acloserN   s	            r.   r*   zAsyncStream.__stream__   s     sDM**=|:$$&&,	$% 'V 'V 'V 'V 'V 'V 'Vc8&&x00 E 9 "V!5!5i!@!@ "V88::DyG++
40@0@+TXXgEVEV+"& $ 1 1%e,, ;&+ii	&:&:G& Kj#.F.F K&JG&$+$(M$9!%g    ',TCI,N,NX_jrssssssss88::D!$'' DHHW,=,= "& $ 1 1%e,, ;&+ii	&:&:G& Kj#.F.F K&JG&$+$(M$9!%g    ',D'HUUUUUUUUO &V //###########(//##########s   H> H!GH> >Ir   c                
   K   | S r%   rS   r4   s    r.   
__aenter__zAsyncStream.__aenter__   s      r1   rU   rV   rW   rX   rY   rZ   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 r`   )r   rv   r4   s    r.   rM   zAsyncStream.close   s4       m""$$$$$$$$$$$r1   N)r   r    r   r   r!   r   r"   r#   ra   )r"   ro   )r"   rr   rb   rc   rd   )re   rf   rg   rh   ri   r/   rn   rq   r>   r*   rx   rz   rM   rS   r1   r.   rk   rk   |   s         VV****+ + + +0 0 0 0      2$ 2$ 2$ 2$h      % % % % % %r1   rk   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   rL   c                    | j         S r%   )r   r4   s    r.   rE   zServerSentEvent.data   s
    zr1   r   c                4    t          j        | j                  S r%   )rI   loadsrE   r4   s    r.   rI   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"   rL   )r"   r   )re   rf   rg   r/   propertyrF   r   r   rE   rI   r   r   rS   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]rr   c                  K   |                      |          2 3 d{V }|                                D ]3}|                    d          }|                     |          }|r|W V  4P6 dS )r   Nr   )_aiter_chunksr   r   r   s         r.   rt   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_chunks8  s      # 	 	 	 	 	 	 	%(($(77  ==!@AA JJJJD	 $  	JJJJJJ	 	s   A	r   rL   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}   joinrH   	partitionappendint	TypeError
ValueError)r-   r   rQ   	fieldname_values         r.   r   zSSEDecoder.decodeD  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Nrd   rP   r   r"   r;   )rP   r   r"   r   rP   r   r"   rr   )rP   r   r"   r   )r   rL   r"   r   )
re   rf   rg   ri   r/   r=   r   rt   r   r   rS   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   NrS   r-   rP   s     r.   r=   zSSEBytesDecoder.iter_bytesw      r1   r   rr   c                    dS )zdGiven an async iterator that yields raw binary data, iterate over it & yield every event encounteredNrS   r   s     r.   rt   zSSEBytesDecoder.aiter_bytes{  r   r1   Nr   r   )re   rf   rg   r=   rt   rS   r1   r.   r   r   u  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   rk   )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   rk   r   ztuple[type, ...])indexgeneric_basesr   )_base_clientr   rk   r   r   )r   r   r   rk   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   rI   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   rk   r}   r   r   r   r   rS   r1   r.   <module>r      sO   " " " " " "         V V V V V V V V V V V V V V V V V V ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `  : : : : : : : : ! ! ! ! ! ! -,,,,,,,, WT]]c c c c cWR[ c c cLd% d% d% d% d%'"+ d% d% d%N&j &j &j &j &j &j &j &jRf f f f f f f fR     h   Q Q Q Q #'       r1   