§
    ìŽ’j-B  ã                   ó2  — d dl 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	m
Z
mZmZ d dlZddlmZ ddlmZ ej        dk    rej        Znej        Zg d¢Zeej        j        eej        j        eej        j        eej        j        eej        j        e ej        j!        dej        j"        iZ#de j$        d	ed
ee%e&e%         f         ddfd„Z'de j$        de eef         dede j$        fd„Z(de eef         de eef         fd„Z)de j$        j*        defd„Z+dede j$        j*        defd„Z,de
d         de j$        d	edej-        fd„Z.dej-        deee                  fd„Z/de eef         deee                  fd„Z0dedef         deej1                 dej2        fd„Z3dS ) é    N)Ú_GenericAliasÚAnyÚCallableÚget_argsÚ
get_originÚLiteralÚOptionalÚUnioné   )Ú_extra_utils)Útypes)é   é
   )
Ú_py_builtin_type_to_schema_typeÚ_raise_for_unsupported_paramÚ&_handle_params_as_deferred_annotationsÚ0_add_unevaluated_items_to_fixed_len_tuple_schemaÚ!_is_builtin_primitive_or_compoundÚ_is_default_value_compatibleÚ_parse_schema_from_parameterÚ_get_required_fieldsÚ%_get_required_fields_from_json_schemaÚ&parse_function_declaration_json_schemaÚparamÚ	func_nameÚ	exceptionÚreturnc           	      ó6   — t          d| › d|› d|› d�¦  «        |‚)NzFailed to parse the parameter ú of function z¯ for automatic function calling.Automatic function calling works best with simpler function signature schema, consider manually parsing your function declaration for function ú.)Ú
ValueError)r   r   r   s      ú[C:\Projects\DSCons\.venv\Lib\site-packages\google\genai\_automatic_function_calling_util.pyr   r   :   sL   € õ 	ð9 uð 9ð 9¸9ð 9ð 9ð -6ð9ð 9ð 9ñ	ô 	ð
 
ðó    Úannotation_under_futureÚnamec                 ór   — t          | j        t          ¦  «        r|                      ||         ¬¦  «        } | S )z7Catches the case when type hints are stored as strings.©Ú
annotation)Ú
isinstancer(   ÚstrÚreplace)r   r$   r%   s      r"   r   r   E   s6   € å�Ô ¥#Ñ&Ô&ð DØ�MŠMÐ%<¸TÔ%BˆMÑCÔC€EØ	€,r#   Újson_schemac                 óÔ   — |                       d¦  «        rR|                       d¦  «        r=t          | d         ¦  «        | d         k    r|                       d¦  «        dk    rd| d<   | S )NÚmaxItemsÚprefixItemsÚtypeÚarrayFÚunevaluatedItems)ÚgetÚlen)r,   s    r"   r   r   L   su   € ð ‡o‚o�jÑ!Ô!ð,ð �/Š/˜-Ñ
(Ô
(ð,õ �+˜mÔ,Ñ-Ô-°¸ZÔ1HÒHÐHà
�/Š/˜&Ñ
!Ô
! WÒ
,Ð
,à&+€KÐ"Ñ#Ø	Ðr#   r(   c                 ó8   — | t                                ¦   «         v S ©N)r   Úkeysr'   s    r"   r   r   [   s   € ð 
Õ6×;Ò;Ñ=Ô=Ð	=Ð=r#   Údefault_valuec                 óD  ‡ ‡— t          ‰¦  «        rt          ‰ ‰¦  «        S t          ‰t          ¦  «        s/t          ‰t          j        ¦  «        st          ‰t
          ¦  «        rºt          ‰¦  «        }|t          t
          fv r(t          ˆ fd„t          ‰¦  «        D ¦   «         ¦  «        S |t          u rt          ‰ t          ¦  «        S |t          u r2t          ‰ t          ¦  «        sdS t          ˆfd„‰ D ¦   «         ¦  «        S |t          u r‰ t          ‰¦  «        v S dS )Nc              3   ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r6   ©r   )Ú.0Úargr8   s     €r"   ú	<genexpr>z/_is_default_value_compatible.<locals>.<genexpr>o   sA   øè è € ð ð àõ ' }°cÑ
:Ô
:ðð ð ð ð ð r#   Fc              3   ój   •‡K  — | ],Št          ˆfd „t          ‰¦  «        D ¦   «         ¦  «        V — Œ-dS )c              3   ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r6   r;   )r<   r=   Úitems     €r"   r>   z9_is_default_value_compatible.<locals>.<genexpr>.<genexpr>€   sA   øè è € ð ð àõ +¨4°Ñ5Ô5ðð ð ð ð ð r#   N)Úanyr   )r<   rA   r(   s    @€r"   r>   z/_is_default_value_compatible.<locals>.<genexpr>   sr   øøè è € ð ð ð
 õ	 ð ð ð ð å! *Ñ-Ô-ðñ ô ñ ô ðð ð ð ð ð r#   )r   r)   r   Úbuiltin_typesÚGenericAliasÚVersionedUnionTyper   r
   rB   r   ÚdictÚlistÚallr   )r8   r(   Úorigins   `` r"   r   r   a   sb  øø€ õ ' zÑ2Ô2ð 1Ý�m ZÑ0Ô0Ð0õ ��]Ñ+Ô+ð 3å	�J¥Ô :Ñ	;Ô	;ð 3õ 
�JÕ 2Ñ	3Ô	3ð 3õ
 ˜
Ñ#Ô#€FØ•%Õ+Ð,Ð,Ð,Ýð ð ð ð å˜jÑ)Ô)ðñ ô ñ ô ð ð
 •€~€~Ý˜¥tÑ,Ô,Ð,à•€~€~Ý˜¥tÑ,Ô,ð Øˆuõ ð ð ð ð ð
 $ðñ ô ñ ô ð ð •ÐÐØ�h zÑ2Ô2Ð2Ð2ð 
ˆr#   Ú
api_option)Ú
ENTERPRISEÚ
GEMINI_APIÚ	VERTEX_AIc           	      ó*  — t          j        ¦   «         }d|j        › d|› d|› d|j        › d�	}t	          |j        ¦  «        rf|j        t
          j        j        ur5t          |j        |j        ¦  «        st          |¦  «        ‚|j        |_        t          |j                 |_        |S t          |j        t          ¦  «        �ržt          d„ t          |j        ¦  «        D ¦   «         ¦  «        �rrt          t                    |_        g |_        t%          ¦   «         }t          |j        ¦  «        D ]¥}|j        dk    rd|_        Œt+          | t          j        d	t
          j        j        |¬
