§
    TCÄj&–  ã                   ó.  — d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZmZmZmZmZmZ ej        dk    rd dlmZ nd dlmZ  ej        d¦  «        Zdede fd„Z!de"e         de fd„Z#dede fd„Z$de"e         de"e         fd„Z% G d„ d¦  «        Z&de	e"e         ef         deej'                 fd„Z( G d„ de&¦  «        Z) G d„ d¦  «        Z* G d„ d e&¦  «        Z+ G d!„ d"¦  «        Z,dS )#é    )ÚIteratorN)ÚAnyÚAsyncIteratorÚOptionalÚUnionÚget_argsé   )Ú_extra_utils)Ú
_mcp_utils)Ú_transformers)Úerrors)Útypes)ÚAsyncModelsÚModels)ÚContentÚContentOrDictÚGenerateContentConfigOrDictÚGenerateContentResponseÚPartÚPartUnionDict)é   é
   )Ú	TypeGuardzgoogle_genai.chatsÚcontentÚreturnc                 óV   — | j         sdS | j         D ]}|t          ¦   «         k    r dS ŒdS ©NFT)Úpartsr   )r   Úparts     úVC:\Projects\Historical\FacebookAutoPoster\venv\Lib\site-packages\google/genai/chats.pyÚ_validate_contentr!   '   s@   € Ø	Œð Øˆ5ØŒmð ð €dØ�t‰vŒv‚~€~ØˆUˆUð à	ˆó    Úcontentsc                 ó<   — | sdS | D ]}t          |¦  «        s dS ŒdS r   )r!   )r#   r   s     r    Ú_validate_contentsr%   0   s?   € Ø	ð Øˆ5Øð ð €gÝ˜WÑ%Ô%ð ØˆUˆUðà	ˆr"   Úresponsec                 óz   — | j         sdS | j         d         j        sdS t          | j         d         j        ¦  «        S )NFr   )Ú
candidatesr   r!   )r&   s    r    Ú_validate_responser)   9   sC   € Ø	Ô	ð Øˆ5Ø	Ô	˜QÔ	Ô	'ð Øˆ5Ý	˜8Ô.¨qÔ1Ô9Ñ	:Ô	:Ð:r"   Úcomprehensive_historyc                 óN  — | sg S g }t          | ¦  «        }d}| |         }||k     rÿ| |         j        dvrt          d| |         j        › �¦  «        ‚| |         j        dk    r#| |         }|                     |¦  «         |dz  }n™g }d}||k     ra| |         j        dk    rP|                     | |         ¦  «         |rt	          | |         ¦  «        sd}|dz  }||k     r| |         j        dk    °P|r|                     |¦  «         n|r|                     ¦   «          ||k     °ÿ|S )	aÈ  Extracts the curated (valid) history from a comprehensive history.

  The comprehensive history contains all turns (user input and model responses),
  including any invalid or rejected model outputs. This function filters that
  history to return only the valid turns.

  Args:
      comprehensive_history: A list representing the complete chat history.
        Including invalid turns.

  Returns:
      curated history, which is a list of valid turns.
  r   )ÚuserÚmodelz$Role must be user or model, but got r,   r	   Tr-   F)ÚlenÚroleÚ
ValueErrorÚappendr!   ÚextendÚpop)r*   Úcurated_historyÚlengthÚiÚcurrent_inputÚcurrent_outputÚis_valids          r    Ú_extract_curated_historyr:   A   sŒ  € ð  
ð Ø€IØ€/ÝÐ$Ñ%Ô%€&Ø€!Ø'¨Ô*€-Ø	ˆFŠ
ˆ
Ø˜QÔÔ$Ð,=Ð=Ð=ÝØ
PÐ1FÀqÔ1IÔ1NÐ
PÐ
Pñô ð ð ˜QÔÔ$¨Ò.Ð.Ø+¨AÔ.€mØ×Ò˜]Ñ+Ô+Ð+Øˆ1�f€a€aà€nØ€hØ�ŠJˆJÐ0°Ô3Ô8¸GÒCÐCØ×ÒÐ3°AÔ6Ñ7Ô7Ð7Øð 	Õ-Ð.CÀAÔ.FÑGÔGð 	Øˆ(Ø	ˆQ‰ˆð	 �ŠJˆJÐ0°Ô3Ô8¸GÒCÐCð
 
ð Ø×Ò˜~Ñ.Ô.Ð.Ð.Øð Ø×ÒÑÔÐð+ 	
ˆFŠ
ˆ
ð, 
Ðr"   c                   ó†   — e Zd ZdZddœdedee         dee         fd„Z	de
d	ee
         d
eddfd„Zddedee
         fd„ZdS )Ú	_BaseChatzBase chat session.N©Úconfigr-   r>   Úhistoryc                ó(  — || _         t          j        |t          j        d¬¦  «        | _        g }|D ]C}t          |t          ¦  «        st          j        |¦  «        }n|}| 	                    |¦  «         ŒD|| _
        	 t          |¦  «        | _        d S )NÚchat©Úusage)Ú_modelr
   Úget_usage_headerr   ÚGenerateContentConfigÚ_configÚ
isinstancer   Úmodel_validater1   Ú_comprehensive_historyr:   Ú_curated_history)Úselfr-   r>   r?   Úcontent_modelsr   Úcontent_models          r    Ú__init__z_BaseChat.__init__s   s«   € ð €D„KÝÔ0Ø•Ô+°6ðñ ô €D„Lð €NØð +ð +ˆÝ˜¥Ñ)Ô)ð  ÝÔ.¨wÑ7Ô7ˆˆàˆØ×Ò˜MÑ*Ô*Ð*Ð*Ø"0€DÔðå4°^ÑDÔD€DÔðð r"   Ú
user_inputÚmodel_outputr9   r   c                 ó  — |g}|r|nt          dg ¬¦  «        g}| j                             |¦  «         | j                             |¦  «         |r6| j                             |¦  «         | j                             |¦  «         dS dS )a~  Records the chat history.

    Maintaining both comprehensive and curated histories.

    Args:
      user_input: The user's input content.
      model_output: A list of `Content` from the model's response. This can be
        an empty list if the model produced no output.
      is_valid: A boolean flag indicating whether the current model output is
        considered valid.
    r-   ©r/   r   N)r   rJ   r2   rK   )rL   rP   rQ   r9   Úinput_contentsÚoutput_contentss         r    Úrecord_historyz_BaseChat.record_historyŒ   s¤   € ð" !�\€Nð %ÐKˆˆ­7¸ÀrÐ+JÑ+JÔ+JÐ*Kð ð 	Ô×&Ò& ~Ñ6Ô6Ð6ØÔ×&Ò& Ñ7Ô7Ð7Øð 4Ø
