
    "hjS                       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mZmZmZmZ ddlmZ dd	l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/m0Z0 ddZ1 G d d      Z2 e	de2      Z3 G d dee3         Z4 G d d      Z5 e	de5      Z6 G d dee6         Z7	 	 	 	 	 	 ddZ8	 	 	 	 	 	 d dZ9d!dZ:y)"    )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)
model_dump)timeout_exceptions)construct_type)StreamAsyncStream)AssistantStreamEvent)RunTextMessage	ImageFile	TextDeltaMessageDeltaMessageContentMessageContentDelta)RunStepToolCallRunStepDeltaToolCallDeltac                 <    g t               t        j                  S N)r   asyncioTimeoutError     ^/root/.hermes/SkillClaw/.venv/lib/python3.12/site-packages/openai/lib/streaming/_assistants.py_timeout_exceptionsr/      s    8!87#7#788r-   c                  J   e Zd ZU ded<   	 d%dZd&dZd'dZd(dZed)d       Z	ed*d       Z
ed+d	       Zed,d
       Zd%dZd%dZd-dZd.dZd/dZd0dZd%dZd1dZd2dZd3dZd2dZd4dZd5dZd4dZd6dZd%dZd7dZd8dZd7dZd9dZ d:dZ!d9d Z"d;d!Z#d1d"Z$d(d#Z%y$)<AssistantEventHandlerzIterable[str]text_deltasc                    d | _         d | _        d | _        d | _        d | _        d | _        d | _        i | _        i | _        d | _	        | j                         | _        | j                         | _        d | _        y r)   )_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__r2   
__stream__	_iterator_AssistantEventHandler__streamselfs    r.   __init__zAssistantEventHandler.__init__-   sx    ;?:>+?C%48%3715")-8:!79 :>'//1*=Ar-   c                @    | j                   rt        d      || _         y NzyA single event handler cannot be shared between multiple streams; You will need to construct a new event handler instance)rA   RuntimeErrorrC   streams     r.   _initzAssistantEventHandler._init=   %    == L  r-   c                6    | j                   j                         S r)   )r@   __next__rB   s    r.   rM   zAssistantEventHandler.__next__E   s    ~~&&((r-   c              #  6   K   | j                   D ]  }|  y wr)   r@   rC   items     r.   __iter__zAssistantEventHandler.__iter__H   s     NN 	DJ	s   c                    | j                   S r)   r4   rB   s    r.   current_eventz#AssistantEventHandler.current_eventL       """r-   c                    | j                   S r)   )r:   rB   s    r.   current_runz!AssistantEventHandler.current_runP       !!!r-   c                N    | j                   sy | j                  | j                      S r)   )r9   r;   rB   s    r.   current_run_step_snapshotz/AssistantEventHandler.current_run_step_snapshotT   %    ))(()C)CDDr-   c                    | j                   S r)   )r=   rB   s    r.   current_message_snapshotz.AssistantEventHandler.current_message_snapshot[       ...r-   c                R    | j                   r| j                   j                          yyz~
        Close the response and release the connection.

        Automatically called when the context manager exits.
        N)rA   closerB   s    r.   rb   zAssistantEventHandler.close_   s      ==MM! r-   c                    t        |        yz(Waits until the stream has been consumedN)r   rB   s    r.   
