a
    BCCfH                    @   s  d dl Z d dlZd dlmZmZ d dlZd dlZd dl	Z	d dl
mZ d dlmZmZmZmZmZmZmZmZ d dlZd dlZd dlmZmZmZmZmZmZmZmZm Z  d dlm!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8 ej9e dd	d
d Z:g dZ;ej<g dg dg dg dg dg dgddZ=ee=Z>i Z?dd Z@e@  dd ZAdvddZBdwddZCdd  ZDd!d" ZEdxd#d$ZFeed%d&d'd( dfd)d*ZGd+dd,d( d-ddddddddddd.d eed%d&fd/d0ZHeHed1dd2ZIeHed1ddd3ZJeHed1dd1d4ZKeHed1ddd1d5ZLeHe/ZMeHe)dd6 ZNZOeHe5ZPeHe'ZQeHe$ZReHe#ZSeHe&ZTeHe%ZUeHe,ZVeHe*ZWeHe(dd7ZXeHe4dd7ZYeHe!ZZeHe"dd7Z[eHe3Z\eHe2Z]eHe0Z^G d8d9 d9Z_G d:d; d;Z`G d<d= d=ZaG d>d? d?ZbG d@dA dAZcG dBdC dCZddDdE ZeG dFdG dGZfdHdI ZgG dJdK dKZhejijdLg dMdNdO ZkdPdQ ZldRdS ZmdTdU ZndVdW ZodXdY ZpdZd[ Zqd\d] Zrd^d_ Zsd`da Ztdbdc Zuddde Zvdfdg Zwdhdi Zxdjdk Zydldm Zzdndo Z{dpdq Z|drds Z}dtdu Z~dS )y    N)wrapspartial)norm)verboseassert_assert_array_equalassert_equalassert_almost_equalassert_allclosebreak_cyclesIS_PYPY)	
squareformpdistcdist	num_obs_y
num_obs_dmis_valid_dm
is_valid_y_validate_vector_METRICS_NAMES)
braycurtiscanberra	chebyshev	cityblockcorrelationcosinedice	euclideanhammingjaccardjensenshannonkulczynski1mahalanobis	minkowskirogerstanimoto
russellrao
seuclideansokalmichenersokalsneathsqeuclideanyule)np_longnp_ulongsession)paramsscopec                 C   s   | j S )z;
    Fixture for all metrics in scipy.spatial.distance
    )param)request r2   ]/var/www/html/django/DPS/env/lib/python3.9/site-packages/scipy/spatial/tests/test_distance.pymetricD   s    r4   )zcdist-X1.txtzcdist-X2.txtziris.txtzpdist-boolean-inp.txtzpdist-chebyshev-ml-iris.txtzpdist-chebyshev-ml.txtzpdist-cityblock-ml-iris.txtzpdist-cityblock-ml.txtzpdist-correlation-ml-iris.txtzpdist-correlation-ml.txtzpdist-cosine-ml-iris.txtzpdist-cosine-ml.txtzpdist-double-inp.txtzpdist-euclidean-ml-iris.txtzpdist-euclidean-ml.txtzpdist-hamming-ml.txtzpdist-jaccard-ml.txtzpdist-jensenshannon-ml-iris.txtzpdist-jensenshannon-ml.txtzpdist-minkowski-3.2-ml-iris.txtzpdist-minkowski-3.2-ml.txtzpdist-minkowski-5.8-ml-iris.txtzpdist-seuclidean-ml-iris.txtzpdist-seuclidean-ml.txtzpdist-spearman-ml.txtzrandom-bool-data.txtzrandom-double-data.txtzrandom-int-data.txtzrandom-uint-data.txt)r     m         )r5   r   '        )r6   r:   r     4     )r7   r;   r>   r      e  )r8   r<   r?   rA   r     )r9   r=   r@   rB   rC   r   doubledtypec                  C   s   t D ]N} | dddd}tjtjtd| }t|}t	|t
|< |  qtt
d t
d< tt
d t
d< tt
d t
d< tt
d	 t
d	< tt
d
 t
d
< d S )Nz.txt z-mldatapdist-boolean-inprandom-bool-datarandom-double-datarandom-float32-datarandom-int-datarandom-uint-data)
_filenamesreplaceospathjoindirname__file__opennpZloadtxteocloseZbool_float32r+   r,   )fnnameZfqfnfpr2   r2   r3   load_testing_files{   s    
r^   c                   C   s   t djdk S )Nr      )rW   Zintpitemsizer2   r2   r2   r3   	_is_32bit   s    ra   c                    s|   dd  D  |d u r(dd  D  d}t dd  D  |dk rrt fdd D s`tdt d j| } |f S )	Nc                 S   s   g | ]}t |qS r2   )rW   
asanyarray.0ar2   r2   r3   
<listcomp>       z!_chk_asarrays.<locals>.<listcomp>c                 S   s$   g | ]}|j d krt|n|qS    )ndimrW   Zravelrc   r2   r2   r3   rf      s   r   c                 s   s   | ]}t |V  qd S N)rW   
atleast_1drc   r2   r2   r3   	<genexpr>   rg   z _chk_asarrays.<locals>.<genexpr>c                 3   s   | ]}|j  d  j kV  qdS )r   N)rj   rc   arraysr2   r3   rm      rg   z(array ndim must be the same for neg axis)tupleall
ValueErrorrangerj   )ro   axisr2   rn   r3   _chk_asarrays   s    ru   FTc
                    s|  t |  d}
|
d d |
d  }  |o*| }|sF|rFtdd | D }|rdd | D }t|rd}d}tdd t| |D } d urtn&|rt| d	 j  n|  f S |	rt|rt	|  t
 fd
d| D std|rd	k  rtd|rXtd	kd	 jjk rXt fdd| D }  |rpdk
 rpd |  f S )Nrt   c                 s   s"   | ]}t j|t jjuV  qd S rk   )rW   magetmasknomaskrc   r2   r2   r3   rm      rg   z_chk_weights.<locals>.<genexpr>c                 S   s   g | ]}t t |qS r2   )rW   isnansumrc   r2   r2   r3   rf      rg   z _chk_weights.<locals>.<listcomp>Tc                 s   s&   | ]\}}|rt j|n|V  qd S rk   rW   rx   Zmasked_invalid)rd   re   Zhas_nanr2   r2   r3   rm      s   r   c                 3   s    | ]}j |j   fkV  qd S rk   shaperc   )rt   weightsr2   r3   rm      rg   z*weights shape must match arrays along axiszweights cannot be negativec                 3   s   | ]}t j| d V  qdS )rv   N)rW   takerc   )rt   pos_weightsr2   r3   rm      rg   ri   )ru   anyrp   ziprW   rb   onesr   _freq_weights_weight_maskedrq   rr   Znonzerosize)ro   r   rt   force_weightsZsimplify_weightsZpos_onlyZ	neg_checkZ
nan_screenmask_screenddofchkedZhas_nansr2   )rt   r   r   r3   _chk_weights   sD    
r   c                 C   s2   | d u r| S |  t}| |k r.td|  |S )Nz2frequency (integer count-type) weights required %s)astypeintr   rr   )r   Zint_weightsr2   r2   r3   r      s    
r   c                    s    d u rd t |}| D ]b}t j|}|t jju r8q|jdkrjt fddt|jD }|j|d}|d|	t
 9 }q|S )Nr   ri   c                 3   s   | ]}| kr|V  qd S rk   r2   rd   irv   r2   r3   rm      rg   z!_weight_masked.<locals>.<genexpr>rv   )rW   rb   rx   ry   rz   rj   rp   rs   r   r   r   )ro   r   rt   re   Z	axis_maskZnot_axesr2   rv   r3   r      s    

r   c           	         s   dd | D } t j|t jd}t j|}dd | d j  t fdd| D s`J d	tt| D ]X}|	| | }|
 }|| |< t |d
| | } fdd| D } qp| |fS )Nc                 S   s,   g | ]$}t |jt jr$|t jn|qS r2   )rW   
issubdtyperF   integerr   float64)rd   Zarrr2   r2   r3   rf      s   z_rand_split.<locals>.<listcomp>rE   c                    s6   t t j |d}| fddt jD S )Nrv   c                    s"   g | ]}|kr j | nd qS rh   r~   r   re   rt   r2   r3   rf      s   z/_rand_split.<locals>.mytake.<locals>.<listcomp>)rW   rb   r   reshapers   rj   )re   Zixrt   recordr2   r   r3   mytake   s    z_rand_split.<locals>.mytaker   c                 3   s   | ]}|j   kV  qd S rk   r~   rc   )rt   n_obsr2   r3   rm      rg   z_rand_split.<locals>.<genexpr>z#data must be aligned on sample axis      ?c              	      s&   g | ]}t j|| d  d qS rv   rW   appendrc   )rt   r   split_ixr2   r3   rf      s   )rW   arrayr   randomRandomStater   rq   rs   r   randintrandr   )	ro   r   rt   	split_perseedZseeded_randr   Zprev_wqr2   )rt   r   r   r   r3   _rand_split   s(    r   h㈵>atolc                 C   s   | S rk   r2   xr2   r2   r3   <lambda>  rg   r   c           	   	   C   s   || }||}z t ||k r.||| W nR tyL   ||| Y n8 ttfy   t||D ]\}}t|||d qfY n0 d S )N)compare_assert)rW   r   r   AttributeError	TypeErrorrr   r   _rough_check)	re   br   keywZcheck_aZcheck_bZa_iZb_ir2   r2   r3   r     s    r      c                 C   s   | S rk   r2   r   r2   r2   r3   r     rg   r   r   c                    s8   t  	
fdd}|S )zruns fn on its arguments 2 or 3 ways, checks that the results are the same,
       then returns the same thing it would have returned beforec               
      s  | i |}| d 	 }| 	d  }| d }| d t|| ddd}|d d |d |d   }} rdd |D }z$t|| } r||< t|| i |d rD|d	 |< t|| i |d |d
 |< zt|| i |d W n: tyB } z t||||f|W Y d }~n