Ô×"Ò" >Ñ2Ô2Ð2Ø
Ô×"Ò" ?Ñ3Ô3Ð3Ð3Ð3ð4ð 4r"   FÚcuratedc                 ó"   — |r| j         S | j        S )aH  Returns the chat history.

    Args:
        curated: A boolean flag indicating whether to return the curated (valid)
          history or the comprehensive (all turns) history. Defaults to False
          (returns the comprehensive history).

    Returns:
        A list of `Content` objects representing the chat history.
    )rK   rJ   )rL   rW   s     r    Úget_historyz_BaseChat.get_history©   s   € ð ð )ØÔ"Ð"àÔ(Ð(r"   )F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   r   Úlistr   rO   r   ÚboolrV   rY   © r"   r    r<   r<   p   sÏ   € € € € € ØÐð 7;ð	ð ð ð ðð Ð2Ô3ð	ð
 �MÔ"ðð ð ð ð24àð4ð ˜”Mð4ð ð	4ð
 ð4ð 4ð 4ð 4ð:)ð ) ð )°$°w´-ð )ð )ð )ð )ð )ð )r"   r<   c                 ó
  — t          | t          ¦  «        rt          d„ | D ¦   «         ¦  «        S t          t          j        ¦  «        }t          | ¦  «        |v rdS t          j        �t          | t          j        ¦  «        rdS dS )Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S ©N)Ú_is_part_type)Ú.0r   s     r    ú	<genexpr>z _is_part_type.<locals>.<genexpr>¾   s*   è è € Ð8Ð8 t�}˜TÑ"Ô"Ð8Ð8Ð8Ð8Ð8Ð8r"   TF)rH   r_   Úallr   r   Ú	PartUnionÚtypeÚ	PIL_Image)r#   Úallowed_part_typess     r    re   re   º   s   € õ ��$ÑÔð ÝÐ8Ð8¨xÐ8Ñ8Ô8Ñ8Ô8Ð8å!¥%¤/Ñ2Ô2ÐÝˆH�~„~Ð+Ð+Ð+ØˆTõ 
ŒÐ	$­°H½e¼oÑ)NÔ)NÐ	$ØˆtØˆ5r"   c            
       óÞ   ‡ — e Zd ZdZddœdededee         dee	         fˆ fd„Z
	 dd	eee         ef         dee         d
efd„Z	 dd	eee         ef         dee         d
ee         fd„Zˆ xZS )ÚChatzChat session.Nr=   Úmodulesr-   r>   r?   c                ó^   •— || _         t          ¦   «                              |||¬¦  «         d S ©N)r-   r>   r?   ©Ú_modulesÚsuperrO   ©rL   ro   r-   r>   r?   Ú	__class__s        €r    rO   zChat.__init__Î   ó@   ø€ ð €D„MÝ	�G„G×ÒØØØð ñ ô ð ð ð r"   Úmessager   c           
      ó¬  — t          |¦  «        s9t          dt          j        › dt          j        › dt          |¦  «        › �¦  «        ‚|r|n| j        }t          j        |t          j	        d¬¦  «        }t          j
        |¦  «        }|r4|j        r-t          j        |j        ¦  «        rt          j        d¦  «        ‚t          j        |¦  «        }t#          j        |¦  «        }| j        |gz   }t          j        |¦  «        rw| j                             | j        ||¬¦  «        }|j        r%|j        d         j        r|j        d         j        gng }	|                      ||	t7          |¦  «        ¬	¦  «         |S |r¨t          j        ||¦  «         |rt          j        d
¬¦  «        |_        | j                             | j        ||¬¦  «        }|j        r%|j        d         j        r|j        d         j        gng }	|                      ||	t7          |¦  «        ¬	¦  «         |S t          j        |¦  «        }
|rt          j        d
¬¦  «        |_        t@           !                    d|
› d�¦  «         t          j        |t          j	        d¬¦  «        }t          j"        ¦   «         }t          j#        |¦  «        }d}|
dk    �r;|dz  }| j                             | j        ||¬¦  «        }|r2|r0|j        r)|j        d         j        r|j        d         j        j$        snßt@           !                    d|› d�¦  «         |
dz  }
|
dk    rt@           !                    d¦  «         n›t          j%        ||¦  «        }|snƒ|j        d         j        }t          j&        d|¬¦  «        }| '                    |¦  «         | '                    |¦  «         |g}	|                      ||	t7          |¦  «        ¬	¦  «         |}|
dk    �°;|j        r%|j        d         j        r|j        d         j        gng }	|                      ||	t7          |¦  «        ¬	¦  «         |S )a¾  Sends the conversation history with the additional message and returns the model's response.

    Args:
      message: The message to send to the model.
      config:  Optional config to override the default Chat config for this
        request.

    Returns:
      The model's response.

    Usage:

    .. code-block:: python

      chat = client.chats.create(model='gemini-2.0-flash')
      response = chat.send_message('tell me a story')
    ú#Message must be a valid part type: ú or ú, got rA   rB   ú6MCP sessions are not supported in synchronous methods.©r-   r#   r>   r   ©rP   rQ   r9   T©Údisableú&AFC is enabled with max remote calls: ú.Úafcr	   úAFC remote call ú	 is done.ú8Reached max remote calls for automatic function calling.r,   rS   )(re   r0   r   ri   r   rj   rG   r
   rE   rF   Úparse_config_for_mcp_usageÚtoolsr   Úhas_mcp_session_usager   ÚUnsupportedFunctionErrorÚ"find_afc_incompatible_tool_indexesÚtÚ	t_contentrK   Úshould_disable_afcrs   Úgenerate_contentrD   r(   r   rV   r)   Ú"log_afc_incompatible_tools_warningÚAutomaticFunctionCallingConfigÚautomatic_function_callingÚget_max_remote_calls_afcÚloggerÚinfor   Úget_function_mapr   Úget_function_response_partsr   r1   )rL   rx   r>   Úmethod_configÚparsed_configÚincompatible_tools_indexesrP   Úcontents_to_modelr&   rQ   Úremaining_remote_calls_afcÚfunction_mapr6   Úfunc_response_partsÚfunc_call_contentÚfunc_response_contents                   r    Úsend_messagezChat.send_messageÝ   sf  € õ. ˜Ñ!Ô!ð Ýð9µ´ð 9ð 9ÝÔ!ð9ð 9Ý)-¨g©¬ð9ð 9ñô ð ð %Ð6�F�F¨$¬,€MÝ Ô1Ø•uÔ2¸&ðñ ô €Mõ !Ô;¸MÑJÔJ€MàðàÔðõ Ô,¨]Ô-@ÑAÔAðõ
 Ô+Ø
