o
    *i	                     @   sh   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
dZ
dS )    N)Callable)AnyTypeVarget_type_hintsTRfunc.request_typereturnc              
      s0  zt  }t }W n tttfy    fdd Y S w |j D ]+\}}|jt j	j
krN||}||krN|jt j	jurF fdd  S  fdd  S q#|j D ]=\}}|jt j	jt j	jfv r||}||kr|jt j	jur{ fdd  S dtdttgtf f fdd	}||  S qT fd
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   r   `/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/mcp/server/lowlevel/func_inspection.py<lambda>       z%create_call_wrapper.<locals>.<lambda>c                    r   r   r   r   r   r   r   r   !   r   c                    s    | S r   r   reqr   r   r   r   #   s    c                    r   r   r   r   r   r   r   r   ,   r   namer
   c                    s    fddS )Nc                    s    di | iS )Nr   r   r   )r   r   r   r   r   1   s    zCcreate_call_wrapper.<locals>.make_keyword_wrapper.<locals>.<lambda>r   r   r   r   r   make_keyword_wrapper0   s   z1create_call_wrapper.<locals>.make_keyword_wrapperc                    r   r   r   r   r   r   r   r   6   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   r   r   r   create_call_wrapper	   s0   


 r.   )r   collections.abcr   typingr   r   r   r   r   typer.   r   r   r   r   <module>   s    0