d }~0 0 rt|| d\}}	||	d |j< d|	|jd < t|| }
|	|< t||
i |d |D ]>}td g|j	 }t|jd | < t|}|| d ||< qt|| }
t||
i |d |D ]@}td g|j	 }t|jd | < t|}|| t
j ||< q| dd dkr
rt|| }
t||
i |d rdd |D }t|| }
t||
i |d rd |< t||
i |d ~~
~	rP fdd|D }t
||d }t|| }||< t||i |d ~~~rdkrt|| d}|\}}t|| }||< t||i |d W nF ty } z,stjj d| dd W Y d }~n
d }~0 0 |S )Nrt   T)r   rt   r   r   rw   c                 S   s   g | ]}t | qS r2   )rW   rl   squeezerc   r2   r2   r3   rf   (  rg   z4_weight_checked.<locals>.wrapped.<locals>.<listcomp>)r   g     @Y@gB`"۹?)r   r   r   e   Z
nan_policyZomitc                 S   s   g | ]}t j|qS r2   r}   rc   r2   r2   r3   rf   V  rg   c                    s   g | ]}t j|| d qS r   r   rc   rv   r2   r3   rf   `  rg          @z NotImplemented weights:    )
stacklevel)getr   rp   r   	Exceptiontyper   r   slicerj   rW   nanr   NotImplementedErrorwarningswarn__name__)argskwargsresultro   restr   r   eZ
dud_arraysZdud_weightsZdud_argsre   ZindexerZ
dup_arraysZdup_weightsZdup_argssplitZsplit_arraysZsplit_weightsZ
split_args
const_testdefault_axisdud_testdup_testr[   r   ma_safema_very_safen_argsnan_safe	ones_testr   silentr   
split_testr   
weight_argrv   r3   wrapped  s     *
z _weight_checked.<locals>.wrapped)r   )r[   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r2   r   r3   _weight_checked  s    .Zr   ri   )r   r   )r   r   r   )r   r   r   )r   r   r   r   )r   )r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zej	d	d
dddddde
jgdd Zdd Zdd Zdd Zd'ddZdd Zdd Zd d! Zd"d# Zd$d% Zd&S )(	TestCdistc                 C   s@   g d| _ tttjtjgttjtjgtjtjgtjgd| _d S N)rL   rM   rN   rK   rJ   )booluintr   rZ   rnd_eo_namesr,   r+   rW   rZ   r   valid_upcastsselfr2   r2   r3   setup_method  s    

zTestCdist.setup_methodc                 C   s  g dg dg dg}g dg dg dg}dt dd	}dgd
 }tt& t||fd|i| W d    n1 s|0    Y  tt* t||fdt|i| W d    n1 s0    Y  tt* t||fdd| i| W d    n1 s0    Y  tt( t||g|R d|i W d    n1 sJ0    Y  tt, t||g|R dt|i W d    n1 s0    Y  tt, t||g|R dd| i W d    n1 s0    Y  d S )Nr   r         @333333?ffffff@333333@皙@r   皙@g      @      @g       @g      @333333@g @g      @r   r   Q	@r   ZN0tV4l1D_p4raMr      r4   test_)rW   arangepytestraisesr   r   eval)r   r4   X1X2r   r   r2   r2   r3   test_cdist_extra_args  s     
48:8<zTestCdist.test_cdist_extra_argsc              	   C   s  ddd}g dg dg dg}g dg d	g d
g}dt dd}dgd }tt t||| W d    n1 s|0    Y  tt$ t|||g|R   W d    n1 s0    Y  tt$ t|||fi | W d    n1 s0    Y  tt" t|||ddd W d    n1 s60    Y  tt$ t|||dddd W d    n1 sv0    Y  tt$ t|||dddd W d    n1 s0    Y  tt" t|||ddd W d    n1 s0    Y  tt  t|||dd W d    n1 s00    Y  tt t|||d W d    n1 sj0    Y  tt$ t|||dddd W d    n1 s0    Y  tt|||dddd d S )Nri   r   c                 S   s   || | S rk   r2   r   yargkwargkwarg2r2   r2   r3   
_my_metric  s    z:TestCdist.test_cdist_extra_args_custom.<locals>._my_metricr   r   r   r   r   r   r   r   r   r   r   ffffff
@r   r  r   皙?r4   r   r  皙@)ri   r   )rW   r   r   r   r   r   r
   )r   r  r   r   r   r   r2   r2   r3   test_cdist_extra_args_custom  s<    

*2224420.4
z&TestCdist.test_cdist_extra_args_customc                 C   sD   d}t d }t d }t||d}t||d}t|||tdkd d S )NV瞯<cdist-X1cdist-X2r   test_euclideanr   rtolr   rX   wcdist_no_constr
   r   )r   epsr   r   Y1Y2r2   r2   r3   #test_cdist_euclidean_random_unicode  s    z-TestCdist.test_cdist_euclidean_random_unicodep皙?      ?r   Gz?r   gffffff@gffffff@c                 C   sN   d}t d }t d }t||d|d}t||d|d}t||d|tdkd	 d S )
NvIh%<=r  r  r#   r  test_minkowskir   r   )r   r  r   r  )r   r  r  r   r   r  r  r2   r2   r3   test_cdist_minkowski_random  s    z%TestCdist.test_cdist_minkowski_randomc                 C   sb   d}t d }t d }t||d}dd }dt||| ||| j }t|||tdkd	 d S )
N+=r  r  r   c                 S   s   t jj| ddddS )Nri   rv   rw   )rW   linalgr   r   )Xr2   r2   r3   norms  s    z1TestCdist.test_cdist_cosine_random.<locals>.normsri   r   r  )rX   wcdistrW   dotTr
   r   )r   r  r   r   r  r!  r  r2   r2   r3   test_cdist_cosine_random  s    "z"TestCdist.test_cdist_cosine_randomc                 C   s
  t dgdgg}t dgdgg}t||dd}t|dt dgt dt dgg t d	d	gd
d	gg}t d	dgdd	gd	dgg}t||dd}t d}t||||gdd| dgg tt* td	dggddggdd W d    n1 s0    Y  d S )Nr   r      r"   r4                 @      ?r   rw   ri   r   )rW   r   r   r
   sqrtr   r   rr   )r   x1x2distrt2r2   r2   r3   test_cdist_mahalanobis  s    (
z TestCdist.test_cdist_mahalanobisc                    sV   G dd d  fdd}t j  ggtd}t|||d}d}t||tdkd	 d S )
Nc                   @   s   e Zd ZdS )z6TestCdist.test_cdist_custom_notdouble.<locals>.myclassNr   
__module____qualname__r2   r2   r2   r3   myclass	  s   r4  c                    s(   t | d  rt |d  s$tddS Nr   zType has been changed+?
isinstancerr   r   r   r4  r2   r3   r    s    z9TestCdist.test_cdist_custom_notdouble.<locals>._my_metricrE   r'  r6  r   r   )rW   r   objectr   r   r   )r   r  rH   Zcdist_yright_yr2   r:  r3   test_cdist_custom_notdouble  s    z%TestCdist.test_cdist_custom_notdoubleHz>c                 K   s  zPt ||fd|i|}t ||fdt|i|}t ||fdd| i|}W n ty` }	 z|	j}
tdkrt|
j t|	 t|
& t ||fd|i| W d    n1 s0    Y  t|
* t ||fdt|i| W d    n1 s0    Y  t|
* t ||fdd| i| W d    n1 sB0    Y  W Y d }	~	n2d }	~	0 0 t	|||tdkd t	|||tdkd d S Nr4   r   r   r  )
r   r   r   	__class__r   printr   r   r   r
   )r   r   r   r4   r  r   y1y2y3r   e_clsr2   r2   r3   _check_calling_conventions  s"     
48Pz$TestCdist._check_calling_conventionsc                 C   s  | j D ]
}t| d d dd d df }t| dd dd d df }tdkrZtd|d| |dv rld|vrlq| ||| |d	krt||gtj}tj	|d
dd}| j||||d q|dkrt||gtj}t
t|j}ttj|j}| j||||d qd S )Nr&  r   ri   r   	testing:  with: >   r*   r   r'   r!   r%   r(   r$   r   r&   r   rt   r   Vr"   VI)r   rX   r   rB  rG  rW   vstackr   r   var
atleast_2dcovr$  r   r  inv)r   r4   eo_namer   r   ZX12rL  rN  r2   r2   r3   test_cdist_calling_conventions*  s&    z(TestCdist.test_cdist_calling_conventionsc                 C   s|  d}t d | jd ft d | jd ft d | jd ft d | jd	 fg}|D ](}|d
 d d dd d df }|d
 dd dd d df }zt|||d}W n ty: } z|j}	tdkrt|	j t| |d D ]N}