Bñô ð õ 	Ô7¸ÑFÔFð õ ”˜WÑ%Ô%€JØÔ-°°Ñ<ÐÝÔ& }Ñ5Ô5ð Ø”×/Ò/Ø”Ø$Øð 0ñ ô €hð Ô ðØ%-Ô%8¸Ô%;Ô%Cðˆ8Ô˜qÔ!Ô)Ð
*Ð
*àð ð
 ×ÒØØ#Ý% hÑ/Ô/ð ñ ô ð ð
 €oà!ð ÝÔ5Ø
Ð3ñô ð ð 
ð 
åÔ0¸Ð>Ñ>Ô>ð 	Ô0ð ”×/Ò/Ø”Ø$Øð 0ñ ô €hð Ô ðØ%-Ô%8¸Ô%;Ô%Cðˆ8Ô˜qÔ!Ô)Ð
*Ð
*àð ð
 ×ÒØØ#Ý% hÑ/Ô/ð ñ ô ð ð
 €oå!-Ô!FØñ"ô "Ðð
 ð å
Ô
.°tÐ
<Ñ
<Ô
<ð Ô.õ ‡K‚KØNÐ1KÐNÐNÐNñô ð õ !Ô1Ø•uÔ2¸%ðñ ô €Mõ Ô,Ñ.Ô.€HÝÔ0°Ñ?Ô?€LØ	€AØ
$ qÒ
(Ñ
(Øˆ1�f€aØ”×/Ò/Ø”Ø$Øð 0ñ ô €hð ðàðð Ô$ðð Ô$ QÔ'Ô/ð	ð
 Ô$ QÔ'Ô/Ô5ðð 	å‡k‚kÐ1 QÐ1Ð1Ð1Ñ2Ô2Ð2Ø  AÑ%Ð Ø	# qÒ	(Ð	(õ 	�ŠÐNÑOÔOÐOØå(ÔDØ
�Lñô Ðð !ð ØØ"Ô-¨aÔ0Ô8ÐÝ#œmØÐ0ðñ ô Ðð ×ÒÐ0Ñ1Ô1Ð1Ø×ÒÐ4Ñ5Ô5Ð5Ø'Ð(€lØ
×ÒØØ#Ý% hÑ/Ô/ð ñ ô ð ð
 )€jðU % qÒ
(Ñ
(ð\ Ôð	Ø#+Ô#6°qÔ#9Ô#Að	ˆÔ	˜QÔ	Ô	'Ð(Ð(àð ð
 	×ÒØØ!Ý# HÑ-Ô-ð ñ ô ð ð
 €Or"   c           
   #   óº	  K  — |r|n| j         }t          j        |t          j        d¬¦  «        }t          j        |¦  «        }|r4|j        r-t          j        |j        ¦  «        rt          j
        d¦  «        ‚t          |¦  «        s9t          dt          j        › dt          j        › dt          |¦  «        › �¦  «        ‚t          j        |¦  «        }t#          j        |¦  «        }| j        |gz   }g }d}	d}
d}t          j        |¦  «        }|s5|r3t          j        ||¦  «         |rt          j        d¬	¦  «        |_        d}|rßt1          | j        t4          ¦  «        rÃ| j                             | j        ||¬
¦  «        D ]€}t;          |¦  «        sd}
|j        r7|j        d         j        r%|                      |j        d         j        ¦  «         |j        r$|j        d         j!        r|j        d         j!        }	|V — Œ�|  "                    |||
o|duo|	du¬¦  «         dS t          j#        |¦  «        }|rt          j        d¬	¦  «        |_        t          j        |t          j        d¬¦  «        }tH           %                    d|› d�¦  «         t          j&        |¦  «        }d}t1          | j        t4          ¦  «        �r|dk    �rÝ|dz  }| j                             | j        ||¬
¦  «        }|dz  }|dk    }|rtH           %                    d¦  «         g }d}	d}
g }d}|D ]à}t;          |¦  «        sd}
|s^|r\|j        rU|j        d         j        rC|j        d         j        j'        r,t          j(        ||¦  «        }|r| )                    |¦  «         |j        r7|j        d         j        r%|                      |j        d         j        ¦  «         |j        r$|j        d         j!        r|j        d         j!        }	|V — Œá|rnŸ|r|snštH           %                    d|› d�¦  «         |rs|j        rl|j        d         j        rZt          j*        d|¬¦  «        }| )                    |¦  «         |                      |¦  «         |  "                    |||
¬¦  «         |}|dk    �°Ý|  "                    ||tW          |
o|duo|	du¦  «        ¬¦  «         dS dS )aó  Sends the conversation history with the additional message and yields the model's response in chunks.

    Args:
      message: The message to send to the model.
      config: Optional config to override the default Chat config for this
        request.

    Yields:
      The model's response in chunks.

    Usage:

    .. code-block:: python

      chat = client.chats.create(model='gemini-2.0-flash')
      for chunk in chat.send_message_stream('tell me a story'):
        print(chunk.text)
    rA   rB   r}   rz   r{   r|   NTr€   r~   Fr   r   r„   r‚   rƒ   r	   r‡   r…   r†   r,   rS   ),rG   r
   rE   r   rF   rˆ   r‰   r   rŠ   r   r‹   re   r0   ri   r   rj   rŒ   r�   rŽ   rK   r�   r‘   r’   r“   rH   rs   r   Úgenerate_content_streamrD   r)   r(   r   r1   Úfinish_reasonrV   r”   r•   r–   r—   r   r˜   r2   r   r`   )rL   rx   r>   r™   rš   r›   rP   rœ   rQ   r¥   r9   ÚchunkÚdisable_afcr�   rž   r6   Úresponse_streamÚis_last_remote_call_afcrŸ   Úchunk_func_response_partsr¡   s                        r    Úsend_message_streamzChat.send_message_stream�  sf  è è € ð0 %Ð6�F�F¨$¬,€MÝ Ô1Ø•uÔ2¸&ðñ ô €Mõ !Ô;¸MÑJÔJ€MàðàÔðõ Ô,¨]Ô-@ÑAÔAðõ
 Ô+Ø
Bñô ð õ ˜Ñ!Ô!ð Ýð9µ´ð 9ð 9ÝÔ!ð9ð 9Ý)-¨g©¬ð9ð 9ñô ð õ
 	Ô7¸ÑFÔFð õ ”˜WÑ%Ô%€JØÔ-°°Ñ<ÐØ€LØ€MØ€HØ€EÝÔ1°-Ñ@Ô@€KØð Ð5ð ÝÔ5Ø
Ð3ñô ð ð 
ð 
åÔ0¸Ð>Ñ>Ô>ð 	Ô0ð €kàð Ý	�D”M¥6Ñ	*Ô	*ð 
Ø”]×:Ò:Ø”+Ø&Ø ð ;ñ 
ô 
ð 	ð 	ˆEõ
 $ EÑ*Ô*ð ØˆHØÔð = %Ô"2°1Ô"5Ô"=ð =Ø×Ò Ô 0°Ô 3Ô ;Ñ<Ô<Ð<ØÔð > %Ô"2°1Ô"5Ô"Cð >Ø!Ô,¨QÔ/Ô=ˆMØˆ+ˆ+ˆ+ˆ+Ø×ÒØ!Ø%Øð *Ø DÐ(ð*à TÐ)ð 	ñ 	
ô 	
ð 	
ð €fõ ".Ô!FØñ"ô "Ðð
 ð å
Ô
.°tÐ
<Ñ
<Ô
<ð Ô.õ !Ô1Ø•uÔ2¸%ðñ ô €Mõ ‡K‚KØNÐ1KÐNÐNÐNñô ð õ  Ô0°Ñ?Ô?€LØ	€AÝ�$”-¥Ñ(Ô(ñ LØ&¨Ò*Ñ*Ø	ˆQ‰ˆØœ-×?Ò?Ø”+Ø&Ø ð @ñ 
ô 
ˆð
 	# aÑ'Ð"ð #=ÀÒ"AÐØ"ð 	Ý
�+Š+ØHñô ð ð ˆØˆØˆØ ÐØˆà$ð 	ð 	ˆEÝ# EÑ*Ô*ð ØˆHð *ðDàðDð Ô"ðDð Ô" 1Ô%Ô-ð	Dð
 Ô" 1Ô%Ô-Ô3ðDõ Ô8¸ÀÑMÔMð &ð )ð DØ!×(Ò(Ð)BÑCÔCÐCàÔð = %Ô"2°1Ô"5Ô"=ð =Ø×Ò Ô 0°Ô 3Ô ;Ñ<Ô<Ð<ØÔð > %Ô"2°1Ô"5Ô"Cð >Ø!Ô,¨QÔ/Ô=ˆMØˆ+ˆ+ˆ+ˆ+à"ð 	Ø
Øð 	Ð#6ð 	Ø
å�ŠÐ3 qÐ3Ð3Ð3Ñ4Ô4Ð4àð 	-�UÔ%ð 	-¨%Ô*:¸1Ô*=Ô*Eð 	-Ý"'¤-ØÐ!4ð#ñ #ô #Ð
ð ×
"Ò
" <Ñ
0Ô
0Ð
0Ø
×
"Ò
"Ð#8Ñ
9Ô
9Ð
9à
×
Ò
Ø#Ø'Øð ñ ô ð ð
 -ˆ*ðC '¨Ò*Ñ*ðF ×ÒØØ#ÝØð ,Ø dÐ*ð,à tÐ+ñô ð ñ ô ð ð ð ðILð Lr"   rd   )rZ   r[   r\   r]   r   r^   r   r   r_   r   rO   r   r   r   r¢   r   r«   Ú__classcell__©rv   s   @r    rn   rn   Ë   s>  ø€ € € € € ØÐð 7;ðð ð ð ðð ð	ð
 Ð2Ô3ðð �MÔ"ðð ð ð ð ð ð$ 7;ðbð bà�T˜-Ô(¨-Ð7Ô8ðbð Ð2Ô3ðbð ð	bð bð bð bðN 7;ðsð sà�T˜-Ô(¨-Ð7Ô8ðsð Ð2Ô3ðsð Ð'Ô(ð	sð sð sð sð sð sð sð sr"   rn   c            	       ób   — e Zd ZdZdefd„Zdddœdedee         dee	e
                  d	efd
„ZdS )ÚChatsz%A util class to create chat sessions.ro   c                 ó   — || _         d S rd   ©rs   ©rL   ro   s     r    rO   zChats.__init__:  ó   € Ø€D„M€M€Mr"   N©r>   r?   r-   r>   r?   r   c                ó:   — t          | j        |||r|ng ¬¦  «        S ©zøCreates a new chat session.

    Args:
      model: The model to use for the chat.
      config: The configuration to use for the generate content request.
      history: The history to use for the chat.

    Returns:
      A new chat session.
    )ro   r-   r>   r?   )rn   rs   ©rL   r-   r>   r?   s       r    ÚcreatezChats.create=  s2   € õ" Ø”ØØØ"Ð*��¨ð	ñ ô ð r"   )rZ   r[   r\   r]   r   rO   r^   r   r   r_   r   rn   r¸   ra   r"   r    r¯   r¯   7  s“   € € € € € Ø-Ð-ð˜fð ð ð ð ð 7;Ø/3ðð ð ð ðð Ð2Ô3ð	ð
 ˜˜]Ô+Ô,ðð ðð ð ð ð ð r"   r¯   c            
       óÞ   ‡ — e Zd ZdZddœdededee         dee	         fˆ fd„Z
	 dd	eee         ef         dee         d
efd„Z	 dd	eee         ef         dee         d
ee         fd„Zˆ xZS )Ú	AsyncChatzAsync chat session.Nr=   ro   r-   r>   r?   c                ó^   •— || _         t          ¦   «                              |||¬¦  «         d S rq   rr   ru   s        €r    rO   zAsyncChat.__init__Y  rw   r"   rx   r   c           
   ƒ   ó¾  K  — |r|n| j         }t          j        |t          j        d¬¦  «        }t          |¦  «        s9t          dt          j        › dt          j        › dt          |¦  «        › �¦  «        ‚t          j        |¦  «        }| j        |gz   }t          j        |¦  «        r}| j                             | j        ||¬¦  «        ƒ d{V —†}|j        r%|j        d         j        r|j        d         j        gng }|                      ||t)          |¦  «        ¬	¦  «         |S t          j        |t-          | j        j        d
d¦  «        ¬¦  «        }|sd}	n=t1          |t2          ¦  «        rt          j        di |¤Ž}	n|                     d¬¦  «        }	|r®t          j        ||¦  «         |	rt          j        d¬¦  «        |	_        | j                             | j        ||	¬¦  «        ƒ d{V —†}|j        r%|j        d         j        r|j        d         j        gng }|                      ||t)          |¦  «        ¬	¦  «         |S t          j        |	t          j        d¬¦  «        }	t=          j        ¦   «         4 ƒd{V —†}
| j        j        j         �rPt          j!        |	¦  «        �r;|	��8g }|	j"        �r.|	j"        D �]}t1          |t          j#        ¦  «        rì|j$        rå|j%        s|j&        s|j'        s|j(        s|j)        r-|                     ddi¬¦  «        }| *                    |¦  «         |j$        D ]‹}t-          |dd¦  «        	 �t          d¦  «        ‚|j+        �S|
 ,                    t[          j.        | j        j        |j+        ¦  «        ¦  «        ƒ d{V —†}| *                    |¦  «         Œ}t          d¦  «        ‚�Œ	| *                    |¦  «         �Œ ||	_"        t          j/        |	t-          | j        j        d
d¦  «        ¬¦  «        ƒ d{V —†\  }}t          j0        |¦  «        }|rt          j        d¬¦  «        |_        tb           2                    d|› d�¦  «         t          j3        ¦   «         }t          j4        ||d¬¦  «        }d}|dk    �rG|dz  }| j                             | j        ||¬¦  «        ƒ d{V —†}|r2|r0|j        r)|j        d         j        r|j        d         j        j5        snåtb           2                    d|› d�¦  «         |dz  }|dk    rtb           2                    d¦  «         n¡t          j6        ||¦  «        ƒ d{V —†}|snƒ|j        d         j        }t          j7        d|¬¦  «        }| *                    |¦  «         | *                    |¦  «         |g}|                      ||t)          |¦  «        ¬	¦  «         |}|dk    �°G|j        r%|j        d         j        r|j        d         j        gng }|                      ||t)          |¦  «        ¬	¦  «         |cddd¦  «        ƒd{V —† S # 1 ƒd{V —†swxY w Y   dS ) aÃ  Sends the conversation history with the additional message and returns model's response.

    Args:
      message: The message to send to the model.
      config: Optional config to override the default Chat config for this
        request.

    Returns:
      The model's response.

    Usage:

    .. code-block:: python

      chat = client.aio.chats.create(model='gemini-2.0-flash')
      response = await chat.send_message('tell me a story')
    rA   rB   rz   r{   r|   r~   Nr   r   ÚvertexaiF©Úis_agent_platformT)Údeepr€   r„   Úmcp_servers©ÚupdateÚstreamable_http_transportú‡The 'streamable_http_transport' parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise Agent Platform mode.ú2Agent Platform MCP servers require a 'name' field.r‚   rƒ   ©Úis_caller_method_asyncr	   r…   r†   r‡   r,   rS   ra   )8rG   r
   rE   r   rF   re   r0   ri   r   rj   r�   rŽ   rK   r�   rs   r�   rD   r(   r   rV   r)   rŒ   ÚgetattrÚ_api_clientrH   ÚdictÚ
model_copyr‘   r’   r“   Ú
contextlibÚAsyncExitStackr½   Úhas_agent_platform_mcp_serversr‰   ÚToolrÁ   Úfunction_declarationsÚgoogle_searchÚ	retrievalÚgoogle_search_retrievalÚcode_executionr1   ÚnameÚenter_async_contextr   Ú_connect_agent_platform_mcpÚparse_config_for_mcp_sessionsr”   r•   r–   r   r—   r   Ú!get_function_response_parts_asyncr   )rL   rx   r>   r™   rP   rœ   r&   rQ   r›   rš   ÚstackÚ	new_toolsÚtoolÚ	tool_copyÚserverÚsessionÚfinal_parsed_configÚmcp_to_genai_tool_adaptersr�   rž   r6   rŸ   r    r¡   s                           r    r¢   zAsyncChat.send_messageh  s?	  è è € ð, %Ð6�F�F¨$¬,€MÝ Ô1ØÝÔ#Øðñ ô €Mõ
 ˜Ñ!Ô!ð Ýð9µ´ð 9ð 9ÝÔ!ð9ð 9Ý)-¨g©¬ð9ð 9ñô ð õ
 ”˜WÑ%Ô%€JØÔ-°°Ñ<ÐåÔ& }Ñ5Ô5ð Ø”}×5Ò5Ø”Ø$Øð 6ñ ô ð ð ð ð ð ð €hð Ô ðØ%-Ô%8¸Ô%;Ô%Cðˆ8Ô˜qÔ!Ô)Ð
*Ð
*àð ð
 ×ÒØØ#Ý% hÑ/Ô/ð ñ ô ð ð
 €oõ 	Ô7ØÝ%Ø”Ô)¨:°uñô ð	
ñ 	
ô 	
ð ð ð :Ø€m€mÝ	�M¥4Ñ	(Ô	(ð :ÝÔ1ÐBÐB°MÐBÐB€m€mà#×.Ò.°DÐ.Ñ9Ô9€mà!ð ÝÔ5Ø
Ð3ñô ð ð 
ð 
åÔ0¸Ð>Ñ>Ô>ð 	Ô0ð ”}×5Ò5Ø”Ø$Øð 6ñ ô ð ð ð ð ð ð €hð Ô ðØ%-Ô%8¸Ô%;Ô%Cðˆ8Ô˜qÔ!Ô)Ð
*Ð
*àð ð
 ×ÒØØ#Ý% hÑ/Ô/ð ñ ô ð ð
 €oõ !Ô1ØÝÔ#Øðñ ô €Mõ
 Ô(Ñ*Ô*ð Nð Nð Nð Nð Nð Nð N¨eð Œ-Ô
#Ô
,ñ-*åÔ9¸-ÑHÔHñ-*ð Ñ'à!ˆ	ØÔñ '	*Ø#Ô)ð %%ñ %%ˆdÝ˜$¥¤
Ñ+Ô+ð $%°Ô0@ð $%ð Ô,ð,àÔ'ð,ð ”^ð,ð Ô1ð	,ð
 Ô(ð,ð !ŸOšO°MÀ4Ð3H˜OÑIÔI�	Ø× Ò  Ñ+Ô+Ð+à Ô,ð ð �&å˜FÐ$?ÀÑFÔFØð õ #ð9ñô ð ð ”;Ð*Ø"'×";Ò";Ý Ô<Øœ-Ô3°V´[ñô ñ#ô #ð ð ð ð ð ð �'ð
 ×"Ò" 7Ñ+Ô+Ð+Ð+å"ØJñô ð ñ)ð0 ×Ò˜tÑ$Ô$Ð$Ñ$Ø )ˆ-Ô
õ Ô:ØÝ 'Ø”-Ô+¨Z¸ñ!ô !ðñ ô ð ð ð ð ð ð ñ 6ÐÐ5õ $0Ô#HØ
ñ$ô $Ð ð 
ð 
åÔ0Øðñ ô ð 	Ô6õ ‡k‚kØ
PÐ3MÐ
PÐ
PÐ
Pñô ð õ Ô.Ñ0Ô0€hÝ!Ô2Ø
Ø
$Ø!%ðñ ô €lð €aØ&¨Ò*Ñ*Ø	ˆQ‰ˆØœ×7Ò7Ø”+Ø&Ø&ð 8ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆð ð	àð	ð Ô&ð	ð Ô& qÔ)Ô1ð		ð
 Ô& qÔ)Ô1Ô7ð	ð å�ŠÐ3 qÐ3Ð3Ð3Ñ4Ô4Ð4Ø" aÑ'Ð"Ø%¨Ò*Ð*õ �+Š+ØHñô ð ð õ Ô@Ø˜,ñô ð ð ð ð ð ð ð 	ð
 #ð 	Ø
à$Ô/°Ô2Ô:ÐÝ %¤ØÐ2ð!
ñ !
ô !
Ðð 	× Ò Ð!2Ñ3Ô3Ð3Ø× Ò Ð!6Ñ7Ô7Ð7à)Ð*ˆØ×ÒØ!Ø%Ý'¨Ñ1Ô1ð 	ñ 	
ô 	
ð 	
ð
 +ˆ
ðc '¨Ò*Ñ*ðj Ô ðØ%-Ô%8¸Ô%;Ô%Cðˆ8Ô˜qÔ!Ô)Ð
*Ð
*àð ð
 ×ÒØØ#Ý% hÑ/Ô/ð ñ ô ð ð
 ð]Nð Nð Nð Nñ Nô Nð Nð Nð Nð Nð Nð Nð Nð Nð Nð Nð Nð Nð Nð Nð Nð Nð Nð Nøøøð Nð Nð Nð Nð Nð Ns   ÊN7YÙ
YÙYc           
   ƒ   óæ   ‡ ‡‡K  — t          |¦  «        s9t          dt          j        › dt          j        › dt          |¦  «        › �¦  «        ‚t          j        |¦  «        Šˆˆˆ fd„} |¦   «         S )a  Sends the conversation history with the additional message and yields the model's response in chunks.

    Args:
      message: The message to send to the model.
      config: Optional config to override the default Chat config for this
        request.

    Yields:
      The model's response in chunks.

    Usage:

    .. code-block:: python

      chat = client.aio.chats.create(model='gemini-2.0-flash')
      async for chunk in await chat.send_message_stream('tell me a story'):
        print(chunk.text)
    rz   r{   r|   c            	     ó(  •K  — ‰r‰n‰j         } t          j        | t          j        d¬¦  «        } t          j        | ¦  «        }t          j        | ¦  «        }t          j        | t          ‰j	        j
        dd¦  «        ¬¦  «        }‰}‰j        |gz   }|s5|r3t          j        | |¦  «         |rt          j        d¬¦  «        |_        d}|rØg }d }d}d }	‰j	                             ‰j        ||¬¦  «        ƒ d {V —†2 3 d {V —†}	t#          |	¦  «        sd}|	j        r7|	j        d	         j        r%|                     |	j        d	         j        ¦  «         |	j        r$|	j        d	         j        r|	j        d	         j        }|	W V — Œ‡6 |r|€d}‰                     |||¬
¦  «         d S t          j        |t          j        d¬¦  «        }
t/          j        ¦   «         4 ƒd {V —†}‰j	        j
        j        �rPt          j        |¦  «        �r;|��8g }|j        �r.|j        D �]}t9          |t          j        ¦  «        rì|j        rå|j        s|j         s|j!        s|j"        s|j#        r-| $                    dd i¬¦  «        }|                     |¦  «         |j        D ]‹}t          |dd ¦  «        	 �tK          d¦  «        ‚|j&        �S| '                    tQ          j)        ‰j	        j
        |j&        ¦  «        ¦  «        ƒ d {V —†}|                     |¦  «         Œ}tK          d¦  «        ‚�Œ	|                     |¦  «         �Œ ||_        t          j*        |t          ‰j	        j
        dd¦  «        ¬¦  «        ƒ d {V —†\  }}t          j+        |¦  «        }|rt          j        d¬¦  «        |_        tX           -                    d|› d�¦  «         t          j.        ||d¬¦  «        }d	}g }d }d}|d	k    �rÕ|dz  }‰j	                             ‰j        ||¬¦  «        ƒ d {V —†}|dz  }|d	k    }|rtX           -                    d¦  «         g }d }d}g }d }	|2 3 d {V —†}	t#          |	¦  «        sd}|sd|rb|	j        r[|	j        d	         j        rI|	j        d	         j        j/        r2t          j0        |	|¦  «        ƒ d {V —†}|r| 1                    |¦  «         |	j        r7|	j        d	         j        r%|                     |	j        d	         j        ¦  «         |	j        r$|	j        d	         j        r|	j        d	         j        }|	W V — Œí6 |rn„|r|sntX           -                    d|› d�¦  «         t          j2        d|¬¦  «        }| 1                    |¦  «         |                     |¦  «         ‰                     |||¬
¦  «         |}|d	k    �°Õ‰                     ||tg          |o|o|d u¦  «        ¬
¦  «         d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S )NrA   rB   r½   Fr¾   Tr€   r~   r   r   r„   rÁ   rÂ   rÄ   rÅ   rÆ   r‚   rƒ   rÇ   r	   r‡   r…   r†   r,   rS   )4rG   r
   rE   r   rF   rˆ   r�   rŒ   rÉ   rs   rÊ   rK   r‘   r’   r“   r¤   rD   r)   r(   r   r1   r¥   rV   rÍ   rÎ   r½   rÏ   r‰   rH   rÐ   rÁ   rÑ   rÒ   rÓ   rÔ   rÕ   rÌ   r0   rÖ   r×   r   rØ   rÙ   r”   r•   r–   r—   r   rÚ   r2   r   r`   )r™   rš   r§   r›   rP   rœ   rU   r¥   r9   r¦   Úparse_configrÛ   rÜ   rÝ   rÞ   rß   rà   rá   râ   r�   rž   r6   rQ   r¨   r©   rŸ   rª   r¡   r>   Úinput_contentrL   s                               €€€r    Úasync_generatorz6AsyncChat.send_message_stream.<locals>.async_generator~  sf	  øè è € Ø &Ð8�f�f¨D¬L€mÝ"Ô3Ø
