
    ~h	                        U d dl Z d dlmZmZ d dlmZ d dlZd dlZd dlm	Z	 d dl
mZ d dlmZmZ ee   eej"                  j$                     z  eeej"                  j$                  z     z  Zeed<   eee	ef   gef   eee	ef   gee   f   z  Zeed<   d	ed
eej"                  j$                     fdZdeez  d
efdZd	ed
efdZdeee	ef   gef   eee	ef   gee   f   z  d
efdZy)    N)	AwaitableCallable)	TypeAlias)ClientSession)ListRootsFnT)LifespanContextTRequestContext	RootsListRootsHandlerrootsreturnc                    g }| D ]  }t        |t        j                  j                        r|j	                  |       9t        |t
        j                        r0|j	                  t        j                  j                  |             t        |t              rC|j	                  t        j                  j                  t        j                  |                   t        d|        |S )N)urizInvalid root: )	
isinstancemcptypesRootappendpydanticFileUrlstr
ValueError)r   
roots_listrs      P/opt/mcp/mcp-sentiment/venv/lib/python3.12/site-packages/fastmcp/client/roots.pyconvert_roots_listr      s    J 3a(a 8++,ciinnn343ciinn1A1A!1DnEF~aS1223     handlerc                     t        | t              rt        |       S t        j                  |       rt        |       S t        d|        )NzInvalid roots handler: )r   list!_create_roots_callback_from_rootsinspect
isfunction_create_roots_callback_from_fnr   )r   s    r   create_roots_callbackr%   !   sE     '4 099			G	$-g6627)<==r   c                      t                dt        t        t        f   dt        j
                  j                  f fd}|S )Ncontextr   c                 L   K   t         j                  j                        S w)Nr   )r   r   ListRootsResult)r'   r   s    r   _roots_callbackz:_create_roots_callback_from_roots.<locals>._roots_callback1   s!      yy((u(55s   !$)r   r	   r   r   r   r   r*   )r   r+   s   ` r   r!   r!   ,   sA     u%E6/? ?@6		"	"6
 r   fnc                      dt         t        t        f   dt        j                  j
                  t        j                  j                  z  f fd}|S )Nr'   r   c                 b  K   	  |       }t        j                  |      r
| d {   }t        j                  j	                  t        |            S 7 -# t        $ rL}t        j                  j                  t        j                  j                  t        |            cY d }~S d }~ww xY ww)Nr)   )codemessage)
r"   isawaitabler   r   r*   r   	Exception	ErrorDataINTERNAL_ERRORr   )r'   r   er,   s      r   r+   z7_create_roots_callback_from_fn.<locals>._roots_callback=   s     		wKE""5)#99,,3Ee3L,MM $ 	99&&YY--A '  	sE   B/"A A,A B/A 	B, AB'!B,"B/'B,,B/)r	   r   r   r   r   r*   r3   )r,   r+   s   ` r   r$   r$   9   sD    /? ?@		"	"SYY%8%8	8 r   )r"   collections.abcr   r   typingr   	mcp.typesr   r   r   mcp.client.sessionr   mcp.shared.contextr   r	   r    r   r   r   r
   __annotations__r   r   r%   r!   r$    r   r   <module>r=      sG    /     + ?Cy4		#77$sSYY^^?S:TT	9 T n],<<=>	IJ}.>>?@)IBVVWX i i D,@ >%>>


.0@!@ABIMN}.>>?@)IBVVW	X r   