
    9e                        d dl mZ d dlmZ d dlmZ ddlmZm	Z
 ddl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y)    )annotations)	takewhile)Sequence   )BaseBaseSimilarity)SimFunc)
PrefixPostfixLengthIdentityMatrixprefixpostfixlengthidentitymatrixc                  *    e Zd ZdZdddZddZd	dZy)
r
   zprefix similarity
    Nc                <    || _         |xs | j                  | _        y N)qval_identsim_test)selfr   r   s      @/usr/lib/python3/dist-packages/textdistance/algorithms/simple.py__init__zPrefix.__init__   s    	 /DKK    c                    |sy  j                   | } fd}t        |t        |       D cg c]  }|d   	 }}|d   }t        |t              rdj                  |      S t        |t              rdj                  |      S |S c c}w )N c                "     j                   |  S r   )r   )seqr   s    r   testzPrefix.__call__.<locals>.test   s     4==#&&r   r   r   )_get_sequencesr   zip
isinstancestrjoinbytes)r   	sequencesr"   cresultss   `     r   __call__zPrefix.__call__   s    'D''3		' !*$Y @A1!A$AAaLa776?"a88F## Bs   Bc                    t         | |       S r   )lenr   r)   s     r   
similarityzPrefix.similarity+   s    4#$$r   )r   N)r   intr   r	   returnNoner)   r   r3   r   r)   r   r3   r2   )__name__
__module____qualname____doc__r   r-   r1    r   r   r
   r
      s    0"%r   r
   c                  $     e Zd ZdZd fdZ xZS )r   zpostfix similarity
    c                   |d   }|D cg c]  }t        t        |             }}t        t        |   |       }t	        t
              rdj                  |      S t	        |t              rdj                  |      S t        |      S c c}w )Nr   r   r   )listreversedsuperr-   r%   r&   r'   r(   )r   r)   r,   r+   	__class__s       r   r-   zPostfix.__call__3   s|    aL09:1T(1+&:	:%'*I67a776?"a88F##F| ;s   B
r5   )r7   r8   r9   r:   r-   __classcell__)rA   s   @r   r   r   /   s     r   r   c                      e Zd ZdZddZy)r   zLength distance
    c                b    t        t        t        |            }t        |      t	        |      z
  S r   )r>   mapr/   maxmin)r   r)   lengthss      r   r-   zLength.__call__B   s&    s3	*+7|c'l**r   Nr6   )r7   r8   r9   r:   r-   r;   r   r   r   r   >   s    +r   r   c                       e Zd ZdZddZddZy)r   zIdentity similarity
    c                     y)Nr   r;   r0   s     r   maximumzIdentity.maximumK   s    r   c                2    t         | j                  |       S r   )r2   r   r0   s     r   r-   zIdentity.__call__N   s    ;4;;	*++r   Nr6   )r7   r8   r9   r:   rK   r-   r;   r   r   r   r   G   s    ,r   r   c                  F    e Zd ZdZ	 	 	 	 	 d	 	 	 	 	 	 	 	 	 ddZddZddZy)	r   zMatrix similarity
    Nc                <    || _         || _        || _        || _        y r   )matmismatch_cost
match_cost	symmetric)r   rO   rP   rQ   rR   externals         r   r   zMatrix.__init__V   s!     *$"r   c                    | j                   S r   )rQ   r0   s     r   rK   zMatrix.maximumc   s    r   c                j   | j                   s' | j                  | r| j                  S | j                  S || j                   v r| j                   |   S | j                  r1t        t        |            }|| j                   v r| j                   |   S  | j                  | r| j                  S | j                  S r   )rO   r   rQ   rP   rR   tupler?   r0   s     r   r-   zMatrix.__call__f   s    xxt{{I&&%%%  88I&&>>hy12IDHH$xx	**4;;	"??"!!!r   )Nr   r   TT)
rP   r2   rQ   r2   rR   boolrS   rW   r3   r4   r6   )r7   r8   r9   r:   r   rK   r-   r;   r   r   r   r   R   sY    
 # # 	#
 # # 
#"r   r   N)
__future__r   	itertoolsr   typingr   baser   _Baser   _BaseSimilaritytypesr	   __all__r
   r   r   r   r   r   r   r   r   r   r;   r   r   <module>r`      s    "    C %_ %:f +U +, ,&"_ &"R 

)	:	r   