|
|}|
|}t	|	 t|||d W d    q1 s0    Y  qW Y d }~qLd }~0 0 |d D ]0}
t|
||
||d}t
|||tdkd qDqLd S )Nr?  rJ   r   rN   r   rM   r   rL   rZ   r   r&  r   ri   r   r'  r  )rX   r   r   r   rA  r   rB  r   r   r   r
   )r   r4   r  teststestr   r   rC  r   rF  new_typeZX1newZX2newrD  r2   r2   r3   test_cdist_dtype_equivalenceI  s0    

Fz&TestCdist.test_cdist_dtype_equivalencec                 C   s(  d}t d }t d }|jd |jd  }}t }|dkr@d|d< tj||ftjd}t|||fi |}	t|||fd	|i|}
t|	|
|td
kd t	|
|u  tj|d |d ftjd}t
t( t|||fd	|i| W d    n1 s0    Y  tjd
| d
| ftjdd d d
d d d
f }tj||ftjdd}t
t( t|||fd	|i| W d    n1 s~0    Y  t
t( t|||fd	|i| W d    n1 s0    Y  tj||ftjd}t
t( t|||fd	|i| W d    n1 s0    Y  d S )Nr
  r  r  r   r#   r  r  rE   outr   r  ri   F)rF   order)rX   r   dictrW   emptyr   r   r
   r   r   r   r   rr   int64)r   r4   r  r   r   Zout_rZout_cr   out1r  r  out2out3Zout4out5r2   r2   r3   test_cdist_outd  s8    688zTestCdist.test_cdist_outc           
      C   s   d}t d d d dd d df }t d d d dd d df }| }| }t|| t|| t|jj  t|jj  t|jj t|jj t }|dkrd|d< t|||fi |}t|||fi |}	t||	|t	dkd d S )	Nr
  r  r   r  r#   r  r  r  )
rX   copyr   r   flagsc_contiguousr]  r   r
   r   )
r   r4   r  r   r   X1_copyZX2_copyr   r  r  r2   r2   r3   test_striding  s"    

zTestCdist.test_stridingc                 C   s   t jdd}t jdd}t }|dkr2d|d< t||fd|i|}dd |||fD }~~~trlt  tdd	 |D sJ d S )
N
   r#   r  r  r4   c                 S   s   g | ]}t |qS r2   )weakrefref)rd   vr2   r2   r3   rf     rg   z1TestCdist.test_cdist_refcount.<locals>.<listcomp>c                 s   s   | ]}| d u V  qd S rk   r2   )rd   Zweak_refr2   r2   r3   rm     rg   z0TestCdist.test_cdist_refcount.<locals>.<genexpr>)rW   r   r   r]  r   r   r   rq   )r   r4   r,  r-  r   rZ  Z	weak_refsr2   r2   r3   test_cdist_refcount  s    zTestCdist.test_cdist_refcountN)r?  )r   r2  r3  r   r   r	  r  r   markparametrizerW   infr  r%  r0  r>  rG  rU  rY  rd  ri  rn  r2   r2   r2   r3   r     s"   	$


'r   c                	   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
jjdd Ze
jjdd Ze
jjdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Ze
jjd'd( Ze
jjd)d* Ze
jjd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Ze
jjd5d6 Z e
jjd7d8 Z!e
jjd9d: Z"d;d< Z#d=d> Z$d?d@ Z%e
jjdAdB Z&e
jjdCdD Z'e
jjdEdF Z(e
j)dGdHdIdJdKdLe*j+gdMdN Z,dOdP Z-dQdR Z.dSdT Z/e
jjdUdV Z0e
jjdWdX Z1e
jjdYdZ Z2e
jjd[d\ Z3e
jjd]d^ Z4e
jjd_d` Z5dadb Z6dcdd Z7dedf Z8dgdh Z9didj Z:dkdl Z;dmdn Z<dodp Z=dqdr Z>dsdt Z?dudv Z@dwdx ZAdydz ZBd{d| ZCd}d~ ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^e
jjdd Z_dd Z`dd ZadddZbdd Zcdd Zddd ZeddÄ ZfdS )	TestPdistc                 C   s@   g d| _ tttjtjgttjtjgtjtjgtjgd| _d S r   r   r   r2   r2   r3   r     s    

zTestPdist.setup_methodc                 C   s  ddgddgddgg}dt dd}dgd	 }tt$ t|fd
|i| W d    n1 sd0    Y  tt( t|fd
t|i| W d    n1 s0    Y  tt( t|fd
d| i| W d    n1 s0    Y  tt& t|g|R d
|i W d    n1 s*0    Y  tt* t|g|R d
t|i W d    n1 sp0    Y  tt* t|g|R d
d| i W d    n1 s0    Y  d S )Nr   r   r   r   r   r   r   r   r   r4   r   )rW   r   r   r   r   r   r   )r   r4   r   r   r   r2   r2   r3   test_pdist_extra_args  s    
2666:zTestPdist.test_pdist_extra_argsc                 C   s  ddd}ddgddgd	dgg}d
t dd}d
gd }tt t|| W d    n1 sd0    Y  tt" t||g|R   W d    n1 s0    Y  tt" t||fi | W d    n1 s0    Y  tt  t||d	dd W d    n1 s0    Y  tt" t||ddd	d W d    n1 sV0    Y  tt" t||ddd	d W d    n1 s0    Y  tt  t||dd	d W d    n1 s0    Y  tt t||dd	 W d    n1 s
0    Y  tt t||d W d    n1 sB0    Y  tt" t||dd	dd W d    n1 s0    Y  tt||dddd d S )Nri   r   c                 S   s   || | S rk   r2   r   r2   r2   r3   r    s    z:TestPdist.test_pdist_extra_args_custom.<locals>._my_metricr   r   r   r   r   r   r   r   r  r  r  r  r  r  )ri   r   )rW   r   r   r   r   r   r
   )r   r  r   r   r   r2   r2   r3   test_pdist_extra_args_custom  s:    

(000220.,2z&TestPdist.test_pdist_extra_args_customc                 C   s0   d}t d }t d }t|d}t|||d d S Nr?  pdist-double-inppdist-euclideanr   r  rX   wpdist_no_constr
   r   r  r   Y_rightY_test1r2   r2   r3   test_pdist_euclidean_random  s
    
z%TestPdist.test_pdist_euclidean_randomc                 C   s0   d}t d }t d }t|d}t|||d d S ru  ry  r{  r2   r2   r3   test_pdist_euclidean_random_u  s
    
z'TestPdist.test_pdist_euclidean_random_uc                 C   s6   d}t td }td }t|d}t|||d d S ru  rW   rZ   rX   rz  r
   r{  r2   r2   r3   #test_pdist_euclidean_random_float32  s
    
z-TestPdist.test_pdist_euclidean_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr?  rv  rw  r  rx  ry  r   r  r   r|  Y_test2r2   r2   r3    test_pdist_euclidean_random_nonC  s
    
z*TestPdist.test_pdist_euclidean_random_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Nr?  irispdist-euclidean-irisr   rx  ry  r{  r2   r2   r3    test_pdist_euclidean_iris_double  s
    
z*TestPdist.test_pdist_euclidean_iris_doublec                 C   s<   d}t td }td }t|d}t|||tdkd d S )Nr   r  r  r   r   r  rW   rZ   rX   rz  r
   r   r{  r2   r2   r3   !test_pdist_euclidean_iris_float32  s
    
z+TestPdist.test_pdist_euclidean_iris_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr?  r  r  r  rx  ry  r  r2   r2   r3   test_pdist_euclidean_iris_nonC&  s
    
z(TestPdist.test_pdist_euclidean_iris_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Nr?  rv  pdist-seuclideanr&   rx  rX   r   r
   r{  r2   r2   r3   test_pdist_seuclidean_random0  s
    
z&TestPdist.test_pdist_seuclidean_randomc                 C   sb   d}t td }td }t|d}t|||d t j|ddd}t|d|d	}t|||d d S )
Nr?  rv  r  r&   rx  r   ri   rJ  rK  )rW   rZ   rX   r   r
   rP  )r   r  r   r|  r}  rL  r  r2   r2   r3   $test_pdist_seuclidean_random_float327  s    
z.TestPdist.test_pdist_seuclidean_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr?  rv  r  test_seuclideanrx  r  r  r2   r2   r3   !test_pdist_seuclidean_random_nonCC  s
    
