
    zvh5                       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)         Z6y)    )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                  x    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y
)ResponseStreamc                   || _         |j                  | _        | j                         | _        t        ||      | _        || _        y N)text_formatinput_tools_raw_streamresponse	_response
__stream__	_iteratorResponseStreamState_state_starting_afterself
raw_streamr-   r.   starting_afters        a/var/www/html/luna/venv/lib/python3.12/site-packages/openai/lib/streaming/responses/_responses.py__init__zResponseStream.__init__   =     &#,,*)k{[-    c                6    | j                   j                         S N)r4   __next__r9   s    r<   rB   zResponseStream.__next__-   s    ~~&&((r?   c              #  6   K   | j                   D ]  }|  y wrA   r4   r9   items     r<   __iter__zResponseStream.__iter__0   s     NN 	DJ	s   c                    | S rA    rC   s    r<   	__enter__zResponseStream.__enter__4   s    r?   c              #     K   | j                   D ]N  }| j                  j                  |      }|D ],  }| j                  |j                  | j                  kD  s)| . P y wrA   r0   r6   handle_eventr7   sequence_numberr9   	sse_eventevents_to_fireevents       r<   r3   zResponseStream.__stream__7   sb     )) 	 I![[55i@N'  ''/53H3H4K_K_3_K 	 s   AA!	A!c                $    | j                          y rA   closer9   exc_typeexcexc_tbs       r<   __exit__zResponseStream.__exit__>   s     	

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

        Automatically called if the response body is read to completion.
        N)r2   rV   rC   s    r<   rV   zResponseStream.closeF   s     	r?   c                l    | j                          | 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_doner6   _completed_responseRuntimeErrorr9   r1   s     r<   get_final_responsez!ResponseStream.get_final_responseN   s1     	;;22MNNr?   c                    t        |        | S )*Blocks until the stream has been consumed.)r   rC   s    r<   rb   zResponseStream.until_doneY   s    d#r?   N)
r:   zStream[RawResponseStreamEvent]r-   type[TextFormatT] | NotGivenr.   Iterable[ToolParam] | NotGivenr;   
int | NonereturnNonerl   z ResponseStreamEvent[TextFormatT])rl   z*Iterator[ResponseStreamEvent[TextFormatT]]rl   r   rX   ztype[BaseException] | NonerY   zBaseException | NonerZ   zTracebackType | Nonerl   rm   rl   rm   rl   zParsedResponse[TextFormatT])__name__
__module____qualname__r=   rB   rH   rK   r3   r[   rV   rf   rb   rJ   r?   r<   r*   r*      s    . 3. 2	.
 4. #. 
.) , " %	
 
	r?   r*   c                  H    e Zd Z	 	 	 	 	 	 	 	 	 	 ddZddZ	 	 	 	 	 	 	 	 ddZy)ResponseStreamManagerc               J    d | _         || _        || _        || _        || _        y rA   )_ResponseStreamManager__stream#_ResponseStreamManager__api_request#_ResponseStreamManager__text_format#_ResponseStreamManager__input_tools&_ResponseStreamManager__starting_afterr9   api_requestr-   r.   r;   s        r<   r=   zResponseStreamManager.__init__`   s,     =A((( .r?   c                    | j                         }t        || j                  | j                  | j                        | _        | j
                  S N)r:   r-   r.   r;   )rz   r*   r{   r|   r}   ry   r9   r:   s     r<   rK   zResponseStreamManager.__enter__n   sF    '')