Ý
Ô
%Øðñ ô €mõ
 #Ô=¸mÑLÔL€mÝ Ô3°MÑBÔB€kå
Ô
9ØÝ 'Ø”-Ô+¨Z¸ñ!ô !ðñ ô ð !ð !€jØÔ/°:°,Ñ>ÐØð 
Ð7ð 
ÝÔ7ØÐ5ñ	
ô 	
ð 	
ð ð 	åÔ2Øðñ ô ð Ô
2ð
 ˆà	ð ØˆØˆØˆØˆØ!%¤×!FÒ!FØ”+Ø&Ø ð "Gñ "
ô "
ð 
ð 
ð 
ð 
ð 
ð 
ð 	ð 	ð 	ð 	ð 	ð 	ð 	�%õ
 $ EÑ*Ô*ð ØˆHØÔð @ %Ô"2°1Ô"5Ô"=ð @Ø×"Ò" 5Ô#3°AÔ#6Ô#>Ñ?Ô?Ð?ØÔð > %Ô"2°1Ô"5Ô"Cð >Ø!Ô,¨QÔ/Ô=ˆMØˆ+ˆ+ˆ+ˆ+ˆ+ð
ð ð 	 -Ð"7Øˆ(à×ÒØ!Ø(Øð 	ñ 	
ô 	
ð 	
ð
 	ˆõ "Ô2Ø