z+TestPdist.test_pdist_seuclidean_random_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Nr?  r  pdist-seuclidean-irisr&   rx  r  r{  r2   r2   r3   test_pdist_seuclidean_irisK  s
    
z$TestPdist.test_pdist_seuclidean_irisc                 C   s6   d}t td }td }t|d}t|||d d S )Nr   r  r  r&   rx  )rW   rZ   rX   r   r
   r{  r2   r2   r3   "test_pdist_seuclidean_iris_float32R  s
    
z,TestPdist.test_pdist_seuclidean_iris_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr?  r  r  r  rx  r  r  r2   r2   r3   test_pdist_seuclidean_iris_nonCZ  s
    
z)TestPdist.test_pdist_seuclidean_iris_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S Nr?  rv  pdist-cosiner   rx  rX   wpdistr
   r{  r2   r2   r3   test_pdist_cosine_randomc  s
    
z"TestPdist.test_pdist_cosine_randomc                 C   s6   d}t td }td }t|d}t|||d d S r  rW   rZ   rX   r  r
   r{  r2   r2   r3    test_pdist_cosine_random_float32j  s
    
z*TestPdist.test_pdist_cosine_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr?  rv  r  test_cosinerx  r  r  r2   r2   r3   test_pdist_cosine_random_nonCq  s
    
z'TestPdist.test_pdist_cosine_random_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Nr   r  pdist-cosine-irisr   r   r  r{  r2   r2   r3   test_pdist_cosine_irisy  s
    
z TestPdist.test_pdist_cosine_irisc                 C   s<   d}t td }td }t|d}t|||tdkd d S )Nr   r  r  r   r   r   r   )rW   rZ   rX   r  r
   r   r{  r2   r2   r3   test_pdist_cosine_iris_float32  s
    
z(TestPdist.test_pdist_cosine_iris_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr   r  r  r  r   r  r  r2   r2   r3   test_pdist_cosine_iris_nonC  s
    
z%TestPdist.test_pdist_cosine_iris_nonCc                 C   sD   t t jdd}t ||g}tt|dd dkdd d S )Ni9  [   r   r   z&cosine distance should be non-negative)msg)rW   absr   r   r   rO  r   r  )r   r   r   r2   r2   r3   test_pdist_cosine_bounds  s
    z"TestPdist.test_pdist_cosine_boundsc                 C   s0   d}t d }t d }t|d}t|||d d S Nr?  rv  pdist-cityblockr   rx  ry  r{  r2   r2   r3   test_pdist_cityblock_random  s
    
z%TestPdist.test_pdist_cityblock_randomc                 C   s6   d}t td }td }t|d}t|||d d S r  r  r{  r2   r2   r3   #test_pdist_cityblock_random_float32  s
    
z-TestPdist.test_pdist_cityblock_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr?  rv  r  test_cityblockrx  ry  r  r2   r2   r3    test_pdist_cityblock_random_nonC  s
    
z*TestPdist.test_pdist_cityblock_random_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Nr  r  pdist-cityblock-irisr   rx  ry  r{  r2   r2   r3   test_pdist_cityblock_iris  s
    
z#TestPdist.test_pdist_cityblock_irisc                 C   s<   d}t td }td }t|d}t|||tdkd d S )Nr   r  r  r   r   r  r  r{  r2   r2   r3   !test_pdist_cityblock_iris_float32  s
    
z+TestPdist.test_pdist_cityblock_iris_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr  r  r  r  rx  ry  r  r2   r2   r3   test_pdist_cityblock_iris_nonC  s
    
z(TestPdist.test_pdist_cityblock_iris_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S Nr?  rv  pdist-correlationr   rx  r  r{  r2   r2   r3   test_pdist_correlation_random  s
    
z'TestPdist.test_pdist_correlation_randomc                 C   s6   d}t td }td }t|d}t|||d d S r  r  r{  r2   r2   r3   %test_pdist_correlation_random_float32  s
    
z/TestPdist.test_pdist_correlation_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr?  rv  r  test_correlationrx  r  r  r2   r2   r3   "test_pdist_correlation_random_nonC  s
    
z,TestPdist.test_pdist_correlation_random_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Nr?  r  pdist-correlation-irisr   rx  r  r{  r2   r2   r3   test_pdist_correlation_iris  s
    
z%TestPdist.test_pdist_correlation_irisc                 C   s<   d}t d }tt d }t|d}t|||tdkd d S )Nr?  r  r  r   r   r  )rX   rW   rZ   r  r
   r   r{  r2   r2   r3   #test_pdist_correlation_iris_float32  s
    
z-TestPdist.test_pdist_correlation_iris_float32c                 C   sF   t jdkrd}n
td td }td }t|d}t|||d d S )Nl        r?  zsee gh-16456r  r  r  rx  )sysmaxsizer   skiprX   r  r
   r  r2   r2   r3    test_pdist_correlation_iris_nonC  s    


z*TestPdist.test_pdist_correlation_iris_nonCr  r  r  r   r   皙	@c                 C   s<   d}t d }t|d|d}t|d|d}t||d|d d S )Nr  rv  r#   r  r  r   )r   r  ry  )r   r  r  r   r  r  r2   r2   r3   test_pdist_minkowski_random_p  s
    z'TestPdist.test_pdist_minkowski_random_pc                 C   s4   d}t d }t d }t|ddd}t|||d d S Nr?  rv  pdist-minkowski-3.2r#   r  r  rx  ry  r{  r2   r2   r3   test_pdist_minkowski_random  s
    z%TestPdist.test_pdist_minkowski_randomc                 C   s:   d}t td }td }t|ddd}t|||d d S r  r  r{  r2   r2   r3   #test_pdist_minkowski_random_float32  s
    z-TestPdist.test_pdist_minkowski_random_float32c                 C   s4   d}t d }t d }t|ddd}t|||d d S )Nr?  rv  r  r  r  r  rx  ry  r  r2   r2   r3    test_pdist_minkowski_random_nonC  s
    z*TestPdist.test_pdist_minkowski_random_nonCc                 C   s4   d}t d }t d }t|ddd}t|||d d S )Nr?  r  pdist-minkowski-3.2-irisr#   r  r  rx  ry  r{  r2   r2   r3   test_pdist_minkowski_3_2_iris  s
    z'TestPdist.test_pdist_minkowski_3_2_irisc                 C   s:   d}t td }td }t|ddd}t|||d d S )Nr   r  r  r#   r  r  rx  r  r{  r2   r2   r3   %test_pdist_minkowski_3_2_iris_float32  s
    z/TestPdist.test_pdist_minkowski_3_2_iris_float32c                 C   s4   d}t d }t d }t|ddd}t|||d d S )Nr?  r  r  r  r  r  rx  ry  r  r2   r2   r3   "test_pdist_minkowski_3_2_iris_nonC&  s
    z,TestPdist.test_pdist_minkowski_3_2_iris_nonCc                 C   s4   d}t d }t d }t|ddd}t|||d d S )Nr?  r  pdist-minkowski-5.8-irisr#   r   r  rx  ry  r{  r2   r2   r3   test_pdist_minkowski_5_8_iris.  s
    z'TestPdist.test_pdist_minkowski_5_8_irisc                 C   s@   d}t td }td }t|ddd}t|||tdkd d S )	Nr   r  r  r#   r   r  r   r  r  r{  r2   r2   r3   %test_pdist_minkowski_5_8_iris_float326  s
    z/TestPdist.test_pdist_minkowski_5_8_iris_float32c                 C   s4   d}t d }t d }t|ddd}t|||d d S )Nr?  r  r  r  r   r  rx  ry  r  r2   r2   r3   "test_pdist_minkowski_5_8_iris_nonC>  s
    z,TestPdist.test_pdist_minkowski_5_8_iris_nonCc                 C   s   t g ddd}t|dd}t|dt dt dt dt dt d	g t d
d
gdd
gd
dgdd
gd
dgg}t|dd}t d}t|||||dd| ddd| dg
 tt( t	d
dgddggdd W d    n1 s0    Y  d S )N)r   r   r   r   rw   ri   r"   r'  r(  r*  r)  r   r   r   r   r   )
rW   r   r   r   r
   r+  r   r   rr   r  )r   r   r.  r/  r2   r2   r3   test_pdist_mahalanobisF  s    (
&z TestPdist.test_pdist_mahalanobisc                 C   s0   d}t d }t d }t|d}t|||d d S Nr
  rI   pdist-hammingr   rx  r  r{  r2   r2   r3   test_pdist_hamming_randomW  s
    
z#TestPdist.test_pdist_hamming_randomc                 C   s6   d}t td }td }t|d}t|||d d S r  r  r{  r2   r2   r3   !test_pdist_hamming_random_float32^  s
    
z+TestPdist.test_pdist_hamming_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S Nr
  rI   r  Ztest_hammingrx  r  r  r2   r2   r3   test_pdist_hamming_random_nonCe  s
    
z(TestPdist.test_pdist_hamming_random_nonCc                 C   s6   d}t td }td }t|d}t|||d d S r  rW   r   rX   r  r
   r{  r2   r2   r3   test_pdist_dhamming_randoml  s
    
z$TestPdist.test_pdist_dhamming_randomc                 C   s6   d}t td }td }t|d}t|||d d S r  r  r{  r2   r2   r3   "test_pdist_dhamming_random_float32s  s
    
z,TestPdist.test_pdist_dhamming_random_float32c                 C   s6   d}t td }td }t|d}t|||d d S r  r  r  r2   r2   r3   test_pdist_dhamming_random_nonCz  s
    
