
    9iD                    8   U d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZ 	 d dl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ZddZ	 	 	 	 	 	 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<   y# e$ r dZY cw xY w)    )annotationsN)IntFlag)isnan)AnyCallable)AVX2SSE2supports)NAc                      e Zd ZdZdZdZdZy)
ScorerFlag    @      i   N)__name__
__module____qualname__
RESULT_F64
RESULT_I64RESULT_SIZE_T	SYMMETRIC     Z/var/www/html/backtest/airagagent/rag_env/lib/python3.12/site-packages/rapidfuzz/_utils.pyr   r      s    JJMIr   r   c                 L    ddt         j                  t         j                  z  dS )Nr       optimal_scoreworst_scoreflagsr   r   r   _kwargss    r   _get_scorer_flags_distancer$      s&     ))J,@,@@ r   c                 L    ddt         j                  t         j                  z  dS )Nr   r   r   r!   r"   s    r   _get_scorer_flags_similarityr&   #   s&    "))J,@,@@ r   c                 L    ddt         j                  t         j                  z  dS )Nr      r   r   r   r   r"   s    r   %_get_scorer_flags_normalized_distancer*   +   &    &&)=)== r   c                 L    ddt         j                  t         j                  z  dS )Nr(   r   r   r)   r"   s    r   '_get_scorer_flags_normalized_similarityr-   3   r+   r   c                R    | | t         u ryt        | t              rt        |       ryy)NTF)	pandas_NA
isinstancefloatr   )ss    r   is_noner3   ;   s&    yAN!Uar   (dict[str, Callable[..., dict[str, Any]]]c                     || _         | | _        y )N)_RF_ScorerPy_RF_OriginalScorer)funccached_scorer_calls     r   add_scorer_attrsr:   E   s    *D"Dr   c                L    	 t        j                  |       S # t        $ r Y yw xY w)z6
    try to import module. Return None on failure
    N)	importlibimport_module	Exception)modules    r   optional_import_moduler@   K   s*    &&v.. s    	##c                    t        t              rt        | dz         }||S t        t              rt        | dz         }||S t	        j
                  |       S )z4
    import module best fitting for current CPU
    _avx2_sse2)r
   r   r@   r	   r<   r=   )namer?   s     r   vectorized_importrE   U   sU     ~'w7M~'w7M""4((r   c                   t         j                  j                  d      }t        j                  | dz         }t        ||      }|s+d|d|j                  d|j                   d}t        |      |dk(  rt        | dz         }n|d	k(  r|S 	 t        | dz         }t        ||      }|s+d|d|j                  d|j                   d}t        |      |S # t        $ r |cY S w xY w)
z}
    import library function and possibly fall back to a pure Python version
    when no C++ implementation is available
    RAPIDFUZZ_IMPLEMENTATION_pyzcannot import name z from z ()cpp_cpppython)osenvirongetr<   r=   getattr__name__file__ImportErrorrE   r>   )r?   rD   implpy_modpy_funcmsgcpp_modcpp_funcs           r   fallback_importrZ   e   s     ::>>45D$$Ve^4Ffd#G#D86&--1B"V__DUUVW#u}#FVO4			'8G w%H#D86'..1C2gFVFVEWWXY#O  	N	s   C C$#C$get_scorer_flagsdefault_distance_attributedefault_similarity_attribute%default_normalized_distance_attribute'default_normalized_similarity_attribute)r#   r   returnzdict[str, Any])r2   r   r`   bool)r8   r   r9   r4   )r?   strr`   r   )rD   rb   r`   ztuple[Any, list[Any]])r?   rb   rD   rb   r`   r   )"
__future__r   r<   rM   enumr   mathr   typingr   r   rapidfuzz._feature_detectorr   r	   r
   pandasr   r/   BaseExceptionr   r$   r&   r*   r-   r3   r:   r@   rE   rZ   r\   __annotations__r]   r^   r_   r   r   r   <module>rk      s    #  	     < <&
 #) 
 	D I[\vGw D w4J F  =S %'O  ?U ')Q }  Is   B BB