until_donez AssistantEventHandler.until_doneh   s
    d#r-   c                h    | j                          | j                  st        d      | j                  S )BWait for the stream to finish and returns the completed Run objectNo final run object found)re   r:   rG   rB   s    r.   get_final_runz#AssistantEventHandler.get_final_runl   s-    !!:;;!!!r-   c                    | j                          | j                  st        d      | j                  j                         D cg c]  }| c}S c c}w )EWait for the stream to finish and returns the steps taken in this runNo run steps found)re   r;   rG   valuesrC   steps     r.   get_final_run_stepsz)AssistantEventHandler.get_final_run_stepsu   sD    ((344!%!:!:!A!A!CDDDD   	Ac                    | j                          | j                  st        d      | j                  j                         D cg c]  }| c}S c c}w )JWait for the stream to finish and returns the messages emitted in this runNo messages found)re   r<   rG   rm   rC   messages     r.   get_final_messagesz(AssistantEventHandler.get_final_messages~   sD    ''233'+'?'?'F'F'HIGIIIrq   c              #  $  K   | D ]  }|j                   dk7  r|j                  j                  j                  xs g D ]N  }|j                  dk(  s|j
                  s |j
                  j                  s7|j
                  j                   P  y wNthread.message.deltatexteventdatadeltacontenttyper{   valuerC   r}   content_deltas      r.   r>   z%AssistantEventHandler.__text_deltas__   s      	3E{{44!&!1!1!9!9!?R 3 %%/M4F4F=K]K]KcKc',,2223		3s   ABBB3Bc                     yzFires when the stream has finished.

        This happens if the stream is read to completion
        or if an exception occurs during iteration.
        Nr,   rB   s    r.   on_endzAssistantEventHandler.on_end       r-   c                     yz2Callback that is fired for every Server-Sent-EventNr,   rC   r}   s     r.   on_eventzAssistantEventHandler.on_event   r   r-   c                     yz1Callback that is fired when a run step is createdNr,   rC   run_steps     r.   on_run_step_createdz)AssistantEventHandler.on_run_step_created   r   r-   c                     y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
            )
        ],
        Nr,   rC   r   snapshots      r.   on_run_step_deltaz'AssistantEventHandler.on_run_step_delta   r   r-   c                     yz3Callback that is fired when a run step is completedNr,   r   s     r.   on_run_step_donez&AssistantEventHandler.on_run_step_done   r   r-   c                     yz2Callback that is fired when a tool call is createdNr,   rC   	tool_calls     r.   on_tool_call_createdz*AssistantEventHandler.on_tool_call_created   r   r-   c                     yz<Callback that is fired when a tool call delta is encounteredNr,   r   s      r.   on_tool_call_deltaz(AssistantEventHandler.on_tool_call_delta   r   r-   c                     yr   r,   r   s     r.   on_tool_call_donez'AssistantEventHandler.on_tool_call_done   r   r-   c                     yz4Fired whenever an exception happens during streamingNr,   rC   	exceptions     r.   on_exceptionz"AssistantEventHandler.on_exception   r   r-   c                     yzFires if the request times outNr,   rB   s    r.   
on_timeoutz AssistantEventHandler.on_timeout   r   r-   c                     yz0Callback that is fired when a message is createdNr,   ru   s     r.   on_message_createdz(AssistantEventHandler.on_message_created   r   r-   c                     y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'
            ),
        )
        Nr,   r   s      r.   on_message_deltaz&AssistantEventHandler.on_message_delta   r   r-   c                     yz2Callback that is fired when a message is completedNr,   ru   s     r.   on_message_donez%AssistantEventHandler.on_message_done   r   r-   c                     yz;Callback that is fired when a text content block is createdNr,   rC   r{   s     r.   on_text_createdz%AssistantEventHandler.on_text_created   r   r-   c                     y)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 equation")),
        Nr,   r   s      r.   on_text_deltaz#AssistantEventHandler.on_text_delta   r   r-   c                     yz<Callback that is fired when a text content block is finishedNr,   r   s     r.   on_text_donez"AssistantEventHandler.on_text_done   r   r-   c                     yz;Callback that is fired when an image file block is finishedNr,   rC   