z)TestPdist.test_pdist_dhamming_random_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S N:0yE>rI   pdist-jaccardr   rx  r  r{  r2   r2   r3   test_pdist_jaccard_random  s
    
z#TestPdist.test_pdist_jaccard_randomc                 C   s6   d}t td }td }t|d}t|||d d S r  r  r{  r2   r2   r3   !test_pdist_jaccard_random_float32  s
    
z+TestPdist.test_pdist_jaccard_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S Nr  rI   r  test_jaccardrx  r  r  r2   r2   r3   test_pdist_jaccard_random_nonC  s
    
z(TestPdist.test_pdist_jaccard_random_nonCc                 C   s6   d}t td }td }t|d}t|||d d S r  r  r{  r2   r2   r3   test_pdist_djaccard_random  s
    
z$TestPdist.test_pdist_djaccard_randomc                 C   s6   d}t td }td }t|d}t|||d d S r  r  r{  r2   r2   r3   "test_pdist_djaccard_random_float32  s
    
z,TestPdist.test_pdist_djaccard_random_float32c                 C   s,   d}t tdd}ttd||d d S )Nr
  r&  r   r   rj  rx  r   rW   zerosr
   r   r  Yr2   r2   r3   test_pdist_djaccard_allzeros  s    z&TestPdist.test_pdist_djaccard_allzerosc                 C   s6   d}t td }td }t|d}t|||d d S r  r  r  r2   r2   r3   test_pdist_djaccard_random_nonC  s
    
z)TestPdist.test_pdist_djaccard_random_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Ndy=rv  pdist-jensenshannonr    rx  r  r{  r2   r2   r3   test_pdist_jensenshannon_random  s
    
z)TestPdist.test_pdist_jensenshannon_randomc                 C   s<   d}t td }td }t|d}t|||tdkd d S )Nr  rv  r  r    r   r  rW   rZ   rX   r   r
   r   r{  r2   r2   r3   'test_pdist_jensenshannon_random_float32  s
    
z1TestPdist.test_pdist_jensenshannon_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr  rv  r  test_jensenshannonrx  r  r  r2   r2   r3   $test_pdist_jensenshannon_random_nonC  s
    
z.TestPdist.test_pdist_jensenshannon_random_nonCc                 C   s<   t  rd}nd}td }td }t|d}t|||d d S )Ng&.=g-q=r  pdist-jensenshannon-irisr    r   )ra   rX   r   r
   r{  r2   r2   r3   test_pdist_jensenshannon_iris  s    
z'TestPdist.test_pdist_jensenshannon_irisc                 C   s<   d}t td }td }t|d}t|||tdkd d S )Ngư>r  r  r    r   r  r  r{  r2   r2   r3   %test_pdist_jensenshannon_iris_float32  s
    
z/TestPdist.test_pdist_jensenshannon_iris_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Ng-C6
?r  r  r  rx  r  r  r2   r2   r3   "test_pdist_jensenshannon_iris_nonC  s
    
z,TestPdist.test_pdist_jensenshannon_iris_nonCc                 C   s,   d}t tdd}ttd||d d S )Nr
  r  r  rj  rx  r  r  r2   r2   r3   !test_pdist_djaccard_allzeros_nonC  s    z+TestPdist.test_pdist_djaccard_allzeros_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Nr  rv  pdist-chebyshevr   rx  r  r{  r2   r2   r3   test_pdist_chebyshev_random  s
    
z%TestPdist.test_pdist_chebyshev_randomc                 C   s<   d}t td }td }t|d}t|||tdkd d S )Nr?  rv  r  r   r   r  r  r{  r2   r2   r3   #test_pdist_chebyshev_random_float32  s
    
z-TestPdist.test_pdist_chebyshev_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr  rv  r  test_chebyshevrx  r  r  r2   r2   r3    test_pdist_chebyshev_random_nonC  s
    
z*TestPdist.test_pdist_chebyshev_random_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Nr  r  pdist-chebyshev-irisr   rx  r  r{  r2   r2   r3   test_pdist_chebyshev_iris  s
    
z#TestPdist.test_pdist_chebyshev_irisc                 C   s<   d}t td }td }t|d}t|||tdkd d S )Nr   r  r  r   r   r  r  r{  r2   r2   r3   !test_pdist_chebyshev_iris_float32   s
    
z+TestPdist.test_pdist_chebyshev_iris_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr  r  r  r  rx  r  r  r2   r2   r3   test_pdist_chebyshev_iris_nonC  s
    
z(TestPdist.test_pdist_chebyshev_iris_nonCc                 C   sh   t tg dtg d}t tjg dtdtjg dtd}t|dddd t|dddd d S Nri   r   ri   ri   r   ri   ri   r   ri   ri   rE   333333?r   绽|=r  r   	wmatchingrW   r   r   r
   r   mm2r2   r2   r3   test_pdist_matching_mtica1  s    z$TestPdist.test_pdist_matching_mtica1c                 C   sh   t tg dtg d}t tjg dtdtjg dtd}t|dddd t|dddd d S Nri   r   ri   ri   ri   r   rE   UUUUUU?r   r  r  r  r  r2   r2   r3   test_pdist_matching_mtica2  s    z$TestPdist.test_pdist_matching_mtica2c                 C   sh   t tg dtg d}t tjg dtdtjg dtd}t|dddd t|dddd d S r  wjaccardrW   r   r   r
   r  r2   r2   r3   test_pdist_jaccard_mtica1   s    z#TestPdist.test_pdist_jaccard_mtica1c                 C   sh   t tg dtg d}t tjg dtdtjg dtd}t|dddd t|dddd d S r
  r  r  r2   r2   r3   test_pdist_jaccard_mtica2(  s    z#TestPdist.test_pdist_jaccard_mtica2c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S )Nr  r   rE   r   r   r  r  wyulerW   r   r   r   rB  r
   r  r2   r2   r3   test_pdist_yule_mtica10  s    z TestPdist.test_pdist_yule_mtica1c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S )Nr  r  rE   r   r   r  r  r  r  r2   r2   r3   test_pdist_yule_mtica2:  s    z TestPdist.test_pdist_yule_mtica2c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S )	Nr  r   rE   r   g۶m۶m?r   r  r  wdicerW   r   r   r   rB  r
   r  r2   r2   r3   test_pdist_dice_mtica1D  s    z TestPdist.test_pdist_dice_mtica1c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S )	Nr  r  rE   r   r*  r   r  r  r  r  r2   r2   r3   test_pdist_dice_mtica2N  s    z TestPdist.test_pdist_dice_mtica2c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S 	Nr  r   rE   r   g      ?r   r  r  )r(   rW   r   r   r   rB  r
   r  r2   r2   r3   test_pdist_sokalsneath_mtica1X  s    z'TestPdist.test_pdist_sokalsneath_mtica1c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S 	Nr  r  rE   r   g?r   r  r  )wsokalsneathrW   r   r   r   rB  r
   r  r2   r2   r3   test_pdist_sokalsneath_mtica2b  s    z'TestPdist.test_pdist_sokalsneath_mtica2c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S r  wrogerstanimotorW   r   r   r   rB  r
   r  r2   r2   r3    test_pdist_rogerstanimoto_mtica1l  s    z*TestPdist.test_pdist_rogerstanimoto_mtica1c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S r  r   r  r2   r2   r3    test_pdist_rogerstanimoto_mtica2v  s    z*TestPdist.test_pdist_rogerstanimoto_mtica2c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S )	Nr  r   rE   r   r  r   r  r  wrussellraorW   r   r   r   rB  r
   r  r2   r2   r3   test_pdist_russellrao_mtica1  s    z&TestPdist.test_pdist_russellrao_mtica1c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S )	Nr  r  rE   r   r  r   r  r  r$  r  r2   r2   r3   test_pdist_russellrao_mtica2  s    z&TestPdist.test_pdist_russellrao_mtica2c                 C   sN   t d }tdkrt|j|j d}t|d}t|d}t|||tdkd d S )Nr  r   r
  r   test_canberrar  )rX   r   rB  r   rF   rz  r
   )r   Dr  rC  rD  r2   r2   r3   test_pdist_canberra_match  s    

z#TestPdist.test_pdist_canberra_matchc                 C   s2   d}t dgdgfd}d}t|||tdkd d S )Nr  r  r   r   gd>@1?r   r  )rz  r
   r   )r   r  pdist_yr=  r2   r2   r3   test_pdist_canberra_ticket_711  s    z(TestPdist.test_pdist_canberra_ticket_711c                    sZ   G dd d  fdd}t j  g  ggtd}t||d}d}t||tdkd	 d S )
Nc                   @   s   e Zd ZdS )z6TestPdist.test_pdist_custom_notdouble.<locals>.myclassNr1  r2   r2   r2   r3   r4    s   r4  c                    s(   t | d  rt |d  s$tddS r5  r7  r9  r:  r2   r3   r    s    z9TestPdist.test_pdist_custom_notdouble.<locals>._my_metricrE   r'  r6  r   r;  )rW   r   r<  r   r   r   )r   r  rH   r+  r=  r2   r:  r3   test_pdist_custom_notdouble  s    z%TestPdist.test_pdist_custom_notdoubler?  c           
      K   s  zJt |fd|i|}t |fdt|i|}t |fdd| i|}W n
 tyT } z|j}	tdkr|t|	j t| t|	$ t |fd|i| W d    n1 s0    Y  t|	( t |fdt|i| W d    n1 s0    Y  t|	( t |fdd| i| W d    n1 s60    Y  W Y d }~n2d }~0 0 t	|||tdkd t	|||tdkd d S r@  )
r   r   r   rA  r   rB  r   r   r   r
   )
