ó
    ±"³jY4  ã                  ó"  • S SK Jr  S SKJrJr  S SKJr  S SKJr  S SK	J
r
Jr  S SKJr  S SKJr  S SKJr  S S	KJrJrJr  S S
KJr  SSKJr  \
(       a	  S SKJrJr  O	 S SKJrJr  \" SS9 " S S\\   5      5       rSS jrg! \ a    \r\r N)f = f)é    )Úannotations)Ú	AwaitableÚCallable)Ú	dataclass)Úcached_property)ÚTYPE_CHECKINGÚAny)Úurlparse)Ú	UserError)ÚMCPServerTool)Ú
AgentDepsTÚ
RunContextÚTool)ÚAbstractToolseté   )ÚNativeOrLocalTool)Ú
MCPToolsetÚMCPToolsetClientF)Úinitc            
      ó^  ^ • \ rS rSr% SrS\S'    S\S'    S\S'    S\S	'    S
rS\S'     SSS
S
S
S
S
S
SS.                   SS jjjrSS jr\	SS j5       r
SS jrSS jrSS jrSS jrS S jrS!U 4S jjr\SS
S
S
S
S
S
SS.                   S"S jj5       rSrU =r$ )#ÚMCPé   u�  MCP server capability.

The primary entry point for using MCP servers with Pydantic AI. Runs the MCP server
locally â€” keeps credentials, hooks, and tracing under your control â€” and accepts any
[`MCPToolset`][pydantic_ai.mcp.MCPToolset] input (URL, `fastmcp.Client`, transport,
in-process `FastMCP` server, script path, etc.) directly via `local=`.