image_files     r.   on_image_file_donez(AssistantEventHandler.on_image_file_done   r   r-   c                |   || _         | j                  |       t        || j                        \  | _        }| j                  -| j                  | j                  | j                  j
                  <   t        || j                         |D ]^  }| j                  J | j                  j                  |j                     }|j                  dk(  sD| j                  |j                         ` |j                  dk(  sK|j                  dk(  s<|j                  dk(  s-|j                  dk(  s|j                  dk(  s|j                  d	k(  rA|j                  | _        | j                   r| j#                  | j                          d | _         y |j                  d
k(  s-|j                  dk(  s|j                  dk(  s|j                  dk(  r|j                  | _        d | _         y |j                  dk(  r#| j%                  |j                         d | _         y |j                  dk(  r| j                  }|J |j                  j&                  }|j                  m|j                  D ]]  }|j                  dk(  r\|j                  rP|j                  |j                     }|j                  dk(  sJ | j)                  |j                  |j                         |j                  | j*                  k7  r| j,                  }| j,                  j                  dk(  r&| j/                  | j,                  j                         n>| j,                  j                  dk(  r%| j1                  | j,                  j2                         |j                  | _        |j                  |j                     | _        |j                  |j                     | _        ` | j5                  |j                  j&                  |       d | _         y |j                  dk(  s|j                  dk(  r|j                  | _        |j                  | j                  |j                  j
                  <   | j*                  x|j                  j                  | j*                     }|j                  dk(  r| j/                  |j                         n*|j                  dk(  r| j1                  |j2                         | j7                  |j                         d | _         y |j                  dk(  r>|j                  j
                  | _        | j;                  |j                         d | _         y |j                  dk(  r#|j                  j
                  | _        d | _         y |j                  dk(  r| j                  |j                  j
                     }	|j                  j&                  }
|
j<                  rq|
j<                  j                  dk(  rW|
j<                  j>                  @|	j<                  j                  dk(  sJ |
j<                  j>                  D ]  }|j                  | j@                  k(  r3| jC                  ||	j<                  j>                  |j                            |j                  | j@                  k7  r{| j                   | j#                  | j                          |j                  | _         |	j<                  j>                  |j                     | _        | jE                  | j                          |	j<                  j>                  |j                     | _         | jG                  |j                  j&                  |	       d | _         y |j                  dk(  s-|j                  dk(  s|j                  dk(  s|j                  dk(  rQ| j                   r| j#                  | j                          | jI                  |j                         d | _        d | _         y |j                  dk(  s|j                  dk(  s|j                  dk(  r		 d | _         y tJ        rtM        |       d | _         y 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.incompletezthread.run.createdzthread.run.in_progresszthread.run.cancellingzthread.run.queuedthread.message.createdrz   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)'r4   r   accumulate_eventr=   r<   idaccumulate_run_stepr;   r   indexr   r   r{   r}   r~   r:   r8   r   r   r   r   r5   r6   r   r   r   r   r   r9   r   step_detailsr   r7   r   r   r   r   r   r   rC   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%D8
4' **6KOKjKjD$$T%D%D%G%GH#88	

 ) 	1M22>>>33;;M<O<OPEzzV#$$UZZ0	1 KK11{{44{{22{{11{{::{{55!&D&&&&t'>'>?\ #Y KK//{{66{{55{{11!&DN #M [[44##EJJ/J #I [[2266H'''!JJ,,M$$0%2%:%: ZM$))V38J8J+3+;+;M<O<O+P(/44>>>**=+=+=?O?T?TU
 %**d.Q.QQ88D#<<AAVK $ 1 1$2O2O2T2T U!%!>!>!C!C|!S $ 7 78U8U8`8` a>K>Q>Q;8@8H8HI\I\8]5 5=4D4D]EXEX4YD1)Z, !!%**"2"2H=P #O [[66%++Id:d.3jjD+6;jjD$$UZZ]]322>**,,T-P-PQ<<6)%%gll3\\\1++G,>,>?  ,x #w [[55).D&$$UZZ0r #q [[99).D&n #m [[33 55ejjmmDM"ZZ--N++"//44D"//::F$1166,FFF'5'B'B'M'M kO&,,0M0MM//+)66AA/BWBWX ',,0M0MM22> 2243J3JK8G8M8M52?2L2L2W2WXgXmXm2n/11$2I2IJ /<.H.H.S.STcTiTi.jD+'k* ""

  . #% KK66{{99{{77{{66&&&&t'>'>?!!%**-)-D& # [[,,?[0[_d_j_jnu_u # U#"r-   c              #  n  K   | j                   }|st        d      	 |D ]  }| j                  |       |  	 | j                          y # t               $ r'}| j	                          | j                  |        d }~wt        $ r}| j                  |        d }~ww xY w# | j                          w xY wwNzStream has not been started yet)rA   rG   r   r/   r   r   	Exceptionr   rC   rI   r}   excs       r.   r?   z AssistantEventHandler.__stream__  s     @AA	 $$U+ KKM #$ 	OOc" 	c"	 KKMs?   B5A B5B"A::BBBB   B22B5NreturnNone)rI   zStream[AssistantStreamEvent]r   r   r   r   )r   zIterator[AssistantStreamEvent]r   zAssistantStreamEvent | Noner   z
Run | Noner   zRunStep | Noner   Message | Noner   r   r   zlist[RunStep]r   zlist[Message])r   zIterator[str]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   rv   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__rD   rJ   rM   rR   propertyrU   rX   r[   r^   rb   re   ri   rp   rw   r>   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r?   r,   r-   r.   r1   r1      s    
B ) # # " " E E / /"$"EJ3A@6BAKKC-?2AJKJO#br-   r1   AssistantEventHandlerT)boundc                  D    e Zd ZdZ	 	 	 	 	 	 ddZddZ	 	 	 	 	 	 	 	 ddZy)	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:
            ...
    ```
    c               .    d | _         || _        || _        y r)   )_AssistantStreamManager__stream&_AssistantStreamManager__event_handler$_AssistantStreamManager__api_requestrC   api_requestevent_handlers      r.   rD   zAssistantStreamManager.__init__  s     >B,(r-   c                    | j                         | _        | j                  j                  | j                         | j                  S r)   )r  r   r   rJ   rB   s    r.   	__enter__z AssistantStreamManager.__enter__  s6    **,""4==1###r-   c                R    | j                   | j                   j                          y y r)   )r   rb   rC   exc_typer   exc_tbs       r.   __exit__zAssistantStreamManager.__exit__  s#     ==$MM! %r-   N)r  z*Callable[[], Stream[AssistantStreamEvent]]r  r   r   r   )r   r   r	  ztype[BaseException] | Noner   zBaseException | Noner
  zTracebackType | Noner   r   )r   r   r   __doc__rD   r  r  r,   r-   r.   r   r     sX    )?) .	)
 
)$
"," "" %	"
 
"r-   r   c                  J   e Zd ZU ded<   	 d%dZd&dZd'dZd(dZd%dZe	d)d       Z
e	d*d	       Ze	d+d
       Ze	d,d       Zd%dZd-dZd.dZd/dZd0dZd%dZd1dZd2dZd3dZd2dZd4dZd5dZd4dZd6dZd%dZd7dZd8dZd7dZd9dZ d:dZ!d9d Z"d;d!Z#d1d"Z$d(d#Z%y$)<AsyncAssistantEventHandlerzAsyncIterable[str]r2   c                    d | _         d | _        d | _        d | _        d | _        d | _        d | _        i | _        i | _        d | _	        | j                         | _        | j                         | _        d | _        y r)   )r4   r5   r6   r7   r8   0_AsyncAssistantEventHandler__current_run_step_id(_AsyncAssistantEventHandler__current_run/_AsyncAssistantEventHandler__run_step_snapshots._AsyncAssistantEventHandler__message_snapshots5_AsyncAssistantEventHandler__current_message_snapshotr>   r2   r?   r@   #_AsyncAssistantEventHandler__streamrB   s    r.   rD   z#AsyncAssistantEventHandler.__init__  sx    ;?:>+?C%48%3715")-8:!79 :>'//1*BFr-   c                @    | j                   rt        d      || _         y rF   )r  rG   rH   s     r.   rJ   z AsyncAssistantEventHandler._init  rK   r-   c                R   K   | j                   j                          d {   S 7 wr)   )r@   	__anext__rB   s    r.   r  z$AsyncAssistantEventHandler.__anext__  s     ^^--////s   '%'c               H   K   | j                   2 3 d {   }| 7 
6 y wr)   rO   rP   s     r.   	__aiter__z$AsyncAssistantEventHandler.__aiter__  s&     .. 	 	$J	.s   "  " "c                n   K   | j                   r#| j                   j                          d{    yy7 wra   )r  rb   rB   s    r.   rb   z AsyncAssistantEventHandler.close  s-      ==--%%''' '   *535c                    | j                   S r)   rT   rB   s    r.   rU   z(AsyncAssistantEventHandler.current_event  rV   r-   c                    | j                   S r)   )r  rB   s    r.   rX   z&AsyncAssistantEventHandler.current_run	  rY   r-   c                N    | j                   sy | j                  | j                      S r)   )r  r  rB   s    r.   r[   z4AsyncAssistantEventHandler.current_run_step_snapshot  r\   r-   c                    | j                   S r)   )r  rB   s    r.   r^   z3AsyncAssistantEventHandler.current_message_snapshot  r_   r-   c                6   K   t        |        d{    y7 wrd   )r   rB   s    r.   re   z%AsyncAssistantEventHandler.until_done  s     $T***s   c                   K   | j                          d{    | j                  st        d      | j                  S 7 'w)rg   Nrh   )re   r  rG   rB   s    r.   ri   z(AsyncAssistantEventHandler.get_final_run  s<     oo!!:;;!!! 	 s   A >(A c                   K   | j                          d{    | j                  st        d      | j                  j                         D cg c]  }| c}S 7 Cc c}w w)rk   Nrl   )re   r  rG   rm   rn   s     r.   rp   z.AsyncAssistantEventHandler.get_final_run_steps%  sV     oo((344!%!:!:!A!A!CDDD 	 
 E!   A!A7A!	AA!A!c                   K   | j                          d{    | j                  st        d      | j                  j                         D cg c]  }| c}S 7 Cc c}w w)rs   Nrt   )re   r  rG   rm   ru   s     r.   rw   z-AsyncAssistantEventHandler.get_final_messages.  sV     oo''233'+'?'?'F'F'HIGII 	 
 Jr%  c               6  K   | 2 3 d {   }|j                   dk7  r|j                  j                  j                  xs g D ]O  }|j                  dk(  s|j
                  s |j
                  j                  s7|j
                  j                   Q 7 6 y wry   r|   r   s      r.   r>   z*AsyncAssistantEventHandler.__text_deltas__7  s      	3 	3%{{44!&!1!1!9!9!?R 3 %%/M4F4F=K]K]KcKc',,2223		34s8   BBBBABB"B9BBBc                   K   ywr   r,   rB   s    r.   r   z!AsyncAssistantEventHandler.on_endB          c                   K   ywr   r,   r   s     r.   r   z#AsyncAssistantEventHandler.on_eventI  r)  r*  c                   K   ywr   r,   r   s     r.   r   z.AsyncAssistantEventHandler.on_run_step_createdL  r)  r*  c                   K   ywr   r,   r   s      r.   r   z,AsyncAssistantEventHandler.on_run_step_deltaO  r)  r*  c                   K   ywr   r,   r   s     r.   r   z+AsyncAssistantEventHandler.on_run_step_donej  r)  r*  c                   K   ywr   r,   r   s     r.   r   z/AsyncAssistantEventHandler.on_tool_call_createdm  r)  r*  c                   K   ywr   r,   r   s      r.   r   z-AsyncAssistantEventHandler.on_tool_call_deltap  r)  r*  c                   K   ywr   r,   r   s     r.   r   z,AsyncAssistantEventHandler.on_tool_call_dones  r)  r*  c                   K   ywr   r,   r   s     r.   r   z'AsyncAssistantEventHandler.on_exceptionv  r)  r*  c                   K   ywr   r,   rB   s    r.   r   z%AsyncAssistantEventHandler.on_timeouty  r)  r*  c                   K   ywr   r,   ru   s     r.   r   z-AsyncAssistantEventHandler.on_message_created|  r)  r*  c                   K   ywr   r,   r   s      r.   r   z+AsyncAssistantEventHandler.on_message_delta  r)  r*  c                   K   ywr   r,   ru   s     r.   r   z*AsyncAssistantEventHandler.on_message_done  r)  r*  c                   K   ywr   r,   r   s     r.   r   z*AsyncAssistantEventHandler.on_text_created  r)  r*  c                   K   yw)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")),
        Nr,   r   s      r.   r   z(AsyncAssistantEventHandler.on_text_delta  r)  r*  c                   K   ywr   r,   r   s     r.   r   z'AsyncAssistantEventHandler.on_text_done  r)  r*  c                   K   ywr   r,   r   s     r.   r   z-AsyncAssistantEventHandler.on_image_file_done  r)  r*  c                  K   || _         | j                  |       d {    t        || j                        \  | _        }| j                  -| j                  | j                  | j                  j
                  <   t        || j                         |D ]f  }| j                  J | j                  j                  |j                     }|j                  dk(  sD| j                  |j                         d {    h |j                  dk(  sK|j                  dk(  s<|j                  dk(  s-|j                  dk(  s|j                  dk(  s|j                  d	k(  rI|j                  | _        | j                   rS| j#                  | j                          d {    d | _         y |j                  d
k(  s-|j                  dk(  s|j                  dk(  s|j                  dk(  r|j                  | _        d | _         y |j                  dk(  r+| j%                  |j                         d {    d | _         y |j                  dk(  r| j                  }|J |j                  j&                  }|j                  |j                  D ]u  }|j                  dk(  rd|j                  rX|j                  |j                     }|j                  dk(  sJ | j)                  |j                  |j                         d {    |j                  | j*                  k7  r| j,                  | j,                  j                  dk(  r.| j/                  | j,                  j                         d {    nF| j,                  j                  dk(  r-| j1                  | j,                  j2                         d {    |j                  | _        |j                  |j                     | _        |j                  |j                     | _        x | j5                  |j                  j&                  |       d {    d | _         y |j                  dk(  s|j                  dk(  r|j                  | _        |j                  | j                  |j                  j
                  <   | j*                  |j                  j                  | j*                     }|j                  dk(  r$| j/                  |j                         d {    n2|j                  dk(  r#| j1                  |j2                         d {    | j7                  |j                         d {    d | _         y |j                  dk(  rF|j                  j
                  | _        | j;                  |j                         d {    d | _         y |j                  dk(  r#|j                  j
                  | _        d | _         y |j                  dk(  r| j                  |j                  j
                     }	|j                  j&                  }
|
j<                  r|
j<                  j                  dk(  ro|
j<                  j>                  X|	j<                  j                  dk(  sJ |
j<                  j>                  D ]#  }|j                  | j@                  k(  r;| jC                  ||	j<                  j>                  |j                            d {    |j                  | j@                  k7  r| j                   #| j#                  | j                          d {    |j                  | _         |	j<                  j>                  |j                     | _        | jE                  | j                          d {    |	j<                  j>                  |j                     | _        & | jG                  |j                  j&                  |	       d {    d | _         y |j                  dk(  s-|j                  dk(  s|j                  dk(  s|j                  dk(  ra| j                   r#| j#                  | j                          d {    | jI                  |j                         d {    d | _        d | _         y |j                  dk(  s|j                  dk(  s|j                  dk(  r		 d | _         y tJ        rtM        |       d | _         y 7 7 7 C7 7 7 7 @7 7 7 7 7 a7 7 7 |7 &7 7 wr   )'r4   r   r   r  r  r   r   r  r   r   r   r   r{   r}   r~   r  r8   r   r   r   r   r5   r6   r   r   r   r   r   r  r   r   r   r7   r   r   r   r   r   r   r   s               r.   r   z*AsyncAssistantEventHandler._emit_sse_event  s    #mmE"""7G%)%D%D8
4' **6KOKjKjD$$T%D%D%G%GH#88	

 ) 	7M22>>>33;;M<O<OPEzzV#**5::666	7 KK11{{44{{22{{11{{::{{55!&D&&,,T-D-DEEE\ #Y KK//{{66{{55{{11!&DN #M [[44))%**555J #I [[2266H'''!JJ,,M$$0%2%:%: ZM$))V38J8J+3+;+;M<O<O+P(/44>>>"001C1CEUEZEZ[[[
 %**d.Q.QQ88D#<<AAVK&*&7&78U8U8Z8Z&[ [ [!%!>!>!C!C|!S&*&=&=d>[>[>f>f&g g g>K>Q>Q;8@8H8HI\I\8]5 5=4D4D]EXEX4YD1)Z, ''

(8(8(CCCP #O [[66%++Id:d.3jjD+6;jjD$$UZZ]]322>**,,T-P-PQ<<6)++GLL999\\\111'2D2DEEE&&uzz222x #w [[55).D&**5::666r #q [[99).D&n #m [[33 55ejjmmDM"ZZ--N++"//44D"//::F$1166,FFF'5'B'B'M'M kO&,,0M0MM"55+)66AA/BWBWX   ',,0M0MM22>"&"8"89P9P"QQQ8G8M8M52?2L2L2W2WXgXmXm2n/"778O8OPPP /<.H.H.S.STcTiTi.jD+'k* ((

    . #% KK66{{99{{77{{66&&,,T-D-DEEE''

333)-D& # [[,,?[0[_d_j_jnu_u # U#"[ 	#& 7 F 6 \ !\ g D :E2 7 R Q
 F3sV  dcB8dd6c7BdcBd"c#Cd0c1A*dcAd"c"#A=d c%!Cd%c(&2dc+"d;c.<Adc1E	dc4Ad"c7#Ad>c:?Adc=A2d
d "d-d.A#dddddd"d%d(d+d.d1d4d7d:d=d ddc                 K   | j                   }|st        d      	 |2 3 d {   }| j                  |       d {    | (7 #7 6 np# t               $ r9}| j	                          d {  7   | j                  |       d {  7    d }~wt        $ r }| j                  |       d {  7    d }~ww xY w	 | j                          d {  7   y # | j                          d {  7   w xY wwr   )r  rG   r   r/   r   r   r   r   r   s       r.   r?   z%AsyncAssistantEventHandler.__stream__C  s     @AA	 %  e**51111  & #$ 	//#####C((( 	##C(((	  & ++-$++-s   C6A AAAA A	
A A	A A C B:B-A0.BB
BB:B5.B1/B55B::C >C6CC6C3,C/-C33C6Nr   )rI   z!AsyncStream[AssistantStreamEvent]r   r   r   )r   z#AsyncIterator[AssistantStreamEvent]r   r   r   r   r   r   r   )r   zAsyncIterator[str]r   r   r   r   r   r   r   r   r   r   r   )&r   r   r   r   rD   rJ   r  r  rb   r   rU   rX   r[   r^   re   ri   rp   rw   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    s    ##
G 0( # # " " E E / /+"EJ3A@6BAKKC-?2AJKJO#b r-   r  AsyncAssistantEventHandlerTc                  D    e Zd ZdZ	 	 	 	 	 	 ddZddZ	 	 	 	 	 	 	 	 ddZy)	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:
            ...
    ```
    c               .    d | _         || _        || _        y r)   )$_AsyncAssistantStreamManager__stream+_AsyncAssistantStreamManager__event_handler)_AsyncAssistantStreamManager__api_requestr  s      r.   rD   z$AsyncAssistantStreamManager.__init__g  s     CG,(r-   c                   K   | j                    d {   | _        | j                  j                  | j                         | j                  S 7 :wr)   )rC  rA  rB  rJ   rB   s    r.   
__aenter__z&AsyncAssistantStreamManager.__aenter__q  s?     "000""4==1### 1s   AA;Ac                n   K   | j                   #| j                   j                          d {    y y 7 wr)   )rA  rb   r  s       r.   	__aexit__z%AsyncAssistantStreamManager.__aexit__v  s0      ==$--%%''' %'r  N)r  z,Awaitable[AsyncStream[AssistantStreamEvent]]r  r=  r   r   )r   r=  r  )r   r   r   r  rD   rE  rG  r,   r-   r.   r?  r?  [  sX    	)A) 3	)
 
)$
(,( "( %	(
 
(r-   r?  c                   | j                   dk(  r$| j                  || j                  j                  <   y | j                   dk(  r| j                  }||j                     }|j                  rnt	        t        dt        |dd            t        dt        |j                  dd                  }t        t        t        t        |            ||j                  <   y )Nr   r   dict[object, object]TFexclude_unsetwarningstype_r   )	r}   r~   r   r   accumulate_deltar   r   r$   r   )r}   r   r~   r   mergeds        r.   r   r     s    
 {{//,1JJ5::==){{--zz%dgg.::%*xteL *tzzN	F /37NQX`f<g.hx{{+r-   c                *   | j                   dk(  r| j                  g fS g }| j                   dk7  r|g fS |st        d      | j                  }|j                  j                  r|j                  j                  D ]  }	 |j                  |j
                     }t        t        dt        |dd            t        dt        |dd                  }t        t        t        t        t        t              |            |j                  |j
                  <    ||fS # t        $ rr |j                  j                  |j
                  t        t        t        t        t        t              t        |dd                         |j                  |       Y w xY w)	zIReturns a tuple of message snapshot and newly created text message deltasr   rz   z5Encountered a message delta with no previous snapshotrI  TFrJ  rM  )r}   r~   rG   r   r   r   rO  r   r   r"   r   r   
