
    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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 dd
lmZ ddl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% ddl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3 d"dZ4d#dZ5d$dZ6 G d d      Z7 e	de7      Z8 G d dee8         Z9 G d d      Z: e	de:      Z; G d dee;         Z<	 	 	 	 	 	 d%d Z=	 	 	 	 	 	 d&d!Z>y)'    )annotationsN)TracebackType)TYPE_CHECKINGAnyGenericTypeVarCallableIterableIteratorcast)	AwaitableAsyncIterableAsyncIteratorassert_never   )accumulate_delta   )consume_sync_iteratorconsume_async_iterator)
model_dump)request_exceptionstimeout_exceptions)construct_type)StreamAsyncStream)AssistantStreamEvent)APIConnectionError)RunTextMessage	ImageFile	TextDeltaMessageDeltaMessageContentMessageContentDelta)RunStepToolCallRunStepDeltaToolCallDeltac                 <    g t               t        j                  S N)r   asyncioTimeoutError     w/var/www/origus_pro_usr/data/www/origus.pro/core/.venv/lib/python3.12/site-packages/openai/lib/streaming/_assistants.py_timeout_exceptionsr1      s    8!87#7#788r/   c              #     K   	 | E d {    y 7 # t         $ r1}t        |j                  t                     r|j                  d  d }~ww xY wwr+   r   
isinstance	__cause__r   )streamexcs     r0   _iter_eventsr8   !   sD      cmm%7%9:--T)s0   A  A 	A,AAAc                  K   	 | 2 3 d {   }| 7 
6 y # t         $ r1}t        |j                  t                     r|j                  d  d }~ww xY wwr+   r3   )r6   eventr7   s      r0   _aiter_eventsr;   +   sW     ! 	 	%K	6 cmm%7%9:--T)s<   A   A	A,AAA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__r>   
__stream__	_iterator_AssistantEventHandler__streamselfs    r0   __init__zAssistantEventHandler.__init__C   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)rM   RuntimeErrorrO   r6   s     r0   _initzAssistantEventHandler._initS   %    == L  r/   c                6    | j                   j                         S r+   )rL   __next__rN   s    r0   rX   zAssistantEventHandler.__next__[   s    ~~&&((r/   c              #  6   K   | j                   D ]  }|  y wr+   rL   rO   items     r0   __iter__zAssistantEventHandler.__iter__^   s     NN 	DJ	s   c                    | j                   S r+   r@   rN   s    r0   current_eventz#AssistantEventHandler.current_eventb       """r/   c                    | j                   S r+   )rF   rN   s    r0   current_runz!AssistantEventHandler.current_runf       !!!r/   c                N    | j                   sy | j                  | j                      S r+   )rE   rG   rN   s    r0   current_run_step_snapshotz/AssistantEventHandler.current_run_step_snapshotj   %    ))(()C)CDDr/   c                    | j                   S r+   )rI   rN   s    r0   current_message_snapshotz.AssistantEventHandler.current_message_snapshotq       ...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)rM   closerN   s    r0   rm   zAssistantEventHandler.closeu   s      ==MM! r/   c                    t        |        yz(Waits until the stream has been consumedN)r   rN   s    r0   
until_donez AssistantEventHandler.until_done~   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)rp   rF   rS   rN   s    r0   get_final_runz#AssistantEventHandler.get_final_run   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)rp   rG   rS   valuesrO   steps     r0   get_final_run_stepsz)AssistantEventHandler.get_final_run_steps   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)rp   rH   rS   rx   rO   messages     r0   get_final_messagesz(AssistantEventHandler.get_final_messages   sD    ''233'+'?'?'F'F'HIGIIIr|   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r:   datadeltacontenttyper   valuerO   r:   content_deltas      r0   rJ   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.   rN   s    r0   on_endzAssistantEventHandler.on_end       r/   c                     yz2Callback that is fired for every Server-Sent-EventNr.   rO   r:   s     r0   on_eventzAssistantEventHandler.on_event   r   r/   c                     yz1Callback that is fired when a run step is createdNr.   rO   run_steps     r0   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.   rO   r   snapshots      r0   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     r0   on_run_step_donez&AssistantEventHandler.on_run_step_done   r   r/   c                     yz2Callback that is fired when a tool call is createdNr.   rO   	tool_calls     r0   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      r0   on_tool_call_deltaz(AssistantEventHandler.on_tool_call_delta   r   r/   c                     yr   r.   r   s     r0   on_tool_call_donez'AssistantEventHandler.on_tool_call_done   r   r/   c                     yz4Fired whenever an exception happens during streamingNr.   rO   	exceptions     r0   on_exceptionz"AssistantEventHandler.on_exception   r   r/   c                     yzFires if the request times outNr.   rN   s    r0   
on_timeoutz AssistantEventHandler.on_timeout   r   r/   c                     yz0Callback that is fired when a message is createdNr.   r   s     r0   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      r0   on_message_deltaz&AssistantEventHandler.on_message_delta   r   r/   c                     yz2Callback that is fired when a message is completedNr.   r   s     r0   on_message_donez%AssistantEventHandler.on_message_done   r   r/   c                     yz;Callback that is fired when a text content block is createdNr.   rO   r   s     r0   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      r0   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     r0   on_text_donez"AssistantEventHandler.on_text_done  r   r/   c                     yz;Callback that is fired when an image file block is finishedNr.   rO   
image_files     r0   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:   ri   )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.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_eventrI   rH   idaccumulate_run_steprG   r   indexr   r   r   r:   r   rF   rD   r   r   r   r   rA   rB   r   r   r   r   r   rE   r   step_detailsr   rC   r   r   r   r   r   r   rO   r:   new_contentr   blockr   message_deltasnapshot_contentr   step_snapshotrun_step_deltatool_call_deltas               r0   _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              #    K   | j                   }|st        d      	 t        |      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)	rM   rS   r8   r   r1   r   r   	Exceptionr   rO   r6   r:   r7   s       r0   rK   z AssistantEventHandler.__stream__  s     @AA	%f- $$U+ KKM #$ 	OOc" 	c"	 KKMs@   B>%A B>B&!"BB&B!!B&&B) )B;;B>NreturnNone)r6   Stream[AssistantStreamEvent]r   r   r   r   )r   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   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__rP   rU   rX   r]   propertyr`   rc   rf   ri   rm   rp   rt   r{   r   rJ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rK   r.   r/   r0   r=   r=   5   s    
B ) # # " " E E / /"$"EJ3A@6BAKKC-?2AJKJO#br/   r=   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rO   api_requestevent_handlers      r0   rP   zAssistantStreamManager.__init__  s     >B,(r/   c                    | j                         | _        | j                  j                  | j                         | j                  S r+   )r  r
  r  rU   rN   s    r0   	__enter__z AssistantStreamManager.__enter__  s6    **,""4==1###r/   c                R    | j                   | j                   j                          y y r+   )r
  rm   rO   exc_typer7   exc_tbs       r0   __exit__zAssistantStreamManager.__exit__  s#     ==$MM! %r/   N)r  z*Callable[[], Stream[AssistantStreamEvent]]r  r  r   r   )r   r  r  ztype[BaseException] | Noner7   zBaseException | Noner  zTracebackType | Noner   r   )r   r  r  __doc__rP   r  r  r.   r/   r0   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]r>   c                    d | _         d | _        d | _        d | _        d | _        d | _        d | _        i | _        i | _        d | _	        | j                         | _        | j                         | _        d | _        y r+   )r@   rA   rB   rC   rD   0_AsyncAssistantEventHandler__current_run_step_id(_AsyncAssistantEventHandler__current_run/_AsyncAssistantEventHandler__run_step_snapshots._AsyncAssistantEventHandler__message_snapshots5_AsyncAssistantEventHandler__current_message_snapshotrJ   r>   rK   rL   #_AsyncAssistantEventHandler__streamrN   s    r0   rP   z#AsyncAssistantEventHandler.__init__  sx    ;?:>+?C%48%3715")-8:!79 :>'//1*BFr/   c                @    | j                   rt        d      || _         y rR   )r!  rS   rT   s     r0   rU   z AsyncAssistantEventHandler._init  rV   r/   c                R   K   | j                   j                          d {   S 7 wr+   )rL   	__anext__rN   s    r0   r$  z$AsyncAssistantEventHandler.__anext__  s     ^^--////s   '%'c               H   K   | j                   2 3 d {   }| 7 