Ý
Ô
%Øðñ ô €lõ
 Ô*Ñ,Ô,ð b
ð b
ð b
ð b
ð b
ð b
ð b
°ð ŒMÔ%Ô.ñ-	,åÔ;¸MÑJÔJñ-	,ð Ñ)à!#ˆ)ØÔ ñ ',Ø%Ô+ð %'ñ %'�Ý˜D¥%¤*Ñ-Ô-ð $'°$Ô2Bð $'ð Ô.ð.àÔ)ð.ð ”~ð.ð Ô3ð	.ð
 Ô*ð.ð #Ÿošo°mÀTÐ5J˜oÑKÔK�)Ø×"Ò" 9Ñ-Ô-Ð-à"Ô.ð ð �Få˜fÐ&AÀ4ÑHÔHØ!ð"õ %ð;ñô ð ð ”[Ð,Ø$)×$=Ò$=Ý"Ô>Ø œMÔ5°v´{ñô ñ%ô %ð ð ð ð ð ð �Gð
 ×$Ò$ WÑ-Ô-Ð-Ð-å$ØLñô ð ñ)ð0 × Ò  Ñ&Ô&Ð&Ñ&Ø"+ˆMÔõ Ô<ØÝ")Ø”MÔ-¨z¸5ñ#ô #ðñ ô ð ð ð ð ð ð ñ 	8ÐÐ7õ &2Ô%JØñ&
