Ë
    s0žjx  ã                  ó0  — 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l3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 ddl:m;Z;m<Z< ddl=m>Z>m?Z?m@Z@ ddlAmBZBmCZC ddlDmEZE ddlFmGZH ddlImJZK  G d„ dee4   «      ZL 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$«      ZQd'd%„ZRd(d&„ZSy))é    )Ú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é   )ÚOmitÚIncExÚ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)Ú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_streamrD   rE   s       ú^/home/Script/Script_env/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)rK   Ú__next__©rO   s    rQ   rW   zChatCompletionStream.__next__C   s   € Ø�~‰~×&Ñ&Ó(Ð(rT   c              #  ó6   K  — | j                   D ]  }|–— Œ y ­wrV   ©rK   ©rO   Úitems     rQ   Ú__iter__zChatCompletionStream.__iter__F   s   è ø€ Ø—N‘Nò 	ˆDØ‹Jñ	ùs   ‚c                ó   — | S rV   © rX   s    rQ   Ú	__enter__zChatCompletionStream.__enter__J   s   € ØˆrT   c                ó$   — | j                  «        y rV   ©Úclose©rO   Úexc_typeÚexcÚexc_tbs       rQ   Ú__exit__zChatCompletionStream.__exit__M   s   € ð 	�
‰
�rT   c                ó8   — | j                   j                  «        y©zŠ
        Close the response and release the connection.

        Automatically called if the response body is read to completion.
        N)rI   rc   rX   s    rQ   rc   zChatCompletionStream.closeU   s   € ð 	�‰×ÑÕrT   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_donerM   Úget_final_completionrX   s    rQ   ro   z)ChatCompletionStream.get_final_completion]   s!   € ð 	�‰ÔØ�{‰{×/Ñ/Ó1Ð1rT   c                ó   — t        | «       | S )ú*Blocks until the stream has been consumed.)r(   rX   s    rQ   rn   zChatCompletionStream.until_doneh   s   € ä˜dÔ#ØˆrT   c                ó.   — | j                   j                  S rV   ©rM   Úcurrent_completion_snapshotrX   s    rQ   rt   z0ChatCompletionStream.current_completion_snapshotm   ó   € à�{‰{×6Ñ6Ð6rT   c              #  ó’   K  — | j                   D ]4  }t        |«      sŒ| j                  j                  |«      }|D ]  }|–— Œ Œ6 y ­wrV   ©rG   Ú$_is_valid_chat_completion_chunk_weakrM   Úhandle_chunk©rO   Ú	sse_eventÚevents_to_fireÚevents       rQ   rJ   zChatCompletionStream.__stream__q   sN   è ø€ Ø×)Ñ)ò 	ˆIÜ7¸	ÔBØØ!Ÿ[™[×5Ñ5°iÓ@ˆNØ'ò �Ø“ññ		ùs   ‚AAN)rP   zStream[ChatCompletionChunk]rD   ú2type[ResponseFormatT] | ResponseFormatParam | OmitrE   ú-Iterable[ChatCompletionToolUnionParam] | OmitÚreturnÚNone©r€   z*ChatCompletionStreamEvent[ResponseFormatT])r€   z4Iterator[ChatCompletionStreamEvent[ResponseFormatT]]©r€   r   ©re   ztype[BaseException] | Nonerf   zBaseException | Nonerg   zTracebackType | Noner€   r�   ©r€   r�   ©r€   z%ParsedChatCompletion[ResponseFormatT]©r€   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rR   rW   r]   r`   rh   rc   ro   rn   Úpropertyrt   rJ   r_   rT   rQ   r?   r?   .   s�   „ ñð
jð 0ð
jð Lð	
jð
 Cð
jð 
ó
jó)óóðà,ðð "ðð %ð	ð
 
óóó	2óð
 ò7ó ð7ôrT   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 rV   )Ú$_ChatCompletionStreamManager__streamÚ)_ChatCompletionStreamManager__api_requestÚ-_ChatCompletionStreamManager__response_formatÚ)_ChatCompletionStreamManager__input_tools©rO   Úapi_requestrD   rE   s       rQ   rR   z$ChatCompletionStreamManager.__init__ˆ   s%   € ð GKˆŒØ(ˆÔØ!0ˆÔØ(ˆÕrT   c                óˆ   — | j                  «       }t        || j                  | j                  ¬«      | _        | j                  S ©N)rP   rD   rE   )r‘   r?   r’   r“   r�   ©rO   rP   s     rQ   r`   z%ChatCompletionStreamManager.__enter__”   s=   € Ø×'Ñ'Ó)ˆ
ä,Ø!Ø ×2Ñ2Ø×*Ñ*ô
ˆŒð �}‰}ÐrT   c                óR   — | j                   �| j                   j                  «        y y rV   )r�   rc   rd   s       rQ   rh   z$ChatCompletionStreamManager.__exit__Ÿ   s#   € ð �=‰=Ð$Ø�M‰M×ÑÕ!ð %rT   N)r•   z)Callable[[], Stream[ChatCompletionChunk]]rD   r~   rE   r   r€   r�   )r€   z%ChatCompletionStream[ResponseFormatT]r„   )rˆ   r‰   rŠ   r‹   rR   r`   rh   r_   rT   rQ   rŽ   rŽ   z   sd   „ ñð
)à>ð
)ð Lð	
)ð
 Cð
)ð 
ó
)ó	ð"à,ð"ð "ð"ð %ð	"ð
 
