Ë
    $Æ%hjx  ã                  ó4  — 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 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(m)Z) ddl*m+Z+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z<m=Z= ddl>m?Z?m@Z@mAZA ddlBmCZCmDZD ddlEmFZF ddlGmHZI ddlJmKZL  G d„ dee4   «      ZM G d„ dee4   «      ZN G d„ dee4   «      ZO G d„ d ee4   «      ZP G d!„ d"ee4   «      ZQ G d#„ d$«      ZRd'd%„ZSd(d&„ZTy))é    )ÚannotationsN)ÚTracebackType)ÚTYPE_CHECKINGÚAnyÚ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é   )Ú	NOT_GIVENÚIncExÚNotGiven)Ú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Úsolve_response_format_tÚparse_function_tool_arguments)ÚStreamÚAsyncStream)ÚChatCompletionChunkÚParsedChatCompletionÚChatCompletionToolParam)ÚLengthFinishReasonErrorÚContentFilterFinishReasonError)Ú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_streamrE   rF   s       úd/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/openai/lib/streaming/chat/_completions.pyÚ__init__zChatCompletionStream.__init__8   ó6   € ð &ˆÔØ#×,Ñ,ˆŒØŸ™Ó*ˆŒÜ/ÀÐ]hÔiˆ�ó    c                ó6   — | j                   j                  «       S ©N)rL   Ú__next__©rP   s    rR   rX   zChatCompletionStream.__next__D   s   € Ø�~‰~×&Ñ&Ó(Ð(rU   c              #  ó6   K  — | j                   D ]  }|–— Œ y ­wrW   ©rL   ©rP   Úitems     rR   Ú__iter__zChatCompletionStream.__iter__G   s   è ø€ Ø—N‘Nò 	ˆDØ‹Jñ	ùs   ‚c                ó   — | S rW   © rY   s    rR   Ú	__enter__zChatCompletionStream.__enter__K   s   € ØˆrU   c                ó$   — | j                  «        y rW   ©Úclose©rP   Úexc_typeÚexcÚexc_tbs       rR   Ú__exit__zChatCompletionStream.__exit__N   s   € ð 	�
‰
�rU   c                ó8   — | j                   j                  «        y©zŠ
        Close the response and release the connection.

        Automatically called if the response body is read to completion.
        N)rJ   rd   rY   s    rR   rd   zChatCompletionStream.closeV   s   € ð 	�‰×ÑÕrU   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_donerN   Úget_final_completionrY   s    rR   rp   z)ChatCompletionStream.get_final_completion^   s!   € ð 	�‰ÔØ�{‰{×/Ñ/Ó1Ð1rU   c                ó   — t        | «       | S )ú*Blocks until the stream has been consumed.)r(   rY   s    rR   ro   zChatCompletionStream.until_donei   s   € ä˜dÔ#ØˆrU   c                ó.   — | j                   j                  S rW   ©rN   Úcurrent_completion_snapshotrY   s    rR   ru   z0ChatCompletionStream.current_completion_snapshotn   ó   € à�{‰{×6Ñ6Ð6rU   c              #  ó’   K  — | j                   D ]4  }t        |«      sŒ| j                  j                  |«      }|D ]  }|–— Œ Œ6 y ­wrW   ©rH   Ú$_is_valid_chat_completion_chunk_weakrN   Úhandle_chunk©rP   Ú	sse_eventÚevents_to_fireÚevents       rR   rK   zChatCompletionStream.__stream__r   sN   è ø€ Ø×)Ñ)ò 	ˆIÜ7¸	ÔBØØ!Ÿ[™[×5Ñ5°iÓ@ˆNØ'ò �Ø“ññ		ùs   ‚AAN)rQ   zStream[ChatCompletionChunk]rE   ú6type[ResponseFormatT] | ResponseFormatParam | NotGivenrF   ú,Iterable[ChatCompletionToolParam] | NotGivenÚreturnÚNone©r�   z*ChatCompletionStreamEvent[ResponseFormatT])r�   z4Iterator[ChatCompletionStreamEvent[ResponseFormatT]]©r�   r   ©rf   ztype[BaseException] | Nonerg   zBaseException | Nonerh   zTracebackType | Noner�   r‚   ©r�   r‚   ©r�   z%ParsedChatCompletion[ResponseFormatT]©r�   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rS   rX   r^   ra   ri   rd   rp   ro   Úpropertyru   rK   r`   rU   rR   r@   r@   /   s�   „ ñð
jð 0ð
jð Pð	
jð
 Bð
jð 
ó
jó)óóðà,ðð "ðð %ð	ð
 
