
    v5`@                        d dl mZ ddlmZmZ g dZ G d de          Z G d de          Z	 G d	 d
e          Z
 G d de          Z G d de          Z e            Z e	            Z e
            Z e            Z e            ZdS )    )	takewhile   )BaseBaseSimilarity)
PrefixPostfixLengthIdentityMatrixprefixpostfixlengthidentitymatrixc                   &    e Zd ZdZddZd Zd ZdS )r   zprefix similarity
    r   Nc                 0    || _         |p| j        | _        d S N)qval_identsim_test)selfr   r   s      >lib/python3.11/site-packages/textdistance/algorithms/simple.py__init__zPrefix.__init__   s    	 /DK    c                 (    |sdS   j         | } fd}d t          |t          |           D             }|d         }t          |t                    rd                    |          S t          |t                    rd                    |          S |S )Nr   c                      j         |  S r   )r   )seqr   s    r   <lambda>z!Prefix.__call__.<locals>.<lambda>   s    =4=#. r   c                     g | ]
}|d          S )r    ).0cs     r   
<listcomp>z#Prefix.__call__.<locals>.<listcomp>   s    AAA1!A$AAAr    r   )_get_sequencesr   zip
isinstancestrjoinbytes)r   	sequencestestresultss   `    r   __call__zPrefix.__call__   s     	1'D'3	....AA	$Y @ @AAAaLa 	#776??"a 	$88F###r   c                 &    t           | |           S r   )lenr   r+   s     r   
similarityzPrefix.similarity#   s    44#$$$r   )r   N)__name__
__module____qualname____doc__r   r/   r3   r    r   r   r   r      sP         0 0 0 0  % % % % %r   r   c                   "     e Zd ZdZ fdZ xZS )r   zpostfix similarity
    c                 8   |d         }d |D             }t           t                      j        |           }t          |t                    rd                    |          S t          |t                    rd                    |          S t          |          S )Nr   c                 ,    g | ]}t          |          S r    )reversed)r!   r.   s     r   r#   z$Postfix.__call__.<locals>.<listcomp>,   s    444QXa[[444r   r$   r   )r;   superr/   r'   r(   r)   r*   list)r   r+   r.   r-   	__class__s       r   r/   zPostfix.__call__*   s    aL44)444	*%''*I677a 	#776??"a 	$88F###F||r   )r4   r5   r6   r7   r/   __classcell__)r>   s   @r   r   r   '   sB                 r   r   c                       e Zd ZdZd ZdS )r	   zLength distance
    c                     t          t          t          |                    }t          |          t	          |          z
  S r   )r=   mapr1   maxmin)r   r+   lengthss      r   r/   zLength.__call__8   s0    s3	**++7||c'll**r   N)r4   r5   r6   r7   r/   r    r   r   r	   r	   5   s-         + + + + +r   r	   c                       e Zd ZdZd Zd ZdS )r
   zIdentity similarity
    c                     dS )Nr   r    r2   s     r   maximumzIdentity.maximumA   s    qr   c                 0    t           | j        |           S r   )intr   r2   s     r   r/   zIdentity.__call__D   s    ;4;	*+++r   N)r4   r5   r6   r7   rH   r/   r    r   r   r
   r
   =   s<           , , , , ,r   r
   c                   &    e Zd ZdZd	dZd Zd ZdS )
r   zMatrix similarity
    Nr   r   Tc                 >    || _         || _        || _        || _        d S r   )matmismatch_cost
match_cost	symmetric)r   rM   rN   rO   rP   externals         r   r   zMatrix.__init__L   s#    *$"r   c                     | j         S r   )rO   r2   s     r   rH   zMatrix.maximumS   s
    r   c                    | j         s | j        | r| j        S | j        S || j         v r| j         |         S | j        r2t          t          |                    }|| j         v r| j         |         S  | j        | r| j        S | j        S r   )rM   r   rO   rN   rP   tupler;   r2   s     r   r/   zMatrix.__call__V   s    x 	&t{I& '&%%   8I&&> 	+hy1122IDH$$x	**4;	" 	#?"!!r   )Nr   r   TT)r4   r5   r6   r7   r   rH   r/   r    r   r   r   r   H   sP         # # # #  " " " " "r   r   N)	itertoolsr   baser   _Baser   _BaseSimilarity__all__r   r   r	   r
   r   r   r   r   r   r   r    r   r   <module>rZ      sS         C B B B B B B B  % % % % %_ % % %2    f   + + + + +U + + +, , , , , , , , "  "  "  "  "_  "  "  "F 

'))	8::	r   