IndexErrorinsertappend)r}   r^   r   r~   r   r   rP  s          r.   r   r     s    {{..zz2~-/K{{,,'++#RSS::Dzz!ZZ// "	M!0889L9LM *."5uM ."=uU	 IM"""37$I(001D1DE7"	H $[00C  2(0077!''&&"&sN";",]$Y^"_
 ""=12s   <DA7FFc                \   |j                         D ]V  \  }}|| vr|| |<   | |   }||| |<   |dk(  s|dk(  r|| |<   .t        |t              rt        |t              r||z  }nt        |t        t        f      rt        |t        t        f      r||z  }nt        |      rt        |      rt        ||      }nt        |      rt        |      rt        d |D              r|j                  |       |D ]j  }t        |      st        d|       	 |d   }t        |t              st        d|       	 ||   }t        |      st        d      t        ||      ||<   l || |<   Y | S # t        $ r}t        d|       |d }~ww xY w# t        $ r |j                  ||       Y w xY w)Nr   r   c              3  R   K   | ]  }t        |t        t        t        f       ! y wr)   )
isinstancestrintfloat).0xs     r.   	<genexpr>z#accumulate_delta.<locals>.<genexpr>  s     G:a#sE!23Gs   %'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)itemsrW  rX  rY  rZ  r   rO  r   allextend	TypeErrorKeyErrorrG   rR  rS  )	accr   keydelta_value	acc_valuedelta_entryr   r   	acc_entrys	            r.   rO  rO    s   !KKM 7[c>"CHH	"CH '>SF]"CHi%*[#*F$I	C<0ZcSX\5Z$IYGK$8(K@IYGK$8 GYGG  -* P{+#&WXcWd$efft'0E "%-#&dejdk$lmmP )% 0I #9-'(9::'7	;'OIe$)P, Co7r J%   t&)[\g[h'ijpsst " 9$$UK89s*   E-7F-	F
6FF
F+*F+)r   ztuple[type[Exception], ...])r}   r   r   zdict[str, RunStep]r   r   )r}   r   r^   r   r   z0tuple[Message | None, list[MessageContentDelta]])rc  rI  r   rI  r   rI  );
__future__r   r*   typesr   typingr   r   r   r   r	   r
   r   r   typing_extensionsr   r   r   r   _utilsr   r   r   r   _compatr   _httpx2r   _modelsr   
_streamingr   r   
types.betar   types.beta.threadsr   r   r   r   r    r!   r"   r#   types.beta.threads.runsr$   r%   r&   r'   r/   r1   r   r   r  r=  r?  r   r   rO  r,   r-   r.   <module>ru     s    "   [ [ [ S S U U ! ) % - .	 	 	 V U9F FR !!9AVW !"W%;< !"HF  F R &&CKef "('*E"F "(J + 
	:7171 -71 6	71t:r-   