¦  «        |¦  «        }|                     d¬¦  «        |vrC|j                             |¦  «         |                     |                     d¬¦  «        ¦  «         Œ¦t5          |j        ¦  «        dk    r|j        d         j        |_        d|_        |j        t
          j        j        ur<|j        �5t          |j        |j        ¦  «        st          |¦  «        ‚|j        |_        |S t          |j        t6          ¦  «        s t          |j        t8          j        ¦  «        �rt=          |j        ¦  «        }t          |j        ¦  «        }	|t           u rft          t                    |_        |j        t
          j        j        ur5t          |j        |j        ¦  «        st          |¦  «        ‚|j        |_        |S |t>          u r«t          d„ |	D ¦   «         ¦  «        st          d|j        › d�¦  «        ‚t          t@                   |_        tC          |	¦  «        |_"        |j        t
          j        j        ur5t          |j        |j        ¦  «        st          |¦  «        ‚|j        |_        |S |tB          u r¦t          tB                   |_        t+          | t          j        d	t
          j        j        |	d         ¬
¦  «        |¦  «        |_#        |j        t
          j        j        ur5t          |j        |j        ¦  «        st          |¦  «        ‚|j        |_        |S |tH          u �rg |_        t          t                    |_        t%          ¦   «         }|	D �]E}t          |¦  «        t          d¦  «        u stK          |d¦  «        r|j        dk    rd|_        ŒDt+          | t          j        d	t
          j        j        |¬
