
    2h                       S SK Jr  S SKrS SKJr  S SKJrJrJrJ	r	J
r
JrJrJr  S SKJrJrJrJr  S SKrSSKJrJrJrJr  SSKJr  SS	KJr  SS
KJrJr  SSK J!r!  SSK"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*  SSK+J,r,J-r-J.r.J/r/   " S S5      r0\	" S\0S9r1 " S S\\1   5      r2 " S S5      r3\	" S\3S9r4 " S S\\4   5      r5      SS jr6      SS jr7SS jr8g)    )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                     \ rS rSr% S\S'    S'S jrS(S jrS)S jrS*S jr\	S+S j5       r
\	S,S	 j5       r\	S-S
 j5       r\	S.S j5       rS'S jrS'S jrS/S jrS0S jrS1S jrS2S jrS'S jrS3S jrS4S jrS5S jrS4S jrS6S jrS7S jrS6S jrS8S jrS'S jrS9S jrS:S jrS9S jr S;S jr!S<S  jr"S;S! jr#S=S" jr$S3S# jr%S*S$ jr&S%r'g&)>AssistantEventHandler   zIterable[str]text_deltasc                    S U l         S U l        S U l        S U l        S U l        S U l        S U l        0 U l        0 U l        S U l	        U R                  5       U l        U R                  5       U l        S U l        g 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    X/var/www/auris/envauris/lib/python3.13/site-packages/openai/lib/streaming/_assistants.py__init__AssistantEventHandler.__init__*   sx    ;?:>+?C%48%3715")-8:!79 :>'//1*=A    c                H    U R                   (       a  [        S5      eXl         g NzyA single event handler cannot be shared between multiple streams; You will need to construct a new event handler instance)r:   RuntimeErrorr<   streams     r=   _initAssistantEventHandler._init:   #    == L  r@   c                6    U R                   R                  5       $ r,   )r9   __next__r;   s    r=   rJ   AssistantEventHandler.__next__B   s    ~~&&((r@   c              #  :   #    U R                    H  nUv   M	     g 7fr,   r9   r<   items     r=   __iter__AssistantEventHandler.__iter__E   s     NNDJ #s   c                    U R                   $ r,   r-   r;   s    r=   current_event#AssistantEventHandler.current_eventI       """r@   c                    U R                   $ r,   )r3   r;   s    r=   current_run!AssistantEventHandler.current_runM       !!!r@   c                X    U R                   (       d  g U R                  U R                      $ r,   )r2   r4   r;   s    r=   current_run_step_snapshot/AssistantEventHandler.current_run_step_snapshotQ   %    ))(()C)CDDr@   c                    U R                   $ r,   )r6   r;   s    r=   current_message_snapshot.AssistantEventHandler.current_message_snapshotX       ...r@   c                \    U R                   (       a  U R                   R                  5         ggzf
Close the response and release the connection.