óóó	2óð
 ò7ó ð7ôrU   r@   c                  óH   — e Zd ZdZ	 	 	 	 	 	 	 	 dd„Zdd„Z	 	 	 	 	 	 	 	 dd„Zy)	ÚChatCompletionStreamManageraK  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.beta.chat.completions.stream(...) as stream:
        for event in stream:
            ...
    ```
    c               ó<   — d | _         || _        || _        || _        y rW   )Ú$_ChatCompletionStreamManager__streamÚ)_ChatCompletionStreamManager__api_requestÚ-_ChatCompletionStreamManager__response_formatÚ)_ChatCompletionStreamManager__input_tools©rP   Úapi_requestrE   rF   s       rR   rS   z$ChatCompletionStreamManager.__init__‰   s%   € ð GKˆŒØ(ˆÔØ!0ˆÔØ(ˆÕrU   c                óˆ   — | j                  «       }t        || j                  | j                  ¬«      | _        | j                  S ©N)rQ   rE   rF   )r’   r@   r“   r”   r‘   ©rP   rQ   s     rR   ra   z%ChatCompletionStreamManager.__enter__•   s=   € Ø×'Ñ'Ó)ˆ
ä,Ø!Ø ×2Ñ2Ø×*Ñ*ô
ˆŒð �}‰}ÐrU   c                óR   — | j                   �| j                   j                  «        y y rW   )r‘   rd   re   s       rR   ri   z$ChatCompletionStreamManager.__exit__    s#   € ð �=‰=Ð$Ø�M‰M×ÑÕ!ð %rU   N)r–   z)Callable[[], Stream[ChatCompletionChunk]]rE   r   rF   r€   r�   r‚   )r�   z%ChatCompletionStream[ResponseFormatT]r…   )r‰   rŠ   r‹   rŒ   rS   ra   ri   r`   rU   rR   r�   r�   {   sd   „ ñð
)à>ð
)ð Pð	
)ð
 Bð
)ð 
ó
)ó	ð"à,ð"ð "ð"ð %ð	"ð
 