ô"rT   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 rB   rF   rN   s       rQ   rR   z"AsyncChatCompletionStream.__init__²   rS   rT   c              ƒ  óR   K  — | j                   j                  «       ƒ d {  –—† S 7 Œ­wrV   )rK   Ú	__anext__rX   s    rQ   rž   z#AsyncChatCompletionStream.__anext__¾   s   è ø€ Ø—^‘^×-Ñ-Ó/×/Ð/Ð/ús   ‚' %¡'c               óH   K  — | j                   2 3 d {  –—† }|­–— Œ7 Œ
6 y ­wrV   rZ   r[   s     rQ   Ú	__aiter__z#AsyncChatCompletionStream.__aiter__Á   s&   è ø€ ØŸ.™.÷ 	ð 	�$ØŒJð	ø™.ùs   ‚"� “” —"ž  "c              ƒ  ó   K  — | S ­wrV   r_   rX   s    rQ   Ú
__aenter__z$AsyncChatCompletionStream.__aenter__Å   s   è ø€ Øˆùs   ‚c              ƒ  ó@   K  — | j                  «       ƒ d {  –—†  y 7 Œ­wrV   rb   rd   s       rQ   Ú	__aexit__z#AsyncChatCompletionStream.__aexit__È   s   è ø€ ð �j‰j‹l×Òús   ‚–—c              ƒ  óT   K  — | j                   j                  «       ƒ d{  –—†  y7 Œ­wrj   )rI   ÚacloserX   s    rQ   rc   zAsyncChatCompletionStream.closeÐ   s   è ø€ ð �n‰n×#Ñ#Ó%×%Ò%ús   ‚( &¡(c              ƒ  ór   K  — | j                  «       ƒ d{  –—†  | j                  j                  «       S 7 Œ­w)rl   Nrm   rX   s    rQ   ro   z.AsyncChatCompletionStream.get_final_completionØ   s0   è ø€ ð �o‰oÓ×ÐØ�{‰{×/Ñ/Ó1Ð1ð 	 ús   ‚7–5—7c              ƒ  ó8   K  — t        | «      ƒ d{  –—†  | S 7 Œ­w)rq   N)r)   rX   s    rQ   rn   z$AsyncChatCompletionStream.until_doneã   s   è ø€ ä$ TÓ*×*Ð*Øˆð 	+ús   ‚‘’c                ó.   — | j                   j                  S rV   rs   rX   s    rQ   rt   z5AsyncChatCompletionStream.current_completion_snapshotè   ru   rT   c               ó¤   K  — | j                   2 3 d {  –—† }t        |«      sŒ| j                  j                  |«      }|D ]  }|­–— Œ	 Œ=7 Œ86 y ­wrV   rw   rz   s       rQ   rJ   z$AsyncChatCompletionStream.__stream__ì   sW   è ø€ Ø#×/Ñ/÷ 	ð 	�)Ü7¸	ÔBØØ!Ÿ[™[×5Ñ5°iÓ@ˆNØ'ò �Ø”ñð		øÑ/ùs%   ‚A�A“A”A—5AÁAÁAN)rP   z AsyncStream[ChatCompletionChunk]rD   r~   rE   r   r€   r�   r‚   )r€   z9AsyncIterator[ChatCompletionStreamEvent[ResponseFormatT]]rƒ   r„   r…   r†   r‡   )rˆ   r‰   rŠ   r‹   rR   rž   r    r¢   r¤   rc   ro   rn   rŒ   rt   rJ   r_   rT   rQ   r›   r›   ©   s�   „ ñð
jð 5ð
jð Lð	
jð
 Cð
jð 
ó
jó0óóðà,ðð "ðð %ð	ð
 
óó&ó	2óð
 ò7ó ð7ôrT   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 rV   )Ú)_AsyncChatCompletionStreamManager__streamÚ._AsyncChatCompletionStreamManager__api_requestÚ2_AsyncChatCompletionStreamManager__response_formatÚ._AsyncChatCompletionStreamManager__input_toolsr”   s       rQ   rR   z)AsyncChatCompletionStreamManager.__init__  s%   € ð LPˆŒØ(ˆÔØ!0ˆÔØ(ˆÕrT   c              ƒ  óœ   K  — | j                   ƒ d {  –—† }t        || j                  | j                  ¬«      | _        | j                  S 7 Œ7­wr—   )r¯   r›   r°   r±   r®   r˜   s     rQ   r¢   z+AsyncChatCompletionStreamManager.__aenter__  sF   è ø€ Ø×-Ñ-×-ˆ
ä1Ø!Ø ×2Ñ2Ø×*Ñ*ô
ˆŒð �}‰}Ðð .ús   ‚A’A
“8Ac              ƒ  ón   K  — | j                   �#| j                   j                  «       ƒ d {  –—†  y y 7 Œ­wrV   )r®   rc   rd   s       rQ   r¤   z*AsyncChatCompletionStreamManager.__aexit__  s0   è ø€ ð �=‰=Ð$Ø—-‘-×%Ñ%Ó'×'Ñ'ð %Ø'ús   ‚*5¬3­5N)r•   z+Awaitable[AsyncStream[ChatCompletionChunk]]rD   r~   rE   r   r€   r�   )r€   z*AsyncChatCompletionStream[ResponseFormatT]r„   )rˆ   r‰   rŠ   r‹   rR   r¢   r¤   r_   rT   rQ   r¬   r¬   õ   sd   „ ñð
)à@ð
)ð Lð	
)ð
 Cð
)ð 
ó
)ó	ð(à,ð(ð "ð(ð %ð	(ð
 
ô(rT   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
)rL   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())
    ```
    )rE   rD   c               óÌ   — d | _         g | _        t        |«      r|D �cg c]  }|‘Œ c}ng | _        || _        t        j                  |«      r|| _        y t        | _        y c c}w rV   )	Ú7_ChatCompletionStreamState__current_completion_snapshotÚ/_ChatCompletionStreamState__choice_event_statesr'   Ú_input_toolsÚ_response_formatÚinspectÚisclassr&   Ú_rich_response_format)rO   rE   rD   Útools       rQ   rR   z"ChatCompletionStreamState.__init__9  s\   € ð SWˆÔ*Ø=?ˆÔ"ä>FÀ{Ô>S¨kÖ: dšTÓ:ÐY[ˆÔØ /ˆÔÜELÇ_Á_ÐUdÔEe°/ˆÕ"ÔkoˆÕ"ùò ;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_completionrD   rE   )r1   rt   r¼   r¸   rX   s    rQ   ro   z.ChatCompletionStreamState.get_final_completionF  s,   € ô %Ø ×<Ñ<Ø ×6Ñ6Ø×)Ñ)ô
ð 	
rT   c                ó6   — | j                   €J ‚| j                   S rV   )r¶   rX   s    rQ   rt   z5ChatCompletionStreamState.current_completion_snapshotR  s    € à×1Ñ1Ð=Ð=Ð=Ø×1Ñ1Ð1rT   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)rO   rÂ   s     rQ   ry   z&ChatCompletionStreamState.handle_chunkW  s9   € à-1×-CÑ-CÀEÓ-JˆÔ*à×!Ñ!ØØ $× BÑ Bð "ó 
ð 	
rT   c                óº   — 	 | j                   |j                     S # t        $ r6 t        | j                  ¬«      }| j                   j                  |«       |cY S w xY w)N)rE   )r·   ÚindexÚ
IndexErrorÚChoiceEventStater¸   Úappend)rO   ÚchoiceÚchoice_states      rQ   Ú_get_choice_statez+ChatCompletionStreamState._get_choice_state`  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Ó   ÚmessagerC   Úlength)Ú
completionÚcontent_filterzutf-8)Úpartial_mode)rE   Ú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¸   r9   r:   rá   râ   r'   r¼   Úlstripr   ÚbytesrÑ   r2   rß   ÚgetÚ	argumentsÚlogprobsr+   r;   ÚextendÚusageÚsystem_fingerprint)rO   rÂ   rÃ   rË   Úchoice_snapshotÚprevious_tool_callsÚidxÚ_Ú
tool_indexÚ	prev_toolÚnew_toolÚtool_call_chunkÚtool_call_snapshotÚ
input_tools                 rQ   rÄ   z+ChatCompletionStreamState._accumulate_chunkh  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ñ   rD   )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¹   )
rO   rÂ   rÃ   r|   rË   rÌ   rñ   rÒ   Útool_call_deltaÚ	tool_calls
             rQ   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 ÐrT   N)rE   r   rD   r~   r€   r�   r†   r‡   )rÂ   r6   r€   z4Iterable[ChatCompletionStreamEvent[ResponseFormatT]])rË   ÚChoiceChunkr€   rÉ   ©rÂ   r6   r€   r   )rÂ   r6   rÃ   r   r€   ú0list[ChatCompletionStreamEvent[ResponseFormatT]])rˆ   r‰   rŠ   r‹   r&   rR   ro   rŒ   rt   ry   rÍ   rÄ   rÅ   r_   rT   rQ   rL   rL   $  s‹   „ ñð. FJØNRñ	pð Cðpð Lð	pð
 