Pass `url=` for HTTP-based servers; the same URL can also be advertised to providers
that support native MCP via `native=True`. For non-URL local clients, omit `url=` and
pass the client/toolset as `local=`. Pass `native=True, local=False` for strict
native-only (no local at all â€” works without the `mcp` extra).
ú
str | NoneÚurlÚauthorization_tokenúdict[str, str] | NoneÚheadersúlist[str] | NoneÚallowed_toolsNÚdescriptionF©ÚnativeÚlocalÚidr   r   r   r    Údefer_loadingc               óÀ  • Uc  USL a  [        S5      eXl        X l        Ub  UOU	(       a  S OU R                  U5      U l        Ubd  [        U[        [        45      (       dI  [        U[        5      (       d4  [        U5      (       d$  [        USU R                  U R                  5      S9nX0l        XPl        X`l        Xpl        X€l        X�l        U R#                  5         g )NTu]  MCP(native=True) requires `url=` â€” native MCP needs a URL to give the model. Pass `url='https://â€¦'`, pass an explicit `native=MCPServerTool(url='â€¦', â€¦)` instance, or for local-only use leave `native` at its default of `False` and pass `local=` (e.g. an `MCPToolset`, `fastmcp.Client`, transport, in-process `FastMCP` server, or script path).)Úinclude_instructionsr$   )r   r   r"   Ú
_derive_idr$   Ú
isinstanceÚboolÚstrr   Úcallabler   r#   r   r   r   r    r%   Ú__post_init__)
Úselfr   r"   r#   r$   r   r   r   r    r%   s
             ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pydantic_ai/capabilities/mcp.pyÚ__init__ÚMCP.__init__:   sÇ   € ð$ ‰;˜6 Tš>Üð5óð ð ŒØŒð ™‘"¶]©TÈÏÉÐX[ÓH\ˆŒð ÑÜ˜u¤t¬S k×2Ñ2Ü˜u¤o×6Ñ6Ü˜U—O‘Oô
 ˜u¸4ÀDÇOÁOÐTX×T\ÑT\ÓD]Ñ^ˆEØŒ
Ø#6Ô ØŒØ*ÔØ&ÔØ*ÔØ×ÑÕó    c                óˆ  • U R                   b  U R                   $ [        U R                  [        5      (       a  U R                  R                   $ Uc  g[	        U5      nUR
                  R                  S5      nU(       a  UR                  S5      S   OSnUR                  =(       d    SnU(       a  U SU 3$ U=(       d    U$ )uJ  Derive a stable id for this capability from `url`.

Precedence: explicit `id` â†’ the native `MCPServerTool`'s id â†’ a host+slug derived from `url`.
Returns `None` only when there's nothing to derive from â€” no `id`, no native `MCPServerTool`,
and `url is None` (e.g. a non-URL `local=` client that carries its own connection).
NÚ/éÿÿÿÿÚ Ú-)	r$   r)   r"   r   r
   ÚpathÚrstripÚsplitÚhostname)r.   r   Úparsedr8   ÚslugÚhosts         r/   r(   ÚMCP._derive_id|   s�   € ð �7‰7ÑØ—7‘7ˆNô �d—k‘k¤=×1Ñ1Ø—;‘;—>‘>Ð!Ø‰;Øä˜#“ˆØ�{‰{×!Ñ! #Ó&ˆÞ&*ˆt�z‰z˜#‹˜rÒ"°ˆØ�‰×$ "ˆÞ#'�$��q˜˜ÐÐ8¨T¯[°SÐ8r2   c                óX   • U R                  U R                  5      nUc  [        S5      eU$ )Na   MCP(native=<callable>) paired with a local fallback needs a stable `id` to tie the two together (the local fallback is tagged with the native id via `unless_native`). Pass `url=`, `id=`, or use an explicit `native=MCPServerTool(...)` instead of a callable.)r(   r   r   )r.   Úresolveds     r/   Ú_resolved_idÚMCP._resolved_id’   s6   € ð —?‘? 4§8¡8Ó,ˆØÑÜðlóð ð
 ˆr2   c           	     ó´   • U R                   c   e[        U R                  U R                   U R                  U R                  U R
                  U R                  S9$ )N)r$   r   r   r   r   r    )r   r   rB   r   r   r   r    ©r.   s    r/   Ú_default_nativeÚMCP._default_native¡   sQ   € à�x‰xÑ#Ð#Ð#ÜØ× Ñ Ø—‘Ø $× 8Ñ 8Ø—L‘LØ×,Ñ,Ø×(Ñ(ñ
ð 	
r2   c                ó    • SU R                    3$ )Nzmcp_server:)rB   rE   s    r/   Ú_native_unique_idÚMCP._native_unique_id­   s   € Ø˜T×.Ñ.Ð/Ð0Ð0r2   c                óT   • U R                   c  g U R                  U R                   5      $ ©N)r   Ú_build_localrE   s    r/   Ú_default_localÚMCP._default_local°   s$   € Ø�8‰8ÑàØ× Ñ  §¡Ó*Ð*r2   c                óÊ   • [        U[        5      (       a  [        U5        U R                  U5      $ U R                  c  [        S5      eU R                  U R                  5      $ )Nu’   MCP(local=True) requires `url=` to derive the local transport from. Pass `url='https://â€¦'`, or pass a concrete local client/toolset as `local=`.)r)   r+   Ú_require_urlrM   r   r   )r.   Únames     r/   Ú_resolve_local_strategyÚMCP._resolve_local_strategy¶   s^   € ô �dœC× Ñ Ü˜ÔØ×$Ñ$ TÓ*Ð*Ø�8‰8ÑÜðaóð ð × Ñ  §¡Ó*Ð*r2   c                ó  • [        U R                  =(       d    0 5      nU R                  (       a  U R                  US'    SSKJn  U" X=(       d    S SU R                  U5      S9$ ! [         a  n[        S5      UeS nAff = f)NÚAuthorizationr   )r   T)r   r'   r$   uñ   Please install the `mcp` package to run MCP servers locally, you can use the `mcp` optional group â€” `pip install "pydantic-ai-slim[mcp]"`. For native-only MCP (no local â€” no extra needed), pass `MCP(url='â€¦', native=True, local=False)`.)Údictr   r   Úpydantic_ai.mcpr   r(   ÚImportErrorr   )r.   r   Úlocal_headersr   Úes        r/   rM   ÚMCP._build_localÆ   s�   € ä˜TŸ\™\×/¨RÓ0ˆØ×#×#Ø-1×-EÑ-EˆM˜/Ñ*ð	å2ñ
 ˜c×+@¸DÐW[Ð`d×`oÑ`oÐpsÓ`tÑuÐuøÜó 	Üð>óð
 ðûð	ús   Á %A& Á&
BÁ0A<Á<Bc                óš   >^• [         TU ]  5       nUb7  U R                  b*  [        U R                  5      mUR	                  U4S j5      $ U$ )Nc                ó"   >• UR                   T;   $ rL   )rR   )Ú_ctxÚtool_defÚalloweds     €r/   Ú<lambda>Ú!MCP.get_toolset.<locals>.<lambda>à   s   ø€ ¸8¿=¹=ÈGÒ;Sr2   )ÚsuperÚget_toolsetr   ÚsetÚfiltered)r.   Útoolsetra   Ú	__class__s     @€r/   re   ÚMCP.get_toolsetÜ   sH   ù€ Ü‘'Ñ%Ó'ˆØÑ 4×#5Ñ#5Ñ#AÜ˜$×,Ñ,Ó-ˆGØ×#Ñ#Ô$SÓTÐTØˆr2   c               ó   • U " UUUUUUUUU	S9	$ )uô  Construct an `MCP` capability from spec-serializable args.

Restricts the runtime-wide `local=` union to the JSON/YAML-serializable subset
(`str | bool | None`) so `AgentSpec` schema generation works, and requires `url=` (which
is optional at runtime when `local=` is a concrete non-URL client). Non-serializable
runtime values like `fastmcp.Client`, `ClientTransport`, or pre-built `MCPToolset`
instances can still be passed to `MCP(...)` directly â€” they just can't roundtrip through
a spec file.
r!   © )
Úclsr   r"   r#   r$   r   r   r   r    r%   s
             r/   Ú	from_specÚMCP.from_specã   s,   € ñ. ØØØØØ 3ØØ'Ø#Ø'ñ

ð 
	
r2   )	r   r   r%   r    r   r$   r#   r"   r   rL   )r   r   r"   zqMCPServerTool | Callable[[RunContext[AgentDepsT]], Awaitable[MCPServerTool | None] | MCPServerTool | None] | boolr#   zLMCPToolsetClient | MCPToolset[AgentDepsT] | Callable[..., Any] | bool | Noner$   r   r   r   r   r   r   r   r    r   r%   r*   ÚreturnÚNone)r   r   rp   r   )rp   r+   )rp   r   )rp   z5Tool[AgentDepsT] | AbstractToolset[AgentDepsT] | None)rR   z
str | boolrp   ú.Tool[AgentDepsT] | AbstractToolset[AgentDepsT])r   r+   rp   rr   )rp   z"AbstractToolset[AgentDepsT] | None)r   r+   r"   zMCPServerTool | boolr#   zstr | bool | Noner$   r   r   r   r   r   r   r   r    r   r%   r*   rp   zMCP[AgentDepsT])Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r    r0   r(   r   rB   rF   rI   rN   rS   rM   re   Úclassmethodrn   Ú__static_attributes__Ú__classcell__)ri   s   @r/   r   r      sŸ  ø‡ ñð 
ƒOð]ð $Ó#Ø^à"Ó"ØPà#Ó#ØGà"€K�Ó"ØMð ð@ð Ø^bØØ*.Ø)-Ø*.Ø"&Ø#ñ@àð@ðð	@ð \ð@ð ð@ð (ð@ð 'ð@ð (ð@ð  ð@ð ð@ð 
ö@ôD9ð, óó ðô

ô1ô+ô+ô ÷,ð ð
 (-Ø#'ØØ*.Ø)-Ø*.Ø"&Ø#ñ 
àð 
ð %ð	 
ð
 !ð 
ð ð 
ð (ð 
ð 'ð 
ð (ð 
ð  ð 
ð ð 
ð 
ô 
ó ö 
r2   r   c                ó|   • [        U 5      nUR                  S;  d  UR                  (       d  [        SU < S35      eg )N)ÚhttpÚhttpsz
MCP(local=z±) must be an `http(s)://` URL. For non-URL local clients (script paths, `fastmcp.Client`, transports, in-process `FastMCP` servers, etc.), pass `local=MCPToolset(...)` directly.)r
   ÚschemeÚnetlocr   )Úvaluer<   s     r/   rQ   rQ     sB   € Ü�e‹_€FØ‡}�}Ð-Ó-°V·]·]ÜØ˜™	ð "0ð 0ó
ð 	
ð 6Cr2   N)r�   r+   rp   rq   ) Ú
__future__r   Úcollections.abcr   r   Údataclassesr   Ú	functoolsr   Útypingr   r	   Úurllib.parser
   Úpydantic_ai.exceptionsr   Úpydantic_ai.native_toolsr   Úpydantic_ai.toolsr   r   r   Úpydantic_ai.toolsetsr   Únative_or_localr   rX   r   r   rY   r   rQ   rl   r2   r/   Ú<module>r�      s†   ðÝ "ç /Ý !Ý %ß %Ý !å ,Ý 2ß :Ñ :Ý 0å .æß<Ð<ðß@ñ �Ñôi
Ð
˜JÑ
'ó i
ó ði
õX
øðe ó Øˆ
ØÒðús   ÁB Â
BÂB