&!****00	
 }}r?   c                R    | j                   | j                   j                          y y rA   )ry   rV   rW   s       r<   r[   zResponseStreamManager.__exit__z   s#     ==$MM! %r?   N)
r   z,Callable[[], Stream[RawResponseStreamEvent]]r-   ri   r.   rj   r;   rk   rl   rm   )rl   zResponseStream[TextFormatT]rp   )rs   rt   ru   r=   rK   r[   rJ   r?   r<   rw   rw   _   sg    /A/ 2	/
 4/ #/ 
/
"," "" %	"
 
"r?   rw   c                  x    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y
)AsyncResponseStreamc                   || _         |j                  | _        | j                         | _        t        ||      | _        || _        y r,   r/   r8   s        r<   r=   zAsyncResponseStream.__init__   r>   r?   c                R   K   | j                   j                          d {   S 7 wrA   )r4   	__anext__rC   s    r<   r   zAsyncResponseStream.__anext__   s     ^^--////s   '%'c               H   K   | j                   2 3 d {   }| 7 
6 y wrA   rE   rF   s     r<   	__aiter__zAsyncResponseStream.__aiter__   s&     .. 	 	$J	.s   "  " "c                  K   | j                   2 3 d {   }| j                  j                  |      }|D ]-  }| j                  |j                  | j                  kD  s)| / W7 R6 y wrA   rM   rP   s       r<   r3   zAsyncResponseStream.__stream__   sk     #// 	  	 )![[55i@N'  ''/53H3H4K_K_3_K 	 /s,   A*A(A&A(AA*A*&A((A*c                   K   | S wrA   rJ   rC   s    r<   
__aenter__zAsyncResponseStream.__aenter__   s     s   c                @   K   | j                          d {    y 7 wrA   rU   rW   s       r<   	__aexit__zAsyncResponseStream.__aexit__   s      jjls   c                T   K   | j                   j                          d{    y7 wr]   )r2   acloserC   s    r<   rV   zAsyncResponseStream.close   s      nn##%%%s   (&(c                   K   | j                          d{    | j                  j                  }|st        d      |S 7 )w)r_   Nr`   ra   re   s     r<   rf   z&AsyncResponseStream.get_final_response   s@      oo;;22MNN 	 s   AA *Ac                8   K   t        |        d{    | S 7 w)rh   N)r   rC   s    r<   rb   zAsyncResponseStream.until_done   s     $T*** 	+s   N)
r:   z#AsyncStream[RawResponseStreamEvent]r-   ri   r.   rj   r;   rk   rl   rm   rn   )rl   z/AsyncIterator[ResponseStreamEvent[TextFormatT]]ro   rp   rq   rr   )rs   rt   ru   r=   r   r   r3   r   r   rV   rf   rb   rJ   r?   r<   r   r      s    . 8. 2	.
 4. #. 
.0 , " %	
 
&	r?   r   c                  H    e Zd Z	 	 	 	 	 	 	 	 	 	 ddZddZ	 	 	 	 	 	 	 	 ddZy)AsyncResponseStreamManagerc               J    d | _         || _        || _        || _        || _        y rA   )#_AsyncResponseStreamManager__stream(_AsyncResponseStreamManager__api_request(_AsyncResponseStreamManager__text_format(_AsyncResponseStreamManager__input_tools+_AsyncResponseStreamManager__starting_afterr~   s        r<   r=   z#AsyncResponseStreamManager.__init__   s-     BF((( .r?   c                   K   | j                    d {   }t        || j                  | j                  | j                        | _        | j
                  S 7 Bwr   )r   r   r   r   r   r   r   s     r<   r   z%AsyncResponseStreamManager.__aenter__   sO     ---
+!****00	
 }} .s   AAAAc                n   K   | j                   #| j                   j                          d {    y y 7 wrA   )r   rV   rW   s       r<   r   z$AsyncResponseStreamManager.__aexit__   s0      ==$--%%''' %'s   *535N)
r   z.Awaitable[AsyncStream[RawResponseStreamEvent]]r-   ri   r.   rj   r;   rk   rl   rm   )rl   z AsyncResponseStream[TextFormatT]rp   )rs   rt   ru   r=   r   r   rJ   r?   r<   r   r      sg    /C/ 2	/
 4/ #/ 
