Ë
    /æjcw  ã                  ó,  — 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 d dlmZmZmZ d dlmZ ddlmZmZmZ dd	lmZmZmZmZmZmZmZmZ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)m*Z*m+Z+ ddl,m-Z- ddl.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z: ddl;m<Z<m=Z=m>Z> ddl?m@Z@mAZA ddlBmCZCmDZD ddlEmFZG ddlHmIZJ  G d„ dee2   «      ZK G d„ dee2   «      ZL G d„ dee2   «      ZM G d„ d ee2   «      ZN G d!„ d"ee2   «      ZO G d#„ d$«      ZPd'd%„ZQd(d&„ZRy))é    )ÚannotationsN)ÚTracebackType)ÚTYPE_CHECKINGÚGenericÚCallableÚIterableÚ	AwaitableÚAsyncIteratorÚcast)ÚSelfÚIteratorÚassert_never)Ú	from_jsoné   )ÚParsedChoiceSnapshotÚParsedChatCompletionSnapshotÚ#ParsedChatCompletionMessageSnapshot)Ú
ChunkEventÚContentDoneEventÚRefusalDoneEventÚContentDeltaEventÚRefusalDeltaEventÚLogprobsContentDoneEventÚLogprobsRefusalDoneEventÚChatCompletionStreamEventÚLogprobsContentDeltaEventÚLogprobsRefusalDeltaEventÚ"FunctionToolCallArgumentsDoneEventÚ#FunctionToolCallArgumentsDeltaEventé   )Úaccumulate_deltaé   )ÚOmitÚomit)Úis_givenÚconsume_sync_iteratorÚconsume_async_iterator)Ú
model_dump)ÚbuildÚconstruct_typeé   )ÚResponseFormatTÚhas_parseable_inputÚmaybe_parse_contentÚparse_chat_completionÚget_input_tool_by_nameÚparse_function_tool_arguments)ÚStreamÚAsyncStream)ÚChatCompletionChunkÚParsedChatCompletionÚChatCompletionToolUnionParam)ÚLengthFinishReasonErrorÚContentFilterFinishReasonError)Ú
ModerationÚChoiceLogprobs)ÚChoice)ÚResponseFormatc                  óŠ   — e Zd ZdZ	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Z	 	 	 	 	 	 	 	 dd„Zdd„Z	dd„Z
dd	„Zedd
„«       Zdd„Zy)ÚChatCompletionStreamá+  Wrapper over the Chat Completions streaming API that adds helpful
    events such as `content.done`, supports automatically parsing
    responses & tool calls and accumulates a `ChatCompletion` object
    from each individual chunk.

    https://platform.openai.com/docs/api-reference/streaming
    c               ó‚   — || _         |j                  | _        | j                  «       | _        t        ||¬«      | _        y ©N©Úresponse_formatÚinput_tools©Ú_raw_streamÚresponseÚ	_responseÚ
__stream__Ú	_iteratorÚChatCompletionStreamStateÚ_state©ÚselfÚ
raw_streamrC   rD   s       úi/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/openai/lib/streaming/chat/_completions.pyÚ__init__zChatCompletionStream.__init__7   ó6   € ð &ˆÔØ#×,Ñ,ˆŒØŸ™Ó*ˆŒÜ/ÀÐ]hÔiˆ�ó    c                ó6   — | j                   j                  «       S ©N)rJ   Ú__next__©rN   s    rP   rV   zChatCompletionStream.__next__C   s   € Ø�~‰~×&Ñ&Ó(Ð(rS   c              #  ó6   K  — | j                   D ]  }|–— Œ y ­wrU   ©rJ   ©rN   Úitems     rP   Ú__iter__zChatCompletionStream.__iter__F   s   è ø€ Ø—N‘Nò 	ˆDØ‹Jñ	ùs   ‚c                ó   — | S rU   © rW   s    rP   Ú	__enter__zChatCompletionStream.__enter__J   s   € ØˆrS   c                ó$   — | j                  «        y rU   ©Úclose©rN   Úexc_typeÚexcÚexc_tbs       rP   Ú__exit__zChatCompletionStream.__exit__M   s   € ð 	�
‰
�rS   c                ó8   — | j                   j                  «        y©zŠ
        Close the response and release the connection.

        Automatically called if the response body is read to completion.
        N)rH   rb   rW   s    rP   rb   zChatCompletionStream.closeU   s   € ð 	�‰×ÑÕrS   c                óV   — | j                  «        | j                  j                  «       S )áV  Waits until the stream has been read to completion and returns
        the accumulated `ParsedChatCompletion` object.

        If you passed a class type to `.stream()`, the `completion.choices[0].message.parsed`
        property will be the content deserialised into that class, if there was any content returned
        by the API.
        ©Ú
