
    -j                        d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dl	Z
ej        rd dlmZ d dlmZ dZ ed          d%d            Z ed          d&d            Zd'dZd(dZd Zd)dZdddddd*d$ZdS )+    )annotationsN)	lru_cache)Metric)	EvolutionRAGAS_DEBUG   )maxsizereturnstrc                     d} t          j        d|           }t           j                            |d          }t           j                            t          j        d|                    S )zget cache locationz~/.cacheXDG_CACHE_HOMEragasRAGAS_CACHE_HOME)osgetenvpathjoin
expanduser)DEFAULT_XDG_CACHE_HOME	xdg_cachedefault_ragas_caches      U/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/ragas/utils.pyget_cache_dirr      sW     (	*,BCCI',,y'::7bi(:<OPPQQQ    boolc                     t           j                            t          t	          d                                                    dk    rdS dS )NFtrueT)r   environgetDEBUG_ENV_VARr   lower r   r   get_debug_moder#      s9    	z~~mSZZ006688FBBtur   valuest.List[float]close_tofloat
num_placesintc                    d|z  t          fd| D                       }|t          t          |z                      k    S )N
   c              3  V   K   | ]#}t          t          |z                      V  $d S )N)r)   round).0v
multipliers     r   	<genexpr>z(check_if_sum_is_close.<locals>.<genexpr>'   s7      ;;qE!j.))**;;;;;;r   )sumr)   r-   )r$   r&   r(   totalr0   s       @r   check_if_sum_is_closer4   #   sP     ZJ;;;;F;;;;;ECh3445555r   modulelevelc                H   t          j        |           }|                    |           t          j                    }|                    t           j                   t          j        d          }|                    |           |                    |           d|_        d S )N)r6   z$[%(name)s.%(levelname)s] %(message)sF)	logging	getLoggersetLevelStreamHandlerDEBUG	FormattersetFormatter
addHandler	propagate)r5   r6   patched_loggerhandler	formatters        r   patch_loggerrD   +   s    &v..N%(((#%%GW]###!"HIII###g&&&$Nr   c                N    	 t          j        |           S # t          $ r Y dS w xY w)NF)npisnan	TypeError)xs    r   is_nanrJ   <   s7    x{{   uus    
$$featuret.Union[Metric, Evolution]t.Optional[str]c                    ddl m fdt          |                                           D             }t	          |          dk    r|d         nd S )Nr   )Promptc                D    g | ]\  }}t          |          |j        S r"   )
isinstancelanguage)r.   _valuerO   s      r   
<listcomp>z(get_feature_language.<locals>.<listcomp>F   s?       AueV$$  r   )ragas.llms.promptrO   varsitemslen)rK   languagsrO   s     @r   get_feature_languager[   C   so    ((((((   W++--  H
 h--!++8A;;5r   F)removalalternativeaddendumpendingsincer\   r]   r^   r_   c               $     d fd}|S )a  
    Decorator to mark functions or classes as deprecated.

    Args:
        since: str
             The release at which this API became deprecated.
        removal: str, optional
            The expected removal version. Cannot be used with pending=True.
            Must be specified with pending=False.
        alternative: str, optional
            The alternative API or function to be used instead
            of the deprecated function.
        addendum: str, optional
            Additional text appended directly to the final message.
        pending: bool
            Whether the deprecation version is already scheduled or not.
            Cannot be used with removal.


    Examples
    --------

        .. code-block:: python

            @deprecated("0.1", removal="0.2", alternative="some_new_function")
            def some_old_function():
                print("This is an old function.")

    func
t.Callablec                      fd}|S )Nc                     rrt          d          dj         d d}sr
|d dz  }nt          d          |dz  }r	|d	 d
z  }r|d z  }t          j        |dt                      | i |S )Nz5A pending deprecation cannot have a scheduled removalzThe function z was deprecated in ,z and will be removed in the z	 release.z8A non-pending deprecation must have a scheduled removal.z) and will be removed in a future release.z Use z	 instead.    )
stacklevelcategory)
ValueError__name__warningswarnDeprecationWarning)	argskwargsmessager^   r]   rb   r_   r\   r`   s	      r   emit_warningz3deprecated.<locals>.deprecate.<locals>.emit_warningu   s     7  K   QdmPPPPPG G PgPPPPGG$R   FF :9;9999 *>x>>)M'a:LMMMM4((((r   r"   )rb   rs   r^   r]   r_   r\   r`   s   ` r   	deprecatezdeprecated.<locals>.deprecatet   s>    	) 	) 	) 	) 	) 	) 	) 	) 	) 	)6 r   )rb   rc   r"   )r`   r\   r]   r^   r_   rt   s   ````` r   
deprecatedru   N   sB    L         < r   )r
   r   )r
   r   )r$   r%   r&   r'   r(   r)   r
   r   )r5   r   r6   r)   )rK   rL   r
   rM   )
r`   r   r\   rM   r]   rM   r^   rM   r_   r   )
__future__r   r8   r   typingtrm   	functoolsr   numpyrF   TYPE_CHECKINGragas.metrics.baser   ragas.testset.evolutionsr   r    r   r#   r4   rD   rJ   r[   ru   r"   r   r   <module>r~      sx   " " " " " "  				               ? 3))))))222222 1R R R R 1   6 6 6 6% % % %"  6 6 6 6  $#' $D D D D D D D Dr   