
    v5`k
                        d Z ddlmZ ddlmZmZ 	 ddlZn# e	$ r dZY nw xY w 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 G d de          Z G d de          ZdS )z
IMPORTANT: it's just draft
    )reduce   )BaseBaseSimilarityNc                        e Zd Zd Zd Zd ZdS )	Chebyshevc                     t          j        |          t          j        |          }}t          t          ||z
                      S N)numpyasarraymaxabsselfs1s2s      Dlib/python3.11/site-packages/textdistance/algorithms/vector_based.py_numpyzChebyshev._numpy   s7    r""EM"$5$5B3rBw<<       c                 P    t          d t          ||          D                       S )Nc              3   @   K   | ]\  }}t          ||z
            V  d S r
   )r   ).0e1e2s      r   	<genexpr>z"Chebyshev._pure.<locals>.<genexpr>   s0      ::FB3rBw<<::::::r   )r   zipr   s      r   _purezChebyshev._pure   s'    ::c"bkk::::::r   c                 h    t           r|                     ||          S |                     ||          S r
   r   r   r   r   s      r   __call__zChebyshev.__call__   2     	&;;r2&&&::b"%%%r   N__name__
__module____qualname__r   r   r     r   r   r   r      sA        ! ! !; ; ;& & & & &r   r   c                   (    e Zd ZddZd Zd Zd ZdS )	Minkowskir   c                 L    |dk     rt          d          || _        || _        d S )Nr   zp must be at least 1)
ValueErrorpweight)r   r+   r,   s      r   __init__zMinkowski.__init__!   s,    q553444r   c                     t          j        |          t          j        |          }}| j        t          ||z
            z  | j        z  }|                                d| j        z  z  S )N      ?)r   r   r,   r   r+   sumr   r   r   results       r   r   zMinkowski._numpy'   sU    r""EM"$5$5B+BG,7zz||df--r   c                       fdt          ||          D             }t           fd|D                       }|d j        z  z  S )Nc              3   R   K   | ]!\  }}j         t          ||z
            z  V  "d S r
   )r,   r   )r   r   r   r   s      r   r   z"Minkowski._pure.<locals>.<genexpr>-   s8      GGR$+BG,GGGGGGr   c              3   ,   K   | ]}|j         z  V  d S r
   )r+   )r   er   s     r   r   z"Minkowski._pure.<locals>.<genexpr>.   s)      11QQ$&[111111r   r/   )r   r0   r+   r1   s   `   r   r   zMinkowski._pure,   sW    GGGG3r2;;GGG1111&11111#,''r   c                 h    t           r|                     ||          S |                     ||          S r
   r   r   s      r   r    zMinkowski.__call__1   r!   r   N)r   r   r#   r$   r%   r-   r   r   r    r&   r   r   r(   r(       sU           . . .
( ( (
& & & & &r   r(   c                       e Zd Zd ZdS )	Manhattanc                     t           r
   NotImplementedErrorr   s      r   r    zManhattan.__call__9       !!r   Nr#   r$   r%   r    r&   r   r   r:   r:   8   #        " " " " "r   r:   c                   (    e Zd ZddZd Zd Zd ZdS )	EuclideanFc                     || _         d S r
   )squared)r   rD   s     r   r-   zEuclidean.__init__>   s    r   c                     t          j        |          }t          j        |          }t          j        ||z
            }||j        z                                  }| j        r|S t          j        |          S r
   )r   r   matrixTr0   rD   sqrt)r   r   r   qr2   s        r   r   zEuclidean._numpyA   se    ]2]2Lb!!ac'< 	Mz&!!!r   c                     t           r
   r<   r   s      r   r   zEuclidean._pureJ   r>   r   c                 h    t           r|                     ||          S |                     ||          S r
   r   r   s      r   r    zEuclidean.__call__M   r!   r   N)Fr8   r&   r   r   rB   rB   =   sU           " " "" " "& & & & &r   rB   c                       e Zd Zd ZdS )Mahalanobisc                     t           r
   r<   r   s      r   r    zMahalanobis.__call__U   r>   r   Nr?   r&   r   r   rM   rM   T   r@   r   rM   c                        e Zd Zd Zd Zd ZdS )Correlationc                     d |D             }d |D             }t          t          j        |          }|D ],}|t          j        t          j        ||                    z  }-|S )Nc                 6    g | ]}t          j        |          S r&   )r   r   r   ss     r   
<listcomp>z&Correlation._numpy.<locals>.<listcomp>[   s"    999!U]1%%999r   c                 <    g | ]}||                                 z
  S r&   )meanrS   s     r   rU   z&Correlation._numpy.<locals>.<listcomp>\   s$    ///q16688|///r   )r   r   dotrH   )r   	sequencesssmr2   sms        r   r   zCorrelation._numpyZ   so    99y999	//Y///	9-- 	4 	4Bej2r!2!2333FFr   c                     t           r
   r<   r   rY   s     r   r   zCorrelation._pureb   r>   r   c                 8    t           r
 | j        | S  | j        | S r
   r   r]   s     r   r    zCorrelation.__call__e   s(     	*4;	**4:y))r   Nr"   r&   r   r   rP   rP   Y   sA          " " "* * * * *r   rP   c                       e Zd Zd ZdS )	Kulsinskic                     t           r
   r<   r   s      r   r    zKulsinski.__call__m   r>   r   Nr?   r&   r   r   r`   r`   l   r@   r   r`   )__doc__	functoolsr   baser   _Baser   _BaseSimilarityr   ImportErrorr   r(   r:   rB   rM   rP   r`   r&   r   r   <module>rh      s          C B B B B B B BLLLL   EEE& & & & & & & && & & & & & & &0" " " " " " " "
& & & & & & & &." " " " "% " " "
* * * * */ * * *&" " " " " " " " " "s    !!