
    k*i                    l    S SK Jr  S SKJr  S SKJrJr  SSS.S jrSSS.S jrSSS.S jr	SSS.S	 jr
g)
    )annotations)conv_sequences)is_nonesetupPandasN)	processorscore_cutoffc                   Ub  U" U 5      n U" U5      n[        X5      u  p[        [        U 5      [        U5      5      n[        X5      nXE-
  nUb  Xc::  a  U$ US-   $ )a  
Calculates the Prefix distance between two strings.

Parameters
----------
s1 : Sequence[Hashable]
    First string to compare.
s2 : Sequence[Hashable]
    Second string to compare.
processor: callable, optional
    Optional callable that is used to preprocess the strings before
    comparing them. Default is None, which deactivates this behaviour.
score_cutoff : int or None, optional
    Maximum distance between s1 and s2, that is
    considered as a result. If the distance is bigger than score_cutoff,
    score_cutoff + 1 is returned instead. Default is None, which deactivates
    this behaviour.

Returns
-------
distance : int
    distance between s1 and s2
   )r   maxlen
similarity)s1s2r   r   maximumsimdists          \/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/rapidfuzz/distance/Prefix_py.pydistancer   	   sh    < r]r]B#FB#b'3r7#G
R
C=D (D,@4W|VWGWW    c                   Ub  U" U 5      n U" U5      n[        X5      u  pSn[        X5       H  u  pVXV:w  a    O	US-  nM     Ub  XC:  a  U$ S$ )a  
Calculates the prefix similarity between two strings.

This is calculated as ``len1 - distance``.

Parameters
----------
s1 : Sequence[Hashable]
    First string to compare.
s2 : Sequence[Hashable]
    Second string to compare.
processor: callable, optional
    Optional callable that is used to preprocess the strings before
    comparing them. Default is None, which deactivates this behaviour.
score_cutoff : int, optional
    Maximum distance between s1 and s2, that is
    considered as a result. If the similarity is smaller than score_cutoff,
    0 is returned instead. Default is None, which deactivates
    this behaviour.

Returns
-------
distance : int
    distance between s1 and s2
r   r
   )r   zip)r   r   r   r   r   ch1ch2s          r   r   r   3   sf    @ r]r]B#FB
CK:q  
  '3+>3FQFr   c                   [        5         [        U 5      (       d  [        U5      (       a  g[        XUS9nSU-
  nUb  XS::  a  U$ S$ )a  
Calculates a normalized prefix similarity in the range [1, 0].

This is calculated as ``distance / (len1 + len2)``.

Parameters
----------
s1 : Sequence[Hashable]
    First string to compare.
s2 : Sequence[Hashable]
    Second string to compare.
processor: callable, optional
    Optional callable that is used to preprocess the strings before
    comparing them. Default is None, which deactivates this behaviour.
score_cutoff : float, optional
    Optional argument for a score threshold as a float between 0 and 1.0.
    For norm_dist > score_cutoff 1.0 is returned instead. Default is 1.0,
    which deactivates this behaviour.

Returns
-------
norm_dist : float
    normalized distance between s1 and s2 as a float between 0 and 1.0
      ?)r   )r   r   normalized_similarity)r   r   r   r   norm_sim	norm_dists         r   normalized_distancer   a   sH    > Mr{{gbkk$RyAHhI%-1J9TQTTr   c                  [        5         [        U 5      (       d  [        U5      (       a  gUb  U" U 5      n U" U5      n[        X5      u  p[        [	        U 5      [	        U5      5      n[        X5      nU(       a  XT-  OSnUb  Xc:  a  U$ S$ )a  
Calculates a normalized prefix similarity in the range [0, 1].

This is calculated as ``1 - normalized_distance``

Parameters
----------
s1 : Sequence[Hashable]
    First string to compare.
s2 : Sequence[Hashable]
    Second string to compare.
processor: callable, optional
    Optional callable that is used to preprocess the strings before
    comparing them. Default is None, which deactivates this behaviour.
score_cutoff : float, optional
    Optional argument for a score threshold as a float between 0 and 1.0.
    For norm_sim < score_cutoff 0 is returned instead. Default is 0,
    which deactivates this behaviour.

Returns
-------
norm_sim : float
    normalized similarity between s1 and s2 as a float between 0 and 1.0
g        r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   s          r   r   r      s    > Mr{{gbkkr]r]B#FB#b'3r7#G
R
C 's}SH$,0H8RsRr   )
__future__r   rapidfuzz._common_pyr   rapidfuzz._utilsr   r   r   r   r   r    r   r   <module>r%      sK    # / 1 'X\ +Gd &UZ ,Sr   