
    yg1                       d dl m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 d dlmZmZmZmZ ddlmZ ddlmZmZmZmZmZ d	d
lmZmZ d	dlmZmZmZ d	dlm Z m!Z! d	dl"m#Z#m$Z$ d	dl%m&Z&mZ' ddl(m)Z)m*Z*m+Z+ d	dl,m-Z- d	dl.m/Z/m0Z0m1Z1  G d dee)                   Z2 G d dee)                   Z3 G d dee)                   Z4 G d dee)                   Z5 G d dee)                   Z6dS )    )annotationsN)TracebackType)AnyListGenericIterable	Awaitablecast)SelfCallableIteratorAsyncIterator   )ParsedResponseSnapshot)ResponseStreamEventResponseTextDoneEventResponseCompletedEventResponseTextDeltaEvent'ResponseFunctionCallArgumentsDeltaEvent   )	NOT_GIVENNotGiven)is_givenconsume_sync_iteratorconsume_async_iterator)buildconstruct_type_unchecked)StreamAsyncStream)ParsedResponser      )TextFormatT
parse_textparse_response)	ToolParam)ParsedContentParsedResponseOutputMessageParsedResponseFunctionToolCallc                  V    e Z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
d dZdS )$ResponseStream
raw_streamStream[RawResponseStreamEvent]text_formattype[TextFormatT] | NotGiveninput_toolsIterable[ToolParam] | NotGivenreturnNonec                   || _         |j        | _        |                                 | _        t          ||          | _        d S N)r-   r/   _raw_streamresponse	_response
__stream__	_iteratorResponseStreamState_stateselfr+   r-   r/   s       d/var/www/html/nourish/venv/lib/python3.11/site-packages/openai/lib/streaming/responses/_responses.py__init__zResponseStream.__init__   ?     &#,**)k{[[[     ResponseStreamEvent[TextFormatT]c                4    | j                                         S N)r:   __next__r>   s    r?   rF   zResponseStream.__next__+   s    ~&&(((rB   *Iterator[ResponseStreamEvent[TextFormatT]]c              #  &   K   | j         D ]}|V  d S rE   r:   r>   items     r?   __iter__zResponseStream.__iter__.   s,      N 	 	DJJJJ	 	rB   r   c                    | S rE    rG   s    r?   	__enter__zResponseStream.__enter__2   s    rB   c              #  d   K   | j         D ]%}| j                            |          }|D ]}|V  &d S rE   r6   r<   handle_eventr>   	sse_eventevents_to_fireevents       r?   r9   zResponseStream.__stream__5   sV      ) 	 	I![55i@@N'  	 	rB   exc_typetype[BaseException] | NoneexcBaseException | Noneexc_tbTracebackType | Nonec                .    |                                   d S rE   closer>   rX   rZ   r\   s       r?   __exit__zResponseStream.__exit__;   s     	

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

        Automatically called if the response body is read to completion.
        N)r8   r`   rG   s    r?   r`   zResponseStream.closeC   s     	rB   ParsedResponse[TextFormatT]c                h    |                                   | j        j        }|st          d          |S )xWaits until the stream has been read to completion and returns
        the accumulated `ParsedResponse` object.
        ,Didn't receive a `response.completed` event.
