
    f j                       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mZmZ d dlmZmZmZmZ d dlZddlmZmZmZmZ ddlmZ dd	lmZmZ dd
lmZ ddl m!Z!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-  G d d          Z. e	de.          Z/ G d dee/                   Z0 G d d          Z1 e	de1          Z2 G d dee2                   Z3d'dZ4d(d"Z5d)d&Z6dS )*    )annotationsN)TracebackType)TYPE_CHECKINGAnyGenericTypeVarCallableIterableIteratorcast)	AwaitableAsyncIterableAsyncIteratorassert_never   )is_dictis_listconsume_sync_iteratorconsume_async_iterator)construct_type)StreamAsyncStream)AssistantStreamEvent)RunTextMessage	ImageFile	TextDeltaMessageDeltaMessageContentMessageContentDelta)RunStepToolCallRunStepDeltaToolCallDeltac                  d   e Zd ZU ded<   	 dFdZdGdZdHd
ZdIdZedJd            Z	edKd            Z
edLd            ZedMd            ZdFdZdFdZdNdZdOdZdPdZdQdZdFdZdRd!ZdSd$ZdTd(ZdSd)ZdUd,ZdVd.ZdUd/ZdWd2ZdFd3ZdXd6ZdYd8ZdXd9ZdZd<Z d[d>Z!dZd?Z"d\dBZ#dRdCZ$dIdDZ%dES )]AssistantEventHandlerzIterable[str]text_deltasreturnNonec                   d | _         d | _        d | _        d | _        d | _        d | _        d | _        i | _        i | _        d | _	        | 
                                | _        |                                 | _        d | _        d S N)_current_event_current_message_content_index_current_message_content_current_tool_call_index_current_tool_call+_AssistantEventHandler__current_run_step_id#_AssistantEventHandler__current_run*_AssistantEventHandler__run_step_snapshots)_AssistantEventHandler__message_snapshots0_AssistantEventHandler__current_message_snapshot__text_deltas__r(   
