
    Oj;                       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  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l0m1Z1m2Z2m3Z3m4Z4 d	dl5m6Z6  G d dee+         Z7 G d dee+         Z8 G d dee+         Z9 G d dee+         Z: G d dee+         Z;y)    )annotationsN)TracebackType)AnyListGenericIterable	Awaitablecast)SelfCallableIteratorAsyncIterator   )ParsedResponseSnapshot)ResponseStreamEventResponseTextDoneEventResponseCompletedEventResponseTextDeltaEvent'ResponseFunctionCallArgumentsDeltaEvent   )Omitomit)is_givenconsume_sync_iteratorconsume_async_iterator)
model_copy)buildconstruct_type_unchecked)StreamAsyncStream)ParsedResponser      )TextFormatT
parse_textparse_response)	ToolParam)ParsedContentParsedResponseOutputItemParsedResponseOutputMessageParsedResponseFunctionToolCall)ResponseOutputItemc                  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_streamr0   r1   starting_afters        /var/www/origus_pro_usr/data/www/origus.pro/core/.venv/lib/python3.12/site-packages/openai/lib/streaming/responses/_responses.py__init__zResponseStream.__init__"   =     &#,,*)k{[-    c                6    | j                   j                         S N)r7   __next__r<   s    r?   rE   zResponseStream.__next__0   s    ~~&&((rB   c              #  6   K   | j                   D ]  }|  y wrD   r7   r<   items     r?   __iter__zResponseStream.__iter__3   s     NN 	DJ	s   c                    | S rD    rF   s    r?   	__enter__zResponseStream.__enter__7   s    rB   c              #     K   | j                   D ]N  }| j                  j                  |      }|D ],  }| j                  |j                  | j                  kD  s)| . P y wrD   r3   r9   handle_eventr:   sequence_numberr<   	sse_eventevents_to_fireevents       r?   r6   zResponseStream.__stream__:   sb     )) 	 I![[55i@N'  ''/53H3H4K_K_3_K 	 s   AA!	A!c                $    | j                          y rD   closer<   exc_typeexcexc_tbs       r?   __exit__zResponseStream.__exit__A   s     	

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

        Automatically called if the response body is read to completion.
        N)r5   rY   rF   s    r?   rY   zResponseStream.closeI   s     	rB   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_doner9   _completed_responseRuntimeErrorr<   r4   s     r?   get_final_responsez!ResponseStream.get_final_responseQ   s1     	;;22MNNrB   c                    t        |        | S )*Blocks until the stream has been consumed.)r   rF   s    r?   re   zResponseStream.until_done\   s    d#rB   N)
r=   zStream[RawResponseStreamEvent]r0   type[TextFormatT] | Omitr1   Iterable[ToolParam] | Omitr>   
int | NonereturnNonero   z ResponseStreamEvent[TextFormatT])ro   z*Iterator[ResponseStreamEvent[TextFormatT]]ro   r   r[   ztype[BaseException] | Noner\   zBaseException | Noner]   zTracebackType | Nonero   rp   ro   rp   ro   zParsedResponse[TextFormatT])__name__
__module____qualname__r@   rE   rK   rN   r6   r^   rY   ri   re   rM   rB   r?   r-   r-   !   s    . 3. .	.
 0. #. 
.) , " %	
 
	rB   r-   c                  H    e Zd Z	 	 	 	 	 	 	 	 	 	 ddZddZ	 	 	 	 	 	 	 	 ddZy)ResponseStreamManagerc               J    d | _         || _        || _        || _        || _        y rD   )_ResponseStreamManager__stream#_ResponseStreamManager__api_request#_ResponseStreamManager__text_format#_ResponseStreamManager__input_tools&_ResponseStreamManager__starting_afterr<   api_requestr0   r1   r>   s        r?   r@   zResponseStreamManager.__init__c   s,     =A((( .rB   c                    | j                         }t        || j                  | j                  | j                        | _        | j
                  S N)r=   r0   r1   r>   )r}   r-   r~   r   r   r|   r<   r=   s     r?   rN   zResponseStreamManager.__enter__q   sF    '')
&!****00	
 }}rB   c                R    | j                   | j                   j                          y y rD   )r|   rY   rZ   s       r?   r^   zResponseStreamManager.__exit__}   s#     ==$MM! %rB   N)