r   r   r4   r  r   rC  rD  rE  r   rF  r2   r2   r3   rG    s"    
26Nz$TestPdist._check_calling_conventionsc                 C   s   | j D ]}t| d d dd d df }tdkr<td|d| |dv rNd|vrNq| || |dkrtj|tjdd	d
}| j|||d q|dkrt	t
|tjj}ttj|j}| j|||d qd S )Nr&  r   rH  rI  >   r*   r   r'   r!   r%   r(   Zmatchingr$   r   r&   r   ri   rJ  rK  r"   rM  )r   rX   r   rB  rG  rW   rP  r   r   rQ  rR  r$  r   r  rS  )r   r4   rT  r   rL  rN  r2   r2   r3   test_pdist_calling_conventions  s     
z(TestPdist.test_pdist_calling_conventionsc                 C   sJ  d}t d | jd ft d | jd ft d | jd ft d | jd	 fg}|D ]}|d
 d d dd d df }zt||d}W n ty } zx|j}tdkrt|j t| |d D ]B}	|	|}
t	| t|
|d W d    q1 s0    Y  qW Y d }~qLd }~0 0 |d D ]*}	t|	||d}t
|||tdkd qqLd S )Nr?  rJ   r   rN   r   rM   r   rL   rZ   r   r&  r   r'  ri   r  )rX   r   r   r   rA  r   rB  r   r   r   r
   )r   r4   r  rV  rW  r   rC  r   rF  rX  r   rD  r2   r2   r3   test_pdist_dtype_equivalence  s,    
Bz&TestPdist.test_pdist_dtype_equivalencec                 C   s  d}t d d d dd d df }t|jd |jd d  d }t }|dkrVd|d	< tj|tjd
}t||fi |}t||fd|i|}t|||d t	||u  tj|d tjd
}	t
t& t||fd|	i| W d    n1 s0    Y  tjd| tjd
d d d }
t
t& t||fd|
i| W d    n1 sR0    Y  tj|tjd
}t
t& t||fd|i| W d    n1 s0    Y  d S )Nr
  rL   r&  r   r   ri   r#   r  r  rE   rZ  rx  r   )rX   r   r   r]  rW   r^  r   r   r
   r   r   r   rr   r_  )r   r4   r  r   Zout_sizer   r`  r|  r}  ra  rb  rc  r2   r2   r3   test_pdist_out  s(     46zTestPdist.test_pdist_outc                 C   s   d}t d d d dd d df }| }t|jj  t|jj t }|dkrXd|d< t||fi |}t||fi |}t|||tdkd d S )	Nr
  rL   r&  r   r#   r  r  r  )	rX   re  r   rf  rg  r]  r   r
   r   )r   r4   r  r   ZX_copyr   r  r  r2   r2   r3   ri     s    zTestPdist.test_stridingN)r?  )gr   r2  r3  r   rs  rt  r~  r  r  r  r   ro  Zslowr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rp  rW   rq  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r  r  r"  r#  r&  r'  r*  r,  r-  rG  r.  r/  r0  ri  r2   r2   r2   r3   rr    s   	#


		


	


	










		










	
"rr  c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestSomeDistanceFunctionsc                 C   s,   t g d}t g d}||fg| _d S )Nr   r   r   r   )rW   r   cases)r   r   r   r2   r2   r3   r   5  s    z&TestSomeDistanceFunctions.setup_methodc           	      C   s   | j D ]h\}}t||dd}t|d t||dd}t|d t||dd}t|d t||dd}t|d	 qtd
dg}tddg}tt||t|d|d d S )Nri   r  r         ?gqaz@r   gw@r  gR"6@i`  i  i^  i  uint16)r3  r#   r	   rW   r   r   r   )	r   r   r   dist1Zdist1p5dist2Zdist0p25re   r   r2   r2   r3   r  <  s    