ô"rU   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)ÚAsyncChatCompletionStreamrA   c               ó‚   — || _         |j                  | _        | j                  «       | _        t        ||¬«      | _        y rC   rG   rO   s       rR   rS   z"AsyncChatCompletionStream.__init__³   rT   rU   c              ƒ  óR   K  — | j                   j                  «       ƒ d {  –—† S 7 Œ­wrW   )rL   Ú	__anext__rY   s    rR   rŸ   z#AsyncChatCompletionStream.__anext__¿   s   è ø€ Ø—^‘^×-Ñ-Ó/×/Ð/Ð/ús   ‚' %¡'c               óH   K  — | j                   2 3 d {  –—† }|­–— Œ7 Œ
6 y ­wrW   r[   r\   s     rR   Ú	__aiter__z#AsyncChatCompletionStream.__aiter__Â   s&   è ø€ ØŸ.™.÷ 	ð 	�$ØŒJð	ø™.ùs   ‚"� “” —"ž  "c              ƒ  ó   K  — | S ­wrW   r`   rY   s    rR   Ú
__aenter__z$AsyncChatCompletionStream.__aenter__Æ   s   è ø€ Øˆùs   ‚c              ƒ  ó@   K  — | j                  «       ƒ d {  –—†  y 7 Œ­wrW   rc   re   s       rR   Ú	__aexit__z#AsyncChatCompletionStream.__aexit__É   s   è ø€ ð �j‰j‹l×Òús   ‚–—c              ƒ  óT   K  — | j                   j                  «       ƒ d{  –—†  y7 Œ­wrk   )rJ   ÚacloserY   s    rR   rd   zAsyncChatCompletionStream.closeÑ   s   è ø€ ð �n‰n×#Ñ#Ó%×%Ò%ús   ‚( &¡(c              ƒ  ór   K  — | j                  «       ƒ d{  –—†  | j                  j                  «       S 7 Œ­w)rm   Nrn   rY   s    rR   rp   z.AsyncChatCompletionStream.get_final_completionÙ   s0   è ø€ ð �o‰oÓ×ÐØ�{‰{×/Ñ/Ó1Ð1ð 	 ús   ‚7–5—7c              ƒ  ó8   K  — t        | «      ƒ d{  –—†  | S 7 Œ­w)rr   N)r)   rY   s    rR   ro   z$AsyncChatCompletionStream.until_doneä   s   è ø€ ä$ TÓ*×*Ð*Øˆð 	+ús   ‚‘’c                ó.   — | j                   j                  S rW   rt   rY   s    rR   ru   z5AsyncChatCompletionStream.current_completion_snapshoté   rv   rU   c               ó¤   K  — | j                   2 3 d {  –—† }t        |«      sŒ| j                  j                  |«      }|D ]  }|­–— Œ	 Œ=7 Œ86 y ­wrW   rx   r{   s       rR   rK   z$AsyncChatCompletionStream.__stream__í   sW   è ø€ Ø#×/Ñ/÷ 	ð 	�)Ü7¸	ÔBØØ!Ÿ[™[×5Ñ5°iÓ@ˆNØ'ò �Ø”ñð		øÑ/ùs%   ‚A�A“A”A—5AÁAÁAN)rQ   z AsyncStream[ChatCompletionChunk]rE   r   rF   r€   r�   r‚   rƒ   )r�   z9AsyncIterator[ChatCompletionStreamEvent[ResponseFormatT]]r„   r…   r†   r‡   rˆ   )r‰   rŠ   r‹   rŒ   rS   rŸ   r¡   r£   r¥   rd   rp   ro   r�   ru   rK   r`   rU   rR   rœ   rœ   ª   s�   „ ñð
jð 5ð
jð Pð	
jð
 Bð
jð 
ó
jó0óóðà,ðð "ðð %ð	ð
 
óó&ó	2óð
 ò7ó ð7ôrU   rœ   c                  óH   — e Zd ZdZ	 	 	 	 	 	 	 	 dd„Zdd„Z	 	 	 	 	 	 	 	 dd„Zy)	Ú AsyncChatCompletionStreamManageraV  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.beta.chat.completions.stream(...) as stream:
        for event in stream:
            ...
    ```
    c               ó<   — d | _         || _        || _        || _        y rW   )Ú)_AsyncChatCompletionStreamManager__streamÚ._AsyncChatCompletionStreamManager__api_requestÚ2_AsyncChatCompletionStreamManager__response_formatÚ._AsyncChatCompletionStreamManager__input_toolsr•   s       rR   rS   z)AsyncChatCompletionStreamManager.__init__  s%   € ð LPˆŒØ(ˆÔØ!0ˆÔØ(ˆÕrU   c              ƒ  óœ   K  — | j                   ƒ d {  –—† }t        || j                  | j                  ¬«      | _        | j                  S 7 Œ7­wr˜   )r°   rœ   r±   r²   r¯   r™   s     rR   r£   z+AsyncChatCompletionStreamManager.__aenter__  sF   è ø€ Ø×-Ñ-×-ˆ
ä1Ø!Ø ×2Ñ2Ø×*Ñ*ô
ˆŒð �}‰}Ðð .ús   ‚A’A
“8Ac              ƒ  ón   K  — | j                   �#| j                   j                  «       ƒ d {  –—†  y y 7 Œ­wrW   )r¯   rd   re   s       rR   r¥   z*AsyncChatCompletionStreamManager.__aexit__  s0   è ø€ ð �=‰=Ð$Ø—-‘-×%Ñ%Ó'×'Ñ'ð %Ø'ús   ‚*5¬3­5N)r–   z+Awaitable[AsyncStream[ChatCompletionChunk]]rE   r   rF   r€   r�   r‚   )r�   z*AsyncChatCompletionStream[ResponseFormatT]r…   )r‰   rŠ   r‹   rŒ   rS   r£   r¥   r`   rU   rR   r­   r­   ö   sd   „ ñð
)à@ð
)ð Pð	
)ð
 Bð
)ð 
ó
)ó	ð(à,ð(ð "ð(ð %ð	(ð
 
ô(rU   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
)rM   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())
    ```
    )rF   rE   c               óÌ   — d | _         g | _        t        |«      r|D �cg c]  }|‘Œ c}ng | _        || _        t        j                  |«      r|| _        y t        | _        y c c}w rW   )	Ú7_ChatCompletionStreamState__current_completion_snapshotÚ/_ChatCompletionStreamState__choice_event_statesr'   Ú_input_toolsÚ_response_formatÚinspectÚisclassr$   Ú_rich_response_format)rP   rF   rE   Útools       rR   rS   z"ChatCompletionStreamState.__init__:  s\   € ð SWˆÔ*Ø=?ˆÔ"ä>FÀ{Ô>S¨kÖ: dšTÓ:ÐY[ˆÔØ /ˆÔÜIPÏÉÐYhÔIi°oˆÕ"ÔoxˆÕ"ùò ;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_completionrE   rF   )r1   ru   r½   r¹   rY   s    rR   rp   z.ChatCompletionStreamState.get_final_completionG  s,   € ô %Ø ×<Ñ<Ø ×6Ñ6Ø×)Ñ)ô
ð 	
rU   c                ó6   — | j                   €J ‚| j                   S rW   )r·   rY   s    rR   ru   z5ChatCompletionStreamState.current_completion_snapshotS  s    € à×1Ñ1Ð=Ð=Ð=Ø×1Ñ1Ð1rU   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)rP   rÃ   s     rR   rz   z&ChatCompletionStreamState.handle_chunkX  s9   € à-1×-CÑ-CÀEÓ-JˆÔ*à×!Ñ!ØØ $× BÑ Bð "ó 
ð 	
rU   c                óº   — 	 | j                   |j                     S # t        $ r6 t        | j                  ¬«      }| j                   j                  |«       |cY S w xY w)N)rF   )r¸   ÚindexÚ
IndexErrorÚChoiceEventStater¹   Úappend)rP   ÚchoiceÚchoice_states      rR   Ú_get_choice_statez+ChatCompletionStreamState._get_choice_statea  sU   € ð	 Ø×-Ñ-¨f¯l©lÑ;Ð;øÜò 	 Ü+¸×8IÑ8IÔJˆLØ×&Ñ&×-Ñ-¨lÔ;ØÒð	 ús   ‚ ›<AÁAc                óT  — | j                   }|€t        |«      S |j                  D �]Ü  }	 |j                  |j                     }|j                  j
                  xs g }t        t        t        t        t        t        dt        |j                  t        t        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.                  rf|j.                  |_        t1        | j2                  | j4                  ¬«      r4|j.                  dk(  rt7        |¬«      ‚|j.                  dk(  r
t9        «       ‚|j                  j:                  r‰|j                  j<                  sst?        | j@                  «      r^|j                  j:                  jC                  «       r:tE        tG        |j                  j:                  d«      d¬«      |j                  _$        |j                  j
                  xs g D ]ì  }|j                  j
                  xs g |j                     }|j                  dk(  r¢tK        | j4                  |j                   jL                  ¬«      }|sŒg|jO                  di «      jO                  d«      sŒ‰|j                   jP                  sŒ tE        tG        |j                   jP                  d«      d¬«      |j                   _        ŒÛt$        sŒât'        |«       Œî |jR                  €�Œ¢|jR                  €AtU        tV        |jR                  j:                  |jR                  j<                  ¬«      |_)        �Œï|jR                  j:                  r`|jR                  j:                  €g |jR                  _        |jR                  j:                  jY                  |jR                  j:                  «       |jR                  j<                  s�Œ}|jR                  j<                  €g |jR                  _        |jR                  j<                  jY                  |jR                  j<                  «       �Œß |jZ                  |_-        |j\                  |_.        |S c c}}w # t(        $ rn t        t*        t        t*        i |j                  ddh¬	«      ¥d