until_doner<   _completed_responseRuntimeErrorr>   r7   s     r?   get_final_responsez!ResponseStream.get_final_responseK   s;     	;2 	OMNNNrB   c                $    t          |            | S )*Blocks until the stream has been consumed.)r   rG   s    r?   rj   zResponseStream.until_doneV   s    d###rB   N)r+   r,   r-   r.   r/   r0   r1   r2   r1   rC   )r1   rH   r1   r   rX   rY   rZ   r[   r\   r]   r1   r2   r1   r2   r1   re   )__name__
__module____qualname__r@   rF   rM   rP   r9   rb   r`   rn   rj   rO   rB   r?   r*   r*      s        
\ 
\ 
\ 
\) ) ) )               	 	 	 	     rB   r*   c                  &    e Zd Zdd	ZddZddZdS )ResponseStreamManagerapi_request,Callable[[], Stream[RawResponseStreamEvent]]r-   r.   r/   r0   r1   r2   c               >    d | _         || _        || _        || _        d S rE   )_ResponseStreamManager__stream#_ResponseStreamManager__api_request#_ResponseStreamManager__text_format#_ResponseStreamManager__input_toolsr>   r{   r-   r/   s       r?   r@   zResponseStreamManager.__init__]   s*     =A(((rB   ResponseStream[TextFormatT]c                z    |                                  }t          || j        | j                  | _        | j        S N)r+   r-   r/   )r   r*   r   r   r~   r>   r+   s     r?   rP   zResponseStreamManager.__enter__i   sB    ''))
&!**
 
 
 }rB   rX   rY   rZ   r[   r\   r]   c                J    | j         | j                                          d S d S rE   )r~   r`   ra   s       r?   rb   zResponseStreamManager.__exit__t   s.     =$M!!!!! %$rB   N)r{   r|   r-   r.   r/   r0   r1   r2   )r1   r   rs   )rv   rw   rx   r@   rP   rb   rO   rB   r?   rz   rz   \   sP        
) 
) 
) 
)	 	 	 	" " " " " "rB   rz   c                  V    e Z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
d dZdS )$AsyncResponseStreamr+   #AsyncStream[RawResponseStreamEvent]r-   r.   r/   r0   r1   r2   c                   || _         |j        | _        |                                 | _        t          ||          | _        d S r4   r5   r=   s       r?   r@   zAsyncResponseStream.__init__   rA   rB   rC   c                D   K   | j                                          d {V S rE   )r:   	__anext__rG   s    r?   r   zAsyncResponseStream.__anext__   s,      ^--/////////rB   /AsyncIterator[ResponseStreamEvent[TextFormatT]]c               4   K   | j         2 3 d {V }|W V  6 d S rE   rJ   rK   s     r?   	__aiter__zAsyncResponseStream.__aiter__   sF      . 	 	 	 	 	 	 	$JJJJJ )..s   c               r   K   | j         2 3 d {V }| j                            |          }|D ]}|W V  ,6 d S rE   rR   rT   s       r?   r9   zAsyncResponseStream.__stream__   sr      #/ 	 	 	 	 	 	 	)![55i@@N'    0//s   6r   c                
   K   | S rE   rO   rG   s    r?   