until_donerL   Úget_final_completionrW   s    rP   rn   z)ChatCompletionStream.get_final_completion]   s!   € ð 	�‰ÔØ�{‰{×/Ñ/Ó1Ð1rS   c                ó   — t        | «       | S )ú*Blocks until the stream has been consumed.)r&   rW   s    rP   rm   zChatCompletionStream.until_doneh   s   € ä˜dÔ#ØˆrS   c                ó.   — | j                   j                  S rU   ©rL   Úcurrent_completion_snapshotrW   s    rP   rs   z0ChatCompletionStream.current_completion_snapshotm   ó   € à�{‰{×6Ñ6Ð6rS   c              #  ó’   K  — | j                   D ]4  }t        |«      sŒ| j                  j                  |«      }|D ]  }|–— Œ Œ6 y ­wrU   ©rF   Ú$_is_valid_chat_completion_chunk_weakrL   Úhandle_chunk©rN   Ú	sse_eventÚevents_to_fireÚevents       rP   rI   zChatCompletionStream.__stream__q   sN   è ø€ Ø×)Ñ)ò 	ˆIÜ7¸	ÔBØØ!Ÿ[™[×5Ñ5°iÓ@ˆNØ'ò �Ø“ññ		ùs   ‚AAN)rO   zStream[ChatCompletionChunk]rC   ú2type[ResponseFormatT] | ResponseFormatParam | OmitrD   ú-Iterable[ChatCompletionToolUnionParam] | OmitÚreturnÚNone©r   z*ChatCompletionStreamEvent[ResponseFormatT])r   z4Iterator[ChatCompletionStreamEvent[ResponseFormatT]]©r   r   ©rd   ztype[BaseException] | Nonere   zBaseException | Nonerf   zTracebackType | Noner   r€   ©r   r€   ©r   z%ParsedChatCompletion[ResponseFormatT]©r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rQ   rV   r\   r_   rg   rb   rn   rm   Úpropertyrs   rI   r^   rS   rP   r>   r>   .   s�   „ ñð
jð 0ð
jð Lð	
jð
 Cð
jð 
ó
jó)óóðà,ðð "ðð %ð	ð
 
óóó	2óð
 ò7ó ð7ôrS   r>   c                  óH   — e Zd ZdZ	 	 	 	 	 	 	 	 dd„Zdd„Z	 	 	 	 	 	 	 	 dd„Zy)	ÚChatCompletionStreamManageraF  Context manager over a `ChatCompletionStream` that is returned by `.stream()`.

    This context manager ensures the response cannot be leaked if you don't read
    the stream to completion.

    Usage:
    ```py
    with client.chat.completions.stream(...) as stream:
        for event in stream:
            ...
    ```
    c               ó<   — d | _         || _        || _        || _        y rU   )Ú$_ChatCompletionStreamManager__streamÚ)_ChatCompletionStreamManager__api_requestÚ-_ChatCompletionStreamManager__response_formatÚ)_ChatCompletionStreamManager__input_tools©rN   Úapi_requestrC   rD   s       rP   rQ   z$ChatCompletionStreamManager.__init__ˆ   s%   € ð GKˆŒØ(ˆÔØ!0ˆÔØ(ˆÕrS   c                óˆ   — | j                  «       }t        || j                  | j                  ¬«      | _        | j                  S ©N)rO   rC   rD   )r�   r>   r‘   r’   r�   ©rN   rO   s     rP   r_   z%ChatCompletionStreamManager.__enter__”   s=   € Ø×'Ñ'Ó)ˆ
ä,Ø!Ø ×2Ñ2Ø×*Ñ*ô
ˆŒð �}‰}ÐrS   c                óR   — | j                   �| j                   j                  «        y y rU   )r�   rb   rc   s       rP   rg   z$ChatCompletionStreamManager.__exit__Ÿ   s#   € ð �=‰=Ð$Ø�M‰M×ÑÕ!ð %rS   N)r”   z)Callable[[], Stream[ChatCompletionChunk]]rC   r}   rD   r~   r   r€   )r   z%ChatCompletionStream[ResponseFormatT]rƒ   )r‡   rˆ   r‰   rŠ   rQ   r_   rg   r^   rS   rP   r�   r�   z   sd   „ ñð
)à>ð
)ð Lð	
)ð
 Cð
)ð 
ó
)ó	ð"à,ð"ð "ð"ð %ð	"ð
 