¦  «        |¦  «        }t5          |j        j&        ¦  «        dk    rTt          d¦  «        |j        j&        v r9|j        j&        D ],}
tK          |
d¦  «        r|
j'        tB          u r|j#        |_#        Œ-|                     d¬¦  «        |vrC|j                             |¦  «         |                     |                     d¬¦  «        ¦  «         �ŒGt5          |j        ¦  «        dk    r|j        d         j        |_        d|_        |j        �M|j        t
          j        j        ur5t          |j        |j        ¦  «        st          |¦  «        ‚|j        |_        |S tQ          j)        |j        ¦  «        rÅ|j        t
          j        j        ur|j        �|j        |_        t          t                    |_        i |_*        |j        j+         #                    ¦   «         D ]G\  }}t+          | t          j        |t
          j        j        |j        ¬
¦  «        |¦  «        |j*        |<   ŒHtY          |¦  «        |_-        |S t]          ||t          ¦  «         dS )zSparse schema from parameter.

  from the simplest case to the most complex case.
  zDefault value z of parameter r   z1 is not compatible with the parameter annotation r    c              3   óV   K  — | ]$}t          |¦  «        p|t          d ¦  «        u V — Œ%d S r6   )r   r0   ©r<   r=   s     r"   r>   z/_parse_schema_from_parameter.<locals>.<genexpr>¨   sN   è è € ð ð àõ -¨SÑ1Ô1ÐF°S½DÀ¹J¼JÐ5Fðð ð ð ð ð r#   ÚNoneTypeTrA   r'   )Úexclude_noner   r   Nc              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S r6   )r)   r*   rP   s     r"   r>   z/_parse_schema_from_parameter.<locals>.<genexpr>Ù   s,   è è € Ð6Ð6¨#•˜C¥Ñ%Ô%Ð6Ð6Ð6Ð6Ð6Ð6r#   zLiteral type z must be a list of strings.Ú__name__é   Ú
__origin__)/r   ÚSchemaÚdefaultr(   r   ÚinspectÚ	ParameterÚemptyr   r!   r   r0   r)   rE   rH   r   rF   Úany_ofÚsetrT   Únullabler   ÚPOSITIONAL_OR_KEYWORDÚmodel_dump_jsonÚappendÚaddr4   r   rC   rD   r   r   r*   rG   ÚenumÚitemsr
   ÚhasattrÚ__args__rV   r   Úis_annotation_pydantic_modelÚ
propertiesÚmodel_fieldsr   Úrequiredr   )rJ   r   r   ÚschemaÚdefault_value_error_msgÚunique_typesr=   Úschema_in_any_ofrI   ÚargsÚoptional_argÚ
field_nameÚ
field_infos                r"   r   r   Ž   sn  € õ Œ<‰>Œ>€&ð�u”}ð ð °Eð ð Ø
ðð à
Ô
ðð ð ð õ
 ' uÔ'7Ñ8Ô8ð Ø„}�GÔ-Ô3Ð3Ð3Ý)¨%¬-¸Ô9IÑJÔJð 2ÝÐ0Ñ1Ô1Ð1Ø”}€f„nÝ1°%Ô2BÔC€F„KØ€Må�Ô!Õ#5Ñ6Ô6ñ'õ ð ð å˜eÔ.Ñ/Ô/ðñ ô ñ ô ñ	'õ 2µ$Ô7€F„KØ€F„MÝ‘5”5€LÝ˜Ô(Ñ)Ô)ð Nð NˆØ	Œ˜Ò	#Ð	#ØˆŒØÝ5Ø
