
    [Thk-                        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,                  j2                  eej,                  j6                  eej,                  j:                  eej,                  j>                  e ej,                  jB                  dej,                  jD                  iZ#de jH                  d	ed
ee%e&e%   f   ddfdZ'de jH                  de eef   dede jH                  fdZ(de eef   de eef   fdZ)de jH                  jT                  defdZ+dede jH                  jT                  defdZ,de
d   de jH                  d	edejZ                  fdZ.dejZ                  deee      fdZ/y)    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_annotations0_add_unevaluated_items_to_fixed_len_tuple_schema!_is_builtin_primitive_or_compound_is_default_value_compatible_parse_schema_from_parameter_get_required_fieldsparam	func_name	exceptionreturnc           	      .    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      r/home/www/backend.miabetepe.com/venv/lib/python3.12/site-packages/google/genai/_automatic_function_calling_util.pyr   r   8   s7     	&ug]9+ F, -6;a9	
 
    annotation_under_futurenamec                 d    t        | j                  t              r| j                  ||         } | S )z7Catches the case when type hints are stored as strings.
annotation)
isinstancer&   strreplace)r   r"   r#   s      r    r   r   C   s-      #&MM%<T%BMCE	,r!   json_schemac                     | j                  d      r>| j                  d      r-t        | d         | d   k(  r| j                  d      dk(  rd| d<   | S )NmaxItemsprefixItemstypearrayFunevaluatedItems)getlen)r*   s    r    r   r   J   sU     ooj!
//-
(+m,-Z1HH
//&
!W
,&+K"#	r!   r&   c                 .    | t         j                         v S N)r   keysr%   s    r    r   r   Y   s     
6;;=	==r!   default_valuec                     t              rt               S t        t              s*t        t        j                        st        t
              rt              }|t        t
        fv rt         fdt              D              S |t        u rt         t              S |t        u r%t         t              syt        fd D              S |t        u r t              v S y)Nc              3   6   K   | ]  }t        |        y wr4   r   ).0argr6   s     r    	<genexpr>z/_is_default_value_compatible.<locals>.<genexpr>m   s        '}c
:   Fc              3   Z   K   | ]!  t        fd t              D               # yw)c              3   6   K   | ]  }t        |        y wr4   r9   )r:   r;   items     r    r<   z9_is_default_value_compatible.<locals>.<genexpr>.<genexpr>~   s        +45r=   N)anyr   )r:   r@   r&   s    @r    r<   z/_is_default_value_compatible.<locals>.<genexpr>}   s2      
 	  !*- s   '+)r   r'   r   builtin_typesGenericAliasVersionedUnionTyper   r
   rA   r   dictlistallr   )r6   r&   origins   `` r    r   r   _   s     'z2mZ00 ]+	J : :	;	J 2	3
#F%+,, j)  
 ~t,,~t,  
 $   hz222 
r!   
api_option)	VERTEX_AI
GEMINI_APIc           	         t        j                         }d|j                   d| d| d|j                   d	}t	        |j                        r||j                  t
        j                  j                  ur<t        |j                  |j                        st        |      |j                  |_        t        |j                     |_        |S t        |j                  t              rt        d t        |j                        D              rt        t            |_        g |_        t%               }t        |j                        D ]  }|j&                  dk(  rd|_        t+        | t        j                  d	t
        j                  j,                  |
      |      }|j/                  d      |vsj|j"                  j1                  |       |j3                  |j/                  d              t5        |j"                        dk(  r%|j"                  d   j                  |_        d|_        |j                  t
        j                  j                  urH|j                  <t        |j                  |j                        st        |      |j                  |_        |S t        |j                  t6              s%t        |j                  t8        j:                        rYt=        |j                        }t        |j                        }	|t         u rvt        t            |_        |j                  t
        j                  j                  ur<t        |j                  |j                        st        |      |j                  |_        |S |t>        u rt        d |	D              st        d|j                   d      t        t@           |_        tC        |	      |_"        |j                  t
        j                  j                  ur<t        |j                  |j                        st        |      |j                  |_        |S |tB        u rt        tB           |_        t+        | t        j                  d	t
        j                  j,                  |	d   
      |      |_#        |j                  t
        j                  j                  ur<t        |j                  |j                        st        |      |j                  |_        |S |tH        u r.g |_        t        t            |_        t%               }|	D ]X  }t        |      t        d      u stK        |d      r|j&                  dk(  rd|_        =t+        | t        j                  d	t
        j                  j,                  |
      |      }t5        |j                  jL                        dk(  rmt        d      |j                  jL                  v rL|j                  jL                  D ]3  }