__aenter__zAsyncResponseStream.__aenter__   s      rB   rX   rY   rZ   r[   r\   r]   c                >   K   |                                   d {V  d S rE   r_   ra   s       r?   	__aexit__zAsyncResponseStream.__aexit__   s.       jjllrB   c                H   K   | j                                          d{V  dS rd   )r8   acloserG   s    r?   r`   zAsyncResponseStream.close   s4       n##%%%%%%%%%%%rB   re   c                x   K   |                                   d{V  | j        j        }|st          d          |S )rg   Nrh   ri   rm   s     r?   rn   z&AsyncResponseStream.get_final_response   sQ       oo;2 	OMNNNrB   c                4   K   t          |            d{V  | S )rp   N)r   rG   s    r?   rj   zAsyncResponseStream.until_done   s+      $T*********rB   N)r+   r   r-   r.   r/   r0   r1   r2   rq   )r1   r   rr   rs   rt   ru   )rv   rw   rx   r@   r   r   r9   r   r   r`   rn   rj   rO   rB   r?   r   r   ~   s        
\ 
\ 
\ 
\0 0 0 0            & & & &	 	 	 	     rB   r   c                  &    e Zd Zdd	ZddZddZdS )AsyncResponseStreamManagerr{   .Awaitable[AsyncStream[RawResponseStreamEvent]]r-   r.   r/   r0   r1   r2   c               >    d | _         || _        || _        || _        d S rE   )#_AsyncResponseStreamManager__stream(_AsyncResponseStreamManager__api_request(_AsyncResponseStreamManager__text_format(_AsyncResponseStreamManager__input_toolsr   s       r?   r@   z#AsyncResponseStreamManager.__init__   s+     BF(((rB    AsyncResponseStream[TextFormatT]c                p   K   | j          d {V }t          || j        | j                  | _        | j        S r   )r   r   r   r   r   r   s     r?   r   z%AsyncResponseStreamManager.__aenter__   sO      -------
+!**
 
 
 }rB   rX   rY   rZ   r[   r\   r]   c                Z   K   | j         !| j                                          d {V  d S d S rE   )r   r`   ra   s       r?   r   z$AsyncResponseStreamManager.__aexit__   sD       =$-%%''''''''''' %$rB   N)r{   r   r-   r.   r/   r0   r1   r2   )r1   r   rs   )rv   rw   rx   r@   r   r   rO   rB   r?   r   r      sP        
) 
) 
) 
)	 	 	 	( ( ( ( ( (rB   r   c                  .    e Zd ZddZddZddZddZdS )r;   r/   r0   r-   r.   r1   r2   c                   d | _         d | _        t          |          rd |D             ng | _        || _        t          j        |          r|nt          | _        d S )Nc                    g | ]}|S rO   rO   ).0tools     r?   
<listcomp>z0ResponseStreamState.__init__.<locals>.<listcomp>   s    :::dT:::rB   )	&_ResponseStreamState__current_snapshotrk   r   _input_tools_text_formatinspectisclassr   _rich_text_format)r>   r/   r-   s      r?   r@   zResponseStreamState.__init__   sk     BFGK >F{>S>S[::k::::Y['AHQ\A]A]2l++clrB   rW   RawResponseStreamEvent&List[ResponseStreamEvent[TextFormatT]]c                J   |                      |          x| _        }g }|j        dk    r|j        |j                 }|j        dk    sJ |j        |j                 }|j        dk    sJ |                    t          t          |j        |j
        |j        |j        d|j                             nr|j        dk    r|j        |j                 }|j        dk    sJ |j        |j                 }|j        dk    sJ |                    t          t          t                   |j        |j        |j        d|j        t          |j        | j                                       n|j        dk    ra|j        |j                 }|j        d	k    sJ |                    t          t"          |j
        |j        |j        d|j        
                     nV|j        dk    r6| j        }|J |                    t          t(          d|                     n|                    |           |S )Nresponse.output_text.deltamessageoutput_text)content_indexdeltaitem_idoutput_indextypesnapshotzresponse.output_text.done)r-   )r   r   r   r   textparsed&response.function_call_arguments.deltafunction_call)r   r   r   r   r   response.completed)r   r7   )accumulate_eventr   r   outputr   contentr   appendr   r   r   r   r   r   r"   r#   r   r   	argumentsrk   r   )r>   rW   r   eventsr   r   r7   s          r?   rS   z ResponseStreamState.handle_event   sg   -1-B-B5-I-II(9;:555_U%78F;)++++nU%89G<=0000MM*"'"5+!M!&!35$\  
 
 
 
 Z666_U%78F;)++++nU%89G<=0000MM)+6"'"5!M!&!34%ejd>OPPP  
 
 
 
 ZCCC_U%78F;/1111MM;+!M!&!3A#-  	 	 	 	 Z////H'''MM*-%      MM%   rB   r   c                   | j         }||                     |          S |j        dk    r|j        j        dk    rZ|j                            t          t          t          t                    |j        
                                                     n|j        j        dk    rZ|j                            t          t          t          t                    |j        
                                                     nn|j                            |j                   nM|j        dk    rv|j        |j                 }|j        dk    rX|j                            t          t          t          t                    |j        
                                                     n|j        dk    rR|j        |j                 }|j        dk    r4|j        |j                 }|j        dk    sJ |xj        |j        z  c_        no|j        dk    r3|j        |j                 }|j        dk    r|xj        |j        z  c_        n1|j        d	k    r&t)          | j        |j        | j        
          | _        |S )Nzresponse.output_item.addedr   type_valuer   zresponse.content_part.addedr   r   r   r   )r-   r7   r/   )r   _create_initial_responser   rL   r   r   r   r
   r   r(   to_dictr'   r   r   r&   partr   r   r   r   r$   r   r7   r   rk   )r>   rW   r   r   r   s        r?   r   z$ResponseStreamState.accumulate_event3  sV   *00777:555z/11&&,"3(FGGuzOaOaOcOc     
 I--&&,4=X3Y3Yafakasasauauvvv    &&uz2222Z888_U%78F{i''%%,4]3K3KSXS]SeSeSgSghhh   Z777_U%78F{i'' .)<=|}4444+ZCCC_U%78F{o--  EK/  Z///'5 - -( ( (D$ rB   c                    |j         dk    rt          d|j          d          t          t          |j                                                  S )Nzresponse.createdz5Expected to have received `response.created` before ``r   )r   rl   r   r   r7   r   )r>   rW   s     r?   r   z,ResponseStreamState._create_initial_response^  sP    :+++dW\Wadddeee'.DENLbLbLdLdeeeerB   N)r/   r0   r-   r.   r1   r2   )rW   r   r1   r   )rW   r   r1   r   )rv   rw   rx   r@   rS   r   r   rO   rB   r?   r;   r;      st        
m 
m 
m 
mF F F FP) ) ) )Vf f f f f frB   r;   )7
__future__r   r   typesr   typingr   r   r   r   r	   r
   typing_extensionsr   r   r   r   _typesr   _eventsr   r   r   r   r   r   r   _utilsr   r   r   _modelsr   r   
_streamingr   r   types.responsesr    r   _parsing._responsesr"   r#   r$   types.responses.tool_paramr%   types.responses.parsed_responser&   r'   r(   r*   rz   r   r   r;   rO   rB   r?   <module>r      s   " " " " " "        @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ E E E E E E E E E E E E * * * * * *              + * * * * * * * N N N N N N N N N N 7 7 7 7 7 7 7 7 . . . . . . . . ] ] ] ] ] ] ] ] J J J J J J J J J J 4 4 4 4 4 4         ; ; ; ; ;W[) ; ; ;|" " " " "GK0 " " "D; ; ; ; ;'+. ; ; ;|( ( ( ( (!5 ( ( (DDf Df Df Df Df'+. Df Df Df Df DfrB   