Ý
Ô
Ø•gÔ'Ô=È#ðñ ô ð ñô Ðð ×
*Ò
*¸Ð
*Ñ
=Ô
=Øðð ð 	Œ×ÒÐ-Ñ.Ô.Ð.Ø×ÒÐ)×9Ò9ÀtÐ9ÑLÔLÑMÔMÐMøÝ
ˆ6Œ=ÑÔ˜QÒÐØ”M !Ô$Ô)€f„kØ€f„màŒ�WÔ.Ô4Ð4Ð4ØŒMÐ%å)¨%¬-¸Ô9IÑJÔJð 2ÝÐ0Ñ1Ô1Ð1Ø”}€f„nØ€MÝ�Ô ¥-Ñ0Ô0ð XµJØÔ�Ô2ñ5ô 5ñ Xõ ˜Ô(Ñ)Ô)€FÝ�EÔ$Ñ%Ô%€DØ•€~€~Ý3µDÔ9€f„kØ	Œ�gÔ/Ô5Ð	5Ð	5Ý+¨E¬M¸5Ô;KÑLÔLð 	4ÝÐ2Ñ3Ô3Ð
3ØœˆŒØ€mØ•ÐÐÝÐ6Ð6°Ð6Ñ6Ô6Ñ6Ô6ð 
ÝØI˜EÔ,ÐIÐIÐIñ
ô 
ð 	
õ 4µCÔ8€f„kÝ˜‘J”J€f„kØ	Œ�gÔ/Ô5Ð	5Ð	5Ý+¨E¬M¸5Ô;KÑLÔLð 	4ÝÐ2Ñ3Ô3Ð
3ØœˆŒØ€mØ•€~€~Ý3µDÔ9€f„kÝ1Ø
Ý
Ô
ØÝÔÔ5Ø˜aœðñ ô ð
 ñô €f„lð 
Œ�gÔ/Ô5Ð	5Ð	5Ý+¨E¬M¸5Ô;KÑLÔLð 	4ÝÐ2Ñ3Ô3Ð
3ØœˆŒØ€mØ•€�Ø€f„mÝ3µDÔ9€f„kÝ‘U”U€lØð !Pñ !Pˆ#õ �‰9Œ9�˜T™
œ
Ð"Ð"Ý�C˜Ñ$Ô$ð #Ø),¬¸Ò)CÐ)Cà ˆ&Œ/Ø
Ý7ØÝÔØÝÔ!Ô7Øðñ ô ð
 ñ
ô 
Ðõ �Ô Ô)Ñ*Ô*¨aÒ/Ð/Ý�T‘
”
˜eÔ.Ô7Ð7Ð7à#Ô.Ô7ð 4ð 4ˆlå˜ lÑ3Ô3ð4à Ô+­tÐ3Ð3ð .Ô3ˆfŒløà×,Ò,¸$Ð,Ñ?Ô?Øð ð  ð Œ-×
Ò
Ð/Ñ
0Ô
0Ð
0Ø
×
Ò
Ð+×;Ò;ÈÐ;ÑNÔNÑ
OÔ
OÐ
OùÝ	ˆVŒ]Ñ	Ô	˜qÒ	 Ð	 Ø”m AÔ&Ô+ˆŒØˆŒà
Œ-Ð
#ØŒm¥7Ô#4Ô#:Ð:Ð:å+¨E¬M¸5Ô;KÑLÔLð 	4ÝÐ2Ñ3Ô3Ð
3ØœˆŒØ€mõ Ô/°Ô0@ÑAÔAðð
 	Œ�WÔ.Ô4Ð4Ð4ØŒMÐ%à”}€f„nÝ1µ$Ô7€F„KØ€FÔØ"'Ô"2Ô"?×"EÒ"EÑ"GÔ"Gð 	ð 	Ñˆ
�JÝ&BØ
Ý
Ô
ØÝÔÔ5Ø#Ô.ðñ ô ð
 ñ'ô '€fÔ˜