__stream__	_iterator_AssistantEventHandler__streamselfs    tC:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\openai/lib/streaming/_assistants.py__init__zAssistantEventHandler.__init__)   s    ;?:>+?C%48%3715")-8:!79 :>'//11**=A    streamStream[AssistantStreamEvent]c                @    | j         rt          d          || _         d S NzyA single event handler cannot be shared between multiple streams; You will need to construct a new event handler instance)r:   RuntimeErrorr<   r@   s     r=   _initzAssistantEventHandler._init9   1    = 	 L   r?   r   c                4    | j                                         S r,   )r9   __next__r;   s    r=   rI   zAssistantEventHandler.__next__A   s    ~&&(((r?   Iterator[AssistantStreamEvent]c              #  &   K   | j         D ]}|V  d S r,   r9   r<   items     r=   __iter__zAssistantEventHandler.__iter__D   s,      N 	 	DJJJJ	 	r?   AssistantStreamEvent | Nonec                    | j         S r,   r-   r;   s    r=   current_eventz#AssistantEventHandler.current_eventH       ""r?   
Run | Nonec                    | j         S r,   )r3   r;   s    r=   current_runz!AssistantEventHandler.current_runL       !!r?   RunStep | Nonec                8    | j         sd S | j        | j                  S r,   )r2   r4   r;   s    r=   current_run_step_snapshotz/AssistantEventHandler.current_run_step_snapshotP   #    ) 	4()CDDr?   Message | Nonec                    | j         S r,   )r6   r;   s    r=   current_message_snapshotz.AssistantEventHandler.current_message_snapshotW       ..r?   c                J    | j         r| j                                          dS dS z~
        Close the response and release the connection.

        Automatically called when the context manager exits.
        N)r:   closer;   s    r=   rc   zAssistantEventHandler.close[   2     = 	"M!!!!!	" 	"r?   c                $    t          |            dS z(Waits until the stream has been consumedN)r   r;   s    r=   
until_donez AssistantEventHandler.until_doned   s    d#####r?   r   c                d    |                                   | j        st          d          | j        S )BWait for the stream to finish and returns the completed Run objectNo final run object found)rg   r3   rD   r;   s    r=   get_final_runz#AssistantEventHandler.get_final_runh   s5    ! 	<:;;;!!r?   list[RunStep]c                    |                                   | j        st          d          d | j                                        D             S )EWait for the stream to finish and returns the steps taken in this runNo run steps foundc                    g | ]}|S  rq   .0steps     r=   
<listcomp>z=AssistantEventHandler.get_final_run_steps.<locals>.<listcomp>x       DDDDDDr?   )rg   r4   rD   valuesr;   s    r=   get_final_run_stepsz)AssistantEventHandler.get_final_run_stepsq   sO    ( 	53444DD!:!A!A!C!CDDDDr?   list[Message]c                    |                                   | j        st          d          d | j                                        D             S )JWait for the stream to finish and returns the messages emitted in this runNo messages foundc                    g | ]}|S rq   rq   rs   messages     r=   ru   z<AssistantEventHandler.get_final_messages.<locals>.<listcomp>       IIIGIIIr?   )rg   r5   rD   rw   r;   s    r=   get_final_messagesz(AssistantEventHandler.get_final_messagesz   sO    ' 	42333IIt'?'F'F'H'HIIIIr?   Iterator[str]c              #     K   | D ]P}|j         dk    r|j        j        j        pg D ].}|j        dk    r!|j        r|j        j        r|j        j        V  /Qd S Nthread.message.deltatexteventdatadeltacontenttyper   valuer<   r   content_deltas      r=   r7   z%AssistantEventHandler.__text_deltas__   s       	3 	3E{44 !&!1!9!?R 3 3 %/ 3M4F 3=K]Kc 3',22223		3 	3r?   c                    dS zFires when the stream has finished.

        This happens if the stream is read to completion
        or if an exception occurs during iteration.
        Nrq   r;   s    r=   on_endzAssistantEventHandler.on_end         r?   r   c                    dS z2Callback that is fired for every Server-Sent-EventNrq   r<   r   s     r=   on_eventzAssistantEventHandler.on_event   r   r?   run_stepr"   c                    dS z1Callback that is fired when a run step is createdNrq   r<   r   s     r=   on_run_step_createdz)AssistantEventHandler.on_run_step_created   r   r?   r   r$   snapshotc                    dS aX  Callback that is fired whenever a run step delta is returned from the API

        The first argument is just the delta as sent by the API and the second argument
        is the accumulated snapshot of the run step. For example, a tool calls event may
        look like this:

        # delta
        tool_calls=[
            RunStepDeltaToolCallsCodeInterpreter(
                index=0,
                type='code_interpreter',
                id=None,
                code_interpreter=CodeInterpreter(input=' sympy', outputs=None)
            )
        ]
        # snapshot
        tool_calls=[
            CodeToolCall(
                id='call_wKayJlcYV12NiadiZuJXxcfx',
                code_interpreter=CodeInterpreter(input='from sympy', outputs=[]),
                type='code_interpreter',
                index=0
            )
        ],
        Nrq   r<   r   r   s      r=   on_run_step_deltaz'AssistantEventHandler.on_run_step_delta   r   r?   c                    dS z3Callback that is fired when a run step is completedNrq   r   s     r=   on_run_step_donez&AssistantEventHandler.on_run_step_done   r   r?   	tool_callr#   c                    dS z2Callback that is fired when a tool call is createdNrq   r<   r   s     r=   on_tool_call_createdz*AssistantEventHandler.on_tool_call_created   r   r?   r%   c                    dS z<Callback that is fired when a tool call delta is encounteredNrq   r   s      r=   on_tool_call_deltaz(AssistantEventHandler.on_tool_call_delta   r   r?   c                    dS r   rq   r   s     r=   on_tool_call_donez'AssistantEventHandler.on_tool_call_done   r   r?   	exception	Exceptionc                    dS z4Fired whenever an exception happens during streamingNrq   r<   r   s     r=   on_exceptionz"AssistantEventHandler.on_exception   r   r?   c                    dS zFires if the request times outNrq   r;   s    r=   
on_timeoutz AssistantEventHandler.on_timeout   r   r?   r   r   c                    dS z0Callback that is fired when a message is createdNrq   r<   r   s     r=   on_message_createdz(AssistantEventHandler.on_message_created   r   r?   r   c                    dS ax  Callback that is fired whenever a message delta is returned from the API

        The first argument is just the delta as sent by the API and the second argument
        is the accumulated snapshot of the message. For example, a text content event may
        look like this:

        # delta
        MessageDeltaText(
            index=0,
            type='text',
            text=Text(
                value=' Jane'
            ),
        )
        # snapshot
        MessageContentText(
            index=0,
            type='text',
            text=Text(
                value='Certainly, Jane'
            ),
        )
        Nrq   r   s      r=   on_message_deltaz&AssistantEventHandler.on_message_delta   r   r?   c                    dS z2Callback that is fired when a message is completedNrq   r   s     r=   on_message_donez%AssistantEventHandler.on_message_done   r   r?   r   r   c                    dS z;Callback that is fired when a text content block is createdNrq   r<   r   s     r=   on_text_createdz%AssistantEventHandler.on_text_created   r   r?   r   c                    dS a  Callback that is fired whenever a text content delta is returned
        by the API.

        The first argument is just the delta as sent by the API and the second argument
        is the accumulated snapshot of the text. For example:

        on_text_delta(TextDelta(value="The"), Text(value="The")),
        on_text_delta(TextDelta(value=" solution"), Text(value="The solution")),
        on_text_delta(TextDelta(value=" to"), Text(value="The solution to")),
        on_text_delta(TextDelta(value=" the"), Text(value="The solution to the")),
        on_text_delta(TextDelta(value=" equation"), Text(value="The solution to the equivalent")),
        Nrq   r   s      r=   on_text_deltaz#AssistantEventHandler.on_text_delta   r   r?   c                    dS z<Callback that is fired when a text content block is finishedNrq   r   s     r=   on_text_donez"AssistantEventHandler.on_text_done   r   r?   
image_filer   c                    dS z;Callback that is fired when an image file block is finishedNrq   r<   r   s     r=   on_image_file_donez(AssistantEventHandler.on_image_file_done   r   r?   c                   || _         |                     |           t          || j                  \  | _        }| j        | j        | j        | j        j        <   t          || j                   |D ]G}| j        J | j        j        |j	                 }|j
        dk    r|                     |j                   H|j        dk    s,|j        dk    s!|j        dk    s|j        dk    s|j        dk    r/|j        | _        | j        r|                     | j                   n|j        d	k    s!|j        d