r   z,Callable[[], Stream[RawResponseStreamEvent]]r0   rl   r1   rm   r>   rn   ro   rp   )ro   zResponseStream[TextFormatT]rs   )rv   rw   rx   r@   rN   r^   rM   rB   r?   rz   rz   b   sg    /A/ .	/
 0/ #/ 
/
"," "" %	"
 
"rB   rz   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/   r2   r;   s        r?   r@   zAsyncResponseStream.__init__   rA   rB   c                R   K   | j                   j                          d {   S 7 wrD   )r7   	__anext__rF   s    r?   r   zAsyncResponseStream.__anext__   s     ^^--////s   '%'c               H   K   | j                   2 3 d {   }| 7 
6 y wrD   rH   rI   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rD   rP   rS   s       r?   r6   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rD   rM   rF   s    r?   
__aenter__zAsyncResponseStream.__aenter__   s     s   c                @   K   | j                          d {    y 7 wrD   rX   rZ   s       r?   	__aexit__zAsyncResponseStream.__aexit__   s      jjls   c                T   K   | j                   j                          d{    y7 wr`   )r5   acloserF   s    r?   rY   zAsyncResponseStream.close   s      nn##%%%s   (&(c                   K   | j                          d{    | j                  j                  }|st        d      |S 7 )w)rb   Nrc   rd   rh   s     r?   ri   z&AsyncResponseStream.get_final_response   s@      oo;;22MNN 	 s   AA *Ac                8   K   t        |        d{    | S 7 w)rk   N)r   rF   s    r?   re   zAsyncResponseStream.until_done   s     $T*** 	+s   N)
r=   z#AsyncStream[RawResponseStreamEvent]r0   rl   r1   rm   r>   rn   ro   rp   rq   )ro   z/AsyncIterator[ResponseStreamEvent[TextFormatT]]rr   rs   rt   ru   )rv   rw   rx   r@   r   r   r6   r   r   rY   ri   re   rM   rB   r?   r   r      s    . 8. .	.
 0. #. 
.0 , " %	
 
&	rB   r   c                  H    e Zd Z	 	 	 	 	 	 	 	 	 	 ddZddZ	 	 	 	 	 	 	 	 ddZy)AsyncResponseStreamManagerc               J    d | _         || _        || _        || _        || _        y rD   )#_AsyncResponseStreamManager__stream(_AsyncResponseStreamManager__api_request(_AsyncResponseStreamManager__text_format(_AsyncResponseStreamManager__input_tools+_AsyncResponseStreamManager__starting_afterr   s        r?   r@   z#AsyncResponseStreamManager.__init__   s-     BF((( .rB   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rD   )r   rY   rZ   s       r?   r   z$AsyncResponseStreamManager.__aexit__   s0      ==$--%%''' %'s   *535N)
r   z.Awaitable[AsyncStream[RawResponseStreamEvent]]r0   rl   r1   rm   r>   rn   ro   rp   )ro   z AsyncResponseStream[TextFormatT]rs   )rv   rw   rx   r@   r   r   rM   rB   r?   r   r      sg    /C/ .	/
 0/ #/ 
/
(,( "( %	(
 
(rB   r   c                  @    e Zd Z	 	 	 	 	 	 ddZddZd	dZd
dZd	dZy)r8   c                   d | _         d | _        i | _        i | _        t	        |      r|D cg c]  }| c}ng | _        || _        t        j                  |      r|| _
        y t        | _
        y c c}w rD   )&_ResponseStreamState__current_snapshotrf   _completed_output_output_itemsr   _input_tools_text_formatinspectisclassr   _rich_text_format)r<   r1   r0   tools       r?   r@   zResponseStreamState.__init__   sk     BFGK @BJL>F{>Sk:dT:Y['=D__[=Yk_c ;s   	A/c                   | j                  |      | _        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                  |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        dt               |j                  |j                  |j                  |j                  |j                  d|j                  t#        |j                  | 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_indexrR   logprobstypesnapshotzresponse.output_text.donez(type[ResponseTextDoneEvent[TextFormatT]])r0   phase)r   r   r   rR   r   r   textparsed&response.function_call_arguments.deltafunction_call)r   r   r   rR   r   r   response.completed)rR   r   r4   )accumulate_eventr   r   _get_output_itemr   contentr   appendr   r   r   r   rR   r   r   r
   r   r$   r   r   r   	argumentsrf   r   )r<   rV   eventsoutputr   r4   s         r?   rQ   z ResponseStreamState.handle_event   s   "&"7"7">9;::55**5+=+=>F;;)+++nnU%8%89G<<=000MM*"'"5"5++!MM!&!3!3$)$9$9"^^5$\\
@ g ZZ66**5+=+=>F;;)+++nnU%8%89G<<=000MMCEZ["'"5"5!MM!&!3!3$)$9$9"^^4%ejjd>O>OW]WcWcd
X ? ZZCC**5+=+=>F;;/111MM;++!MM!&!3!3$)$9$9A#--
6  ZZ////H'''MM*$)$9$9-%	  MM% rB   c                &   | j                   }|| j                  |      S |j                  dk(  r0t        |dd       |S |j                  j                  dk(  rQ|j
                  j                  t        t        t        t              |j                  j                                      n|j                  j                  dk(  rQ|j
                  j                  t        t        t        t              |j                  j                                      n%|j
                  j                  |j                         |j
                  d   | j                  |j                  <   |S |j                  dk(  r|| j                  |j                        }|j                  dk(  rP|j                   j                  t        t        t        t"              |j$                  j                                      |S |j                  dk(  ru| j                  |j                        }|j                  dk(  rI|j                   |j&                     }|j                  d	k(  sJ |xj(                  |j*                  z  c_        |S |j                  d
k(  rK| j                  |j                        }|j                  dk(  r|xj,                  |j*                  z  c_        |S |j                  dk(  r%|j                  | j.                  |j                  <   |S |j                  dk(  r|j0                  }t        |dd       @t3        |      }t5        | j.                        D cg c]  }| j.                  |    c}|_        t7        | j8                  || j:                        | _        |S c c}w )Nzresponse.output_item.addedrJ   r   type_valuer   zresponse.content_part.addedr   r   r   zresponse.output_item.doner   r   )r0   r4   r1   )r   _create_initial_responser   getattrrJ   r   r   r   r
   r   r*   to_dictr)   r   r   r   r   r'   partr   r   r   r   r   r4   r   sortedr%   r   r   rf   )r<   rV   r   r   r   r4   indexs          r?   r   z$ResponseStreamState.accumulate_eventJ  s   **0077::55ufd+3zz/1&&,"3(FGuzzOaOaOc
 I-&&,4=X3Yafakakasasauv &&uzz25=__R5HDu112> = ZZ88**5+=+=>F{{i'%%,4]3KSXS]S]SeSeSgh6 1 ZZ77**5+=+=>F{{i' ..)<)<=||}444+& % ZZCC**5+=+=>F{{o-  EKK/   ZZ669>D""5#5#56  ZZ//~~Hx408%h/NTUYUkUkNl"mU4#9#9%#@"m'5 --! --(D$  #ns   Nc                \    	 | j                   |   S # t        $ r t        d| d      d w xY w)Nz*Received a content event for output index z! before receiving its output item)r   KeyErrorrg   )r<   r   s     r?   r   z$ResponseStreamState._get_output_item  sD    	%%l33 	<\NJkl	s    +c                    |j                   dk7  rt        d|j                    d      t        t        |j                  j                               }t        t        |j                  xs g             | _	        |S )Nzresponse.createdz5Expected to have received `response.created` before ``r   )
r   rg   r   r   r4   r   dict	enumerater   r   )r<   rV   r   s      r?   r   z,ResponseStreamState._create_initial_response  sj    ::++!VW\WaWaVbbcdee+2HPUP^P^PfPfPhi!)HOO,Ar"BCrB   N)r1   rm   r0   rl   ro   rp   )rV   RawResponseStreamEventro   z&List[ResponseStreamEvent[TextFormatT]])rV   r   ro   r   )r   intro   z ParsedResponseOutputItem[object])rv   rw   rx   r@   rQ   r   r   r   rM   rB   r?   r8   r8      s@    d 0d .	d
 
dL\4lrB   r8   )<
__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   _compatr   _modelsr   r   
_streamingr   r    types.responsesr!   r   _parsing._responsesr#   r$   r%   types.responses.tool_paramr&   types.responses.parsed_responser'   r(   r)   r*   $types.responses.response_output_itemr+   r-   rz   r   r   r8   rM   rB   r?   <module>r      s    "   @ @ E E *  " N N " 7 . ] J J 4  H>W[) >B""GK0 ""J>'+. >B"(!5 "(Jb'+. brB   