
    Li                        U d Z ddlmZmZ ddlZddlmZ ddlmZ ddlmZ ej                  rddl
mZ dd	lmZ n/eZej                   ed
<   eZej                   ed<   	 ddl
mZ dd	lmZ dedej                  fdZdee   deej                     fdZdej,                  defdZdej,                  defdZdeeef   ddfdZdej:                  dej:                  fdZy# e$ r dZdZY w xY w)z!Utils for working with MCP tools.    )PackageNotFoundErrorversionN)Any   )_common)types)Tool)ClientSessionMcpClientSessionMcpTooltoolreturnc                     t        j                  | j                  | j                  t         j                  j                  t        j                  di t        | j                              dg      S )z.Translates an MCP tool to a Google GenAI tool.)json_schema)namedescription
parameters)function_declarations )	r   r	   r   r   Schemafrom_json_schema
JSONSchema_filter_to_supported_schemainputSchema)r   s    U/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/google/genai/_mcp_utils.pymcp_to_gemini_toolr   '   se    	))))55** /0@0@A 6  	

 
    toolsc                 >    | D cg c]  }t        |       c}S c c}w )z?Translates a list of MCP tools to a list of Google GenAI tools.)r   r   r   s     r   mcp_to_gemini_toolsr!   6   s    /4	5t
T
"	55	5s   c                 d    t         y| D ]$  }t        |t              st        |t               s$ y y)zDChecks whether the list of tools contains any MCP tools or sessions.FT)r   
isinstancer   r    s     r   has_mcp_tool_usager$   ;   s6     d$ Jt5E$F 
r   c                 D    t         y| D ]  }t        |t               s y y)z;Checks whether the list of tools contains any MCP sessions.FT)r   r#   r    s     r   has_mcp_session_usager&   E   s-     d$() 
r   headersc                     t         y	 t        d      }| j                  dd      }|d| z   j	                         | d<   y# t        $ r d}Y 9w xY w)z;Sets the MCP version label in the Google API client header.Nmcpz0.0.0zx-goog-api-client z
 mcp_used/)r   r   r   getlstrip)r'   version_labelexisting_headers      r   set_mcp_usage_headerr/   O   sc    
ENM KK 3R8/*]O44
FH 

 
 Ms   A   AAschemac           	         t        t        j                  j                  j	                               }d}d}d}| j                         D ]n  \  }}||v rt        |      | |<   ||v r|D cg c]  }t        |       c}| |<   :||v s?|j                         D ci c]  \  }}|t        |       c}}| |<   p | j                         D ci c]  \  }}||v s|| c}}S c c}w c c}}w c c}}w )zKFilters the schema to only include fields that are supported by JSONSchema.)items)any_of)
properties)setr   r   model_fieldskeysr2   r   )	r0   supported_fieldsschema_field_nameslist_schema_field_namesdict_schema_field_names
field_namefield_valuevaluekeys	            r   r   r   ]   s     #5#3#3#@#@#E#E#GH#-) )8!' j+''6{CfZ	.	.:E16
%e
,fZ 
.	. (--/c5 *51
1fZ $*<<>
S%S<L5Lc5j
 
s   )C"C'C-C-)__doc__importlib.metadatar   r   typingr   r*   r   r   TYPE_CHECKING	mcp.typesr	   r   r)   r
   r   Type__annotations__ImportErrorr   listr!   ToolListUnionboolr$   r&   dictstrr/   
StringDictr   r   r   r   <module>rN      s    ( <    	'3"%FKK%'6;;)5W  6tG} 6ejj1A 6
e11 d !4!4  $sCx. T w 
 Gs   C" "	C.-C.