ô &
Ð"ð ð 	åÔ2Øðñ ô ð Ô
8õ 	�Šð.Ø*ð.ð .ð .ñ	
ô 	
ð 	
õ
 $Ô4ØØ&Ø#'ð
ñ 
ô 
ˆð ˆØ,.ˆØˆØˆà(¨1Ò,Ñ,Ø
ˆq‰&ˆ!Ø"&¤-×"GÒ"GØ”KØ(Ø(ð #Hñ #ô #ð ð ð ð ð ð ˆ/ð
 %¨Ñ
)Ð
$ð %?À!Ò$CÐ
!Ø$ð Ý�KŠKØJñô ð ð ˆ,Øˆ-Øˆ(Ø "Ð
Øˆ%à,ð ð ð ð ð ð ð �EÝ% eÑ,Ô,ð Øˆhð ,ðFà ðFð Ô$ðFð Ô$ QÔ'Ô/ð	Fð
 Ô$ QÔ'Ô/Ô5ðFõ %ÔFØ˜\ñô ð ð ð ð ð ð ð (ð
 +ð FØ#×*Ò*Ð+DÑEÔEÐEàÔð ? EÔ$4°QÔ$7Ô$?ð ?Ø×!Ò! %Ô"2°1Ô"5Ô"=Ñ>Ô>Ð>ØÔð @ EÔ$4°QÔ$7Ô$Eð @Ø#Ô.¨qÔ1Ô?ˆmØˆKˆKˆKˆKˆKð/ -ð2 %ð ØØð Ð%8ð Øå
�+Š+Ð5¨Ð5Ð5Ð5Ñ
6Ô
6Ð
6å"'¤-ØÐ!4ð#ñ #ô #Ð
ð ×
"Ò
" <Ñ
0Ô
0Ð
0Ø
×
"Ò
"Ð#8Ñ
9Ô
9Ð
9à
×
Ò
Ø#Ø'Øð ñ ô ð ð
 -ˆ*ðG )¨1Ò,Ñ,ðJ 	×ÒØ!Ø%ÝØð .Ø ð.à!¨Ð-ñô ð 	ñ 	