k    s|j        dk    s|j        dk    r|j        | _        n|j        dk    r|                     |j                   nv|j        dk    rN| j        }|J |j        j        }|j        |j        D ]}|j
        dk    rF|j        r?|j        |j	                 }|j
        dk    sJ |                     |j        |j                   |j	        | j        k    r| j        _| j        j
        dk    r |                     | j        j                   n/| j        j
        dk    r|                     | j        j                   |j	        | _        |j        |j	                 | _        |j        |j	                 | _        |                     |j        j        |           n|j        dk    s|j        dk    r|j        | _        |j        | j        |j        j        <   | j        b|j        j        | j                 }|j
        dk    r|                     |j                   n%|j
        dk    r|                     |j                   |                     |j                   n\|j        dk    r-|j        j        | _        |                     |j                   n$|j        dk    r|j        j        | _        n|j        dk    rS| j        |j        j                 }	|j        j        }
|
j        r|
j        j
        dk    r|
j        j        |	j        j
        dk    sJ |
j        j        D ]}|j	        | j         k    r+| !                    ||	j        j        |j	                            |j	        | j         k    rc| j        |                     | j                   |j	        | _         |	j        j        |j	                 | _        | "                    | j                   |	j        j        |j	                 | _        | #                    |j        j        |	           n|j        dk    s!|j        dk    s|j        dk    s|j        dk    rC| j        r|                     | j                   | $                    |j                   d | _        n8|j        dk    s|j        dk    s|j        dk    rntJ          rtM          |           d | _         d S N)r   r_   )r   run_step_snapshotsr   zthread.run.completedzthread.run.cancelledzthread.run.expiredzthread.run.failedzthread.run.requires_actionzthread.run.createdzthread.run.in_progresszthread.run.cancellingzthread.run.queuedthread.message.createdr   r   zthread.message.completedzthread.message.incompletethread.run.step.createdzthread.run.step.in_progressthread.run.step.delta
tool_callszthread.run.step.completedzthread.run.step.cancelledzthread.run.step.expiredzthread.run.step.failedzthread.createdzthread.message.in_progresserror)'r-   r   accumulate_eventr6   r5   idaccumulate_run_stepr4   r   indexr   r   r   r   r   r3   r1   r   r   r   r   r.   r/   r   r   r   r   r   r2   r   step_detailsr   r0   r   r   r   r   r   r   r<   r   new_contentr   blockr   message_deltasnapshot_contentr   step_snapshotrun_step_deltatool_call_deltas               r=   _emit_sse_eventz%AssistantEventHandler._emit_sse_event   s   #e7G%)%D8
 8
 8
