
    i
                    v    d dl mZ d dlZd dlZd dlmZmZ dd
Z e            dddZ	 e            dddZ
dS )    )annotationsN)AnyCallablefuncCallable[..., Any]arg_namestrreturnboolc                <    t          j        |           }||j        v S )zBReturns whether or not the given function has a specific parameter)inspect	signature
parameters)r   r   sigs      Y/root/projects/qq-shell/venv/lib/python3.11/site-packages/anthropic/_utils/_reflection.pyfunction_has_argumentr      s    

D
!
!Cs~%%    )exclude_paramssource_func
check_funcr   set[str]Nonec               "   t          j        |          }t          j        |           }g }|j                                        D ]\  }}||v r
|j                            |          }|s|                    d| d           @|j        |j        k    rC|                    d| dt          |j                   dt          |j                              |r5t          t          |           dd
                    |          z             dS )	zCEnsure that the signature of the second function matches the first.zthe `` param is missingztypes for the `z!` param are do not match; source=z
 checking=z0 errors encountered when comparing signatures:



N)r   r   r   itemsgetappend
annotationreprAssertionErrorlenjoin)	r   r   r   	check_sig
source_sigerrorsnamesource_paramcustom_params	            r   assert_signatures_in_syncr*      sk    !*--I";//JF(399;;  l>!! +//55 	MM:$:::;;;"l&===MM R$  R  RlNeIfIf  R  Rrv  xD  xO  sP  sP  R  R   	 >  wF___bhbmbmntbubuuvvvw wr   overloaded_funcc                  t          j        |           }t          j        |          }|st	          d|          g }t          |          D ]\  }}t          j        |          }|j                                        D ]\  }	}
|	|v r
|j                            |	          }|s|	                    d| d|	 d           C|j
        |
j
        k    rE|	                    d| d|	 dt          |
j
                   dt          |j
                              |r5t	          t          |           dd	                    |          z             d
S )zTEnsure that every @overload of overloaded_func contains all params from source_func.z#No @overload definitions found for z	overload z: `r   z: types for `z` do not match; source=z
 overload=z9 errors encountered when comparing overload signatures:

r   N)r   r   typing_extensionsget_overloadsr!   	enumerater   r   r   r   r   r    r"   r#   )r   r+   r   r%   	overloadsr&   ioverload_fnoverload_sigr'   r(   overload_params               r   assert_overloads_in_syncr5   .   s    ";//J!/@@I XV?VVWWWF#I..  ;(55","7"="="?"? 	 	D,~%%)488>>N! H!HHHHHIII(L,CCC X  X  X  X  XTR^RiMjMj  X  Xvz  |J  |U  wV  wV  X  X  	  
6{{WWWZ`ZeZeflZmZmm
 
 	

 
r   )r   r   r   r	   r
   r   )r   r   r   r   r   r   r
   r   )r   r   r+   r   r   r   r
   r   )
__future__r   r   r-   typingr   r   r   setr*   r5    r   r   <module>r:      s    " " " " " "                     & & & &  #suu	w w w w w wH  #suu	"
 "
 "
 "
 "
 "
 "
 "
r   