6 y wr+   rZ   r[   s     r0   	__aiter__z$AsyncAssistantEventHandler.__aiter__  s&     .. 	 	$J	.s   "  " "c                n   K   | j                   r#| j                   j                          d{    yy7 wrl   )r!  rm   rN   s    r0   rm   z AsyncAssistantEventHandler.close  s-      ==--%%''' '   *535c                    | j                   S r+   r_   rN   s    r0   r`   z(AsyncAssistantEventHandler.current_event  ra   r/   c                    | j                   S r+   )r  rN   s    r0   rc   z&AsyncAssistantEventHandler.current_run  rd   r/   c                N    | j                   sy | j                  | j                      S r+   )r  r  rN   s    r0   rf   z4AsyncAssistantEventHandler.current_run_step_snapshot#  rg   r/   c                    | j                   S r+   )r   rN   s    r0   ri   z3AsyncAssistantEventHandler.current_message_snapshot*  rj   r/   c                6   K   t        |        d{    y7 wro   )r   rN   s    r0   rp   z%AsyncAssistantEventHandler.until_done.  s     $T***s   c                   K   | j                          d{    | j                  st        d      | j                  S 7 'w)rr   Nrs   )rp   r  rS   rN   s    r0   rt   z(AsyncAssistantEventHandler.get_final_run2  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)rv   Nrw   )rp   r  rS   rx   ry   s     r0   r{   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)r~   Nr   )rp   r  rS   rx   r   s     r0   r   z-AsyncAssistantEventHandler.get_final_messagesD  sV     oo''233'+'?'?'F'F'HIGII 	 
 Jr0  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r   r   r   s      r0   rJ   z*AsyncAssistantEventHandler.__text_deltas__M  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.   rN   s    r0   r   z!AsyncAssistantEventHandler.on_endX          c                   K   ywr   r.   r   s     r0   r   z#AsyncAssistantEventHandler.on_event_  r4  r5  c                   K   ywr   r.   r   s     r0   r   z.AsyncAssistantEventHandler.on_run_step_createdb  r4  r5  c                   K   ywr   r.   r   s      r0   r   z,AsyncAssistantEventHandler.on_run_step_deltae  r4  r5  c                   K   ywr   r.   r   s     r0   r   z+AsyncAssistantEventHandler.on_run_step_done  r4  r5  c                   K   ywr   r.   r   s     r0   r   z/AsyncAssistantEventHandler.on_tool_call_created  r4  r5  c                   K   ywr   r.   r   s      r0   r   z-AsyncAssistantEventHandler.on_tool_call_delta  r4  r5  c                   K   ywr   r.   r   s     r0   r   z,AsyncAssistantEventHandler.on_tool_call_done  r4  r5  c                   K   ywr   r.   r   s     r0   r   z'AsyncAssistantEventHandler.on_exception  r4  r5  c                   K   ywr   r.   rN   s    r0   r   z%AsyncAssistantEventHandler.on_timeout  r4  r5  c                   K   ywr   r.   r   s     r0   r   z-AsyncAssistantEventHandler.on_message_created  r4  r5  c                   K   ywr   r.   r   s      r0   r   z+AsyncAssistantEventHandler.on_message_delta  r4  r5  c                   K   ywr   r.   r   s     r0   r   z*AsyncAssistantEventHandler.on_message_done  r4  r5  c                   K   ywr   r.   r   s     r0   r   z*AsyncAssistantEventHandler.on_text_created  r4  r5  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      r0   r   z(AsyncAssistantEventHandler.on_text_delta  r4  r5  c                   K   ywr   r.   r   s     r0   r   z'AsyncAssistantEventHandler.on_text_done  r4  r5  c                   K   ywr   r.   r   s     r0   r   z-AsyncAssistantEventHandler.on_image_file_done  r4  r5  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   )'r@   r   r   r   r  r   r   r  r   r   r   r   r   r:   r   r  rD   r   r   r   r   rA   rB   r   r   r   r   r   r  r   r   r   rC   r   r   r   r   r   r   r   s               r0   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      	 t        |      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!  rS   r;   r   r1   r   r   r   r   r   s       r0   rK   z%AsyncAssistantEventHandler.__stream__Y  s     @AA	 ,V4  e**51111  5 #$ 	//#####C((( 	##C(((	  5 ++-$++-s   C?A AAAA A
A AA A C! C#B6A97BBBC#B>7B:8B>>CC! C?CC?!C<5C86C<<C?Nr   )r6   !AsyncStream[AssistantStreamEvent]r   r   r   )r   #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  rP   rU   r$  r&  rm   r  r`   rc   rf   ri   rp   rt   r{   r   rJ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rK   r.   r/   r0   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      r0   rP   z$AsyncAssistantStreamManager.__init__}  s     CG,(r/   c                   K   | j                    d {   | _        | j                  j                  | j                         | j                  S 7 :wr+   )rP  rN  rO  rU   rN   s    r0   
__aenter__z&AsyncAssistantStreamManager.__aenter__  s?     "000""4==1### 1s   AA;Ac                n   K   | j                   #| j                   j                          d {    y y 7 wr+   )rN  rm   r  s       r0   	__aexit__z%AsyncAssistantStreamManager.__aexit__  s0      ==$--%%''' %'r(  N)r  z,Awaitable[AsyncStream[AssistantStreamEvent]]r  rJ  r   r   )r   rJ  r  )r   r  r  r  rP   rR  rT  r.   r/   r0   rL  rL  q  sX    	)A) 3	)
 
)$
(,( "( %	(
 
(r/   rL  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   r   r   r   r&   r   )r:   r   r   r   mergeds        r0   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   r   z5Encountered a message delta with no previous snapshotrV  TFrW  rZ  )r:   r   rS   r   r   r   r   r   r   r$   r   r   
IndexErrorinsertappend)r:   ri   r   r   r   r   r\  s          r0   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)r   ztuple[type[Exception], ...])r6   r   r   r   )r6   rH  r   rI  )r:   r   r   zdict[str, RunStep]r   r   )r:   r   ri   r   r   z0tuple[Message | None, list[MessageContentDelta]])?
__future__r   r,   typesr   typingr   r   r   r   r	   r
   r   r   typing_extensionsr   r   r   r   _deltasr   _utilsr   r   _compatr   _httpx2r   r   _modelsr   
_streamingr   r   
types.betar   _exceptionsr   types.beta.threadsr   r   r    r!   r"   r#   r$   r%   types.beta.threads.runsr&   r'   r(   r)   r1   r8   r;   r=   r  r  r  rJ  rL  r   r   r.   r/   r0   <module>ro     s    "   [ [ [ S S 9 C ! = % - . -	 	 	 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1r/   