Automatically called when the context manager exits.
N)r:   closer;   s    r=   re   AssistantEventHandler.close\   s      ==MM! r@   c                    [        U 5        gz(Waits until the stream has been consumedN)r   r;   s    r=   
until_done AssistantEventHandler.until_donee   s
    d#r@   c                r    U R                  5         U R                  (       d  [        S5      eU R                  $ )BWait for the stream to finish and returns the completed Run objectNo final run object found)ri   r3   rC   r;   s    r=   get_final_run#AssistantEventHandler.get_final_runi   s-    !!:;;!!!r@   c                    U R                  5         U R                  (       d  [        S5      eU R                  R                  5        Vs/ s H  oPM     sn$ s  snf )EWait for the stream to finish and returns the steps taken in this runNo run steps found)ri   r4   rC   valuesr<   steps     r=   get_final_run_steps)AssistantEventHandler.get_final_run_stepsr   sJ    ((344!%!:!:!A!A!CD!C!CDDD   	Ac                    U R                  5         U R                  (       d  [        S5      eU R                  R                  5        Vs/ s H  oPM     sn$ s  snf )JWait for the stream to finish and returns the messages emitted in this runNo messages found)ri   r5   rC   rs   r<   messages     r=   get_final_messages(AssistantEventHandler.get_final_messages{   sJ    ''233'+'?'?'F'F'HI'HG'HIIIrx   c              #  V  #    U  H  nUR                   S:w  a  M  UR                  R                  R                  =(       d    /  H]  nUR                  S:X  d  M  UR
                  (       d  M(  UR
                  R                  (       d  ME  UR
                  R                  v   M_     M     g 7fNthread.message.deltatexteventdatadeltacontenttyper   valuer<   r   content_deltas      r=   r7   %AssistantEventHandler.__text_deltas__   s~     E{{44!&!1!1!9!9!?R!? %%/M4F4F4F=K]K]KcKcKc',,222 "@	 s   AB)B)+B)!B)c                    gzFires when the stream has finished.

This happens if the stream is read to completion
or if an exception occurs during iteration.
N r;   s    r=   on_endAssistantEventHandler.on_end       r@   c                    gz2Callback that is fired for every Server-Sent-EventNr   r<   r   s     r=   on_eventAssistantEventHandler.on_event   r   r@   c                    gz1Callback that is fired when a run step is createdNr   r<   run_steps     r=   on_run_step_created)AssistantEventHandler.on_run_step_created   r   r@   c                    ga  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<   r   snapshots      r=   on_run_step_delta'AssistantEventHandler.on_run_step_delta   r   r@   c                    gz3Callback that is fired when a run step is completedNr   r   s     r=   on_run_step_done&AssistantEventHandler.on_run_step_done   r   r@   c                    gz2Callback that is fired when a tool call is createdNr   r<   	tool_calls     r=   on_tool_call_created*AssistantEventHandler.on_tool_call_created   r   r@   c                    gz<Callback that is fired when a tool call delta is encounteredNr   r   s      r=   on_tool_call_delta(AssistantEventHandler.on_tool_call_delta   r   r@   c                    gr   r   r   s     r=   on_tool_call_done'AssistantEventHandler.on_tool_call_done   r   r@   c                    gz4Fired whenever an exception happens during streamingNr   r<   	exceptions     r=   on_exception"AssistantEventHandler.on_exception   r   r@   c                    gzFires if the request times outNr   r;   s    r=   
on_timeout AssistantEventHandler.on_timeout   r   r@   c                    gz0Callback that is fired when a message is createdNr   r|   s     r=   on_message_created(AssistantEventHandler.on_message_created   r   r@   c                    ga  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_delta&AssistantEventHandler.on_message_delta   r   r@   c                    gz2Callback that is fired when a message is completedNr   r|   s     r=   on_message_done%AssistantEventHandler.on_message_done   r   r@   c                    gz;Callback that is fired when a text content block is createdNr   r<   r   s     r=   on_text_created%AssistantEventHandler.on_text_created   r   r@   c                    g)aB  Callback that is fired whenever a text content delta is returned
by the API.

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

on_text_delta(TextDelta(value="The"), Text(value="The")),
on_text_delta(TextDelta(value=" solution"), Text(value="The solution")),
on_text_delta(TextDelta(value=" to"), Text(value="The solution to")),
on_text_delta(TextDelta(value=" the"), Text(value="The solution to the")),
on_text_delta(TextDelta(value=" equation"), Text(value="The solution to the equation")),
Nr   r   s      r=   on_text_delta#AssistantEventHandler.on_text_delta   r   r@   c                    gz<Callback that is fired when a text content block is finishedNr   r   s     r=   on_text_done"AssistantEventHandler.on_text_done   r   r@   c                    gz;Callback that is fired when an image file block is finishedNr   r<   
image_files     r=   on_image_file_done(AssistantEventHandler.on_image_file_done   r   r@   c                   Xl         U R                  U5        [        UU R                  S9u  U l        nU R                  b-  U R                  U R                  U R                  R
                  '   [        UU R                  S9  U Hb  nU R                  c   eU R                  R                  UR                     nUR                  S:X  d  MG  U R                  UR                  5        Md     UR                  S:X  dP  UR                  S:X  d@  UR                  S:X  d0  UR                  S:X  d   UR                  S:X  d  UR                  S	:X  a?  UR                  U l        U R                   (       a  U R#                  U R                   5        GOUR                  S
:X  d0  UR                  S:X  d   UR                  S:X  d  UR                  S:X  a  UR                  U l        GO^UR                  S:X  a  U R%                  UR                  5        GO1UR                  S:X  Ga  U R                  nUc   eUR                  R&                  nUR                  Gbz  UR                   GHi  nUR                  S:X  ab  UR                  (       aQ  UR                  UR                     nUR                  S:X  d   eU R)                  UR                  UR                  5        UR                  U R*                  :w  a  U R,                  b  U R,                  R                  S:X  a&  U R/                  U R,                  R                  5        O?U R,                  R                  S:X  a%  U R1                  U R,                  R2                  5        UR                  U l        UR                  UR                     U l        UR                  UR                     U l        GMl     U R5                  UR                  R&                  U5        GOIUR                  S:X  d  UR                  S:X  a  UR                  U l        UR                  U R                  UR                  R
                  '   U R*                  bz  UR                  R                  U R*                     nUR                  S:X  a  U R/                  UR                  5        O+UR                  S:X  a  U R1                  UR2                  5        U R7                  UR                  5        GOGUR                  S:X  a8  UR                  R
                  U l        U R;                  UR                  5        GOUR                  S:X  a  UR                  R
                  U l        GOUR                  S:X  Ga  U R                  UR                  R
                     n	UR                  R&                  n
U
R<                  (       Gay  U
R<                  R                  S:X  Ga^  U
R<                  R>                  GbF  U	R<                  R                  S:X  d   eU
R<                  R>                   GH  nUR                  U R@                  :X  a3  U RC                  UU	R<                  R>                  UR                     5        UR                  U R@                  :w  a|  U R                   b  U R#                  U R                   5        UR                  U l         U	R<                  R>                  UR                     U l        U RE                  U R                   5        U	R<                  R>                  UR                     U l        GM     U RG                  UR                  R&                  U	5        OUR                  S:X  d0  UR                  S:X  d   UR                  S:X  d  UR                  S:X  aO  U R                   (       a  U R#                  U R                   5        U RI                  UR                  5        S U l        OGUR                  S:X  d   UR                  S:X  d  UR                  S:X  a  O[J        (       a  [M        U5        S U l         g 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_eventr6   r5   idaccumulate_run_stepr4   r   indexr   r   r   r   r   r3   r1   r   r   r   r   r.   r/   r   r   r   r   r   r2   r   step_detailsr   r0   r   r   r   r   r   r   r<   r   new_contentr   blockr   message_deltasnapshot_contentr   step_snapshotrun_step_deltatool_call_deltas               r=   _emit_sse_event%AssistantEventHandler._emit_sse_event   sr   #e7G%)%D%D8
4' **6KOKjKjD$$T%D%D%G%GH#88	

 )M22>>>33;;M<O<OPEzzV#$$UZZ0 ) KK11{{44{{22{{11{{::{{55!&D&&&&t'>'>?KK//{{66{{55{{11!&D[[44##EJJ/[[2266H'''!JJ,,M$$0%2%:%: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) &;, !!%**"2"2H=[[66%++Id:d.3jjD+6;jjD$$UZZ]]322>**,,T-P-PQ<<6)%%gll3\\\1++G,>,>?  ,[[55).D&$$UZZ0[[99).D&[[33 55ejjmmDM"ZZ--N+++"//44D"//::F$1166,FFF'5'B'B'M'MO&,,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+' (N* ""

  
 KK66{{99{{77{{66&&&&t'>'>?!!%**-)-D&[[,,?[0[_d_j_jnu_u }U#"r@   c              #    #    U R                   nU(       d  [        S5      e U H  nU R                  U5        Uv   M      U R                  5         g ! [        R                  [
        R                  4 a'  nU R                  5         U R                  U5        e S nAf[         a  nU R                  U5        e S nAff = f! U R                  5         f = f7fNzStream has not been started yet)r:   rC   r   httpxTimeoutExceptionasyncioTimeoutErrorr   r   	Exceptionr   r<   rE   r   excs       r=   r8    AssistantEventHandler.__stream__  s     @AA	$$U+   KKM &&(<(<= 	OOc" 	c"	 KKMs@   CA C$B<6"BB<%B77B<<B? ?CC__current_message_snapshot__current_run__current_run_step_id__message_snapshots__run_step_snapshots__streamr-   r/   r.   r1   r0   r9   r*   NreturnNone)rE   zStream[AssistantStreamEvent]r  r  r  r   )r  zIterator[AssistantStreamEvent]r  zAssistantStreamEvent | Noner  z
Run | Noner  zRunStep | Noner  Message | Noner  r   r  zlist[RunStep]r  zlist[Message])r  zIterator[str]r   r   r  r  r   r#   r  r  r   r%   r   r#   r  r  r   r$   r  r  r   r&   r   r$   r  r  r   r   r  r  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____firstlineno____annotations__r>   rF   rJ   rP   propertyrT   rX   r\   r`   re   ri   rn   rv   r~   r7   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8   __static_attributes__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                  R    \ rS rSrSr      SS jrS	S jr        S
S jrSrg)AssistantStreamManageri  zWrapper 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               *    S U l         X l        Xl        g r,   )_AssistantStreamManager__stream&_AssistantStreamManager__event_handler$_AssistantStreamManager__api_requestr<   api_requestevent_handlers      r=   r>   AssistantStreamManager.__init__  s     >B,(r@   c                    U R                  5       U l        U R                  R                  U R                  5        U R                  $ r,   )r+  r)  r*  rF   r;   s    r=   	__enter__ AssistantStreamManager.__enter__  s6    **,""4==1###r@   c                T    U R                   b  U R                   R                  5         g g r,   )r)  re   r<   exc_typer   exc_tbs       r=   __exit__AssistantStreamManager.__exit__  s#     ==$MM! %r@   __api_request__event_handlerr  N)r-  z*Callable[[], Stream[AssistantStreamEvent]]r.  r$  r  r  )r  r$  r5  ztype[BaseException] | Noner   zBaseException | Noner6  zTracebackType | Noner  r  )	r  r  r  r   __doc__r>   r1  r7  r#  r   r@   r=   r'  r'    sX    )?) .	)
 
)$
"," "" %	"
 
"r@   r'  c                     \ rS rSr% S\S'    S'S jrS(S jrS)S jrS*S jrS'S jr	\
S+S	 j5       r\
S,S
 j5       r\
S-S j5       r\
S.S j5       rS'S jrS/S jrS0S jrS1S jrS2S jrS'S jrS3S jrS4S jrS5S jrS4S jrS6S jrS7S jrS6S jrS8S jrS'S jrS9S jrS:S jrS9S jr S;S jr!S<S  jr"S;S! jr#S=S" jr$S3S# jr%S*S$ jr&S%r'g&)>AsyncAssistantEventHandleri  zAsyncIterable[str]r*   c                    S U l         S U l        S U l        S U l        S U l        S U l        S U l        0 U l        0 U l        S U l	        U R                  5       U l        U R                  5       U l        S U l        g r,   )r-   r.   r/   r0   r1   0_AsyncAssistantEventHandler__current_run_step_id(_AsyncAssistantEventHandler__current_run/_AsyncAssistantEventHandler__run_step_snapshots._AsyncAssistantEventHandler__message_snapshots5_AsyncAssistantEventHandler__current_message_snapshotr7   r*   r8   r9   #_AsyncAssistantEventHandler__streamr;   s    r=   r>   #AsyncAssistantEventHandler.__init__  sx    ;?:>+?C%48%3715")-8:!79 :>'//1*BFr@   c                H    U R                   (       a  [        S5      eXl         g rB   )rF  rC   rD   s     r=   rF    AsyncAssistantEventHandler._init  rH   r@   c                R   #    U R                   R                  5       I S h  vN $  N7fr,   )r9   	__anext__r;   s    r=   rK  $AsyncAssistantEventHandler.__anext__  s     ^^--////s   '%'c               J   #    U R                     S h  vN nU7v   M   N
 g 7fr,   rM   rN   s     r=   	__aiter__$AsyncAssistantEventHandler.__aiter__  s     .. 	$J	.s   #!!#!#c                x   #    U R                   (       a#  U R                   R                  5       I Sh  vN   gg N7frd   )rF  re   r;   s    r=   re    AsyncAssistantEventHandler.close  s,      ==--%%''' 's   /:8:c                    U R                   $ r,   rS   r;   s    r=   rT   (AsyncAssistantEventHandler.current_event  rV   r@   c                    U R                   $ r,   )rB  r;   s    r=   rX   &AsyncAssistantEventHandler.current_run  rZ   r@   c                X    U R                   (       d  g U R                  U R                      $ r,   )rA  rC  r;   s    r=   r\   4AsyncAssistantEventHandler.current_run_step_snapshot
  r^   r@   c                    U R                   $ r,   )rE  r;   s    r=   r`   3AsyncAssistantEventHandler.current_message_snapshot  rb   r@   c                6   #    [        U 5      I Sh  vN   g N7frh   )r   r;   s    r=   ri   %AsyncAssistantEventHandler.until_done  s     $T***s   c                   #    U R                  5       I Sh  vN   U R                  (       d  [        S5      eU R                  $  N,7f)rl   Nrm   )ri   rB  rC   r;   s    r=   rn   (AsyncAssistantEventHandler.get_final_run  s;     oo!!:;;!!! 	 s   AA-Ac                   #    U R                  5       I Sh  vN   U R                  (       d  [        S5      eU R                  R                  5        Vs/ s H  oPM     sn$  NJs  snf 7f)rq   Nrr   )ri   rC  rC   rs   rt   s     r=   rv   .AsyncAssistantEventHandler.get_final_run_steps"  s[     oo((344!%!:!:!A!A!CD!C!CDD 	 
 E!   A(A!<A(A#A(#A(c                   #    U R                  5       I Sh  vN   U R                  (       d  [        S5      eU R                  R                  5        Vs/ s H  oPM     sn$  NJs  snf 7f)rz   Nr{   )ri   rD  rC   rs   r|   s     r=   r~   -AsyncAssistantEventHandler.get_final_messages+  s[     oo''233'+'?'?'F'F'HI'HG'HII 	 
 Jr`  c               f  #    U   S h  vN nUR                   S:w  a  M  UR                  R                  R                  =(       d    /  H^  nUR                  S:X  d  M  UR
                  (       d  M(  UR
                  R                  (       d  ME  UR
                  R                  7v   M`     M   N
 g 7fr   r   r   s      r=   r7   *AsyncAssistantEventHandler.__text_deltas__4  s      	3%{{44!&!1!1!9!9!?R!? %%/M4F4F4F=K]K]KcKcKc',,222 "@		34s8   B1B/B-B/AB1B11B1B1-B//B1c                   #    g7fr   r   r;   s    r=   r   !AsyncAssistantEventHandler.on_end?          c                   #    g7fr   r   r   s     r=   r   #AsyncAssistantEventHandler.on_eventF  rg  rh  c                   #    g7fr   r   r   s     r=   r   .AsyncAssistantEventHandler.on_run_step_createdI  rg  rh  c                   #    g7fr   r   r   s      r=   r   ,AsyncAssistantEventHandler.on_run_step_deltaL  rg  rh  c                   #    g7fr   r   r   s     r=   r   +AsyncAssistantEventHandler.on_run_step_doneg  rg  rh  c                   #    g7fr   r   r   s     r=   r   /AsyncAssistantEventHandler.on_tool_call_createdj  rg  rh  c                   #    g7fr   r   r   s      r=   r   -AsyncAssistantEventHandler.on_tool_call_deltam  rg  rh  c                   #    g7fr   r   r   s     r=   r   ,AsyncAssistantEventHandler.on_tool_call_donep  rg  rh  c                   #    g7fr   r   r   s     r=   r   'AsyncAssistantEventHandler.on_exceptions  rg  rh  c                   #    g7fr   r   r;   s    r=   r   %AsyncAssistantEventHandler.on_timeoutv  rg  rh  c                   #    g7fr   r   r|   s     r=   r   -AsyncAssistantEventHandler.on_message_createdy  rg  rh  c                   #    g7fr   r   r   s      r=   r   +AsyncAssistantEventHandler.on_message_delta|  rg  rh  c                   #    g7fr   r   r|   s     r=   r   *AsyncAssistantEventHandler.on_message_done  rg  rh  c                   #    g7fr   r   r   s     r=   r   *AsyncAssistantEventHandler.on_text_created  rg  rh  c                   #    g7f)aD  Callback that is fired whenever a text content delta is returned
by the API.

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

on_text_delta(TextDelta(value="The"), Text(value="The")),
on_text_delta(TextDelta(value=" solution"), Text(value="The solution")),
on_text_delta(TextDelta(value=" to"), Text(value="The solution to")),
on_text_delta(TextDelta(value=" the"), Text(value="The solution to the")),
on_text_delta(TextDelta(value=" equation"), Text(value="The solution to the equivalent")),
Nr   r   s      r=   r   (AsyncAssistantEventHandler.on_text_delta  rg  rh  c                   #    g7fr   r   r   s     r=   r   'AsyncAssistantEventHandler.on_text_done  rg  rh  c                   #    g7fr   r   r   s     r=   r   -AsyncAssistantEventHandler.on_image_file_done  rg  rh  c                  #    Xl         U R                  U5      I S h  vN   [        UU R                  S9u  U l        nU R                  b-  U R                  U R                  U R                  R
                  '   [        UU R                  S9  U Hj  nU R                  c   eU R                  R                  UR                     nUR                  S:X  d  MG  U R                  UR                  5      I S h  vN   Ml     UR                  S:X  dP  UR                  S:X  d@  UR                  S:X  d0  UR                  S:X  d   UR                  S:X  d  UR                  S	:X  aG  UR                  U l        U R                   (       a#  U R#                  U R                   5      I S h  vN   GO)UR                  S
:X  d0  UR                  S:X  d   UR                  S:X  d  UR                  S:X  a  UR                  U l        GOUR                  S:X  a%  U R%                  UR                  5      I S h  vN   GOUR                  S:X  Ga  U R                  nUc   eUR                  R&                  nUR                  Gb  UR                   GH  nUR                  S:X  aj  UR                  (       aY  UR                  UR                     nUR                  S:X  d   eU R)                  UR                  UR                  5      I S h  vN   UR                  U R*                  :w  a  U R,                  b  U R,                  R                  S:X  a.  U R/                  U R,                  R                  5      I S h  vN   OGU R,                  R                  S:X  a-  U R1                  U R,                  R2                  5      I S h  vN   UR                  U l        UR                  UR                     U l        UR                  UR                     U l        GM     U R5                  UR                  R&                  U5      I S h  vN   GOUR                  S:X  d  UR                  S:X  a  UR                  U l        UR                  U R                  UR                  R
                  '   U R*                  b  UR                  R                  U R*                     nUR                  S:X  a$  U R/                  UR                  5      I S h  vN   O3UR                  S:X  a#  U R1                  UR2                  5      I S h  vN   U R7                  UR                  5      I S h  vN   GOUR                  S:X  a@  UR                  R
                  U l        U R;                  UR                  5      I S h  vN   GO/UR                  S:X  a  UR                  R
                  U l        GOUR                  S:X  Ga  U R                  UR                  R
                     n	UR                  R&                  n
U
R<                  (       Ga  U
R<                  R                  S:X  Gav  U
R<                  R>                  Gb^  U	R<                  R                  S:X  d   eU
R<                  R>                   GH'  nUR                  U R@                  :X  a;  U RC                  UU	R<                  R>                  UR                     5      I S h  vN   UR                  U R@                  :w  a  U R                   b#  U R#                  U R                   5      I S h  vN   UR                  U l         U	R<                  R>                  UR                     U l        U RE                  U R                   5      I S h  vN   U	R<                  R>                  UR                     U l        GM*     U RG                  UR                  R&                  U	5      I S h  vN   OUR                  S:X  d0  UR                  S:X  d   UR                  S:X  d  UR                  S:X  a_  U R                   (       a#  U R#                  U R                   5      I S h  vN   U RI                  UR                  5      I S h  vN   S U l        OGUR                  S:X  d   UR                  S:X  d  UR                  S:X  a  O[J        (       a  [M        U5        S U l         g  GN GN GN> GN GN GN GN: GN GN GN GN GN_ GN GN GNy GN! N N7fr   )'r-   r   r   rE  rD  r   r   rC  r   r   r   r   r   r   r   rB  r1   r   r   r   r   r.   r/   r   r   r   r   r   rA  r   r   r   r0   r   r   r   r   r   r   r   s               r=   r   *AsyncAssistantEventHandler._emit_sse_event  sC    #mmE"""7G%)%D%D8
4' **6KOKjKjD$$T%D%D%G%GH#88	

 )M22>>>33;;M<O<OPEzzV#**5::666 ) KK11{{44{{22{{11{{::{{55!&D&&,,T-D-DEEEKK//{{66{{55{{11!&D[[44))%**555[[2266H'''!JJ,,M$$0%2%:%: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) &;, ''

(8(8(CCC[[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2[[55).D&**5::666[[99).D&[[33 55ejjmmDM"ZZ--N+++"//44D"//::F$1166,FFF'5'B'B'M'MO&,,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+' (N* ((

    
 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B3dd3c4B(dcBd$c%Cd6c 7A-d$c#%Ad,c&-A?d,c)-Cd/c,03d#c/$"dc2Adc5Edc8 A	d)c;*Adc>Ad d!A4dd"d8d9Adddd d#d&d)d,d/d2d5d8d;d>ddddc               ,  #    U R                   nU(       d  [        S5      e U  S h  vN nU R                  U5      I S h  vN   U7v   M)   N$ N
 O! [        R                  [
        R                  4 a9  nU R                  5       I S h  vN    U R                  U5      I S h  vN    e S nAf[         a   nU R                  U5      I S h  vN    e S nAff = f U R                  5       I S h  vN    g ! U R                  5       I S h  vN    f = f7fr   )rF  rC   r   r   r   r   r   r   r   r   r   r   s       r=   r8   %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 C6 $C7B+
BB+$B'%B++C8CCCCC6 D/C20D6D
DDDr   Nr  )rE   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!  r>   rF   rK  rN  re   r"  rT   rX   r\   r`   ri   rn   rv   r~   r7   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8   r#  r   r@   r=   r?  r?    s    ##
G 0( # # " " E E / /+"EJ3A@6BAKKC-?2AJKJO#b r@   r?  AsyncAssistantEventHandlerTc                  R    \ rS rSrSr      SS jrS	S jr        S
S jrSrg)AsyncAssistantStreamManageriX  a  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               *    S U l         X l        Xl        g r,   )$_AsyncAssistantStreamManager__stream+_AsyncAssistantStreamManager__event_handler)_AsyncAssistantStreamManager__api_requestr,  s      r=   r>   $AsyncAssistantStreamManager.__init__d  s     CG,(r@   c                   #    U R                   I S h  vN U l        U R                  R                  U R                  5        U R                  $  N:7fr,   )r  r  r  rF   r;   s    r=   
__aenter__&AsyncAssistantStreamManager.__aenter__n  s>     "000""4==1### 1s   AA;Ac                p   #    U R                   b#  U R                   R                  5       I S h  vN   g g  N7fr,   )r  re   r4  s       r=   	__aexit__%AsyncAssistantStreamManager.__aexit__s  s/      ==$--%%''' %'s   +646r9  N)r-  z,Awaitable[AsyncStream[AssistantStreamEvent]]r.  r  r  r  )r  r  r<  )	r  r  r  r   r=  r>   r  r  r#  r   r@   r=   r  r  X  sX    	)A) 3	)
 
)$
(,( "( %	(
 
(r@   r  c                   U R                   S:X  a#  U R                  XR                  R                  '   g U R                   S:X  a  U R                  nXR                     nUR                  (       ad  [	        [        S[        USSS95      [        S[        UR                  SSS95      5      n[        [        [        [        US95      XR                  '   g )Nr   r   dict[object, object]TFexclude_unsetwarningstype_r   )	r   r   r   r   accumulate_deltar   r   r#   r   )r   r   r   r   mergeds        r=   r   r   }  s    
 {{//,1JJ::==){{--zz%gg.::%*xteL *tzzN	F /37NQX`f<g.h{{+r@   c                *   U R                   S:X  a  U R                  / 4$ / nU R                   S:w  a  U/ 4$ U(       d  [        S5      eU R                  nUR                  R                  (       a  UR                  R                   H  n UR                  UR
                     n[        [        S[        USSS95      [        S[        USSS95      5      n[        [        [        [        [        [        5      US95      UR                  UR
                  '   M     X4$ ! [         am    UR                  R                  UR
                  [        [        [        [        [        [        5      [        USSS9S95      5        UR                  U5         GM  f = f)	zIReturns a tuple of message snapshot and newly created text message deltasr   r   z5Encountered a message delta with no previous snapshotr  TFr  r  )r   r   rC   r   r   r   r  r   r   r!   r   r   
IndexErrorinsertappend)r   r`   r   r   r   r   r  s          r=   r   r     s}    {{..zz2~-/K{{,,'++#RSS::Dzz!ZZ//M!0889L9LM *."5uM ."=uU	 IM"""37$I(001D1DE7 0H $00C  2(0077!''&&"&sN";",]$Y^"_
 ""=112s   DA2FFc                   UR                  5        GH  u  p#X ;  a  X0U'   M  X   nUc  X0U'   M  US:X  d  US:X  a  X0U'   M0  [        U[        5      (       a  [        U[        5      (       a  XC-  nGO/[        U[        [        45      (       a   [        U[        [        45      (       a  XC-  nO[        U5      (       a  [        U5      (       a  [        XC5      nO[        U5      (       a  [        U5      (       a  [        S U 5       5      (       a  UR                  U5        GM  U Hw  n[        U5      (       d  [        SU 35      e US   n[        U[        5      (       d  [        SU 35      e XF   n[        U5      (       d  [        S5      e[        X5      XF'   My     X@U'   GM     U $ ! [         a  n[        SU 35      UeS nAff = f! [         a    UR                  Xe5         M  f = f)Nr   r   c              3  X   #    U  H   n[        U[        [        [        45      v   M"     g 7fr,   )
isinstancestrintfloat).0xs     r=   	<genexpr>#accumulate_delta.<locals>.<genexpr>  s!     GY:a#sE!233Ys   (*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)itemsr  r  r  r  r   r  r   allextend	TypeErrorKeyErrorrC   r  r  )	accr   keydelta_value	acc_valuedelta_entryr   r   	acc_entrys	            r=   r  r    s   !KKM>"HH	"H '>SF]"Hi%%*[#*F*F$I	C<00ZcSX\5Z5Z$IYGK$8$8(@IYGK$8$8 GYGGG  -*{++#&WXcWd$efft'0E "%--#&dejdk$lmmP ) 0I #9--'(9::'7	'OI$)  +, Co *r J%   t&)[\g[h'ijpsst " 9$$U89s*   F+0G+
G	5GG	G+*G+)r   r   r   zdict[str, RunStep]r  r  )r   r   r`   r  r  z0tuple[Message | None, list[MessageContentDelta]])r  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?  r  r  r   r   r  r   r@   r=   <module>r     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@   