ô"rS   r�   c                  óŠ   — e Zd ZdZ	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Z	 	 	 	 	 	 	 	 dd„Zdd„Z	dd„Z
dd	„Zedd
„«       Zdd„Zy)ÚAsyncChatCompletionStreamr?   c               ó‚   — || _         |j                  | _        | j                  «       | _        t        ||¬«      | _        y rA   rE   rM   s       rP   rQ   z"AsyncChatCompletionStream.__init__²   rR   rS   c              ƒ  óR   K  — | j                   j                  «       ƒ d {  –—† S 7 Œ­wrU   )rJ   Ú	__anext__rW   s    rP   r�   z#AsyncChatCompletionStream.__anext__¾   s   è ø€ Ø—^‘^×-Ñ-Ó/×/Ð/Ð/ús   ‚' %¡'c               óH   K  — | j                   2 3 d {  –—† }|­–— Œ7 Œ
6 y ­wrU   rY   rZ   s     rP   Ú	__aiter__z#AsyncChatCompletionStream.__aiter__Á   s&   è ø€ ØŸ.™.÷ 	ð 	�$ØŒJð	ø™.ùs   ‚"� “” —"ž  "c              ƒ  ó   K  — | S ­wrU   r^   rW   s    rP   Ú
__aenter__z$AsyncChatCompletionStream.__aenter__Å   s   è ø€ Øˆùs   ‚c              ƒ  ó@   K  — | j                  «       ƒ d {  –—†  y 7 Œ­wrU   ra   rc   s       rP   Ú	__aexit__z#AsyncChatCompletionStream.__aexit__È   s   è ø€ ð �j‰j‹l×Òús   ‚–—c              ƒ  óT   K  — | j                   j                  «       ƒ d{  –—†  y7 Œ­wri   )rH   ÚacloserW   s    rP   rb   zAsyncChatCompletionStream.closeÐ   s   è ø€ ð �n‰n×#Ñ#Ó%×%Ò%ús   ‚( &¡(c              ƒ  ór   K  — | j                  «       ƒ d{  –—†  | j                  j                  «       S 7 Œ­w)rk   Nrl   rW   s    rP   rn   z.AsyncChatCompletionStream.get_final_completionØ   s0   è ø€ ð �o‰oÓ×ÐØ�{‰{×/Ñ/Ó1Ð1ð 	 ús   ‚7–5—7c              ƒ  ó8   K  — t        | «      ƒ d{  –—†  | S 7 Œ­w)rp   N)r'   rW   s    rP   rm   z$AsyncChatCompletionStream.until_doneã   s   è ø€ ä$ TÓ*×*Ð*Øˆð 	+ús   ‚‘’c                ó.   — | j                   j                  S rU   rr   rW   s    rP   rs   z5AsyncChatCompletionStream.current_completion_snapshotè   rt   rS   c               ó¤   K  — | j                   2 3 d {  –—† }t        |«      sŒ| j                  j                  |«      }|D ]  }|­–— Œ	 Œ=7 Œ86 y ­wrU   rv   ry   s       rP   rI   z$AsyncChatCompletionStream.__stream__ì   sW   è ø€ Ø#×/Ñ/÷ 	ð 	�)Ü7¸	ÔBØØ!Ÿ[™[×5Ñ5°iÓ@ˆNØ'ò �Ø”ñð		øÑ/ùs%   ‚A�A“A”A—5AÁAÁAN)rO   z AsyncStream[ChatCompletionChunk]rC   r}   rD   r~   r   r€   r�   )r   z9AsyncIterator[ChatCompletionStreamEvent[ResponseFormatT]]r‚   rƒ   r„   r…   r†   )r‡   rˆ   r‰   rŠ   rQ   r�   rŸ   r¡   r£   rb   rn   rm   r‹   rs   rI   r^   rS   rP   rš   rš   ©   s�   „ ñð
jð 5ð
jð Lð	
jð
 Cð
jð 
ó
jó0óóðà,ðð "ðð %ð	ð
 
óó&ó	2óð
 ò7ó ð7ôrS   rš   c                  óH   — e Zd ZdZ	 	 	 	 	 	 	 	 dd„Zdd„Z	 	 	 	 	 	 	 	 dd„Zy)	Ú AsyncChatCompletionStreamManageraQ  Context manager over a `AsyncChatCompletionStream` that is returned by `.stream()`.

    This context manager ensures the response cannot be leaked if you don't read
    the stream to completion.

    Usage:
    ```py
    async with client.chat.completions.stream(...) as stream:
        for event in stream:
            ...
    ```
    c               ó<   — d | _         || _        || _        || _        y rU   )Ú)_AsyncChatCompletionStreamManager__streamÚ._AsyncChatCompletionStreamManager__api_requestÚ2_AsyncChatCompletionStreamManager__response_formatÚ._AsyncChatCompletionStreamManager__input_toolsr“   s       rP   rQ   z)AsyncChatCompletionStreamManager.__init__  s%   € ð LPˆŒØ(ˆÔØ!0ˆÔØ(ˆÕrS   c              ƒ  óœ   K  — | j                   ƒ d {  –—† }t        || j                  | j                  ¬«      | _        | j                  S 7 Œ7­wr–   )r®   rš   r¯   r°   r­   r—   s     rP   r¡   z+AsyncChatCompletionStreamManager.__aenter__  sF   è ø€ Ø×-Ñ-×-ˆ
ä1Ø!Ø ×2Ñ2Ø×*Ñ*ô
ˆŒð �}‰}Ðð .ús   ‚A’A
“8Ac              ƒ  ón   K  — | j                   �#| j                   j                  «       ƒ d {  –—†  y y 7 Œ­wrU   )r­   rb   rc   s       rP   r£   z*AsyncChatCompletionStreamManager.__aexit__  s0   è ø€ ð �=‰=Ð$Ø—-‘-×%Ñ%Ó'×'Ñ'ð %Ø'ús   ‚*5¬3­5N)r”   z+Awaitable[AsyncStream[ChatCompletionChunk]]rC   r}   rD   r~   r   r€   )r   z*AsyncChatCompletionStream[ResponseFormatT]rƒ   )r‡   rˆ   r‰   rŠ   rQ   r¡   r£   r^   rS   rP   r«   r«   õ   sd   „ ñð
)à@ð
)ð Lð	
)ð
 Cð
)ð 
ó
)ó	ð(à,ð(ð "ð(ð %ð	(ð
 
ô(rS   r«   c                  óp   — e Zd ZdZeedœ	 	 	 	 	 dd„Zdd„Zedd„«       Zdd„Z	dd„Z
dd„Z	 	 	 	 	 	 dd	„Zy
)rK   aS  Helper class for manually accumulating `ChatCompletionChunk`s into a final `ChatCompletion` object.

    This is useful in cases where you can't always use the `.stream()` method, e.g.

    ```py
    from openai.lib.streaming.chat import ChatCompletionStreamState

    state = ChatCompletionStreamState()

    stream = client.chat.completions.create(..., stream=True)
    for chunk in response:
        state.handle_chunk(chunk)

        # can also access the accumulated `ChatCompletion` mid-stream
        state.current_completion_snapshot

    print(state.get_final_completion())
    ```
    )rD   rC   c               óÌ   — d | _         g | _        t        |«      r|D �cg c]  }|‘Œ c}ng | _        || _        t        j                  |«      r|| _        y t        | _        y c c}w rU   )	Ú7_ChatCompletionStreamState__current_completion_snapshotÚ/_ChatCompletionStreamState__choice_event_statesr%   Ú_input_toolsÚ_response_formatÚinspectÚisclassr$   Ú_rich_response_format)rN   rD   rC   Útools       rP   rQ   z"ChatCompletionStreamState.__init__9  sa   € ð SWˆÔ*Ø=?ˆÔ"ä>FÀ{Ô>S¨kÖ: dšTÓ:ÐY[ˆÔØ /ˆÔä&Ÿ™¨Ô?ˆOð 	Õ"ÜEIð 	Õ"ùò ;s   ž	A!c                óZ   — t        | j                  | j                  | j                  ¬«      S )zÉParse the final completion object.

        Note this does not provide any guarantees that the stream has actually finished, you must
        only call this method when the stream is finished.
        )Úchat_completionrC   rD   )r/   rs   r»   r·   rW   s    rP   rn   z.ChatCompletionStreamState.get_final_completionH  s,   € ô %Ø ×<Ñ<Ø ×6Ñ6Ø×)Ñ)ô