/
(,( "( %	(
 
(r?   r   c                  8    e Zd Z	 	 	 	 	 	 ddZddZddZddZy)	r5   c                   d | _         d | _        t        |      r|D cg c]  }| c}ng | _        || _        t        j                  |      r|| _        y t        | _        y c c}w rA   )	&_ResponseStreamState__current_snapshotrc   r   _input_tools_text_formatinspectisclassr   _rich_text_format)r9   r.   r-   tools       r<   r=   zResponseStreamState.__init__   s\     BFGK >F{>Sk:dT:Y['AHQ\A]+cl ;s   	A!c                n   | j                  |      x| _        }g }|j                  dk(  r|j                  |j                     }|j                  dk(  sJ |j
                  |j                     }|j                  dk(  sJ |j                  t        t        |j                  |j                  |j                  |j                  |j                  d|j                               |S |j                  dk(  r|j                  |j                     }|j                  dk(  sJ |j
                  |j                     }|j                  dk(  sJ |j                  t        t        t           |j                  |j                  |j                  |j                  d|j                  t!        |j                  | j"                                     |S |j                  dk(  r|j                  |j                     }|j                  d	k(  sJ |j                  t        t$        |j                  |j                  |j                  |j                  d|j&                  
             |S |j                  dk(  r>| j(                  }|J |j                  t        t*        |j                  d|             |S |j                  |       |S )Nresponse.output_text.deltamessageoutput_text)content_indexdeltaitem_idoutput_indexrO   typesnapshotzresponse.output_text.done)r-   )r   r   r   rO   r   textparsed&response.function_call_arguments.deltafunction_call)r   r   r   rO   r   r   response.completed)rO   r   r1   )accumulate_eventr   r   outputr   contentr   appendr   r   r   r   rO   r   r   r"   r#   r   r   	argumentsrc   r   )r9   rS   r   eventsr   r   r1   s          r<   rN   z ResponseStreamState.handle_event   so   -1-B-B5-II(9;::55__U%7%78F;;)+++nnU%8%89G<<=000MM*"'"5"5++!MM!&!3!3$)$9$95$\\	| e ZZ66__U%7%78F;;)+++nnU%8%89G<<=000MM)+6"'"5"5!MM!&!3!3$)$9$94%ejjd>O>OP	V ? ZZCC__U%7%78F;;/111MM;++!MM!&!3!3$)$9$9A#--
6  ZZ////H'''MM*$)$9$9-%	  MM% r?   c                   | j                   }|| j                  |      S |j                  dk(  r|j                  j                  dk(  rR|j                  j                  t        t        t        t              |j                  j                                      |S |j                  j                  dk(  rR|j                  j                  t        t        t        t              |j                  j                                      |S |j                  j                  |j                         |S |j                  dk(  rz|j                  |j                     }|j                  dk(  rP|j                  j                  t        t        t        t              |j                  j                                      |S |j                  dk(  rs|j                  |j                     }|j                  dk(  rI|j                  |j                      }|j                  dk(  sJ |xj"                  |j$                  z  c_        |S |j                  dk(  rI|j                  |j                     }|j                  dk(  r|xj&                  |j$                  z  c_        |S |j                  d	k(  r1t)        | j*                  |j,                  | j.                  
      | _        |S )Nzresponse.output_item.addedr   type_valuer   zresponse.content_part.addedr   r   r   r   )r-   r1   r.   )r   _create_initial_responser   rG   r   r   r   r
   r   r(   to_dictr'   r   r   r&   partr   r   r   r   r$   r   r1   r   rc   )r9   rS   r   r   r   s        r<   r   z$ResponseStreamState.accumulate_eventC  sG   **0077::55zz/1&&,"3(FGuzzOaOaOcD ; I-&&,4=X3Yafakakasasauv8 1 &&uzz20 / ZZ88__U%7%78F{{i'%%,4]3KSXS]S]SeSeSgh( # ZZ77__U%7%78F{{i' ..)<)<=||}444+  ZZCC__U%7%78F{{o-  EKK/   ZZ//'5 -- --(D$ r?   c                    |j                   dk7  rt        d|j                    d      t        t        |j                  j                               S )Nzresponse.createdz5Expected to have received `response.created` before ``r   )r   rd   r   r   r1   r   )r9   rS   s     r<   r   z,ResponseStreamState._create_initial_responsen  sH    ::++!VW\WaWaVbbcdee'.DENNLbLbLdeer?   N)r.   rj   r-   ri   rl   rm   )rS   RawResponseStreamEventrl   z&List[ResponseStreamEvent[TextFormatT]])rS   r   rl   r   )rs   rt   ru   r=   rN   r   r   rJ   r?   r<   r5   r5      s<    
m 4
m 2	
m
 

mJX)Vfr?   r5   )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*   rw   r   r   r5   rJ   r?   r<   <module>r      s    "   @ @ E E *  + N N 7 . ] J J 4 >W[) >B""GK0 ""J>'+. >B"(!5 "(JHf'+. Hfr?   