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

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

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

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

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

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

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

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

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

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

    ```py
    with client.threads.create_and_run_stream(...) as stream:
        for event in stream:
            ...
    ```
    api_request*Callable[[], Stream[AssistantStreamEvent]]event_handlerr  r*   r+   c               0    d | _         || _        || _        d S r-   )_AssistantStreamManager__stream&_AssistantStreamManager__event_handler$_AssistantStreamManager__api_requestr=   r  r  s      r>   r?   zAssistantStreamManager.__init__  s"     >B,(r@   c                    |                                  | _        | j                            | j                   | j        S r-   )r  r  r  rG   r<   s    r>   	__enter__z AssistantStreamManager.__enter__  s7    **,,""4=111##r@   exc_typetype[BaseException] | Noner   BaseException | Noneexc_tbTracebackType | Nonec                J    | j         | j                                          d S d S r-   )r  rd   r=   r  r   r  s       r>   __exit__zAssistantStreamManager.__exit__  s.     =$M!!!!! %$r@   N)r  r  r  r  r*   r+   )r*   r  r  r  r   r  r  r  r*   r+   )r  r  r  __doc__r?   r  r  rq   r@   r>   r
  r
    sZ         ) ) ) )$ $ $ $
" " " " " "r@   r
  c                  d   e Zd ZU ded<   	 dFdZdGdZdHd
