
    OYhf                       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         Z3	 	 	 	 	 	 ddZ4	 	 	 	 	 	 ddZ5ddZ6y)    )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                  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 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    _/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/openai/lib/streaming/_assistants.py__init__zAssistantEventHandler.__init__)   sx    ;?:>+?C%48%3715")-8:!79 :>'//1*=A    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)r8   RuntimeErrorr:   streams     r;   _initzAssistantEventHandler._init9   %    == L  r=   c                6    | j                   j                         S r*   )r7   __next__r9   s    r;   rF   zAssistantEventHandler.__next__A   s    ~~&&((r=   c              #  6   K   | j                   D ]  }|  y wr*   r7   r:   items     r;   __iter__zAssistantEventHandler.__iter__D   s     NN 	DJ	s   c                    | j                   S r*   r+   r9   s    r;   current_eventz#AssistantEventHandler.current_eventH       """r=   c                    | j                   S r*   )r1   r9   s    r;   current_runz!AssistantEventHandler.current_runL       !!!r=   c                N    | j                   sy | j                  | j                      S r*   )r0   r2   r9   s    r;   current_run_step_snapshotz/AssistantEventHandler.current_run_step_snapshotP   %    ))(()C)CDDr=   c                    | j                   S r*   )r4   r9   s    r;   current_message_snapshotz.AssistantEventHandler.current_message_snapshotW       ...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)r8   closer9   s    r;   r[   zAssistantEventHandler.close[   s      ==MM! r=   c                    t        |        yz(Waits until the stream has been consumedN)r   r9   s    r;   
until_donez AssistantEventHandler.until_doned   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)r^   r1   r@   r9   s    r;   get_final_runz#AssistantEventHandler.get_final_runh   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)r^   r2   r@   valuesr:   steps     r;   get_final_run_stepsz)AssistantEventHandler.get_final_run_stepsq   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)r^   r3   r@   rf   r:   messages     r;   get_final_messagesz(AssistantEventHandler.get_final_messagesz   sD    ''233'+'?'?'F'F'HIGIIIrj   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typert   valuer:   rv   content_deltas      r;   r5   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.
        N r9   s    r;   on_endzAssistantEventHandler.on_end       r=   c                     yz2Callback that is fired for every Server-Sent-EventNr   r:   rv   s     r;   on_eventzAssistantEventHandler.on_event   r   r=   c                     yz1Callback that is fired when a run step is createdNr   r:   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   r:   rx   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   r:   	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   r:   	exceptions     r;   on_exceptionz"AssistantEventHandler.on_exception   r   r=   c                     yzFires if the request times outNr   r9   s    r;   
on_timeoutz AssistantEventHandler.on_timeout   r   r=   c                     yz0Callback that is fired when a message is createdNr   rn   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   rn   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   r:   rt   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 equivalent")),
        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   r:   
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)rv   rW   )rv   run_step_snapshotsrt   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.createdrs   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_eventr4   r3   idaccumulate_run_stepr2   ry   indexrz   r   rt   rv   rw   r1   r/   r   r   rx   r   r,   r-   r   r   r   r   r   r0   r   step_detailsr   r.   r   r   r   r   r   r   r:   rv   new_contentr}   blockr   message_deltasnapshot_contentry   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              #    K   | j                   }|st        d      	 |D ]  }| j                  |       |  	 | j                          y # t        j                  t
        j                  f$ 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)r8   r@   r   httpxTimeoutExceptionasyncioTimeoutErrorr   r   	Exceptionr   r:   rB   rv   excs       r;   r6   z AssistantEventHandler.__stream__  s     @AA	 $$U+ KKM &&(<(<= 	OOc" 	c"	 KKMs?   CA C#B3."BB3B..B33B6 6CCNreturnNone)rB   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]rv   r   r   r   r   r"   r   r   rx   r$   r   r"   r   r   r   r#   r   r   rx   r%   r   r#   r   r   r   r   r   r   ro   r   r   r   rx   r   r   r   r   r   rt   r   r   r   rx   r   r   r   r   r   r   r   r   r   )&__name__
__module____qualname____annotations__r<   rC   rF   rK   propertyrN   rQ   rT   rW   r[   r^   rb   ri   rp   r5   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r6   r   r=   r;   r'   r'      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r:   api_requestevent_handlers      r;   r<   zAssistantStreamManager.__init__  s     >B,(r=   c                    | j                         | _        | j                  j                  | j                         | j                  S r*   )r   r   r   rC   r9   s    r;   	__enter__z AssistantStreamManager.__enter__  s6    **,""4==1###r=   c                R    | j                   | j                   j                          y y r*   )r   r[   r:   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__r<   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]r(   c                    d | _         d | _        d | _        d | _        d | _        d | _        d | _        i | _        i | _        d | _	        | j                         | _        | j                         | _        d | _        y r*   )r+   r,   r-   r.   r/   0_AsyncAssistantEventHandler__current_run_step_id(_AsyncAssistantEventHandler__current_run/_AsyncAssistantEventHandler__run_step_snapshots._AsyncAssistantEventHandler__message_snapshots5_AsyncAssistantEventHandler__current_message_snapshotr5   r(   r6   r7   #_AsyncAssistantEventHandler__streamr9   s    r;   r<   z#AsyncAssistantEventHandler.__init__  sx    ;?:>+?C%48%3715")-8:!79 :>'//1*BFr=   c                @    | j                   rt        d      || _         y r?   )r  r@   rA   s     r;   rC   z AsyncAssistantEventHandler._init  rD   r=   c                R   K   | j                   j                          d {   S 7 wr*   )r7   	__anext__r9   s    r;   r  z$AsyncAssistantEventHandler.__anext__  s     ^^--////s   '%'c               H   K   | j                   2 3 d {   }| 7 
6 y wr*   rH   rI   s     r;   	__aiter__z$AsyncAssistantEventHandler.__aiter__  s&     .. 	 	$J	.s   "  " "c                n   K   | j                   r#| j                   j                          d{    yy7 wrZ   )r  r[   r9   s    r;   r[   z AsyncAssistantEventHandler.close  s-      ==--%%''' '   *535c                    | j                   S r*   rM   r9   s    r;   rN   z(AsyncAssistantEventHandler.current_event  rO   r=   c                    | j                   S r*   )r  r9   s    r;   rQ   z&AsyncAssistantEventHandler.current_run  rR   r=   c                N    | j                   sy | j                  | j                      S r*   )r  r  r9   s    r;   rT   z4AsyncAssistantEventHandler.current_run_step_snapshot	  rU   r=   c                    | j                   S r*   )r  r9   s    r;   rW   z3AsyncAssistantEventHandler.current_message_snapshot  rX   r=   c                6   K   t        |        d{    y7 wr]   )r   r9   s    r;   r^   z%AsyncAssistantEventHandler.until_done  s     $T***s   c                   K   | j                          d{    | j                  st        d      | j                  S 7 'w)r`   Nra   )r^   r  r@   r9   s    r;   rb   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)rd   Nre   )r^   r  r@   rf   rg   s     r;   ri   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)rl   Nrm   )r^   r  r@   rf   rn   s     r;   rp   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rr   ru   r|   s      r;   r5   z*AsyncAssistantEventHandler.__text_deltas__3  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   r9   s    r;   r   z!AsyncAssistantEventHandler.on_end>          c                   K   ywr   r   r   s     r;   r   z#AsyncAssistantEventHandler.on_eventE  r(  r)  c                   K   ywr   r   r   s     r;   r   z.AsyncAssistantEventHandler.on_run_step_createdH  r(  r)  c                   K   ywr   r   r   s      r;   r   z,AsyncAssistantEventHandler.on_run_step_deltaK  r(  r)  c                   K   ywr   r   r   s     r;   r   z+AsyncAssistantEventHandler.on_run_step_donef  r(  r)  c                   K   ywr   r   r   s     r;   r   z/AsyncAssistantEventHandler.on_tool_call_createdi  r(  r)  c                   K   ywr   r   r   s      r;   r   z-AsyncAssistantEventHandler.on_tool_call_deltal  r(  r)  c                   K   ywr   r   r   s     r;   r   z,AsyncAssistantEventHandler.on_tool_call_doneo  r(  r)  c                   K   ywr   r   r   s     r;   r   z'AsyncAssistantEventHandler.on_exceptionr  r(  r)  c                   K   ywr   r   r9   s    r;   r   z%AsyncAssistantEventHandler.on_timeoutu  r(  r)  c                   K   ywr   r   rn   s     r;   r   z-AsyncAssistantEventHandler.on_message_createdx  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   rn   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r   r   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   )'r+   r   r   r  r  r   r   r  ry   r   rz   r   rt   rv   rw   r  r/   r   r   rx   r   r,   r-   r   r   r   r   r   r  r   r   r   r.   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 n# t        j                  t
        j                  f$ 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  r@   r   r   r   r   r   r   r   r   r   r   s       r;   r6   z%AsyncAssistantEventHandler.__stream__?  s     @AA	 %  e**51111  & &&(<(<= 	//#####C((( 	##C(((	  & ++-$++-s   DA AAAA A	
A A	A A C. #C0B$BB$B B$$C0CCCCC. D'C*(D.D	DD		DNr   )rB   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   r<   rC   r  r  r[   r   rN   rQ   rT   rW   r^   rb   ri   rp   r5   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r6   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;   r<   z$AsyncAssistantStreamManager.__init__c  s     CG,(r=   c                   K   | j                    d {   | _        | j                  j                  | j                         | j                  S 7 :wr*   )rB  r@  rA  rC   r9   s    r;   
__aenter__z&AsyncAssistantStreamManager.__aenter__m  s?     "000""4==1### 1s   AA;Ac                n   K   | j                   #| j                   j                          d {    y y 7 wr*   )r@  r[   r  s       r;   	__aexit__z%AsyncAssistantStreamManager.__aexit__r  s0      ==$--%%''' %'r  N)r  z,Awaitable[AsyncStream[AssistantStreamEvent]]r  r<  r   r   )r   r<  r  )r   r   r   r  r<   rD  rF  r   r=   r;   r>  r>  W  sX    	)A) 3	)
 
)$
(,( "( %	(
 
(r=   r>  c           	        | j                   dk(  r$| j                  || j                  j                  <   y | j                   dk(  r| j                  }||j                     }|j                  rvt	        t        d|j                  d            t        d|j                  j                  d                  }t        t        t        t        |            ||j                  <   y )Nr   r   dict[object, object]Texclude_unsettype_r{   )	rv   rw   r   rx   accumulate_deltar   
model_dumpr"   r   )rv   r   rw   r   mergeds        r;   r   r   |  s    
 {{//,1JJ5::==){{--zz%dgg.::%*''d'; *JJ)))=	F /37NQX`f<g.hx{{+r=   c                B   | 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|j                  d            t        d|j                  d                  }t        t        t        t        t        t              |            |j                  |j
                  <    ||fS # t        $ rv |j                  j                  |j
                  t        t        t        t        t        t              |j                  d                         |j                  |       Y %w xY w)zIReturns a tuple of message snapshot and newly created text message deltasr   rs   z5Encountered a message delta with no previous snapshotrH  TrI  rK  )rv   rw   r@   rx   ry   r   rM  r   rN  r    r   r   
IndexErrorinsertappend)rv   rW   r   rw   r}   r   rO  s          r;   r   r     s    {{..zz2~-/K{{,,'++#RSS::Dzz!ZZ// "	M!0889L9LM *.((t(< .%00t0D	 IM"""37$I(001D1DE7"	H $[00C  2(0077!''&&"&sN";"/":":":"N
 ""=12s   <DA;F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   rz   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)itemsrV  rW  rX  rY  r   rM  r   allextend	TypeErrorKeyErrorr@   rQ  rR  )	accrx   keydelta_value	acc_valuedelta_entryr   r   	acc_entrys	            r;   rM  rM    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+)rv   r   r   zdict[str, RunStep]r   r   )rv   r   rW   r   r   z0tuple[Message | None, list[MessageContentDelta]])rb  rH  rx   rH  r   rH  )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  r<  r>  r   r   rM  r   r=   r;   <module>rr     s    "   [ [ [ S S  U U % - .	 	 	 V U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=   