
    4Rj
                        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
y)    )annotationsN)AnyCallablec                H    t        j                  |       }||j                  v S )zBReturns whether or not the given function has a specific parameter)inspect	signature
parameters)funcarg_namesigs      d/var/www/html/meridian/meridian-ai/venv/lib/python3.12/site-packages/anthropic/_utils/_reflection.pyfunction_has_argumentr      s!    


D
!Cs~~%%    )exclude_paramsc                  t        j                  |      }t        j                  |       }g }|j                  j                         D ]  \  }}||v r|j                  j	                  |      }|s|j                  d| d       >|j                  |j                  k7  sX|j                  d| dt        |j                         dt        |j                                 |r)t        t        |       ddj                  |      z         y)	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)	source_func
check_funcr   	check_sig
source_sigerrorsnamesource_paramcustom_params	            r   assert_signatures_in_syncr$      s*    !!*-I"";/JF(3399; l>! ++//5MME$'9:;""l&=&==MM!$'HlNeNeIfHggqrv  xD  xO  xO  sP  rQ  R  F},^_bhbmbmntbuuvv r   c                  t        j                  |       }t        j                  |      }|st	        d|      g }t        |      D ]  \  }}t        j                  |      }|j                  j                         D ]  \  }	}
|	|v r|j                  j                  |	      }|s|j                  d| d|	 d       A|j                  |
j                  k7  s[|j                  d| d|	 dt        |
j                         dt        |j                                  |r)t	        t        |       dd	j                  |      z         y
)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   overloaded_funcr   r   	overloadsr    ioverload_fnoverload_sigr!   r"   overload_params               r   assert_overloads_in_syncr/   .   sv    "";/J!//@IB?BUVWWF#I. ;((5","7"7"="="? 	D,~%)4488>N!	!Cv5GHI((L,C,CCs-v5LTR^RiRiMjLkkuvz  |J  |U  |U  wV  vW  X	  6{mVWZ`ZeZeflZmm
 	
 r   )r
   Callable[..., Any]r   strreturnbool)r   r0   r   r0   r   set[str]r2   None)r   r0   r)   r0   r   r4   r2   r5   )
__future__r   r   r&   typingr   r   r   setr$   r/    r   r   <module>r:      s|    "    &  #u	w#w"w 	w
 
wH  #u	"
#"
'"
 	"

 
"
r   