Ñ#Ð#õ +¨6Ñ2Ô2€F„OØ€MÝ˜u iµÑ<Ô<Ð<Ð<Ð<r#   rk   c                 óZ   — | j         sd S d„ | j                              ¦   «         D ¦   «         S )Nc                 ó4   — g | ]\  }}|j         s	|j        ­|‘ŒS r6   )r^   rX   )r<   rq   Úfield_schemas      r"   ú
<listcomp>z(_get_required_fields.<locals>.<listcomp>C  s<   € ð 
ð 
ð 
á
"ˆ*�lØÔ"ð
ð (4Ô';Ð'Cð à'CÐ'CÐ'Cr#   )rh   rd   )rk   s    r"   r   r   @  sB   € Ø	Ô	ð Øˆ4ð
ð 
à&,Ô&7×&=Ò&=Ñ&?Ô&?ð
ñ 
ô 
ð r#   c                 óô   — |                       di ¦  «        }|sd S g }|                     ¦   «         D ]F\  }}|sŒd|v r|d         s|                     |¦  «         d|vr||vr|                     |¦  «         ŒG|S )Nrh   r^   rX   )r3   rd   ra   )r,   rh   Úrequired_fieldsrq   ru   s        r"   r   r   J  s«   € Ø�Š˜|¨RÑ0Ô0€*Ø	ð Øˆ4Ø€/Ø",×"2Ò"2Ñ"4Ô"4ð )ð )Ñ€j�,Øð ØØ�\Ð!Ð!¨,°zÔ*BÐ!Ø×Ò˜ZÑ(Ô(Ð(Ø˜Ð$Ð$¨¸?Ð)JÐ)JØ×Ò˜ZÑ(Ô(Ð(øØ	Ðr#   Úcallable.Úbehaviorc                 ó6  — t          j        | ¦  «        }i }i }t          j        | ¦  «        j                             ¦   «         D �]�\  }}|j        t          j        j        t          j        j	        t          j        j
        fv �rO	 t          |||¦  «        }i }t          j        |j        ¦  «        r|j                             ¦   «         }nQt!          j        |j        t!          j        d¬¦  «        ¬¦  «        }|                     ¦   «         }t)          |¦  «        }d|v r(|                     |                     d¦  «        ¦  «         d|v r(|                     |                     d¦  «        ¦  «         d|vr	d|v rd|d<   |j        t          j        ur
|j        |d	<   |||<   �Œa# t2          $ r!}	t5          || j        |	¦  «         Y d
}	~	�Œ‡d
}	~	ww xY w�Œ‘t9          j        | j        | j        rt          j        | j        ¦  «        nd|¬¦  «        }
|�r…d|dœ|
_         |r
||
j         d<   tC          |
j         ¦  «        |
j         d<   t          j        | ¦  «        j"        }|t          j        j#        u r|
S t          j        dt          j        j        |¬¦  «        }tI          |j        tJ          ¦  «        r| &                    |d         ¬¦  «        }i }	 t          j        |j        ¦  «        r|j                             ¦   «         }nBt!          j        |j        t!          j        d¬¦  «        ¬¦  «        }|                     ¦   «         }t)          |¦  «        }d|vr	d|v rd|d<   n-# t2          $ r }	t5          || j        |	¦  «         Y d
}	~	nd
}	~	ww xY w||
_'        |
S )z7Parse function declaration JSON schema from a callable.T)Úarbitrary_types_allowed)Úconfigz$defsÚdefinitionsr0   ÚanyOfÚobjectrX   NÚ )r%   Údescriptionrz   )r0   rh   rj   Úreturn_valuer'   r   )(ÚtypingÚget_type_hintsrY   Ú	signatureÚ
parametersrd   ÚkindrZ   r_   ÚKEYWORD_ONLYÚPOSITIONAL_ONLYr   r   rg   r(   Úmodel_json_schemaÚpydanticÚTypeAdapterÚ
ConfigDictr,   r   ÚupdateÚpoprX   Ú_emptyÚ	Exceptionr   rT   r   ÚFunctionDeclarationÚ__doc__ÚcleandocÚparameters_json_schemar   Úreturn_annotationr[   r)   r*   r+   Úresponse_json_schema)ry   rz   r$   Ú!parameters_properties_json_schemaÚ	root_defsr%   r   Újson_schema_dictÚparam_schema_adapterÚeÚdeclarationr—   rƒ   r˜   Úreturn_value_schema_adapters                  r"   r   r   Y  sm  € õ
 #Ô1°(Ñ;Ô;ÐØ&(Ð#Ø€)åÔ& xÑ0Ô0Ô;×AÒAÑCÔCð &
ñ &
�k€dˆEØ„zÝÔÔ/ÝÔÔ&ÝÔÔ)ðð ñ ð
 
Ý6ØÐ*¨Dñ
ô 
ˆð ÐÝÔ4°UÔ5EÑFÔFð 
	Ø"Ô-×?Ò?ÑAÔAÐ