4' * 	kKOKjD$T%D%GH#8	
 	
 	
 	

 ) 	1 	1M2>>>3;M<OPEzV# 1$$UZ000 K11u	${44u	$ {22u	$ {11	u	$
 {::u	$ "'D& @&&t'>???K//k	${66k	$ {55k	$ {11	k	$ "'D[44 d	$##EJ////[22 b	$6H'''!J,M$ Z%2%: Z ZM$)V3 V8J V+3+;M<O+P(/4>>>>**=+=?O?TUUU
 %*d.QQ ^8 b#<AVK b $ 1 1$2O2T U U U U!%!>!C|!S b $ 7 78U8` a a a>K>Q;8@8HI\8]5 5=4D]EX4YD11!!%*"2H====[66 E	$%+Id:d E	$.3jD+6;jD$UZ]32 @*,T-PQ<6) @%%gl3333\\1 @++G,>???  ,,,,[55 9	$).D&$$UZ0000[99 6	$).D&&[33 4	$ 5ejmDM"Z-N+k"/4Dk #/:k
 %16,FFFF'5'B'M k kO&,0MM //+)6A/BWX   ',0MM K2 L 2243JKKK8G8M52?2L2WXgXm2n/11$2IJJJ /<.H.STcTi.jD++""
    
 K66	${99	$ {77	$ {66		$ & @&&t'>???!!%*---)-D&&[,, 	$?[0[ 	$_d_jnu_u 	$  $U###"r?   c              #    K   | j         }|st          d          	 |D ]}|                     |           |V  np# t          j        t
          j        f$ r/}|                                  |                     |            d }~wt          $ r}|                     |            d }~ww xY w	 | 
                                 d S # | 
                                 w xY wNzStream has not been started yet)r:   rD   r   httpxTimeoutExceptionasyncioTimeoutErrorr   r   r   r   r<   r@   r   excs       r=   r8   z AssistantEventHandler.__stream__  s      	B@AAA	  $$U+++ &(<= 	 	 	OOc""" 	 	 	c"""	 KKMMMMMDKKMMMMs2   ; C B(*B  B(B##B((C CNr)   r*   )r@   rA   r)   r*   r)   r   )r)   rJ   r)   rP   r)   rU   r)   rY   r)   r]   r)   r   r)   rl   r)   ry   )r)   r   r   r   r)   r*   r   r"   r)   r*   r   r$   r   r"   r)   r*   r   r#   r)   r*   r   r%   r   r#   r)   r*   r   r   r)   r*   r   r   r)   r*   r   r   r   r   r)   r*   r   r   r)   r*   r   r   r   r   r)   r*   r   r   r)   r*   )&__name__
__module____qualname____annotations__r>   rF   rI   rO   propertyrS   rW   r[   r_   rc   rg   rk   rx   r   r7   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8   rq   r?   r=   r'   r'      s,        
B B B B    ) ) ) )    # # # X# " " " X" E E E XE / / / X/" " " "$ $ $ $" " " "E E E EJ J J J3 3 3 3   A A A A@ @ @ @   6B B B BA A A AK K K KK K K KC C C C- - - -? ? ? ?   2A A A AJ J J J   K K K KJ J J JN# N# N# N#`     r?   r'   AssistantEventHandlerT)boundc                  *    e Zd ZdZddZdd	ZddZdS )AssistantStreamManagerzWrapper over AssistantStreamEventHandler that is returned by `.stream()`
    so that a context manager can be used.

    ```py
    with client.threads.create_and_run_stream(...) as stream:
        for event in stream:
            ...
    ```
    api_request*Callable[[], Stream[AssistantStreamEvent]]event_handlerr  r)   r*   c               0    d | _         || _        || _        d S r,   )_AssistantStreamManager__stream&_AssistantStreamManager__event_handler$_AssistantStreamManager__api_requestr<   r  r  s      r=   r>   zAssistantStreamManager.__init__  s"     >B,(r?   c                    |                                  | _        | j                            | j                   | j        S r,   )r  r  r  rF   r;   s    r=   	__enter__z AssistantStreamManager.__enter__  s7    **,,""4=111##r?   exc_typetype[BaseException] | Noner   BaseException | Noneexc_tbTracebackType | Nonec                J    | j         | j                                          d S d S r,   )r  rc   r<   r  r   r  s       r=   __exit__zAssistantStreamManager.__exit__  rd   r?   N)r  r  r  r  r)   r*   )r)   r  r  r  r   r  r  r  r)   r*   )r  r  r  __doc__r>   r  r  rq   r?   r=   r  r    sZ         ) ) ) )$ $ $ $