tK        |
d      s|
jN                  tB        u s#|jF                  |_#        5 |j/                  d      |vs|j"                  j1                  |       |j3                  |j/                  d             [ t5        |j"                        dk(  r%|j"                  d   j                  |_        d|_        |j                  b|j                  t
        j                  j                  ur<t        |j                  |j                        st        |      |j                  |_        |S tQ        jR                  |j                        r|j                  t
        j                  j                  ur|j                  |j                  |_        t        t            |_        i |_*        |j                  jV                  jG                         D ]W  \  }}t+        | t        j                  |t
        j                  j,                  |j                  
      |      |jT                  |<   Y tY        |      |_-        |S t]        ||t               y)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   P   K   | ]  }t        |      xs |t        d       u    y wr4   )r   r.   r:   r;   s     r    r<   z/_parse_schema_from_parameter.<locals>.<genexpr>   s.       -S1FSDJ5FFs   $&NoneTypeTr@   r%   )exclude_noner   r   Nc              3   <   K   | ]  }t        |t                y wr4   )r'   r(   rN   s     r    r<   z/_parse_schema_from_parameter.<locals>.<genexpr>   s     6#C%6s   zLiteral type z must be a list of strings.__name__   
__origin__)/r   Schemadefaultr&   r   inspect	Parameteremptyr   r   r   r.   r'   rD   rG   r   rE   any_ofsetrR   nullabler   POSITIONAL_OR_KEYWORDmodel_dump_jsonappendaddr2   r   rB   rC   r   r   r(   rF   enumitemsr
   hasattr__args__rT   r   is_annotation_pydantic_model
propertiesmodel_fieldsr   requiredr   )rI   r   r   schemadefault_value_error_msgunique_typesr;   schema_in_any_ofrH   argsoptional_arg
field_name
field_infos                r    r   r      s    <<>&u}}o^E7 ;

 



	1 
 'u'7'78}}G--333)%--9I9IJ011}}fn1%2B2BCFKM!!#56  e../ 
 2$7FKFM5L(() N		#5



g''==#  
*
*
*
= 	-.)99t9LM!N" 6==QMM!$))fkfmW..444MM%)%--9I9IJ011}}fnM  -0J225 (()FE$$%D~3D9fk	g//55	5+EMM5;K;KL23
3m666E,,--HI
 	
 4C8fkJfk	g//55	5+EMM5;K;KL23
3m~3D9fk1



55a
 fl 
g//55	5+EMM5;K;KL23
3mfm3D9fkUl !P# 9T
"C$)C &/
7!!77
 
   ))*a/T
e..777#..77 4ll3 ++t3 .33fl4 ,,$,?  --

/
0


+;;;N
OC!PD 
V]]	q	 mmA&++
--
#mm7#4#4#:#::+EMM5;K;KL23
3m //0@0@A 	W..444MM%}}fn1$7FKF"'"2"2"?"?"E"E"G 	
J&B



55#..
 'f
#	 +62FOMui<r!   ri   c                     | j                   sy | j                   j                         D cg c]  \  }}|j                  s|j                  |! c}}S c c}}w r4   )rf   rb   r\   rV   )ri   ro   field_schemas      r    r   r   >  sW    			 '-&7&7&=&=&?

"*l""|';';'C 
  
s   $A)0rW   sysr   rB   typingr   r   r   r   r   r   r	   r
   pydantic r   version_info	UnionTyperD   _UnionGenericAlias__all__r(   TypeSTRINGintINTEGERfloatNUMBERboolBOOLEANrF   ARRAYrE   OBJECTNULLr   rX   	Exceptionr.   r   r   r   r&   r   r   rU   r   r    r!   r    <module>r      s     
   _ _ _    w$..00	 					5::%**

%**

%**

%**//# ),9>y$y/?Y9Z	'2C2C ^bcfhkck^l tw   }D  }N  }N c3h	#s(^>!!,,>	>**$+$5$5$@$@*	*Zo=12o=o= o= \\	o=d (492E r!   