Ð
å!)Ô!5ØÔÝÔ(ÀÐFÑFÔFð"ñ "ô "Ð
ð 2×=Ò=Ñ?Ô?Ð
ÝMØñô Ð
ð
 Ð&Ð&Ð&Ø
×
Ò
Ð+×/Ò/°Ñ8Ô8Ñ
9Ô
9Ð
9ØÐ,Ð,Ð,Ø
×
Ò
Ð+×/Ò/°Ñ>Ô>Ñ
?Ô
?Ð
?ð Ð)Ð)Ð)¨gÐ9IÐ.IÐ.IØ%-Ð
˜6Ñ
"ØŒ=¥¤Ð.Ð.Ø(-¬Ð
˜9Ñ
%Ø2BÐ)¨$Ñ/Ñ/øÝð 
ð 
ð 
Ý$Ø�8Ô$ añ	
ô 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñ 	
øøøøð
øøøñEõN Ô)ØÔà	Ô	ð•'Ô" 8Ô#3Ñ4Ô4Ð4àØðñ ô €+ð 'ñ /<àØ7ð*ð *€KÔ&ð ð >Ø4=€kÔ(¨Ñ1å-ØÔ.ñ	
ô 	
ð Ô& zÑ2õ
  Ô)¨(Ñ3Ô3ÔEÐØ�GÔ-Ô3Ð3Ð3ØÐåÔ$ØÝÔÔ/Ø$ðñ ô €Lõ �,Ô)­3Ñ/Ô/ð Ø!×)Ò)Ø,¨XÔ6ð *ñ ô €lð ,.ÐðÝ	Ô	2°<Ô3JÑ	KÔ	Kð IØ+Ô6×HÒHÑJÔJÐÐå&.Ô&:ØÔ#ÝÔ&¸tÐDÑDÔDð'
ñ '
ô '
Ð#ð  ;×FÒFÑHÔHÐÝMØ
ñô Ðð
 
Ð+Ð	+Ð	+°Ð;OÐ0OÐ0OØ'/Ð˜VÑ$øøÝð ð ð Ý"Ø
˜Ô)¨1ñô ð ð ð ð ð ð øøøøðøøøð (<€KÔ$Ø	Ðs2   ÂDF%Æ%
GÆ/GÇGËBM% Í%
NÍ/N
Î
N)4rY   Úsysr   rC   r„   r   r   r   r   r   r   r	   r
   rŒ   r�   r   Úversion_infoÚ	UnionTyperE   Ú_UnionGenericAliasÚ__all__r*   ÚTypeÚSTRINGÚintÚINTEGERÚfloatÚNUMBERÚboolÚBOOLEANrG   ÚARRAYrF   ÚOBJECTÚNULLr   rZ   r’   r0   r   r   r   r(   r   r   rW   r   r   r   ÚBehaviorr“   r   © r#   r"   ú<module>r²      sB  ðð  €€€Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _à €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð Ô�wÒÐØ$Ô.ÐÐàÔ0Ððð ð €ð ˆŒÔ	ØˆŒÔ	Ø	ˆ5Œ:ÔØˆ%Œ*Ô
Øˆ%Œ*Ô
Øˆ%Œ*Ô
Øˆ%Œ*Œ/ð#Ð ðØÔðØ),ðØ9>¸yÈ$ÈyÌ/Ð?YÔ9Zðà	ðð ð ð ð°'Ô2Cð Ð^bÐcfÐhkÐckÔ^lð Ðtwð ð  }Dô  }Nð ð ð ð ðØ�c˜3�h”ðà	ˆ#ˆsˆ(„^ðð ð ð ð>ØÔ!Ô,ð>à	ð>ð >ð >ð >ð*Øð*Ø$+Ô$5Ô$@ð*à	ð*ð *ð *ð *ðZo=ØÐ?Ô@ðo=àÔðo=ð ðo=ð „\ð	o=ð o=ð o=ð o=ðd ¤ð °(¸4À¼9Ô2Eð ð ð ð ð°t¸CÀ¸H´~ð È(ÐSWÐX[ÔS\ÔJ]ð ð ð ð ðhØ�s˜C�xÔ ðhà�u”~Ô&ðhð 
Ô	"ðhð hð hð hð hð hr#   