ð 	
rS   c                ó6   — | j                   €J ‚| j                   S rU   )rµ   rW   s    rP   rs   z5ChatCompletionStreamState.current_completion_snapshotT  s    € à×1Ñ1Ð=Ð=Ð=Ø×1Ñ1Ð1rS   c                óh   — | j                  |«      | _        | j                  || j                  ¬«      S )zTAccumulate a new chunk into the snapshot and returns an iterable of events to yield.)ÚchunkÚcompletion_snapshot)Ú_accumulate_chunkrµ   Ú_build_events)rN   rÁ   s     rP   rx   z&ChatCompletionStreamState.handle_chunkY  s9   € à-1×-CÑ-CÀEÓ-JˆÔ*à×!Ñ!ØØ $× BÑ Bð "ó 
ð 	
rS   c                óº   — 	 | j                   |j                     S # t        $ r6 t        | j                  ¬«      }| j                   j                  |«       |cY S w xY w)N)rD   )r¶   ÚindexÚ
IndexErrorÚChoiceEventStater·   Úappend)rN   ÚchoiceÚchoice_states      rP   Ú_get_choice_statez+ChatCompletionStreamState._get_choice_stateb  sU   € ð	 Ø×-Ñ-¨f¯l©lÑ;Ð;øÜò 	 Ü+¸×8IÑ8IÔJˆLØ×&Ñ&×-Ñ-¨lÔ;ØÒð	 ús   ‚ ›<AÁAc                óô  — | j                   }|€t        |«      S |j                  D �]Ð  }	 |j                  |j                     }|j                  j
                  xs g }t        t        t        t        t        t        dt        |j                  dt        |j                  j
                  xs g «      D ��ci c]  \  }}|dddii“Œ c}}dœ¬«      «      t        d|j                  j                  «       «      «      ¬«      «      |_        t        |«      D ]z  \  }}	|j                  j
                  xs g |   }