ô 	
ð 	
ðub
ð b
ð b
ñ b
ô b
ð b
ð b
ð b
ð b
ð b
ð b
ð b
ð b
ð b
ð b
ð b
ð b
ð b
ð b
ð b
ð b
ð b
ð b
ð b
øøøð b
ð b
ð b
ð b
ð b
ð b
s&   Ã=FÇI/XÑT;ÑFXØ
XØX)re   r0   r   ri   r   rj   r�   rŽ   )rL   rx   r>   rç   ræ   s   ` ` @r    r«   zAsyncChat.send_message_stream_  s¯   øøøè è € õ0 ˜Ñ!Ô!ð Ýð9µ´ð 9ð 9ÝÔ!ð9ð 9Ý)-¨g©¬ð9ð 9ñô ð õ ”K Ñ(Ô(€Mðc
ð c
ð c
ð c
ð c
ð c
ð c
ðJ ˆ?ÑÔÐr"   rd   )rZ   r[   r\   r]   r   r^   r   r   r_   r   rO   r   r   r   r¢   r   r«   r¬   r­   s   @r    rº   rº   V  s>  ø€ € € € € ØÐð 7;ðð ð ð ðð ð	ð
 Ð2Ô3ðð �MÔ"ðð ð ð ð ð ð$ 7;ðuð uà�T˜-Ô(¨-Ð7Ô8ðuð Ð2Ô3ðuð ð	uð uð uð uðt 7;ðDð Dà�T˜-Ô(¨-Ð7Ô8ðDð Ð2Ô3ðDð Ð,Ô-ð	Dð Dð Dð Dð Dð Dð Dð Dr"   rº   c            	       ób   — e Zd ZdZdefd„Zdddœdedee         dee	e
                  d	efd
„ZdS )Ú
AsyncChatsz+A util class to create async chat sessions.ro   c                 ó   — || _         d S rd   r±   r²   s     r    rO   zAsyncChats.__init__i  r³   r"   Nr´   r-   r>   r?   r   c                ó:   — t          | j        |||r|ng ¬¦  «        S r¶   )rº   rs   r·   s       r    r¸   zAsyncChats.createl  s2   € õ" Ø”ØØØ"Ð*��¨ð	ñ ô ð r"   )rZ   r[   r\   r]   r   rO   r^   r   r   r_   r   rº   r¸   ra   r"   r    ré   ré   f  s“   € € € € € Ø3Ð3ð˜kð ð ð ð ð 7;Ø/3ðð ð ð ðð Ð2Ô3ð	ð
 ˜˜]Ô+Ô,ðð ðð ð ð ð ð r"   ré   )-Úcollections.abcr   rÍ   ÚloggingÚsysÚtypingr   r   r   r   r   Ú r
   r   r   r�   r   r   Úmodelsr   r   r   r   r   r   r   r   Úversion_infor   Útyping_extensionsÚ	getLoggerr•   r`   r!   r_   r%   r)   r:   r<   ÚContentTypere   rn   r¯   rº   ré   ra   r"   r    ú<module>rö      s  ðð  %Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ø €€€Ø 
€
€
€
Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø tÐ tÐ tÐ tÐ tÐ tÐ tÐ tÐ tÐ tÐ tÐ tÐ tÐ tÐ tÐ tð Ô�wÒÐØÐÐÐÐÐÐà)Ð)Ð)Ð)Ð)Ð)à	ˆÔ	Ð/Ñ	0Ô	0€ð˜wð ¨4ð ð ð ð ð  g¤ð °4ð ð ð ð ð;Ð!8ð ;¸Tð ;ð ;ð ;ð ;ð,Ø œ=ð,à	ˆ'„]ð,ð ,ð ,ð ,ð^G)ð G)ð G)ð G)ð G)ñ G)ô G)ð G)ðTØ�D˜Ô'¨Ð6Ô7ðàˆqŒ}Ôðð ð ð ð"ið ið ið ið iˆ9ñ iô ið iðXð ð ð ð ñ ô ð ð>Mð Mð Mð Mð M�	ñ Mô Mð Mð`ð ð ð ð ñ ô ð ð ð r"   