|j                  j                  «       i¥¬«      «      }|j                  j-                  |«       Y �Œw xY w)Nzdict[object, object]TÚfunctionÚparsed_arguments)ÚparsedÚ
tool_calls)Úexclude©Útype_ÚvalueÚdelta©Úexclude_unsetrÔ   ÚmessagerD   Úlength)Ú
completionÚcontent_filterzutf-8)Úpartial_mode)rF   ÚnameÚstrict)ÚcontentÚrefusal)/r·   Ú$_convert_initial_chunk_into_snapshotÚchoicesrÈ   rÛ   rÓ   r   r   r,   r"   r*   r%   Ú	enumeraterØ   Úto_dictÚtyperÐ   rÑ   r   r   rÉ   r   rË   Úfinish_reasonr/   rº   r¹   r:   r;   râ   rã   r'   r½   Úlstripr   ÚbytesrÒ   r2   rà   ÚgetÚ	argumentsÚlogprobsr+   r<   ÚextendÚusageÚsystem_fingerprint)rP   rÃ   rÄ   rÌ   Úchoice_snapshotÚprevious_tool_callsÚidxÚ_Ú
tool_indexÚ	prev_toolÚnew_toolÚtool_call_chunkÚtool_call_snapshotÚ
input_tools                 rR   rÅ   z+ChatCompletionStreamState._accumulate_chunki  sÑ  € Ø"×@Ñ@ÐàÐ&Ü7¸Ó>Ð>à—m‘mó x	YˆFð7DØ"5×"=Ñ"=¸f¿l¹lÑ"K�Ø&5×&=Ñ&=×&HÑ&HÒ&NÈBÐ#ä*.Ü7Ü"ÜAÜ.Ü Ø 6Ü *Ø$3×$;Ñ$;ô -1ä(-à6:ô ?HÈ×H_ÑH_×HjÑHjÒHpÐnpÓ>q÷;.á4:°C¸ð 14°jÐCUÐW[ÐB\Ð5]Ñ0]ó;.ñ)*ó
-&ô!"óô( !Ð!7¸¿¹×9MÑ9MÓ9OÓPó+ôó+�Ô'ô@ .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à×+Ñ+Ð/?Ò?Ü<Ó>Ð>ð  ×'Ñ'×/Ò/Ø'×/Ñ/×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ðqx	Yðt %*§K¡KÐÔ!Ø16×1IÑ1IÐÔ.à"Ð"ùóO;.øô. ò DÜ"&Ü(Ü"Ü2ðØ$×/Ñ/¸dÈWÈIÐ/ÓVðà% v§|¡|×';Ñ';Ó'=ñôó	#�ð $×+Ñ+×2Ñ2°?×CðDús,   «BT0Â>T*,ÃCT0ÆT0Ô*T0Ô0A3V'Ö&V'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ò   rE   )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º   )
rP   rÃ   rÄ   r}   rÌ   rÍ   rò   rÓ   Útool_call_deltaÚ	tool_calls
             rR   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 ÐrU   N)rF   r€   rE   r   r�   r‚   r‡   rˆ   )rÃ   r7   r�   z4Iterable[ChatCompletionStreamEvent[ResponseFormatT]])rÌ   ÚChoiceChunkr�   rÊ   ©rÃ   r7   r�   r   )rÃ   r7   rÄ   r   r�   ú0list[ChatCompletionStreamEvent[ResponseFormatT]])r‰   rŠ   r‹   rŒ   r$   rS   rp   r�   ru   rz   rÎ   rÅ   rÆ   r`   rU   rR   rM   rM   %  s‹   „ ñð. ENØR[ñ	yð Bðyð Pð	yð
 
óyó

ð ò2ó ð2ó
ó óC#ðJYð #ðYð :ð	Yð
 
:ôYrU   rM   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)rP   rF   s     rR   rS   zChoiceEventState.__init__K  s<   € Ø'ˆÔà"ˆÔØ"ˆÔØ&+ˆÔ#Ø&+ˆÔ#Ü*-«%ˆÔØ59ˆÕ&rU   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ò   rE   )r}   rò   rö   )	ré   rï   Ú_content_done_eventsr  r  Ú_add_tool_done_eventrØ   rÓ   rÈ   )rP   r   rò   rE   r}   r  s         rR   r  z ChoiceEventState.get_done_eventsU  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Õ*ð	=ð ÐrU   c               óÄ  — g }|j                   j                  r•| j                  s‰d| _        t        ||j                   ¬«      }||j                   _        |j                  t        t        dt        t        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)rE   rÛ   z'type[ContentDoneEvent[ResponseFormatT]]zcontent.done)rè   râ   rÒ   zrefusal.done)rè   rã   zlogprobs.content.done)rè   râ   zlogprobs.refusal.done)rÛ   râ   r	  r0   rÒ   rË   r+   r   r   r   r3   rã   r
  r   rî   r  r   r  r   )rP   rò   rE   r}   rÒ   s        rR   r  z%ChoiceEventState._content_done_events~  s§  € ð LNˆà×"Ñ"×*Ò*°4×3EÒ3EØ!%ˆDÔä(Ø /Ø'×/Ñ/ôˆFð .4ˆO×#Ñ#Ô*à×!Ñ!Üô ØAÜœSÔ"2Ó3Ô4KÈOÓ4\Ñ]óð (Ø+×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ôð ÐrU   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Ð   )rF   rÐ   z"tool_calls.function.arguments.done)rè   rÈ   rà   rí   rÑ   )r  ÚaddrÛ   rÓ   rè   r4   r¹   rÐ   rÑ   rË   r+   r   rà   rí   r   r   )rP   r}   rò   rö   rú   rÑ   s         rR   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ôõ	õ ÜÐ+Õ,ð rU   N)rF   zlist[ChatCompletionToolParam]r�   r‚   )r   r  rò   r   rE   r   r�   r  )rò   r   rE   r   r�   r  )r}   r  rò   r   rö   Úintr�   r‚   )r‰   rŠ   r‹   rS   r  r  r  r`   rU   rR   rÊ   rÊ   J  s‰   „ ó:ð'ð "ð'ð .ð	'ð
 Pð'ð 
