
    Ng                     x    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
d
S )    )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<   dS )EditDistanceConfigmetricnormalize_scoreN)__name__
__module____qualname__METRICS__annotations__bool     ^/var/www/html/ai-engine/env/lib/python3.11/site-packages/langsmith/_internal/_edit_distance.pyr   r      s'         OOOr   r   F)totalc                   t    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dS )EditDistanceNconfigc                     |pi }|                     d          pd}|                     ||                     dd                    | _        d S )Nr   r
   r   T)r   )get_get_metricr   )selfr    r   s      r   __init__zEditDistance.__init__   sX     2H%%>)>&&FJJ/@$$G$G ' 
 
r   
prediction	referencereturnc                 .    |                      ||          S N)r   )r$   r&   r'   s      r   evaluatezEditDistance.evaluate   s    
 {{:y111r   Tdistancer   c                    	 ddl m} n# t          $ r t          d          w xY w|j        |j        |j        |j        |j        |j        d}| |vr"t          d|  dt          |                     ||          }|r|j        S |j        S )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    	        	 	 	E  	 $/#A&2$'3"* &&
 &

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