|	j                  dk(  r7|
j                  dk(  sJ ‚|	j                  j                   |
j                  _        Œit"        sŒpt%        |	«       Œ| 	 |j,                  rh|j,                  |_        t/        | j0                  | j2                  ¬«      r6|j,                  dk(  rt5        |¬«      ‚|j,                  dk(  rt7        |¬«      ‚|j                  j8                  r‰|j                  j:                  sst=        | j>                  «      r^|j                  j8                  jA                  «       r:tC        tE        |j                  j8                  d«      d¬«      |j                  _#        |j                  j
                  xs g D ]ì  }|j                  j
                  xs g |j                     }|j                  dk(  r¢tI        | j2                  |j                  jJ                  ¬«      }|sŒg|jM                  di «      jM                  d«      sŒ‰|j                  jN                  sŒ tC        tE        |j                  jN                  d«      d¬«      |j                  _        ŒÛt"        sŒât%        |«       Œî |jP                  €�Œ–|jP                  €AtS        tT        |jP                  j8                  |jP                  j:                  ¬«      |_(        �Œã|jP                  j8                  r`|jP                  j8                  €g |jP                  _        |jP                  j8                  jW                  |jP                  j8                  «       |jP                  j:                  s�Œq|jP                  j:                  €g |jP                  _        |jP                  j:                  jW                  |jP                  j:                  «       �ŒÓ |jX                  |_,        |jZ                  |_-        |j\                  �<t        t^        t        t^        |j\                  j                  «       ¬«      «      |_.        |S c c}}w # t&        $ r‚ t        t(        t        t(        i |j                  ddh¬	«      ¥d