z(TestSomeDistanceFunctions.test_minkowskic                 C   s.   | j D ]"\}}t||}t|td qd S )Nr&  )r3  
weuclideanr	   rW   r+  r   r   r   r.  r2   r2   r3   r  O  s    
z(TestSomeDistanceFunctions.test_euclideanc                 C   s(   | j D ]\}}t||}t|d qd S )Nr   )r3  wsqeuclideanr	   r9  r2   r2   r3   test_sqeuclideanT  s    
z*TestSomeDistanceFunctions.test_sqeuclideanc              	   C   s@   | j D ]4\}}t||}t|ddtdtd    qd S )Nr   g      2@      )r3  wcosiner	   rW   r+  r9  r2   r2   r3   r  Y  s    
z%TestSomeDistanceFunctions.test_cosinec                 C   s@   t tddgddgddts J t tddgddgts<J d S )Nri   F)Zcentered)r8  wcorrelationfloatr>  r   r2   r2   r3   test_cosine_output_dtype^  s     z2TestSomeDistanceFunctions.test_cosine_output_dtypec                 C   s`   t g d}t g d}| jD ]8\}}t||}t|dt ||t|t|    q"d S )N)      r   r   )UUUUUUrC  gUUUUUU@r   )rW   r   r3  r?  r	   r#  r   )r   ZxmZymr   r   r.  r2   r2   r3   r  c  s
    
z*TestSomeDistanceFunctions.test_correlationc                 C   sR   t g d}t g d}t||}d|  krHdt t jj ksNn J d S )N)%r(  r(  r(  r(  r(  r(         r(  r(  r(  rD  rD  rD  r(  rD  r(  rD  r(  r(  rB  rD  r(  r   r(  r(  rD  r(  r(  rD  r(  rD  rD  rD  rD  rD  rD  r(  )%r   r   r   r   r   r   rB  r   r   r   rB  rB  rB  r   rB  r   rB  r   r   r(  rB  r   r   r   r   rB  r   r   rB  r   rB  rB  rB  rB  rB  rB  r   r   rj  )rW   r   r   Zfinfor   r  r9  r2   r2   r3   test_correlation_positivej  s    
z3TestSomeDistanceFunctions.test_correlation_positivec                 C   sh   t g d}t g d}t g dg dg dg}| jD ]$\}}t|||}t|t d q>d S )Nr   r2  )r   r   r(  )r   r   r   )r(  r   r   g      @)rW   r   r3  r"   r	   r+  )r   r   r   vir.  r2   r2   r3   test_mahalanobisu  s    z*TestSomeDistanceFunctions.test_mahalanobisN)r   r2  r3  r   r  r  r;  r  rA  r  rE  rG  r2   r2   r2   r3   r1  3  s   r1  c                   @   sR   e Zd ZejejejejegZ	dd Z
dd Zdd Zdd Zd	d
 Zdd ZdS )TestSquareFormc                 C   s   | j D ]}| | qd S rk   )checked_dtypescheck_squareform_matrixr   rF   r2   r2   r3   test_squareform_matrix  s    
z%TestSquareForm.test_squareform_matrixc                 C   s   | j D ]}| | qd S rk   )rI  check_squareform_vectorrK  r2   r2   r3   test_squareform_vector  s    
z%TestSquareForm.test_squareform_vectorc                 C   s   t jd|d}t|}t|jd t|j| t jd|d}t|}t|jd t|j| t jddgddgg|d}t|}t|jd t|j| t|t jdg|d d S )N)r   r   rE   r   ri   ri   r   g@rh   )rW   r  r   r   r   rF   r   r   )r   rF   AZrAr2   r2   r3   rJ    s    z&TestSquareForm.check_squareform_matrixc                 C   s   t jd|d}t|}t|jd t|j| t|dgg t jdg|d}t|}t|jd t|j| t|t jddgddgg|d d S )NrO  rE   rP  r   g @)r   r   )rW   r  r   r   r   rF   r   r   )r   rF   rm  rvr2   r2   r3   rM    s    z&TestSquareForm.check_squareform_vectorc                 C   s   t ddD ]}| | q
d S )Nr   r&  )rs   check_squareform_multi_matrixr   nr2   r2   r3   test_squareform_multi_matrix  s    z+TestSquareForm.test_squareform_multi_matrixc           
      C   s   t j|d}t|}tt|jd t|}t|}|j}d}tdkrZt	|j|j|j tt|d tt|jd t|d |d  t
d|d D ]V}t
|d |d D ]>}	||	krt|||	f ||  |d7 }qt|||	f d qqd S )N   ri   r   r   r   )rW   r   r   rz  r   lenr   r   r   rB  rs   )
r   rU  r   r  rQ  ZYrskr   jr2   r2   r3   rS    s$    
z,TestSquareForm.check_squareform_multi_matrixN)r   r2  r3  rW   r   rZ   int32int8r   rI  rL  rN  rJ  rM  rV  rS  r2   r2   r2   r3   rH  ~  s   rH  c                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )TestNumObsYc                 C   s8   t ddD ](}tj|d}t|}tt|| q
d S )Nr   rj  rW  )rs   rW   r   r   rz  r   r   )r   rU  r   r  r2   r2   r3   test_num_obs_y_multi_matrix  s    z'TestNumObsY.test_num_obs_y_multi_matrixc                 C   s8   t t | d W d    n1 s*0    Y  d S Nri   )r   r   rr   check_yr   r2   r2   r3   test_num_obs_y_1  s    zTestNumObsY.test_num_obs_y_1c                 C   s   t | d d S Nr   r   ra  r   r2   r2   r3   test_num_obs_y_2  s    zTestNumObsY.test_num_obs_y_2c                 C   s   t | d d S )Nr   rd  r   r2   r2   r3   test_num_obs_y_3  s    zTestNumObsY.test_num_obs_y_3c                 C   s   t | d d S NrW  rd  r   r2   r2   r3   test_num_obs_y_4  s    zTestNumObsY.test_num_obs_y_4c                 C   s   t ddD ]}| | q
d S )Nr&     )rs   minit)r   r   r2   r2   r3   test_num_obs_y_5_10  s    zTestNumObsY.test_num_obs_y_5_10c              	   C   s|   t  }tddD ]}|||d  d  qtddD ]@}||vr6tt | | W d    q61 sl0    Y  q6d S Nr   ri  ri   r&  i   setrs   addr   r   rr   bad_yr   re   rU  r   r2   r2   r3   test_num_obs_y_2_100  s    z TestNumObsY.test_num_obs_y_2_100c                 C   s   t | | d S rk   rd  rT  r2   r2   r3   rj    s    zTestNumObsY.minitc                 C   s   t j|}t|S rk   )rW   r   r   r   r   rU  r   r2   r2   r3   rq    s    zTestNumObsY.bad_yc                 C   s   t | ||kS rk   )r   make_yrT  r2   r2   r3   ra    s    zTestNumObsY.check_yc                 C   s   t j||d  d S Nri   r   rW   r   r   rT  r2   r2   r3   ru    s    zTestNumObsY.make_yN)r   r2  r3  r_  rb  re  rf  rh  rk  rs  rj  rq  ra  ru  r2   r2   r2   r3   r^    s   r^  c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestNumObsDMc                 C   sV   t ddD ]F}tj|d}t|}t|}tdkrBt|j|j t	t
|| q
d S )Nri   rj  rW  r   )rs   rW   r   r   rz  r   r   rB  r   r   r   )r   rU  r   r  rQ  r2   r2   r3   test_num_obs_dm_multi_matrix  s    z)TestNumObsDM.test_num_obs_dm_multi_matrixc                 C   s   t | d d S )Nr   r   check_Dr   r2   r2   r3   test_num_obs_dm_0  s    zTestNumObsDM.test_num_obs_dm_0c                 C   s   t | d d S r`  rz  r   r2   r2   r3   test_num_obs_dm_1  s    zTestNumObsDM.test_num_obs_dm_1c                 C   s   t | d d S rc  rz  r   r2   r2   r3   test_num_obs_dm_2
  s    zTestNumObsDM.test_num_obs_dm_2c                 C   s   t | d d S rc  rz  r   r2   r2   r3   test_num_obs_dm_3  s    zTestNumObsDM.test_num_obs_dm_3c                 C   s   t | d d S rg  rz  r   r2   r2   r3   test_num_obs_dm_4  s    zTestNumObsDM.test_num_obs_dm_4c                 C   s   t | ||kS rk   )r   make_DrT  r2   r2   r3   r{    s    zTestNumObsDM.check_Dc                 C   s   t j||S rk   rw  rT  r2   r2   r3   r    s    zTestNumObsDM.make_DN)r   r2  r3  ry  r|  r}  r~  r  r  r{  r  r2   r2   r2   r3   rx    s   	rx  c                 C   s   t | ddS NT)throw)r   )r)  r2   r2   r3   is_valid_dm_throw  s    r  c                   @   st   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS )TestIsValidDMc                 C   sF   t jdt jd}tt t| W d    n1 s80    Y  d S )Nr&  rE   rW   r  r   r   r   rr   r  r   r)  r2   r2   r3   $test_is_valid_dm_improper_shape_1D_E   s    z2TestIsValidDM.test_is_valid_dm_improper_shape_1D_Ec                 C   s"   t jdt jd}tt|d d S )Nr  rE   FrW   r  r   r   r   r  r2   r2   r3   $test_is_valid_dm_improper_shape_1D_F%  s    z2TestIsValidDM.test_is_valid_dm_improper_shape_1D_Fc                 C   sF   t jdt jd}tt t| W d    n1 s80    Y  d S Nr   r   r   rE   r  r  r2   r2   r3   $test_is_valid_dm_improper_shape_3D_E)  s    z2TestIsValidDM.test_is_valid_dm_improper_shape_3D_Ec                 C   s"   t jdt jd}tt|d d S Nr  rE   Fr  r  r2   r2   r3   $test_is_valid_dm_improper_shape_3D_F.  s    z2TestIsValidDM.test_is_valid_dm_improper_shape_3D_Fc                 C   sf   t jd}t|}tddD ]}d|||f< qtt t| W d    n1 sX0    Y  d S )Nrj  r   r&  r   )	rW   r   r   r   rs   r   r   rr   r  r   r   r)  r   r2   r2   r3   #test_is_valid_dm_nonzero_diagonal_E2  s    z1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_Ec                 C   sB   t jd}t|}tddD ]}d|||f< qtt|d d S )Nrj  r   r&  r   F)rW   r   r   r   rs   r   r   r  r2   r2   r3   #test_is_valid_dm_nonzero_diagonal_F:  s
    z1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_Fc                 C   sZ   t jd}t|}|d d |d< tt t| W d    n1 sL0    Y  d S )Nrj  r   ri   ri   ri   r   )rW   r   r   r   r   r   rr   r  r   r   r)  r2   r2   r3   test_is_valid_dm_asymmetric_EA  s
    z+TestIsValidDM.test_is_valid_dm_asymmetric_Ec                 C   s6   t jd}t|}|d d |d< tt|d d S )Nrj  r  ri   r  FrW   r   r   r   r   r   r  r2   r2   r3   test_is_valid_dm_asymmetric_FH  s    z+TestIsValidDM.test_is_valid_dm_asymmetric_Fc                 C   s"   t jdt jd}tt|d d S )NrP  rE   Tr  r  r2   r2   r3   test_is_valid_dm_correct_1_by_1N  s    z-TestIsValidDM.test_is_valid_dm_correct_1_by_1c                 C   s&   t jd}t|}tt|d d S )Nri   Tr  r  r2   r2   r3   test_is_valid_dm_correct_2_by_2R  s    z-TestIsValidDM.test_is_valid_dm_correct_2_by_2c                 C   s&   t jd}t|}tt|d d S Nr   Tr  r  r2   r2   r3   test_is_valid_dm_correct_3_by_3W  s    z-TestIsValidDM.test_is_valid_dm_correct_3_by_3c                 C   s&   t jd}t|}tt|d d S )N   Tr  r  r2   r2   r3   test_is_valid_dm_correct_4_by_4\  s    z-TestIsValidDM.test_is_valid_dm_correct_4_by_4c                 C   s&   t jd}t|}tt|d d S )Nrj  Tr  r  r2   r2   r3   test_is_valid_dm_correct_5_by_5a  s    z-TestIsValidDM.test_is_valid_dm_correct_5_by_5N)r   r2  r3  r  r  r  r  r  r  r  r  r  r  r  r  r  r2   r2   r2   r3   r    s   r  c                 C   s   t | ddS r  )r   )r   r2   r2   r3   is_valid_y_throwg  s    r  c                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )TestIsValidYc                 C   sF   t jdt jd}tt t| W d    n1 s80    Y  d S )Nr   r   rE   rW   r  r   r   r   rr   r  r   r   r2   r2   r3   #test_is_valid_y_improper_shape_2D_Ep  s    z0TestIsValidY.test_is_valid_y_improper_shape_2D_Ec                 C   s"   t jdt jd}tt|d d S )Nr  rE   FrW   r  r   r   r   r  r2   r2   r3   #test_is_valid_y_improper_shape_2D_Fu  s    z0TestIsValidY.test_is_valid_y_improper_shape_2D_Fc                 C   sF   t jdt jd}tt t| W d    n1 s80    Y  d S r  r  r  r2   r2   r3   #test_is_valid_y_improper_shape_3D_Ey  s    z0TestIsValidY.test_is_valid_y_improper_shape_3D_Ec                 C   s"   t jdt jd}tt|d d S r  r  r  r2   r2   r3   #test_is_valid_y_improper_shape_3D_F~  s    z0TestIsValidY.test_is_valid_y_improper_shape_3D_Fc                 C   s   |  d}tt|d d S )Nr   Tcorrect_n_by_nr   r   r  r2   r2   r3   test_is_valid_y_correct_2_by_2  s    