ZdIdZdFdZe	dJd            Z
e	dKd            Ze	dLd            Ze	dMd            ZdFdZdNdZdOdZdPdZdQdZdFdZdRd!ZdSd$ZdTd(ZdSd)ZdUd,ZdVd.ZdUd/ZdWd2ZdFd3ZdXd6ZdYd8ZdXd9ZdZd<Z d[d>Z!dZd?Z"d\dBZ#dRdCZ$dIdDZ%dES )]AsyncAssistantEventHandlerzAsyncIterable[str]r)   r*   r+   c                   d | _         d | _        d | _        d | _        d | _        d | _        d | _        i | _        i | _        d | _	        | 
                                | _        |                                 | _        d | _        d S r-   )r.   r/   r0   r1   r2   0_AsyncAssistantEventHandler__current_run_step_id(_AsyncAssistantEventHandler__current_run/_AsyncAssistantEventHandler__run_step_snapshots._AsyncAssistantEventHandler__message_snapshots5_AsyncAssistantEventHandler__current_message_snapshotr8   r)   r9   r:   #_AsyncAssistantEventHandler__streamr<   s    r>   r?   z#AsyncAssistantEventHandler.__init__  s    ;?:>+?C%48%3715")-8:!79 :>'//11**BFr@   rA   !AsyncStream[AssistantStreamEvent]c                @    | j         rt          d          || _         d S rD   )r'  rE   rF   s     r>   rG   z AsyncAssistantEventHandler._init  rH   r@   r   c                D   K   | j                                          d {V S r-   )r:   	__anext__r<   s    r>   r+  z$AsyncAssistantEventHandler.__anext__  s,      ^--/////////r@   #AsyncIterator[AssistantStreamEvent]c               4   K   | j         2 3 d {V }|W V  6 d S r-   rM   rN   s     r>   	__aiter__z$AsyncAssistantEventHandler.__aiter__  sF      . 	 	 	 	 	 	 	$JJJJJ )..s   c                Z   K   | j         r!| j                                          d{V  dS dS rc   )r'  rd   r<   s    r>   rd   z AsyncAssistantEventHandler.close  sH       = 	(-%%'''''''''''	( 	(r@   rQ   c                    | j         S r-   rS   r<   s    r>   rT   z(AsyncAssistantEventHandler.current_event  rU   r@   rV   c                    | j         S r-   )r#  r<   s    r>   rX   z&AsyncAssistantEventHandler.current_run  rY   r@   rZ   c                8    | j         sd S | j        | j                  S r-   )r"  r$  r<   s    r>   r\   z4AsyncAssistantEventHandler.current_run_step_snapshot
  r]   r@   r^   c                    | j         S r-   )r&  r<   s    r>   r`   z3AsyncAssistantEventHandler.current_message_snapshot  ra   r@   c                4   K   t          |            d{V  dS rf   )r   r<   s    r>   rg   z%AsyncAssistantEventHandler.until_done  s,      $T***********r@   r   c                t   K   |                                   d{V  | j        st          d          | j        S )ri   Nrj   )rg   r#  rE   r<   s    r>   rk   z(AsyncAssistantEventHandler.get_final_run  sK      oo! 	<:;;;!!r@   rl   c                   K   |                                   d{V  | j        st          d          d | j                                        D             S )rn   Nro   c                    g | ]}|S rq   rq   rr   s     r>   ru   zBAsyncAssistantEventHandler.get_final_run_steps.<locals>.<listcomp>)  rv   r@   )rg   r$  rE   rw   r<   s    r>   rx   z.AsyncAssistantEventHandler.get_final_run_steps"  se      oo( 	53444DD!:!A!A!C!CDDDDr@   ry   c                   K   |                                   d{V  | j        st          d          d | j                                        D             S )r{   Nr|   c                    g | ]}|S rq   rq   r~   s     r>   ru   zAAsyncAssistantEventHandler.get_final_messages.<locals>.<listcomp>2  r   r@   )rg   r%  rE   rw   r<   s    r>   r   z-AsyncAssistantEventHandler.get_final_messages+  se      oo' 	42333IIt'?'F'F'H'HIIIIr@   AsyncIterator[str]c                  K   | 2 3 d {V }|j         dk    r|j        j        j        pg D ]/}|j        dk    r"|j        r|j        j        r|j        j        W V  0W6 d S r   r   r   s      r>   r8   z*AsyncAssistantEventHandler.__text_deltas__4  s       	3 	3 	3 	3 	3 	3 	3%{444!&!1!9!?R 3 3 %//M4F/=K]Kc/',222223	  44s   Ac                
   K   dS r   rq   r<   s    r>   r   z!AsyncAssistantEventHandler.on_end?  
        r@   r   c                
   K   dS r   rq   r   s     r>   r   z#AsyncAssistantEventHandler.on_eventF  r=  r@   r   r#   c                
   K   dS r   rq   r   s     r>   r   z.AsyncAssistantEventHandler.on_run_step_createdI  r=  r@   r   r%   r   c                
   K   dS r   rq   r   s      r>   r   z,AsyncAssistantEventHandler.on_run_step_deltaL  r=  r@   c                
   K   dS r   rq   r   s     r>   r   z+AsyncAssistantEventHandler.on_run_step_doneg  r=  r@   r   r$   c                
   K   dS r   rq   r   s     r>   r   z/AsyncAssistantEventHandler.on_tool_call_createdj  r=  r@   r&   c                
   K   dS r   rq   r   s      r>   r   z-AsyncAssistantEventHandler.on_tool_call_deltam  r=  r@   c                
   K   dS r   rq   r   s     r>   r   z,AsyncAssistantEventHandler.on_tool_call_donep  r=  r@   r   r   c                
   K   dS r   rq   r   s     r>   r   z'AsyncAssistantEventHandler.on_exceptions  r=  r@   c                
   K   dS r   rq   r<   s    r>   r   z%AsyncAssistantEventHandler.on_timeoutv  r=  r@   r   r   c                
   K   dS r   rq   r   s     r>   r   z-AsyncAssistantEventHandler.on_message_createdy  r=  r@   r    c                
   K   dS r   rq   r   s      r>   r   z+AsyncAssistantEventHandler.on_message_delta|  r=  r@   c                
   K   dS r   rq   r   s     r>   r   z*AsyncAssistantEventHandler.on_message_done  r=  r@   r   r   c                
   K   dS r   rq   r   s     r>   r   z*AsyncAssistantEventHandler.on_text_created  r=  r@   r   c                
   K   dS )a  Callback that is fired whenever a text content delta is returned
        by the API.

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

        on_text_delta(TextDelta(value="The"), Text(value="The")),
        on_text_delta(TextDelta(value=" solution"), Text(value="The solution")),
        on_text_delta(TextDelta(value=" to"), Text(value="The solution to")),
        on_text_delta(TextDelta(value=" the"), Text(value="The solution to the")),
        on_text_delta(TextDelta(value=" equation"), Text(value="The solution to the equivalent")),
        Nrq   r   s      r>   r   z(AsyncAssistantEventHandler.on_text_delta  r=  r@   c                
   K   dS r   rq   r   s     r>   r   z'AsyncAssistantEventHandler.on_text_done  r=  r@   r   r   c                
   K   dS r   rq   r   s     r>   r   z-AsyncAssistantEventHandler.on_image_file_done  r=  r@   c                  K   || _         |                     |           d {V  t          || j                  \  | _        }| j        | j        | j        | j        j        <   t          || j                   |D ]M}| j        J | j        j        |j	                 }|j
        dk    r |                     |j                   d {V  N|j        dk    s7|j        dk    s,|j        dk    s!|j        dk    s|j        dk    s|j        d	k    r5|j        | _        | j        r |                     | j                   d {V  n2|j        d
k    s!|j        dk    s|j        dk    s|j        dk    r|j        | _        n|j        dk    r"|                     |j                   d {V  n|j        dk    rf| j        }|J |j        j        }|j        |j        D ]}|j
        dk    rL|j        rE|j        |j	                 }|j
        dk    sJ |                     |j        |j                   d {V  |j	        | j        k    r| j        k| j        j
        dk    r&|                     | j        j                   d {V  n5| j        j
        dk    r%|                     | j        j                   d {V  |j	        | _        |j        |j	                 | _        |j        |j	                 | _        |                     |j        j        |           d {V  nY|j        dk    s|j        dk    r|j        | _        |j        | j        |j        j        <   | j        n|j        j        | j                 }|j
        dk    r!|                     |j                   d {V  n+|j
        dk    r |                     |j                   d {V  |                     |j                   d {V  n|j        dk    r3|j        j        | _        |                     |j                   d {V  nI|j        dk    r|j        j        | _        n+|j        dk    rl| j        |j        j                 }	|j        j        }
|
j        r|
j        j
        dk    r	|
j        j        |	j        j
        dk    sJ |
j        j        D ]}|j	        | j         k    r1| !                    ||	j        j        |j	                            d {V  |j	        | j         k    ro| j         |                     | j                   d {V  |j	        | _         |	j        j        |j	                 | _        | "                    | j                   d {V  |	j        j        |j	                 | _        | #                    |j        j        |	           d {V  n|j        dk    s!|j        dk    s|j        dk    s|j        dk    rO| j        r |                     | j                   d {V  | $                    |j                   d {V  d | _        n8|j        dk    s|j        dk    s|j        dk    rntJ          rtM          |           d | _         d S r   )'r.   r   r   r&  r%  r   r   r$  r   r   r   r   r   r   r   r#  r2   r   r   r   r   r/   r0   r   r   r   r   r   r"  r   r   r   r1   r   r   r   r   r   r   r   s               r>   r   z*AsyncAssistantEventHandler._emit_sse_event  s     #mmE"""""""""7G%)%D8
 8
 8
4' *6KOKjD$T%D%GH#8	
 	
 	
 	

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

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