
    d                        U d dl mZ d dlmZ d dlmZ d dlmZmZ  G d de          Z	d#dZ
d#dZd#dZd#dZd$dZd%dZ	 	 d&d'dZde
iZded<   deiZded <   deiZded!<   deiZded"<   dS )(    )annotations)IntFlag)isnan)AnyCallablec                      e Zd ZdZdZdZdS )
ScorerFlag    @   i   N)__name__
__module____qualname__
RESULT_F64
RESULT_I64	SYMMETRIC     T/home/feoh/.local/pipx/venvs/poetry/lib/python3.11/site-packages/rapidfuzz/_utils.pyr	   r	      s        JJIIIr   r	   _kwargsr   returndict[str, Any]c                 <    ddt           j        t           j        z  dS )Nr       optimal_scoreworst_scoreflagsr	   r   r   r   s    r   _get_scorer_flags_distancer       s%     &)==  r   c                 <    ddt           j        t           j        z  dS )Nr   r   r   r   r   s    r   _get_scorer_flags_similarityr"      s%    "&)==  r   c                 <    ddt           j        t           j        z  dS )Nr      r   r	   r   r   r   s    r   %_get_scorer_flags_normalized_distancer&   !   %    &)==  r   c                 <    ddt           j        t           j        z  dS )Nr$   r   r   r%   r   s    r   '_get_scorer_flags_normalized_similarityr)   )   r'   r   sboolc                Z    | dS t          | t                    rt          |           rdS dS )NTF)
isinstancefloatr   )r*   s    r   is_noner/   1   s5    yt!U a t5r   funccached_scorer_call(dict[str, Callable[..., dict[str, Any]]]c                "    || _         | | _        | S )N)_RF_ScorerPy_RF_OriginalScorer)r0   r1   s     r   _create_scorerr6   ;   s     +D"DKr   NTmodulestrname/dict[str, Callable[..., dict[str, Any]]] | None	set_attrsc           	     p   ddl }ddl}|j                            d          }|                    | dz             }t          ||          }|s#t          d|d|j        d|j         d          |rt          ||          }|d	k    r|                    | d
z             }	n4|dk    r|S 	 |                    | d
z             }	n# t          $ r |cY S w xY wt          |	|          }
|
s#t          d|d|	j        d|	j         d          |r|j        |
_        |j        |
_        |rt          |
|          }
|
S )z}
    import library function and possibly fall back to a pure Python version
    when no C++ implementation is available
    r   NRAPIDFUZZ_IMPLEMENTATION_pyzcannot import name z from z ()cpp_cpppython)	importlibosenvirongetimport_modulegetattrImportError__name__file__r6   	Exceptionr   __doc__)r7   r9   r1   r;   rC   rD   implpy_modpy_funccpp_modcpp_funcs              r   fallback_importrS   D   s    III:>>455D$$Ve^44Ffd##G 
U$UUUU6?UUU
 
 	
  > *<==u}}))&6/::				--fvo>>GG 	 	 	NNN	 w%%H 
W$WWWWGDTWWW
 
 	

  +#,"? @!(,>??Os   *C CCget_scorer_flagsdefault_distance_attributedefault_similarity_attribute%default_normalized_distance_attribute'default_normalized_similarity_attribute)r   r   r   r   )r*   r   r   r+   )r0   r   r1   r2   )NT)
r7   r8   r9   r8   r1   r:   r;   r+   r   r   )
__future__r   enumr   mathr   typingr   r   r	   r    r"   r&   r)   r/   r6   rS   rU   __annotations__rV   rW   rX   r   r   r   <module>r^      s   # " " " " " "                                                      KO	1 1 1 1 1j 2H      4J      =S %     ?U '      r   