z+TestIsValidY.test_is_valid_y_correct_2_by_2c                 C   s   |  d}tt|d d S r  r  r  r2   r2   r3   test_is_valid_y_correct_3_by_3  s    
z+TestIsValidY.test_is_valid_y_correct_3_by_3c                 C   s   |  d}tt|d d S )NrW  Tr  r  r2   r2   r3   test_is_valid_y_correct_4_by_4  s    
z+TestIsValidY.test_is_valid_y_correct_4_by_4c                 C   s   |  d}tt|d d S )Nr&  Tr  r  r2   r2   r3   test_is_valid_y_correct_5_by_5  s    
z+TestIsValidY.test_is_valid_y_correct_5_by_5c              	   C   s|   t  }tddD ]}|||d  d  qtddD ]@}||vr6tt | | W d    q61 sl0    Y  q6d S rl  rn  rr  r2   r2   r3   test_is_valid_y_2_100  s    z"TestIsValidY.test_is_valid_y_2_100c                 C   s   t j|}t|ddS r  )rW   r   r   r   rt  r2   r2   r3   rq    s    zTestIsValidY.bad_yc                 C   s   t j||d  d }|S rv  rw  rt  r2   r2   r3   r    s    zTestIsValidY.correct_n_by_nN)r   r2  r3  r  r  r  r  r  r  r  r  r  rq  r  r2   r2   r2   r3   r  k  s   	r  r  )g      $g      r(  c                 C   s   t t$ tddgddg|  W d    n1 s40    Y  t t* tddgddg| ddg W d    n1 sx0    Y  d S )Nri   r   r   rW  )r   r   rr   r#   r  r2   r2   r3   
test_bad_p  s    2r  c                   C   s@   t t" tg dg d W d    n1 s20    Y  d S )N)FFF)r   r   rr   r(   r2   r2   r2   r3   test_sokalsneath_all_false  s    r  c                   C   s4   t tg dg dd t tg dg dd d S )Nri   r   r   r   rW  r  ri   ri   ri   r   r   ri   r   ri   r   r   )r   	wcanberrar2   r2   r2   r3   r(    s    r(  c                   C   s<   t tg dg dddd t tg dg dddd d S )	Nr  r  gUUUUUU?   decimalr  r  r*  )r	   wbraycurtisr2   r2   r2   r3   test_braycurtis  s    r  c                  C   s  t g d} t g d}tt| |ddd tt| |t ddd tjtdd@ t| t j	d d f |t j	d d f t df W d    n1 s0    Y  tjtdd6 t| t j	d d f |t j	d d f  W d    n1 s0    Y  tjtdd6 t| d d t j	f |d d t j	f  W d    n1 sH0    Y  t 
d	d
d
}tt t|| W d    n1 s0    Y  tt t|| W d    n1 s0    Y  t jd}|d}|d}t||}t||}t|d
 |dd d S )N)ri   ri   ri   )r   r   r   r   r<  r  r   Input vector should be 1-DmatchrW  r   iIrj  )rW   r   r	   r:  r8  r+  r   r   rr   Znewaxisr   r   r   r   r   )r,  r-  r   rsr   d1d2r2   r2   r3   test_euclideans  s*    NDF**



r  c                  C   sH   g d} g d}t t t| | W d    n1 s:0    Y  d S )Nr   r   ri   r  r   r   rr   whammingr9  r2   r2   r3   test_hamming_unequal_length  s    r  c                  C   sZ   g d} g d}g d}d}t jt|d t| || W d    n1 sL0    Y  d S )Nr  r  z/'w' should have the same length as 'u' and 'v'.r  r  )urm  r   r  r2   r2   r3   "test_hamming_unequal_length_with_w  s    r  c                  C   s<   t jg ddd} t jg ddd}d}tt| || d S )N)eggsspamr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  z|S4rE   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  g?)rW   r   r
   r  )re   r   Zdesiredr2   r2   r3   test_hamming_string_array  s    

r  c                  C   sv   t g dg dg} t| ddd d}t| | ddd d}t| ddd}t| | ddd}t||dd t||dd d S )N)
QUUT@      Y@r  r  g      B@g      N@g     V@g     b@g      8@g      H@r#   ri   )r4   r  r   )r4   r  r
  rx  )rW   r   r   r   r
   )Zarr_inp0Zc0p1c1r2   r2   r3   test_minkowski_w   s    
r  c                  C   sB  g d} g d}t jt jt jt jfD ]6}tt j| |dt j||d}tt |j	t j
 q$t jt jt jt jfD ]^}t |j}tdgt j|g|d}tt j|g|ddg}t|| t|t |d  qpt jt jt jt jg}dD ]}tt |r|tt | q|D ]0}tt j| |dt j||d}t|j	| qd S )Nr  )rW  r&  r  rE   r   r   )Zfloat16Zfloat128)rW   r]  Zint16r\  r_  r:  asarrayr   r   rF   ZfloatingZuint8r5  Zuint32Zuint64Ziinfomaxr   r   rZ   Z	complex64Z
complex128hasattrr   getattr)r   r   rF   dZumaxr  r  Zdtypesr2   r2   r3   test_sqeuclidean_dtypes  s$    

r  c                  C   sN   g d} g d}dd | D }dd |D }t | |}t ||}t|| d S )N)TTF)TFTc                 S   s   g | ]}t |qS r2   r   rd   r   r2   r2   r3   rf   2  rg   z&test_sokalmichener.<locals>.<listcomp>c                 S   s   g | ]}t |qS r2   r  r  r2   r2   r3   rf   3  rg   )r'   r   )r  r   r   r   r6  r7  r2   r2   r3   test_sokalmichener.  s    

r  c            	      C   s   d} d}d}d}d||   || d||     }t |d tddgddgddgd}t || g d	}g d
}dD ]}t t|||gd qrd S )Nr(  g?r   r   gX$I?ri   r   r   )FFTTTFFTTTTTTFTFFFTT)TTTFFTTTFTTTTTFFFTTT)g?r  r   g      4@r  )r	   r'   )	ZntfZnftZnttZnffexpectedactualZa1Za2r   r2   r2   r3   test_sokalmichener_with_weight:  s     

r  c                 C   sN   t g dg dg dg dg}| }t|||  t||  t|| d S )Nr   r   r   g3333336@gL7@g333333F@)rW   r  re  r   r   r   )r4   r   rh  r2   r2   r3   test_modifies_inputP  s    

r  c              	   C   sV  t g dg dg dg dg}tt t||| d W d    n1 sP0    Y  tt t|| d W d    n1 s0    Y  dD ]}|di}|dkr| d	ks|d
kr| dks|dkr| dkrqtt$ t||| fi | W d    n1 s0    Y  tt" t|| fi | W d    q1 sF0    Y  qd S )Nr   r   r   r  r   )r  rL  rN  ZfoorL  r&   rN  r"   r  r#   )rW   r  r   r   r   r   r   )r4   r   r   r   r2   r2   r3   test_Xdist_deprecated_args\  s2    
,*4r  c              	   C   s   t d d d dd d df }t|jd }|d d d  |d d d< | dv rXtd | t| d|  fD ]v}tt t	|||d W d    n1 s0    Y  tt  t
||||d W d    qj1 s0    Y  qjd S )	NrL   r&  r   ri   )r&   r"   r    not applicabler   r  )rX   rW   r   r   r   r  r   r   rr   r   r   )r4   r   r   r  r2   r2   r3   test_Xdist_non_negative_weightsx  s    
,r  c                  C   s4  g d} t | }t||  t | tjd}t||  t|jtj dg} t | }t|jd t||  d} tjt	dd t |  W d    n1 s0    Y  t
dddd} tjt	dd t |  W d    n1 s0    Y  ddgd	d
gg} tjt	dd t |  W d    n1 s&0    Y  d S )Nr  rE   ri   r  r  r&  rw   r   r   rW  )r   r   rW   r   r   rF   rj   r   r   rr   r   r   r9  r2   r2   r3   test__validate_vector  s&    


&&r  c                  C   sp   t jdtd} t| d | d }|dks,J t| d}t|dg t| d d | d d d}t|dgg d S )N)r   r  rE   r   r(  r*   ri   )rW   r   r   r  r   r   r   )r   r  r2   r2   r3   test_yule_all_same  s    
r  c                  C   sJ  t tg dg ddd t tddgddgd t tg dg dd t tddggddggd	d
ddg t tddggddggdd
dg t tddggddggd	ddddgg t tddggddggddddgg tg dg dg dg} tg dg dg dg}t t| |d	d
g d t t| |dd
g d d S )N)r   r(  r(  )r(  r   r(  r   r   r(  r*  g)>d?r4  r   rv   ri   gД?T)rt   Zkeepdims)ri   r   r   rW  )r&  r     r_   )	   rj        )   r<  r  ri  )            )            )g'Y?gTyCЇ?gFw$?g\BZ?)g;0%7/?g)o?gku?)r	   r    rW   r   )re   r   r2   r2   r3   r    sJ    

r  c                  C   sh   t g d} t g d}t| |}t| |gdd}t|| tt | t |dd}t|| d S )N)ri   r   r   )r   r   r   r   r'  )rW   r   r   r   r
   r   rQ  )Zarr_1Zarr_2r  r  r2   r2   r3   test_gh_17703  s    



r  c                 C   sJ   | dv rt d tjdtjd}|jdd ttjj	| |||d d S )N)r    r"   r&   r  rj  rE   F)writer  )
r   r  rW   r   r   Zsetflagsr  scipyZspatialZdistance)r4   r   r2   r2   r3   test_immutable_input  s
    
r  )N)	NNFTFFFFN)N)r  os.pathrQ   	functoolsr   r   rk  numpyrW   r   Znumpy.linalgr   Znumpy.testingr   r   r   r   r	   r
   r   r   r   Zscipy.spatial.distancer  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   Zscipy._lib._utilr+   r,   Zfixturer4   rO   r   Z_tdistZ_ytdistrX   r^   ra   ru   r   r   r   r   r   r   r"  r  r  rz  r!  r  r  r  r  Z
wcityblockZ
wchebyshevr>  r?  Zwkulczynski1r  r8  r:  r  r  r  Zwsokalmichenerr%  r   rr  r1  rH  r^  rx  r  r  r  r  ro  rp  r  r  r(  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r2   r2   r2   r3   <module>#   s   (,\
 

     
0	




f  )       KC6#I9
!		