" " " " " "r?   r  c                  d   e Zd ZU ded<   	 dFdZdGdZdHd
ZdIdZdFdZe	dJd            Z
e	dKd            Ze	dLd            Ze	dMd            ZdFdZdNdZdOdZdPdZdQdZdFdZdRd!ZdSd$ZdTd(ZdSd)ZdUd,ZdVd.ZdUd/ZdWd2ZdFd3ZdXd6ZdYd8ZdXd9ZdZd<Z d[d>Z!dZd?Z"d\dBZ#dRdCZ$dIdDZ%dES )]AsyncAssistantEventHandlerzAsyncIterable[str]r(   r)   r*   c                   d | _         d | _        d | _        d | _        d | _        d | _        d | _        i | _        i | _        d | _	        | 
                                | _        |                                 | _        d | _        d S r,   )r-   r.   r/   r0   r1   0_AsyncAssistantEventHandler__current_run_step_id(_AsyncAssistantEventHandler__current_run/_AsyncAssistantEventHandler__run_step_snapshots._AsyncAssistantEventHandler__message_snapshots5_AsyncAssistantEventHandler__current_message_snapshotr7   r(   r8   r9   #_AsyncAssistantEventHandler__streamr;   s    r=   r>   z#AsyncAssistantEventHandler.__init__  s    ;?:>+?C%48%3715")-8:!79 :>'//11**BFr?   r@   !AsyncStream[AssistantStreamEvent]c                @    | j         rt          d          || _         d S rC   )r(  rD   rE   s     r=   rF   z AsyncAssistantEventHandler._init  rG   r?   r   c                D   K   | j                                          d {V S r,   )r9   	__anext__r;   s    r=   r,  z$AsyncAssistantEventHandler.__anext__  s,      ^--/////////r?   #AsyncIterator[AssistantStreamEvent]c               4   K   | j         2 3 d {V }|W V  6 d S r,   rL   rM   s     r=   	__aiter__z$AsyncAssistantEventHandler.__aiter__  sF      . 	 	 	 	 	 	 	$JJJJJ )..s   c                Z   K   | j         r!| j                                          d{V  dS dS rb   )r(  rc   r;   s    r=   rc   z AsyncAssistantEventHandler.close  H       = 	(-%%'''''''''''	( 	(r?   rP   c                    | j         S r,   rR   r;   s    r=   rS   z(AsyncAssistantEventHandler.current_event   rT   r?   rU   c                    | j         S r,   )r$  r;   s    r=   rW   z&AsyncAssistantEventHandler.current_run  rX   r?   rY   c                8    | j         sd S | j        | j                  S r,   )r#  r%  r;   s    r=   r[   z4AsyncAssistantEventHandler.current_run_step_snapshot  r\   r?   r]   c                    | j         S r,   )r'  r;   s    r=   r_   z3AsyncAssistantEventHandler.current_message_snapshot  r`   r?   c                4   K   t          |            d{V  dS rf   )r   r;   s    r=   rg   z%AsyncAssistantEventHandler.until_done  s,      $T***********r?   r   c                t   K   |                                   d{V  | j        st          d          | j        S )ri   Nrj   )rg   r$  rD   r;   s    r=   rk   z(AsyncAssistantEventHandler.get_final_run  sK      oo! 	<:;;;!!r?   rl   c                   K   |                                   d{V  | j        st          d          d | j                                        D             S )rn   Nro   c                    g | ]}|S rq   rq   rr   s     r=   ru   zBAsyncAssistantEventHandler.get_final_run_steps.<locals>.<listcomp>'  rv   r?   )rg   r%  rD   rw   r;   s    r=   rx   z.AsyncAssistantEventHandler.get_final_run_steps   se      oo( 	53444DD!:!A!A!C!CDDDDr?   ry   c                   K   |                                   d{V  | j        st          d          d | j                                        D             S )r{   Nr|   c                    g | ]}|S rq   rq   r~   s     r=   ru   zAAsyncAssistantEventHandler.get_final_messages.<locals>.<listcomp>0  r   r?   )rg   r&  rD   rw   r;   s    r=   r   z-AsyncAssistantEventHandler.get_final_messages)  se      oo' 	42333IIt'?'F'F'H'HIIIIr?   AsyncIterator[str]c                  K   | 2 3 d {V }|j         dk    r|j        j        j        pg D ]/}|j        dk    r"|j        r|j        j        r|j        j        W V  0W6 d S r   r   r   s      r=   r7   z*AsyncAssistantEventHandler.__text_deltas__2  s       	3 	3 	3 	3 	3 	3 	3%{44 !&!1!9!?R 3 3 %/ 3M4F 3=K]Kc 3',222223	  44s   Ac                
   K   dS r   rq   r;   s    r=   r   z!AsyncAssistantEventHandler.on_end=  
        r?   r   c                
   K   dS r   rq   r   s     r=   r   z#AsyncAssistantEventHandler.on_eventD  r?  r?   r   r"   c                
   K   dS r   rq   r   s     r=   r   z.AsyncAssistantEventHandler.on_run_step_createdG  r?  r?   r   r$   r   c                
   K   dS r   rq   r   s      r=   r   z,AsyncAssistantEventHandler.on_run_step_deltaJ  r?  r?   c                
   K   dS r   rq   r   s     r=   r   z+AsyncAssistantEventHandler.on_run_step_donee  r?  r?   r   r#   c                
   K   dS r   rq   r   s     r=   r   z/AsyncAssistantEventHandler.on_tool_call_createdh  r?  r?   r%   c                
   K   dS r   rq   r   s      r=   r   z-AsyncAssistantEventHandler.on_tool_call_deltak  r?  r?   c                
   K   dS r   rq   r   s     r=   r   z,AsyncAssistantEventHandler.on_tool_call_donen  r?  r?   r   r   c                
   K   dS r   rq   r   s     r=   r   z'AsyncAssistantEventHandler.on_exceptionq  r?  r?   c                
   K   dS r   rq   r;   s    r=   r   z%AsyncAssistantEventHandler.on_timeoutt  r?  r?   r   r   c                
   K   dS r   rq   r   s     r=   r   z-AsyncAssistantEventHandler.on_message_createdw  r?  r?   r   c                
   K   dS r   rq   r   s      r=   r   z+AsyncAssistantEventHandler.on_message_deltaz  r?  r?   c                
   K   dS r   rq   r   s     r=   r   z*AsyncAssistantEventHandler.on_message_done  r?  r?   r   r   c                
   K   dS r   rq   r   s     r=   r   z*AsyncAssistantEventHandler.on_text_created  r?  r?   r   c                
   K   dS r   rq   r   s      r=   r   z(AsyncAssistantEventHandler.on_text_delta  r?  r?   c                
   K   dS r   rq   r   s     r=   r   z'AsyncAssistantEventHandler.on_text_done  r?  r?   r   r   c                
   K   dS r   rq   r   s     r=   r   z-AsyncAssistantEventHandler.on_image_file_done  r?  r?   c                  K   || _         |                     |           d {V  t          || j                  \  | _        }| j        | j        | j        | j        j        <   t          || j                   |D ]M}| j        J | j        j        |j	                 }|j
        dk    r |                     |j                   d {V  N|j        dk    s,|j        dk    s!|j        dk    s|j        dk    s|j        dk    r5|j        | _        | j        r |                     | j                   d {V  n2|j        d	k    s!|j        d
k    s|j        dk    s|j        dk    r|j        | _        n|j        dk    r"|                     |j                   d {V  n|j        dk    rf| j        }|J |j        j        }|j        |j        D ]}|j
        dk    rL|j        rE|j        |j	                 }|j
        dk    sJ |                     |j        |j                   d {V  |j	        | j        k    r| j        k| j        j
        dk    r&|                     | j        j                   d {V  n5| j        j
        dk    r%|                     | j        j                   d {V  |j	        | _        |j        |j	                 | _        |j        |j	                 | _        |                     |j        j        |           d {V  nY|j        dk    s|j        dk    r|j        | _        |j        | j        |j        j        <   | j        n|j        j        | j                 }|j
        dk    r!|                     |j                   d {V  n+|j
        dk    r |                     |j                   d {V  |                     |j                   d {V  n|j        dk    r3|j        j        | _        |                     |j                   d {V  nI|j        dk    r|j        j        | _        n+|j        dk    rl| j        |j        j                 }	|j        j        }
|
j        r|
j        j
        dk    r	|
j        j        |	j        j
        dk    sJ |
j        j        D ]}|j	        | j         k    r1| !                    ||	j        j        |j	                            d {V  |j	        | j         k    ro| j         |                     | j                   d {V  |j	        | _         |	j        j        |j	                 | _        | "                    | j                   d {V  |	j        j        |j	                 | _        | #                    |j        j        |	           d {V  n|j        dk    s!|j        dk    s|j        dk    s|j        dk    rO| j        r |                     | j                   d {V  | $                    |j                   d {V  d | _        n8|j        dk    s|j        dk    s|j        dk    rntJ          rtM          |           d | _         d S r   )'r-   r   r   r'  r&  r   r   r%  r   r   r   r   r   r   r   r$  r1   r   r   r   r   r.   r/   r   r   r   r   r   r#  r   r   r   r0   r   r   r   r   r   r   r   s               r=   r   z*AsyncAssistantEventHandler._emit_sse_event  sM     #mmE"""""""""7G%)%D8
 8
 8
4' * 	kKOKjD$T%D%GH#8	
 	
 	
 	

 ) 	7 	7M2>>>3;M<OPEzV# 7**5:666666666 K11u	${44u	$ {22u	$ {11	u	$
 {::u	$ "'D& F,,T-DEEEEEEEEEK//k	${66k	$ {55k	$ {11	k	$ "'D[44 d	$))%*5555555555[22 b	$6H'''!J,M$ Z%2%: Z ZM$)V3 \8J \+3+;M<O+P(/4>>>>"001CEUEZ[[[[[[[[[
 %*d.QQ ^8 h#<AVK h&*&7&78U8Z&[&[ [ [ [ [ [ [ [ [!%!>!C|!S h&*&=&=d>[>f&g&g g g g g g g g>K>Q;8@8HI\8]5 5=4D]EX4YD11''
(8(CCCCCCCCCC[66 E	$%+Id:d E	$.3jD+6;jD$UZ]32 F*,T-PQ<6) F++GL9999999999\\1 F11'2DEEEEEEEEE&&uz2222222222[55 9	$).D&**5:6666666666[99 6	$).D&&[33 4	$ 5ejmDM"Z-N+k"/4Dk #/:k
 %16,FFFF'5'B'M k kO&,0MM "55+)6A/BWX         ',0MM Q2 R"&"8"89P"Q"QQQQQQQQ8G8M52?2L2WXgXm2n/"778OPPPPPPPPP /<.H.STcTi.jD++((
          
 K66	${99	$ {77	$ {66		$ & F,,T-DEEEEEEEEE''
333333333)-D&&[,, 	$?[0[ 	$_d_jnu_u 	$  $U###"r?   c                 K   | j         }|st          d          	 |2 3 d {V }|                     |           d {V  |W V  (6 n# t          j        t
          j        f$ r;}|                                  d {V  |                     |           d {V   d }~wt          $ r!}|                     |           d {V   d }~ww xY w	 | 
                                 d {V  d S # | 
                                 d {V  w xY wr   )r(  rD   r   r   r   r   r   r   r   r   r   r   s       r=   r8   z%AsyncAssistantEventHandler.__stream__=  s      	B@AAA	 %       e**5111111111  &v &(<= 	 	 	//###########C((((((((( 	 	 	##C(((((((((	  & ++--$++--s?   A A#A C' C#6BC&CCC' 'DNr   )r@   r)  r)   r*   r   )r)   r-  r   r   r   r   r   r   r   )r)   r<  r   r   r   r   r   r   r   r   r   r  r  )&r  r  r  r  r>   rF   r,  r/  rc   r  rS   rW   r[   r_   rg   rk   rx   r   r7   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8   rq   r?   r=   r!  r!    s,        ####
G G G G    0 0 0 0   ( ( ( ( # # # X# " " " X" E E E XE / / / X/+ + + +" " " "E E E EJ J J J3 3 3 3   A A A A@ @ @ @   6B B B BA A A AK K K KK K K KC C C C- - - -? ? ? ?   2A A A AJ J J J   K K K KJ J J JN# N# N# N#`           r?   r!  AsyncAssistantEventHandlerTc                  *    e Zd ZdZddZdd	ZddZdS )AsyncAssistantStreamManagera>  Wrapper over AsyncAssistantStreamEventHandler that is returned by `.stream()`
    so that an async context manager can be used without `await`ing the
    original client call.

    ```py
    async with client.threads.create_and_run_stream(...) as stream:
        async for event in stream:
            ...
    ```
    r  ,Awaitable[AsyncStream[AssistantStreamEvent]]r  rR  r)   r*   c               0    d | _         || _        || _        d S r,   )$_AsyncAssistantStreamManager__stream+_AsyncAssistantStreamManager__event_handler)_AsyncAssistantStreamManager__api_requestr  s      r=   r>   z$AsyncAssistantStreamManager.__init__a  s#     CG,(r?   c                v   K   | j          d {V | _        | j                            | j                   | j        S r,   )rY  rW  rX  rF   r;   s    r=   
__aenter__z&AsyncAssistantStreamManager.__aenter__k  sD      "0000000""4=111##r?   r  r  r   r  r  r  c                Z   K   | j         !| j                                          d {V  d S d S r,   )rW  rc   r  s       r=   	__aexit__z%AsyncAssistantStreamManager.__aexit__p  r1  r?   N)r  rU  r  rR  r)   r*   )r)   rR  r  )r  r  r  r  r>   r[  r]  rq   r?   r=   rT  rT  U  sZ        	 	) ) ) )$ $ $ $
( ( ( ( ( (r?   rT  r   r   r   dict[str, RunStep]r)   r*   c           	        | j         dk    r| j        || j        j        <   d S | j         dk    r| j        }||j                 }|j        rt	          t          d|                    d                    t          d|j                            d                              }t          t          t          t          |                    ||j        <   d S )Nr   r   dict[object, object]Texclude_unsettype_r   )	r   r   r   r   accumulate_deltar   
model_dumpr"   r   )r   r   r   r   mergeds        r=   r   r   z  s    
 {// ,1J5:=){-- iz%dg.: 	i%*''d';;  *J)))== 	 	F /37NQX`f<g<g<g.h.hx{+4r?   r_   r]   0tuple[Message | None, list[MessageContentDelta]]c                F   | j         dk    r	| j        g fS g }| j         dk    r|g fS |st          d          | j        }|j        j        rT|j        j        D ]F}	 |j        |j                 }t          t          d|                    d                    t          d|                    d                              }t          t          t          t          t          t                    |                    |j        |j        <   # t          $ r |j                            |j        t          t          t          t          t          t                    |                    d                                         |                    |           Y Dw xY w||fS )zIReturns a tuple of message snapshot and newly created text message deltasr   r   z5Encountered a message delta with no previous snapshotr`  Tra  rc  )r   r   rD   r   r   r   re  r   rf  r    r   r   
IndexErrorinsertappend)r   r_   r   r   r   r   rg  s          r=   r   r     s    {.. z2~-/K{,, ,'++# TRSSS:Dz #!Z/ "	 "	M!089LM *.((t(<<  .%00t0DD 	 	 IM"""377$  I I(01DEE1  2 2 2(077!'&&"&sN";";"/":":":"N"N   
 
 
 ""=111112B $[00s   DBFFaccr`  r   c                8   |                                 D ]\  }}|| vr|| |<   | |         }||| |<    |dk    s|dk    r|| |<   2t          |t                    rt          |t                    r||z  }nt          |t          t          f          r#t          |t          t          f          r||z  }n\t          |          r!t          |          rt          ||          }n,t          |          rt          |          rt          d |D                       r|	                    |           "|D ]}t          |          st          d|           	 |d         }n%# t          $ r}t          d|           |d }~ww xY wt          |t                    st          d|           	 ||         }t          |          st          d          t          ||          ||<   # t          $ r |                    ||           Y w xY w|| |<   | S )Nr   r   c              3  Z   K   | ]&}t          |t          t          t          f          V  'd S r,   )
isinstancestrintfloat)rs   xs     r=   	<genexpr>z#accumulate_delta.<locals>.<genexpr>  s3      GG:a#sE!233GGGGGGr?   z1Unexpected list delta entry is not a dictionary: z2Expected list delta entry to have an `index` key; z>Unexpected, list delta entry `index` value is not an integer; znot handled yet)itemsrp  rq  rr  rs  r   re  r   allextend	TypeErrorKeyErrorrD   rj  rk  )	rm  r   keydelta_value	acc_valuedelta_entryr   r   	acc_entrys	            r=   re  re    s   !KKMM 7 7[c> 	"CHH	 	"CH '> 	SF] 	"CHi%% !	P*[#*F*F !	P$II	C<00 	PZcSX\5Z5Z 	P$IIY 	PGK$8$8 	P(K@@IIY 	PGK$8$8 	P GGYGGGGG   ---* P P{++ g#$eXc$e$effft'0EE t t t&'i\g'i'ijjpsst "%-- n#$lej$l$lmmmP )% 0I #9-- ;'(9:::'7	;'O'OIe$$ " 9 9 9$$UK888889 CJs*   E&&
F0FF3G-- HH)r   r   r   r^  r)   r*   )r   r   r_   r]   r)   rh  )rm  r`  r   r`  r)   r`  )7
__future__r   r   typesr   typingr   r   r   r   r	   r
   r   r   typing_extensionsr   r   r   r   r   _utilsr   r   r   r   _modelsr   
_streamingr   r   
types.betar   types.beta.threadsr   r   r   r   r   r   r    r!   types.beta.threads.runsr"   r#   r$   r%   r'   r  r  r!  rR  rT  r   r   re  rq   r?   r=   <module>r     s   " " " " " "        [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ S S S S S S S S S S S S  U U U U U U U U U U U U % % % % % % - - - - - - - - . . . . . .	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 V U U U U U U U U U U UE E E E E E E EP !!9AVWWW !" !" !" !" !"W%;< !" !" !"HE  E  E  E  E  E  E  E P &g&CKefff "( "( "( "( "('*E"F "( "( "(J   :71 71 71 71t: : : : : :r?   