t        i t        d|j                  j                  «       «      «      i¥¬«      «      }|j                  j+                  |«       Y �Œdw xY w)Núdict[object, object]TÚfunctionÚparsed_arguments)ÚparsedÚ
tool_calls)Úexclude©Útype_ÚvalueÚdelta©Úexclude_unsetrÓ   ÚmessagerB   Úlength)Ú
completionÚcontent_filterzutf-8)Úpartial_mode)rD   ÚnameÚstrict)ÚcontentÚrefusal)0rµ   Ú$_convert_initial_chunk_into_snapshotÚchoicesrÆ   rÚ   rÒ   r   r   r*   r!   r(   Ú	enumerater×   Úto_dictÚtyperÏ   rÐ   r   r   rÇ   r   rÉ   Úfinish_reasonr-   r¸   r·   r7   r8   rá   râ   r%   r»   Úlstripr   ÚbytesrÑ   r0   rß   ÚgetÚ	argumentsÚlogprobsr)   r:   ÚextendÚusageÚsystem_fingerprintÚ
moderationr9   )rN   rÁ   rÂ   rÊ   Úchoice_snapshotÚprevious_tool_callsÚidxÚ_Ú
tool_indexÚ	prev_toolÚnew_toolÚtool_call_chunkÚtool_call_snapshotÚ
input_tools                 rP   rÃ   z+ChatCompletionStreamState._accumulate_chunkj  s  € Ø"×@Ñ@ÐàÐ&Ü7¸Ó>Ð>à—m‘mó t	YˆFð3DØ"5×"=Ñ"=¸f¿l¹lÑ"K�Ø&5×&=Ñ&=×&HÑ&HÒ&NÈBÐ#ä*.Ü7Ü"ÜAÜ.Ü Ø 6Ü *Ø$3×$;Ñ$;ð
 37ô ;DÀO×D[ÑD[×DfÑDfÒDlÐjlÓ:m÷7*á06°°Qð -0°*Ð?QÐSWÐ>XÐ1YÑ,Yó7*ñ-&ô!"óô  !Ð!7¸¿¹×9MÑ9MÓ9OÓPó#ôó+�Ô'ô8 .7Ð7JÓ-Kò 0Ñ)�J 	Ø /× 7Ñ 7× BÑ BÒ HÀbÈ*ÑU�Hà —~‘~¨Ò3Ø'Ÿ}™}°
Ò:Ð:Ð:Ø=F×=OÑ=O×=`Ñ=`˜×)Ñ)Õ:Þ&Ü$ YÕ/ñ0ð* ×#Ò#Ø06×0DÑ0D�Ô-ä&°t×7LÑ7LÐZ^×ZkÑZkÕlØ×+Ñ+¨xÒ7ô 6ÐATÔUÐUà×+Ñ+Ð/?Ò?Ü<ÐH[Ô\Ð\ð  ×'Ñ'×/Ò/Ø'×/Ñ/×7Ò7Ü˜T×7Ñ7Ô8à#×+Ñ+×3Ñ3×:Ñ:Ô<ä1:Ü˜/×1Ñ1×9Ñ9¸7ÓCØ!%ô2�×'Ñ'Ô.ð
 $*§<¡<×#:Ñ#:Ò#@¸bò 5�Ø&5×&=Ñ&=×&HÑ&HÒ&NÈBÐP_×PeÑPeÑ%fÐ"à%×*Ñ*¨jÒ8Ü!7Ø$(×$5Ñ$5Ð<N×<WÑ<W×<\Ñ<\ô"�Jò
 #Ø&ŸN™N¨:°rÓ:×>Ñ>¸xÕHØ.×7Ñ7×AÓAäGPÜ!Ð"4×"=Ñ"=×"GÑ"GÈÓQØ)-ôHÐ*×3Ñ3ÕDö #Ü Ð!3Õ4ð%5ð( �‰Ò*Ø"×+Ñ+Ð3Ü/4Ü&Ø &§¡× 7Ñ 7Ø &§¡× 7Ñ 7ô0�OÖ,ð —‘×.Ò.Ø*×3Ñ3×;Ñ;ÐCØ?A˜O×4Ñ4Ô<à'×0Ñ0×8Ñ8×?Ñ?ÀÇÁ×@WÑ@WÔXà—‘×.Ô.Ø*×3Ñ3×;Ñ;ÐCØ?A˜O×4Ñ4Ô<à'×0Ñ0×8Ñ8×?Ñ?ÀÇÁ×@WÑ@WÖXðit	Yðl %*§K¡KÐÔ!Ø16×1IÑ1IÐÔ.Ø×ÑÐ'Ü-1ÜœN´À5×CSÑCS×C[ÑC[ÓC]Ô^ó.ÐÔ*ð #Ð"ùóU7*øô, ò DÜ"&Ü(Ü"Ü2ðØ$×/Ñ/¸dÈWÈIÐ/ÓVðà%Ô'7¸¼DÐAWÐY_×YeÑYe×YmÑYmÓYoÓ<pÓ'qñôó	#�ð $×+Ñ+×2Ñ2°?×CðDús,   «B	U,Â4U&&ÃB>U,ÆU,Õ&U,Õ,BW7×6W7c               óF  — g }|j                  t        t        d||¬«      «       |j                  D �]l  }| j	                  |«      }|j                  |j
                     }|j                  j                  �u|j                  j                  �_|j                  t        t        d|j                  j                  |j                  j                  |j                  j                  ¬«      «       |j                  j                  �`|j                  j                  �J|j                  t        t        d|j                  j                  |j                  j                  ¬«      «       |j                  j                  r÷|j                  j                  }|€J ‚|j                  j                  D ]Ä  }||j
                     }	|	j                  dk(  r’|j                  €J ‚|j                  t        t         d|	j                  j"                  |j
                  |	j                  j$                  |	j                  j&                  |j                  j$                  xs d	¬
«      «       Œ³t(        sŒºt+        |	«       ŒÆ |j,                  �ø|j,                  �ì|j,                  j                  r`|j,                  j                  rJ|j                  t        t.        d|j,                  j                  |j,                  j                  ¬«      «       |j,                  j                  r`|j,                  j                  rJ|j                  t        t0        d|j,                  j                  |j,                  j                  ¬«      «       |j3                  |j5                  ||| j6                  ¬«      «       �Œo |S )NrÁ   )rç   rÁ   Úsnapshotzcontent.delta)rç   r×   rý   rÑ   zrefusal.delta)rç   r×   rý   rÏ   z#tool_calls.function.arguments.deltaÚ )rç   rß   rÆ   rì   rÐ   Úarguments_deltazlogprobs.content.delta)rç   rá   rý   zlogprobs.refusal.delta)rç   râ   rý   )Úchoice_chunkrò   rC   )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î   Úget_done_eventsr¸   )
rN   rÁ   rÂ   r{   rÊ   rË   rò   rÒ   Útool_call_deltaÚ	tool_calls
             rP   rÄ   z'ChatCompletionStreamState._build_eventsï  s  € ð LNˆà×ÑÜ”* 7°%ÐBUÔVô	
ð —m‘mó K	ˆFØ×1Ñ1°&Ó9ˆLØ1×9Ñ9¸&¿,¹,ÑGˆOà�|‰|×#Ñ#Ð/°O×4KÑ4K×4SÑ4SÐ4_Ø×%Ñ%ÜÜ)Ø,Ø$Ÿl™l×2Ñ2Ø!0×!8Ñ!8×!@Ñ!@Ø.×6Ñ6×=Ñ=ôôð �|‰|×#Ñ#Ð/°O×4KÑ4K×4SÑ4SÐ4_Ø×%Ñ%ÜÜ)Ø,Ø$Ÿl™l×2Ñ2Ø!0×!8Ñ!8×!@Ñ!@ô	ôð �|‰|×&Ò&Ø,×4Ñ4×?Ñ?�
Ø!Ð-Ð-Ð-à'-§|¡|×'>Ñ'>ò 0�OØ *¨?×+@Ñ+@Ñ A�Ià —~‘~¨Ò3Ø.×7Ñ7ÐCÐCÐCØ&×-Ñ-Ü!Ü CØ%JØ%.×%7Ñ%7×%<Ñ%<Ø&5×&;Ñ&;Ø*3×*<Ñ*<×*FÑ*FØ1:×1CÑ1C×1TÑ1TØ0?×0HÑ0H×0RÑ0RÒ0XÐVXôõ
ö 'Ü$ YÕ/ð#0ð& �‰Ð*¨×/GÑ/GÐ/SØ—?‘?×*Ò*¨×/GÑ/G×/OÒ/OØ"×)Ñ)ÜÜ5Ø!9Ø$*§O¡O×$;Ñ$;Ø%4×%=Ñ%=×%EÑ%Eô	ôð —?‘?×*Ò*¨×/GÑ/G×/OÒ/OØ"×)Ñ)ÜÜ5Ø!9Ø$*§O¡O×$;Ñ$;Ø%4×%=Ñ%=×%EÑ%Eô	ôð ×!Ñ!Ø×,Ñ,Ø!'Ø$3Ø$(×$9Ñ$9ð -ó öðKK	ðZ ÐrS   N)rD   r~   rC   r}   r   r€   r…   r†   )rÁ   r4   r   z4Iterable[ChatCompletionStreamEvent[ResponseFormatT]])rÊ   ÚChoiceChunkr   rÈ   ©rÁ   r4   r   r   )rÁ   r4   rÂ   r   r   ú0list[ChatCompletionStreamEvent[ResponseFormatT]])r‡   rˆ   r‰   rŠ   r$   rQ   rn   r‹   rs   rx   rÌ   rÃ   rÄ   r^   rS   rP   rK   rK   $  s‡   „ ñð. FJØNRñ	
ð Cð
ð Lð	
ð
 
ó
ó

ð ò2ó ð2ó
ó óC#ðJYð #ðYð :ð	Yð
 
:ôYrS   rK   c                  óX   — e Zd Zdd„Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 d	d„Zy)
rÈ   c               óv   — || _         d| _        d| _        d| _        d| _        t        «       | _        d | _        y )NF)r·   Ú_content_doneÚ_refusal_doneÚ_logprobs_content_doneÚ_logprobs_refusal_doneÚsetÚ_done_tool_callsÚ*_ChoiceEventState__current_tool_call_index)rN   rD   s     rP   rQ   zChoiceEventState.__init__L  s<   € Ø'ˆÔà"ˆÔØ"ˆÔØ&+ˆÔ#Ø&+ˆÔ#Ü*-«%ˆÔØ59ˆÕ&rS   c               ó  — g }|j                   rd|j                  | j                  ||¬«      «       | j                  �6| j                  | j                  vr| j                  ||| j                  ¬«       |j                  j                  xs g D ]x  }| j                  |j                  k7  rL|j                  | j                  ||¬«      «       | j                  �| j                  ||| j                  ¬«       |j                  | _        Œz |S )N)rò   rC   )r{   rò   rö   )	rè   rî   Ú_content_done_eventsr  r  Ú_add_tool_done_eventr×   rÒ   rÆ   )rN   r   rò   rC   r{   r  s         rP   r  z ChoiceEventState.get_done_eventsV  s  € ð LNˆð
 ×(Ò(Ø×!Ñ!Ø×)Ñ)¸/Ð[jÐ)Ókôð
 ×.Ñ.Ð:Ø×2Ñ2¸$×:OÑ:OÑOà×)Ñ)Ø#1Ø$3Ø#×=Ñ=ð *ô ð &×+Ñ+×6Ñ6Ò<¸"ò 	=ˆIØ×-Ñ-°·±Ò@Ø×%Ñ%Ø×-Ñ-¸oÐ_nÐ-Óoôð ×1Ñ1Ð=Ø×-Ñ-Ø'5Ø(7Ø#'×#AÑ#Að .ô ð .7¯_©_ˆDÕ*ð	=ð ÐrS   c               ó|  — g }|j                   j                  rq| j                  sed| _        t        ||j                   ¬«      }||j                   _        |j                  t        t        d|j                   j                  |¬«      «       |j                   j                  �H| j                  s<d| _	        |j                  t        t        d|j                   j                  ¬«      «       |j                  �^|j                  j                  �H| j                  s<d| _        |j                  t        t        d|j                  j                  ¬«      «       |j                  �^|j                  j                  �H| j                  s<d| _        |j                  t        t        d	|j                  j                  ¬«      «       |S )
NT)rC   rÚ   zcontent.done)rç   rá   rÑ   zrefusal.done)rç   râ   zlogprobs.content.done)rç   rá   zlogprobs.refusal.done)rÚ   rá   r	  r.   rÑ   rÉ   r)   r   râ   r
  r   rí   r  r   r  r   )rN   rò   rC   r{   rÑ   s        rP   r  z%ChoiceEventState._content_done_events‚  s…  € ð LNˆà×"Ñ"×*Ò*°4×3EÒ3EØ!%ˆDÔä(Ø /Ø'×/Ñ/ôˆFð .4ˆO×#Ñ#Ô*à×!Ñ!ÜÜ$Ø'Ø+×3Ñ3×;Ñ;Ø!ô	ôð ×"Ñ"×*Ñ*Ð6¸t×?QÒ?QØ!%ˆDÔØ×!Ñ!ÜÔ&¨^À_×E\ÑE\×EdÑEdÔeôð
 ×$Ñ$Ð0Ø×(Ñ(×0Ñ0Ð<Ø×/Ò/à*.ˆDÔ'Ø×!Ñ!ÜÔ.Ð5LÐVe×VnÑVn×VvÑVvÔwôð
 ×$Ñ$Ð0Ø×(Ñ(×0Ñ0Ð<Ø×/Ò/à*.ˆDÔ'Ø×!Ñ!ÜÔ.Ð5LÐVe×VnÑVn×VvÑVvÔwôð ÐrS   c          
     óú  — || j                   v ry | j                   j                  |«       |j                  j                  €J ‚|j                  j                  |   }|j                  dk(  rt        | j                  |j                  ¬«      }||j                  _        |j                  t        t        d||j                  j                  |j                  j                  |¬«      «       y t        rt        |«       y y )NrÏ   )rD   rÏ   z"tool_calls.function.arguments.done)rç   rÆ   rß   rì   rÐ   )r  ÚaddrÚ   rÒ   rç   r1   r·   rÏ   rÐ   rÉ   r)   r   rß   rì   r   r   )rN   r{   rò   rö   rú   rÐ   s         rP   r  z%ChoiceEventState._add_tool_done_event¼  sè   € ð ˜×.Ñ.Ñ.Øà×Ñ×!Ñ! *Ô-à×&Ñ&×1Ñ1Ð=Ð=Ð=Ø,×4Ñ4×?Ñ?À
ÑKÐà×"Ñ" jÒ0Ü<Ø ×-Ñ-Ð8J×8SÑ8Sô Ðð <LÐ×'Ñ'Ô8à×!Ñ!ÜÜ6Ø=Ø$Ø+×4Ñ4×9Ñ9Ø0×9Ñ9×CÑCØ%5ôõ	õ ÜÐ+Õ,ð rS   N)rD   z"list[ChatCompletionToolUnionParam]r   r€   )r   r  rò   r   rC   r}   r   r  )rò   r   rC   r}   r   r  )r{   r  rò   r   rö   Úintr   r€   )r‡   rˆ   r‰   rQ   r  r  r  r^   rS   rP   rÈ   rÈ   K  s‰   „ ó:ð*ð "ð*ð .ð	*ð
 Lð*ð 
:ó*ðX8ð .ð8ð Lð	8ð
 
:ó8ðt$-ð Ið$-ð .ð	$-ð
 ð$-ð 
ô$-rS   rÈ   c                óz  — | j                  «       }|j                  dd «       t        d|d   «      }| j                  D ]U  }i |j	                  ddh¬«      ¥dt        i t        d|j                  j                  «       «      «      i¥||j                  <   ŒW t        t        t        t        d	d i|¥d
di¥¬«      «      S )NÚobfuscationzlist[object]rä   Tr×   rØ   rÚ   rÎ   rð   Úobjectzchat.completionrÔ   )
ræ   Úpopr   rä   r(   r!   r×   rÆ   r   r*   )rÁ   Údatarä   rÊ   s       rP   rã   rã   ã  sË   € Ø�=‰=‹?€DØ‡H�Hˆ]˜DÔ!Ü�> 4¨	¡?Ó3€Gà—-‘-ò 
ˆð!
Ø×Ñ¨d¸W¸IÐÓFð!
àÔ'¨¬DÐ1GÈÏÉ×I]ÑI]ÓI_Ó,`Óañ!
ˆ�—‘Òð
ô Ü$ÜÜ.à$ dðàðð Ð+ñô	
ó
ð 
rS   c                ó    — | j                   dk(  S )Nzchat.completion.chunk)r  )rz   s    rP   rw   rw   û  s   € ð ×ÑÐ6Ñ6Ð6rS   r  )rz   r4   r   Úbool)SÚ
__future__r   r¹   Útypesr   Útypingr   r   r   r   r	   r
   r   Útyping_extensionsr   r   r   Újiterr   Ú_typesr   r   r   Ú_eventsr   r   r   r   r   r   r   r   r   r   r   r   Ú_deltasr!   r#   r$   Ú_utilsr%   r&   r'   Ú_compatr(   Ú_modelsr)   r*   Ú_parsingr,   r-   r.   r/   r0   r1   Ú
_streamingr2   r3   Ú
types.chatr4   r5   r6   Ú_exceptionsr7   r8   Útypes.chat.chat_completionr9   r:   Ú types.chat.chat_completion_chunkr;   r  Ú#types.chat.completion_create_paramsr<   ÚResponseFormatParamr>   r�   rš   r«   rK   rÈ   rã   rw   r^   rS   rP   ú<module>r1     sæ   ðÝ "ã Ý ß ]× ]Ñ ]ß :Ñ :å ç kÑ k÷÷ ÷ ó õ 'ß !ß NÑ NÝ "ß -÷÷ ÷ /ß bÑ bß Sß EÝ FÝ YôI˜7 ?Ñ3ô IôX," '¨/Ñ":ô ,"ô^I ¨Ñ 8ô IôX,( w¨Ñ'?ô ,(ô^d ¨Ñ 8ô d÷N	U-ñ U-ópô07rS   