
    zh                     d    d dl mZmZmZmZmZ d dlmZ ed   Z G d ded      Z	 G d d	      Z
y
)    )AnyCallableDictLiteralOptional)	TypedDictdamerau_levenshteinlevenshteinjarojaro_winklerhammingindelc                   "    e Zd ZU eed<   eed<   y)EditDistanceConfigmetricnormalize_scoreN)__name__
__module____qualname__METRICS__annotations__bool     \/var/www/html/engine/venv/lib/python3.12/site-packages/langsmith/_internal/_edit_distance.pyr   r      s    Or   r   F)totalc                   `    e Zd Z	 ddee   fdZ	 ddedee   defdZe	dded	e
defd
       Zy)EditDistanceNconfigc                     |xs i }|j                  d      xs d}| j                  ||j                  dd            | _        y )Nr   r
   r   T)r   )get_get_metricr   )selfr    r   s      r   __init__zEditDistance.__init__   sI     2H%>)>&&FJJ/@$$G ' 
r   
prediction	referencereturnc                 &    | j                  ||      S N)r   )r$   r&   r'   s      r   evaluatezEditDistance.evaluate   s    
 {{:y11r   distancer   c                 D   	 ddl m} |j                  |j                  |j
                  |j                  |j                  |j                  d}| |vrt        d|  dt        |             ||    }|r|j                  S |j                  S # t        $ r t        d      w xY w)Nr   )r,   zgThis operation requires the rapidfuzz library to use.Please install it with `pip install -U rapidfuzz`.r	   zInvalid distance metric: z
Must be one of: )	rapidfuzzr,   ImportErrorDamerauLevenshteinLevenshteinJaroJaroWinklerHammingIndel
ValueErrorlistnormalized_distance)r,   r   rf_distance
module_mapmodules        r   r#   zEditDistance._get_metric&   s    	 $/#A#A&22$$'33"** &&&

 :%+H:$T*%5$68  H%---??"/  	E 	s   B
 
Br*   )T)r   r   r   r   r   r%   strfloatr+   staticmethodr   r   r#   r   r   r   r   r      sm     04
+,
 $(22 C=2 
	2 #c #D #H # #r   r   N)typingr   r   r   r   r   typing_extensionsr   r   r   r   r   r   r   <module>rA      s5    9 9 '
% 
/# /#r   