:ó'ðR>ð .ð>ð Pð	>ð
 
:ó>ð@$-ð Ið$-ð .ð	$-ð
 ð$-ð 
ô$-rU   rÊ   c           	     ó.  — | j                  «       }t        d|d   «      }| j                  D ]A  }i |j                  ddh¬«      ¥d|j                  j                  «       i¥||j
                  <   ŒC t        t        t        t        dd i|¥dd	i¥¬
«      «      S )Nzlist[object]rå   TrØ   rÙ   rÛ   rñ   Úobjectzchat.completionrÕ   )rç   r   rå   r*   rØ   rÈ   r   r,   )rÃ   Údatarå   rÌ   s       rR   rä   rä   å  s­   € Ø�=‰=‹?€DÜ�> 4¨	¡?Ó3€Gà—-‘-ò 
ˆð!
Ø×Ñ¨d¸W¸IÐÓFð!
à�v—|‘|×+Ñ+Ó-ñ!
ˆ�—‘Òð
ô Ü$ÜÜ.à$ dðàðð Ð+ñô	
ó
ð 
rU   c                ó    — | j                   dk(  S )Nzchat.completion.chunk)r  )r|   s    rR   ry   ry   ü  s   € ð ×ÑÐ6Ñ6Ð6rU   r  )r|   r7   r�   Úbool)UÚ
__future__r   r»   Útypesr   Útypingr   r   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%   r&   Ú_utilsr'   r(   r)   Ú_compatr*   Ú_modelsr+   r,   Ú_parsingr.   r/   r0   r1   r2   r3   r4   Ú
_streamingr5   r6   Ú
types.chatr7   r8   r9   Ú_exceptionsr:   r;   Útypes.chat.chat_completionr<   Ú types.chat.chat_completion_chunkr=   r  Ú#types.chat.completion_create_paramsr>   ÚResponseFormatParamr@   r�   rœ   r­   rM   rÊ   rä   ry   r`   rU   rR   ú<module>r/     sî   ðÝ "ã Ý ß b× bÓ bß :Ñ :å ç kÑ k÷÷ ÷ ó õ 'ß 1Ñ 1ß NÑ NÝ "ß -÷÷ ñ ÷ /ß ]Ñ ]ß SÝ 9Ý FÝ YôI˜7 ?Ñ3ô IôX," '¨/Ñ":ô ,"ô^I ¨Ñ 8ô IôX,( w¨Ñ'?ô ,(ô^b ¨Ñ 8ô b÷J	X-ñ X-óvô.7rU   