
    )`i	                         d dl Z d dlmZ d dlmZmZmZ  ed          Z ed          Zdedef         de	e         d	eegef         fd
Z
dS )    N)Callable)AnyTypeVarget_type_hintsTRfunc.request_typereturnc                     	 t          j                   }t                     }n"# t          t          t
          f$ r  fdcY S w xY w|j                                        D ]`\  }}|j        t           j	        j
        k    rA|                    |          }||k    r&|j        t           j	        j        ur fdc S  fdc S a|j                                        D ]\  }}|j        t           j	        j        t           j	        j        fv rn|                    |          }||k    rS|j        t           j	        j        ur fdc S dt           dt"          t$          gt$          f         f fd} ||          c S  fdS )	a  
    Create a wrapper function that knows how to call func with the request object.

    Returns a wrapper function that takes the request and calls func appropriately.

    The wrapper handles three calling patterns:
    1. Positional-only parameter typed as request_type (no default): func(req)
    2. Positional/keyword parameter typed as request_type (no default): func(**{param_name: req})
    3. No request parameter or parameter with default: func()
    c                                  S N _r	   s    w/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/mcp/server/lowlevel/func_inspection.py<lambda>z%create_call_wrapper.<locals>.<lambda>   s         c                                  S r   r   r   s    r   r   z%create_call_wrapper.<locals>.<lambda>!       TTVV r   c                      |           S r   r   )reqr	   s    r   r   z%create_call_wrapper.<locals>.<lambda>#   s    4499 r   c                                  S r   r   r   s    r   r   z%create_call_wrapper.<locals>.<lambda>,   r   r   namer   c                       fdS )Nc                      di | iS )Nr   r   )r   r	   r   s    r   r   zCcreate_call_wrapper.<locals>.make_keyword_wrapper.<locals>.<lambda>1   s    tt':':tSk':': r   r   )r   r	   s   `r   make_keyword_wrapperz1create_call_wrapper.<locals>.make_keyword_wrapper0   s    ::::::r   c                                  S r   r   r   s    r   r   z%create_call_wrapper.<locals>.<lambda>6   s    TTVV r   )inspect	signaturer   
ValueError	TypeError	NameError
parametersitemskind	ParameterPOSITIONAL_ONLYgetdefaultemptyPOSITIONAL_OR_KEYWORDKEYWORD_ONLYstrr   r   )r	   r
   sig
type_hints
param_nameparam
param_typer   s   `       r   create_call_wrapperr4   	   s    %%#D))

	9-        !^1133 - -
E:*:::#
33J\))=(9(???+++++++,,,,,,, !^1133 8 8
E:'+A7CTCabbb#
33J\))=(9(???+++++++;s ;xs
7K ; ; ; ; ; ; ,+J77777 s   #' AA)r   collections.abcr   typingr   r   r   r   r   typer4   r   r   r   <module>r8      s     $ $ $ $ $ $ / / / / / / / / / /GCLLGCLL-hsAv. -d1g -(TUSVXYSYJZ - - - - - -r   