ópó

ð ò2ó ð2ó
ó óC#ðJYð #ðYð :ð	Yð
 
:ôYrT   rL   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)rO   rE   s     rQ   rR   zChoiceEventState.__init__J  s<   € Ø'ˆÔà"ˆÔØ"ˆÔØ&+ˆÔ#Ø&+ˆÔ#Ü*-«%ˆÔØ59ˆÕ&rT   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ñ   rD   )r|   rñ   rõ   )	rè   rî   Ú_content_done_eventsr  r  Ú_add_tool_done_eventr×   rÒ   rÇ   )rO   rÿ   rñ   rD   r|   r  s         rQ   r   z ChoiceEventState.get_done_eventsT  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Õ*ð	=ð ÐrT   c               ó¬  — g }|j                   j                  r‰| j                  s}d| _        t        ||j                   ¬«      }||j                   _        |j                  t        t        d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)rD   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   râ   r	  r   rí   r
  r   r  r   )rO   rñ   rD   r|   rÑ   s        rQ   r  z%ChoiceEventState._content_done_events}  sœ  € ð LNˆà×"Ñ"×*Ò*°4×3EÒ3EØ!%ˆDÔä(Ø /Ø'×/Ñ/ôˆFð .4ˆO×#Ñ#Ô*à×!Ñ!Üô ØAÜœSÔ"2Ó3óð (Ø+×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ôð ÐrT   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Ï   )rE   rÏ   z"tool_calls.function.arguments.done)rç   rÇ   rß   rì   rÐ   )r  ÚaddrÚ   rÒ   rç   r3   r¸   rÏ   rÐ   rÊ   r+   r   rß   rì   r   r   )rO   r|   rñ   rõ   rù   rÐ   s         rQ   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ôõ	õ ÜÐ+Õ,ð rT   N)rE   z"list[ChatCompletionToolUnionParam]r€   r�   )rÿ   r  rñ   r   rD   r~   r€   r  )rñ   r   rD   r~   r€   r  )r|   r  rñ   r   rõ   Úintr€   r�   )rˆ   r‰   rŠ   rR   r   r  r  r_   rT   rQ   rÉ   rÉ   I  s‰   „ ó:ð'ð "ð'ð .ð	'ð
 Lð'ð 
:ó'ðR>ð .ð>ð Lð	>ð
 
:ó>ð@$-ð Ið$-ð .ð	$-ð
 ð$-ð 
ô$-rT   rÉ   c           	     óR  — | j                  «       }|j                  dd «       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 )NÚobfuscationzlist[object]rä   Tr×   rØ   rÚ   rð   Úobjectzchat.completionrÔ   )	ræ   Úpopr   rä   r*   r×   rÇ   r   r,   )rÂ   Údatarä   rË   s       rQ   rã   rã   ä  s»   € Ø�=‰=‹?€DØ‡H�Hˆ]˜DÔ!Ü�> 4¨	¡?Ó3€Gà—-‘-ò 
ˆð!
Ø×Ñ¨d¸W¸IÐÓFð!
à�v—|‘|×+Ñ+Ó-ñ!
ˆ�—‘Òð
ô Ü$ÜÜ.à$ dðàðð Ð+ñô	
ó
ð 
rT   c                ó    — | j                   dk(  S )Nzchat.completion.chunk)r  )r{   s    rQ   rx   rx   ü  s   € ð ×ÑÐ6Ñ6Ð6rT   r  )r{   r6   r€   Úbool)TÚ
__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   Ú
_streamingr4   r5   Ú
types.chatr6   r7   r8   Ú_exceptionsr9   r:   Útypes.chat.chat_completionr;   Ú types.chat.chat_completion_chunkr<   r  Ú#types.chat.completion_create_paramsr=   ÚResponseFormatParamr?   rŽ   r›   r¬   rL   rÉ   rã   rx   r_   rT   rQ   ú<module>r0     sé   ðÝ "ã Ý ß b× bÓ bß :Ñ :å ç kÑ k÷÷ ÷ ó õ 'ß (Ñ (ß NÑ NÝ "ß -÷÷ ÷ /ß bÑ bß SÝ 9Ý FÝ YôI˜7 ?Ñ3ô IôX," '¨/Ñ":ô ,"ô^I ¨Ñ 8ô IôX,( w¨Ñ'?ô ,(ô^b ¨Ñ 8ô b÷J	X-ñ X-óvô07rT   