
    tKgH                    B   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jr                  e d	      d
        Z:g dZ; ejx                  g dg dg dg dg dg dgd      Z= ee=      Z>i Z?d Z@ e@        d ZAdUdZB	 	 	 	 	 dVdZCd ZDd ZEdUdZF eed      d dfd ZGd!dd" d#ddddddddddd$d  eed      fd%ZH eHed&d'      ZI eHed&dd(      ZJ eHed&dd&)      ZK eHed&ddd&*      ZL eHe/      ZM eHe)d+      xZNZO eHe5      ZP eHe'      ZQ eHe$      ZR eHe#      ZS eHe&      ZT eHe%      ZU eHe,      ZV eHe*      ZW eHe(d,      ZX eHe4d,      ZY eHe!      ZZ eHe"d,      Z[ eHe3      Z\ eHe2      Z] eHe0      Z^ G d- d.      Z_ G d/ d0      Z` G d1 d2      Za G d3 d4      Zb G d5 d6      Zc G d7 d8      Zdd9 Ze G d: d;      Zfd< Zg G d= d>      Zhej                  j                  d?g d@      dA        ZkdB ZldC ZmdD ZndE ZodF ZpdG ZqdH ZrdI ZsdJ ZtdK ZudL ZvdM ZwdN ZxdO ZydP ZzdQ Z{dR Z|dS Z}dT Z~y)W    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                     | j                   S )z;
    Fixture for all metrics in scipy.spatial.distance
    )param)requests    e/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/spatial/tests/test_distance.pymetricr5   D   s    
 ==    )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         )r7   r   '        )r8   r<   r     4     )r9   r=   r@   r      e  )r:   r>   rA   rC   r     )r;   r?   rB   rD   rE   r   doubledtypec                     t         D ]  } | j                  dd      j                  dd      }t        j                  j	                  t        j                  j                  t              d|       }t        |      }t        j                  |      t        |<   |j                           t        j                  t        d         t        d<   t        j                  t        d         t        d<   t        j                  t        d         t        d<   t        t        d	         t        d	<   t        t        d
         t        d
<   y )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nploadtxteoclosebool_float32r,   r-   )fnnamefqfnfps       r4   load_testing_filesrd   {   s    zz&"%--eR8ww||BGGOOH5vrB$Z::b>4

  !hhr*='>?BXXb);&<=B "

2.B+C DB#B'8$9:B%b);&<=Br6   c                  F    t        j                  d      j                  dk  S )Nr      )rZ   intpitemsize r6   r4   	_is_32bitrj      s    771:""r6   c                 |     D cg c]  }t        j                  |       c} |6 D cg c](  }|j                  dk7  rt        j                  |      n|* c} d}t	        d  D               |dk  r:t         fd D              st        d      t         d   j                        |   } |fz   S c c}w c c}w )N   r   c              3   F   K   | ]  }t        j                  |        y wN)rZ   
atleast_1d.0as     r4   	<genexpr>z _chk_asarrays.<locals>.<genexpr>   s     4V2==#Vs   !c              3   V   K   | ]   }|j                   d    j                   k(   " yw)r   N)ndim)rq   rr   arrayss     r4   rs   z _chk_asarrays.<locals>.<genexpr>   s#     <V166VAY^^+Vs   &)z(array ndim must be the same for neg axis)rZ   
asanyarrayru   raveltupleall
ValueErrorrange)rv   axisrr   s   `  r4   _chk_asarraysr~      s    (./1bmmA/F| "#!a "#1"((1+!3!#4V44Fax<V<<GHHVAY^^$T*TG 0#s
   B4-B9FTc
                 b   t        |       }
|
d d |
d   c} |xr | }|s|rt        d | D              }|r`| D cg c]*  }t        j                  t        j                  |            , }}t        |      r d}d}t        d t        | |      D              } t        j                        n/|r&t        j                  | d   j                           n| fz   S |	rt              |rt        |       t        fd| D              st        d      |rdk  j                         rt        d	      |rNt        j                  dkD        d   j                  j                  k  rt        fd
| D              }    |rdk(  j                         rd | fz   S c c}w )Nr}   c              3      K   | ]=  }t         j                  j                  |      t         j                  j                  u ? y wrn   )rZ   magetmasknomaskrp   s     r4   rs   z_chk_weights.<locals>.<genexpr>   s+     Q&QBEEMM!,BEELL@&s   AATc              3   h   K   | ]*  \  }}|rt         j                  j                  |      n| , y wrn   )rZ   r   masked_invalid)rq   rr   has_nans      r4   rs   z_chk_weights.<locals>.<genexpr>   s3      D-Bzq' 7>255//21D-Bs   02r   c              3   X   K   | ]!  }j                   |j                      fk(   # y wrn   shape)rq   rr   r}   weightss     r4   rs   z_chk_weights.<locals>.<genexpr>   s&     A&Qw}} 00&s   '*z*weights shape must match arrays along axiszweights cannot be negativec              3   N   K   | ]  }t        j                  |         yw)r   N)rZ   take)rq   rr   r}   pos_weightss     r4   rs   z_chk_weights.<locals>.<genexpr>   s"     Nv!2771k==vs   "%rl   )r~   anyrZ   isnansumry   ziprw   onesr   _freq_weights_weight_maskedrz   r{   nonzerosize)rv   r   r}   force_weightssimplify_weightspos_only	neg_check
nan_screenmask_screenddofchkedrr   has_nansr   s    ``          @r4   _chk_weightsr      s   
 &t,E":uRyLFD'=,=[Q&QQ178ABHHRVVAY'8x=K M D-0-BD DF --(	''&)//$/0$''( $7A&AAEFFgk&&(566jj1-a0gll*NvNNFk*GW\..0WdO##A 9s   /F,c                 z    | | S | j                  t              }| |k7  j                         rt        d| z        |S )Nz2frequency (integer count-type) weights required %s)astypeintr   r{   )r   int_weightss     r4   r   r      sC    ..%K;##%MPWWXXr6   c                    dt        j                  |      }| D ]  }t         j                  j                  |      }|t         j                  j                  u r?|j
                  dkD  r9t        fdt        |j
                        D              }|j                  |      }|d|j                  t              z
  z  } |S )Nr   rl   c              3   .   K   | ]  }|k7  s	|  y wrn   ri   )rq   ir}   s     r4   rs   z!_weight_masked.<locals>.<genexpr>   s     C1dQs   
r   )rZ   rw   r   r   r   ru   ry   r|   r   r   r   )rv   r   r}   rr   	axis_masknot_axess     `   r4   r   r      s    |mmG$GEEMM!$	$66A:CaffCCH!84I1y'',,,  Nr6   c                    | D cg c]Q  }t        j                  |j                  t         j                        r|j	                  t         j
                        n|S } }t        j                  |t         j
                        }t         j                  j                  |      }d }| d   j                     t        fd| D              sJ d       t        t        |      z        D ]}  }|j                  |z         }	||	   }
|j                         }||
z  ||	<   t        j                  |d|z
  |
z        }| D cg c]#  }t        j                  | |||	            % } } | |fS c c}w c c}w )NrG   c                     t        j                  t        j                  | ||            }|j                  t	        | j
                        D cg c]  }||k7  r| j                  |   nd c}      S c c}w )Nr   rl   )rZ   rw   r   reshaper|   ru   r   )rr   ixr}   recordr   s        r4   mytakez_rand_split.<locals>.mytake   si    rwwq"489~~(-aff7(51 ./$YqwwqzA=(57 8 	8 7s   A2r   c              3   B   K   | ]  }|j                      k(    y wrn   r   )rq   rr   r}   n_obss     r4   rs   z_rand_split.<locals>.<genexpr>   s     6v!qwwt}%vs   z#data must be aligned on sample axis      ?r   )rZ   
issubdtyperH   integerr   float64arrayrandomRandomStater   rz   r|   r   randintrandappend)rv   r   r}   	split_perseedarrseeded_randr   r   split_ixprev_wqrr   r   s     `          @r4   _rand_splitr      sj    #)*"(3 )+cii(Lcjj$"(  * hhwbjj1G))''-K8
 1IOOD!E6v66 10163y>E)*&&uqy1"J))Gb1f%67068061 ))Ava=!%'06 	 8 + 7?/**8s   AE/?(E4h㈵>atolc                     | S rn   ri   xs    r4   <lambda>r     s    r6   c                     ||       } ||      }	 t        j                  ||k7        j                         r
 |||       y y # t        $ r  |||       Y y t        t
        f$ r% t        ||      D ]  \  }}t        |||        Y y w xY w)N)compare_assert)rZ   r   r   AttributeError	TypeErrorr{   r   _rough_check)	rr   br   keywcheck_acheck_ba_ib_is	            r4   r   r     s    !fG!fGB88Gw&'++-7G, . )w(z" BGW-HCc.A .Bs   /A B
0B
	B
   c                     | S rn   ri   r   s    r4   r   r     s    1r6   r   r   c                 n    	
 t               	 
f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                      | i |}| d  }| d  }|j                  %d       }|j                  d      }t        |||dd      }|d d |d   |d   }}}$r0|D cg c]%  }t        j                  |j	                               ' }}	 t        |      |z   } r||%<   t        | | i |       r9|dz  |%<   t        | | i |       |dz  |%<   	 t        | | i |       rt        |||" 	      \  }
}||d |j                   d
||j                  d  t        |
      |z   }||%<   t        | |i |       |
D ]J  }t        d       g|j                  z  }t        |j                  d       ||<   t        |      }||   dz  ||<   L t        |
      |z   }t        | |i |       |
D ]X  }t        d       g|j                  z  }t        |j                  d       ||<   t        |      }||   t        j                  z  ||<   Z |j                  dd       dk(  r$r"t        |
      |z   }t        | |i |       ri|
D cg c]!  }t        j                  j                  |      # }
}t        |
      |z   }t        | |i |       rd |%<   t        | |i |       ~
~~rh|D cg c]  }t        j                   |||       }}t        j                   ||      dz  }t        |      |z   }||%<   t        | |i |       ~~~#rA"d
kD  r<t        |||" 	      }|\  }}t        |      |z   }||%<   t        | |i |       |S c c}w # t        $ r}	 t        |	      |	||f      |	d }	~	ww xY wc c}w c c}w # t"        $ r3}	!s&t%        j&                  j(                   d|	 d       Y d }	~	|S d }	~	ww xY w)Nr}   T)r   r}   r   r   r   )r   g     @Y@gB`"۹?)r   r   r   e   
nan_policyomitr          @z NotImplemented weights:    )
stacklevel)getr   rZ   ro   squeezery   r   	Exceptiontyper   r   sliceru   nanr   r   r   NotImplementedErrorwarningswarn__name__)&argskwargsresultrv   restr   r}   r   rr   e
dud_arraysdud_weightsdud_argsindexer
dup_arraysdup_weightsdup_argssplitsplit_arrayssplit_weights
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_args&                        r4   wrappedz _weight_checked.<locals>.wrapped  s[   T$V$gvFG}**Z.zz&,/VW4+/TC %cr
E"IuRy:@A&QbmmAIIK0&FAJ	,=4'D%,z"VR%8%8cB%,u_z"VR%8%8cB%,u_z"? T)<V)<#F
 *5fgt@IPT+V'
K-4MW\\*-.GLLM* ,t3%0z"VR%<V%<#F#A$T{maff4G$)',,$=GDM#GnG!"7c!1AgJ	 $
 !,t3VR%<V%<#F#A$T{maff4G$)',,$=GDM#GnG!"7bff!4AgJ	 $
 ::lD1V;$Z047H X)@)@cJCM!N:a"%%"6"6q"9:J!N$Z047H X)@)@cJ#-1z*$VR-DV-D#N+ BHI&Qbii148&
I ii9C? ,t3%0z"VR%<V%<#Fj+ i!m#FGT.7dD.3+m"<047
%2z"VR%>v%>CH [ B ! ?!$q'1fg"67Q>?@ "O J # 	, -FqcJ)*,	,s^   *M-
AN" M2 .E(N" &N<AN" N#BN" 2	N;NNN" "	O+(OO)r   )r`   r  r   r   r	  r   r  r  r   r  r  r   r  r  r  r   r   r   r
  s   `````````````````  r4   _weight_checkedr    s3     2YY Y Y Yt Nr6   rl   )r   r   )r   r   r   )r   r   r  )r   r   r   r  )r   )r   c                       e Zd Zd Zd Zd Zd Zej                  j                  ddddd	d
dde
j                  g      d        Zd Zd Zd ZddZd Zd Zd Zd Zd Zy)	TestCdistc                    g d| _         t        t        t        j                  t        j
                  gt        t        j                  t        j
                  gt        j                  t        j
                  gt        j
                  gd| _        y N)rO   rP   rQ   rN   rM   )booluintr   r_   rnd_eo_namesr-   r,   rZ   r_   r   valid_upcastsselfs    r4   setup_methodzTestCdist.setup_method  W    1 (0"**bjj&Q'.

BJJ&G&(jj"**%=*,**7r6   c                    g dg dg dg}g dg dg dg}dt        j                  d      d	}dgd
z  }t        j                  t              5  t        ||fd|i| d d d        t        j                  t              5  t        ||fdt        |      i| d d d        t        j                  t              5  t        ||fdd|z   i| d d d        t        j                  t              5  t        ||g|d|i d d d        t        j                  t              5  t        ||g|dt        |      i d d d        t        j                  t              5  t        ||g|dd|z   i d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   y xY w)Nr   r         @333333?ffffff@333333@皙@r  皙@g      @      @g       @g      @333333@g @g      @r&  r"  Q	@r   N0tV4l1D_p4raMr      r5   test_)rZ   arangepytestraisesr   r   eval)r  r5   X1X2r   r   s         r4   test_cdist_extra_argszTestCdist.test_cdist_extra_args  sX    O_=O_=$(ryy|<v|]]9%"b2262 &]]9%"b8f88 &]]9%"b<6!1<V< &]]9%"b/$// &]]9%"b55f5 &]]9%"b9D96!19 &% &%%%%%%%%%%%sH   E7?F9F-FF(F47FFFF%(F14F=c           	         dd}g dg dg dg}g dg dg d	g}d
t        j                  d      d}d
gdz  }t        j                  t              5  t        |||       d d d        t        j                  t              5  t        |||g|  d d d        t        j                  t              5  t        |||fi | d d d        t        j                  t              5  t        |||dd       d d d        t        j                  t              5  t        |||ddd       d d d        t        j                  t              5  t        |||ddd       d d d        t        j                  t              5  t        |||ddd       d d d        t        j                  t              5  t        |||dd       d d d        t        j                  t              5  t        |||d       d d d        t        j                  t              5  t        |||ddd       d d d        t        t        |||dd      d       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   RxY w# 1 sw Y   ,xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nrl   r   c                     ||z   |z   S rn   ri   r   yargkwargkwarg2s        r4   
_my_metricz:TestCdist.test_cdist_extra_args_custom.<locals>._my_metric      ;''r6   r  r  r   r#  r%  r'  r(  r   r)  r+  r!  ffffff
@r9  r:  r9  皙?r5   r8  r:  皙@rl   r   )rZ   r-  r.  r/  r   r   r   )r  r;  r1  r2  r   r   s         r4   test_cdist_extra_args_customz&TestCdist.test_cdist_extra_args_custom  s   	( O_=O_=$(ryy|<v|]]9%"b*% &]]9%"b*,t, &]]9%"b*// &]]9%"b*C< &]]9%"b*a#6 &]]9%"b*a#6 &]]9%"b*c34 &]]9%"b*c3/ &]]9%"b*c* &]]9%"b*cSA & 	b"Z"%c347	9- &%%%%%%%%%%%%%%%%%%%sx   II1I!I(I5J9J+JJ(J4III%(I25I?JJJ%(J14J=c                     d}t         d   }t         d   }t        ||d      }t        ||d      }t        |||t        dkD         y )NV瞯<cdist-X1cdist-X2r   test_euclideanr   rtolr   r\   wcdist_no_constr   r   )r  epsr1  r2  Y1Y2s         r4   #test_cdist_euclidean_random_unicodez-TestCdist.test_cdist_euclidean_random_unicode  sH    
^
^R[1R%56BS'A+>r6   p皙?      ?r   Gz?r   gffffff@gffffff@c                     d}t         d   }t         d   }t        ||d|      }t        ||d|      }t        ||d|t        dkD  	       y )
NvIh%<=rG  rH  r$   rR  test_minkowskir   r   )r   rK  r   rL  )r  rR  rN  r1  r2  rO  rP  s          r4   test_cdist_minkowski_randomz%TestCdist.test_cdist_minkowski_random  sP     
^
^R[A6R%5;BQS'A+Fr6   c                     d}t         d   }t         d   }t        ||d      }d }dt        j                  | ||      z  | ||      z  j                        z
  }t        |||t        dkD         y )	N+=rG  rH  r   c                 d    t         j                  j                  | d      j                  dd      S )Nrl   r   r   )rZ   linalgr   r   )Xs    r4   normsz1TestCdist.test_cdist_cosine_random.<locals>.norms  s&    99>>!!>,44R;;r6   rl   r   rJ  )r\   wcdistrZ   dotTr   r   )r  rN  r1  r2  rO  r`  rP  s          r4   test_cdist_cosine_randomz"TestCdist.test_cdist_cosine_random  sk    
^
^BH%	< eBi2b	>*<*<==BS'A+>r6   c                    t        j                  dgdgg      }t        j                  dgdgg      }t        ||d      }t        |dt        j                  d      gt        j                  d      t        j                  d      gg       t        j                  d	d	gd
d	gg      }t        j                  d	dgdd	gd	dgg      }t        ||d      }t        j                  d      }t        ||||gdd|z  dgg       t        j                  t              5  t        d	dggddggd       d d d        y # 1 sw Y   y xY w)Nr   r      r#   r5                 @      ?r   r   rl   r   )rZ   r   r   r   sqrtr.  r/  r{   )r  x1x2distrt2s        r4   test_cdist_mahalanobisz TestCdist.test_cdist_mahalanobis  s   XXsQCj!XXsQCj!RM2RWWS\2RWWS\2771:4NOP XX1vAw'(XX1v1v2w/0RM2ggajS#AGQ@A ]]:&Aq6(aVH]; '&&s   D66D?c                      G d d      fd}t        j                          ggt              }t        |||      }d}t	        ||t
        dkD         y )	Nc                       e Zd Zy)6TestCdist.test_cdist_custom_notdouble.<locals>.myclassNr   
__module____qualname__ri   r6   r4   myclassrs  	      r6   rw  c                 X    t        | d         rt        |d         st        d      yNr   zType has been changed+?
isinstancer{   r   r7  rw  s     r4   r;  z9TestCdist.test_cdist_custom_notdouble.<locals>._my_metric  -    adG,JqtW4M !899r6   rG   rg  r{  r   r   )rZ   r   objectr   r	   r   )r  r;  rK   cdist_yright_yrw  s        @r4   test_cdist_custom_notdoublez%TestCdist.test_cdist_custom_notdouble  sM    	 		 xx')V4d:6Wgw{;r6   c           	         	 t        ||fd|i|}t        ||fdt        |      i|}t        ||fdd|z   i|}t        |||t        dkD         t        |||t        dkD         y # t        $ r}	|	j
                  }
t        dkD  r t        |
j                         t        |	       t        j                  |
      5  t        ||fd|i| d d d        n# 1 sw Y   nxY wt        j                  |
      5  t        ||fdt        |      i| d d d        n# 1 sw Y   nxY wt        j                  |
      5  t        ||fdd|z   i| d d d        n# 1 sw Y   nxY wY d }	~	y Y d }	~	y d }	~	ww xY wNr5   r,  r   rJ  )
r   r0  r   r   r   	__class__printr   r.  r/  )r  r1  r2  r5   rN  r   y1y2y3r   e_clss              r4   _check_calling_conventionsz$TestCdist._check_calling_conventions  sC   	Cr27f77Br2=d6l=f=Br2Ag&6A&AB BgkBBgkB  
	AKKE{enn%au%b"6V6v6 &%%u%b"<T&\<V< &%%u%b"@Wv%5@@ &%%%%
	As`   9A( (	E/1A
E*;C	E*C	E*5D	E*D 	E*8E	E*E	E**E/c                 (   | j                   D ]  }t        |   d d dd d df   }t        |   dd dd d df   }t        dkD  rt        d|d|       |dv rd|vrL| j	                  |||       |d	k(  rbt        j                  ||g      j                  t
        j                        }t        j                  |d
d      }| j	                  ||||       |dk(  st        j                  ||g      j                  t
        j                        }t        j                  t        j                  |j                              }t        j                  t
        j                  j                  |      j                        }| j	                  ||||        y )Nrf  r   rl   r   	testing:  with: >   r   r+   r&   r"   r)   r(   r%   r  r'   r   r}   r   Vr#   VI)r  r\   r   r  r  rZ   vstackr   r   var
atleast_2dcovrc  r   r^  inv)r  r5   eo_namer1  r2  X12r  r  s           r4   test_cdist_calling_conventionsz(TestCdist.test_cdist_calling_conventions*  s\    ((G GSqS$B$Y'BGQTT3Q3Y'B{k69g> ) ) .47-B++BF; %iiR)00<FF3QQ///B!/D=(iiR)00<MM"&&-0XXbiimmA.001//B2/F3 )r6   c           	         d}t         d   | j                  d   ft         d   | j                  d   ft         d   | j                  d   ft         d   | j                  d	   fg}|D ]k  }|d
   d d dd d df   }|d
   dd dd d df   }	 t        |||      }|d   D ]2  }t         ||       ||      |      }	t        ||	|t        dkD         4 m y # t
        $ r}
|
j                  }t        dkD  r t        |j                         t        |
       |d   D ]J  } ||      } ||      }t        j                  |      5  t        |||       d d d        @# 1 sw Y   IxY w Y d }
~
d }
~
ww xY w)NHz>rM   r  rQ   r  rP   r   rO   r_   r   rf  r   rl   r   rg  rJ  )r\   r  r   r   r   r   r  r  r   r.  r/  )r  r5   rN  teststestr1  r2  r  new_typer  r   r  X1newX2news                 r4   test_cdist_dtype_equivalencez&TestCdist.test_cdist_dtype_equivalenceI  sz   '($*<*<V*DE'($*<*<V*DE&'););E)BC*+T-?-?	-JKM Da1dd#BaAss#BK2r&1 !%QHx|Xb\&IB#BgkJ !(! 
  	;Q;%..)!H $QH$RLE$RLEu-eU6: .-- !(	;s1   C	E-A"E(=E		E(EE((E-c                    d}t         d   }t         d   }|j                  d   |j                  d   }}t               }|dk(  rd|d<   t        j                  ||ft        j
                        }t        |||fi |}	t        |||fd	|i|}
t        |	|
|t        d
kD         t        |
|u        t        j                  |dz
  |dz   ft        j
                        }t        j                  t              5  t        |||fd	|i| d d d        t        j                  d
|z  d
|z  ft        j
                        d d d
d d d
f   }t        j                  ||ft        j
                  d      }t        j                  t              5  t        |||fd	|i| d d d        t        j                  t              5  t        |||fd	|i| d d d        t        j                  ||ft        j                        }t        j                  t              5  t        |||fd	|i| d d d        y # 1 sw Y   (xY w# 1 sw Y   xY w# 1 sw Y   |xY w# 1 sw Y   y xY w)NrF  rG  rH  r   r$   rU  rR  rG   outr   rJ  rl   F)rH   order)r\   r   dictrZ   emptyr   r   r   r   r   r.  r/  r{   int64)r  r5   rN  r1  r2  out_rout_cr   out1rO  rP  out2out3out4out5s                  r4   test_cdist_outzTestCdist.test_cdist_outd  s   
^
^xx{BHHQKu[ F3Kxxbjj92r6,V,2r66t6v6 	BS'A+> 	d
 xxq%'*"**=]]:&"b&5d5f5 ' xxYE	""**669c3Q3h@xxbjjD]]:&"b&5d5f5 ']]:&"b&5d5f5 ' xxbhh7]]:&"b&5d5f5 '& '& '&&&
 '&s0   5H,H99II,H69IIIc                 P   d}t         d   d d dd d df   }t         d   d d dd d df   }|j                         }|j                         }t        ||       t        ||       t        |j                  j
                          t        |j                  j
                          t        |j                  j
                         t        |j                  j
                         t               }|dk(  rd|d<   t        |||fi |}t        |||fi |}	t        ||	|t        dkD         y )	NrF  rG  r   rH  r$   rU  rR  rJ  )
r\   copyr	   r   flagsc_contiguousr  r   r   r   )
r  r5   rN  r1  r2  X1_copyX2_copyr   rO  rP  s
             r4   test_stridingzTestCdist.test_striding  s    
^CaC1H%
^CaC1H%'')'') 	R!R!BHH)))*BHH)))***+**+[ F3K2r6,V,7GV6v6BS'A+>r6   c                 l   t         j                  j                  dd      }t         j                  j                  dd      }t               }|dk(  rd|d<   t	        ||fd|i|}|||fD cg c]  }t        j                  |       }}~~~t        r
t                t        d |D              sJ y c c}w )N
   r$   rU  rR  r5   c              3   .   K   | ]  } |       d u   y wrn   ri   )rq   weak_refs     r4   rs   z0TestCdist.test_cdist_refcount.<locals>.<genexpr>  s     @i(8:%is   )
rZ   r   r   r  r   weakrefrefr   r   rz   )r  r5   rl  rm  r   r  v	weak_refss           r4   test_cdist_refcountzTestCdist.test_cdist_refcount  s    YY^^B#YY^^B#[ F3KB464V4 /1"c];]W[[^]	;CN@i@@@@ <s   +B1Nr  )r   ru  rv  r  r3  rD  rQ  r.  markparametrizerZ   infrZ  rd  rp  r  r  r  r  r  r  r  ri   r6   r4   r  r    s    7:*"9H? [[S3c4#&S"&&#: ;G;G?<$<C*G>K6%6N?4Ar6   r  c            	       V   e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                  d        Ze
j                  j                  d	        Ze
j                  j                  d
        Zd Zd Zd Zd Zd Zd Zd Zd Zd Ze
j                  j                  d        Ze
j                  j                  d        Ze
j                  j                  d        Zd Zd Zd Zd Ze
j                  j                  d        Z e
j                  j                  d        Z!e
j                  j                  d        Z"d Z#d Z$d  Z%e
j                  j                  d!        Z&e
j                  j                  d"        Z'e
j                  j                  d#        Z(e
j                  jS                  d$d%d&d'd(d)e*jV                  g      d*        Z,d+ Z-d, Z.d- Z/e
j                  j                  d.        Z0e
j                  j                  d/        Z1e
j                  j                  d0        Z2e
j                  j                  d1        Z3e
j                  j                  d2        Z4e
j                  j                  d3        Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdK ZMdL ZNdM ZOdN ZPdO ZQdP ZRdQ ZSdR ZTdS ZUdT ZVdU ZWdV ZXdW ZYdX ZZdY Z[dZ Z\d[ Z]d\ Z^e
j                  j                  d]        Z_d^ Z`d_ Zadfd`Zbda Zcdb Zddc Zedd Zfye)g	TestPdistc                    g d| _         t        t        t        j                  t        j
                  gt        t        j                  t        j
                  gt        j                  t        j
                  gt        j
                  gd| _        y r  r  r  s    r4   r  zTestPdist.setup_method  r  r6   c                 ^   ddgddgddgg}dt        j                  d      d}dgd	z  }t        j                  t              5  t        |fd
|i| d d d        t        j                  t              5  t        |fd
t        |      i| d d d        t        j                  t              5  t        |fd
d|z   i| d d d        t        j                  t              5  t        |g|d
|i d d d        t        j                  t              5  t        |g|d
t        |      i d d d        t        j                  t              5  t        |g|d
d|z   i d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   y xY w)Nr   r   r  r  r!  r(  r   r)  r+  r5   r,  )rZ   r-  r.  r/  r   r   r0  )r  r5   r1  r   r   s        r4   test_pdist_extra_argszTestPdist.test_pdist_extra_args  sJ   2hc
S#J/$(ryy|<v|]]9%".V.v. &]]9%"4T&\4V4 &]]9%"8Wv-88 &]]9%"+d+V+ &]]9%"1D1T&\1 &]]9%"55Wv-5 &% &%%%%%%%%%%%sH   E&3E3,E?FF
F#&E03E<?FFF #F,c                 T   dd}ddgddgddgg}d	t        j                  d      d
}d	gdz  }t        j                  t              5  t        ||       d d d        t        j                  t              5  t        ||g|  d d d        t        j                  t              5  t        ||fi | d d d        t        j                  t              5  t        ||dd       d d d        t        j                  t              5  t        ||ddd       d d d        t        j                  t              5  t        ||ddd       d d d        t        j                  t              5  t        ||ddd       d d d        t        j                  t              5  t        ||dd       d d d        t        j                  t              5  t        ||d       d d d        t        j                  t              5  t        ||ddd       d d d        t        t        ||dd      d       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   LxY w# 1 sw Y   'xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nrl   r   c                     ||z   |z   S rn   ri   r6  s        r4   r;  z:TestPdist.test_pdist_extra_args_custom.<locals>._my_metric  r<  r6   r   r   r  r  r!  r(  r)  r+  r=  r>  r?  r@  rA  rB  rC  )rZ   r-  r.  r/  r   r   r   )r  r;  r1  r   r   s        r4   test_pdist_extra_args_customz&TestPdist.test_pdist_extra_args_custom  s   	( 2hc
S#J/$(ryy|<v|]]9%"j! &]]9%"j(4( &]]9%"j+F+ &]]9%"jC8 &]]9%"j!Qc2 &]]9%"j!Qc2 &]]9%"j#sC0 &]]9%"j#s+ &]]9%"j#& &]]9%"j#S= & 	b"%c347	9- &%%%%%%%%%%%%%%%%%%%sx   H+5H8$III6I,(I9J	J8J+H58IIII),I69JJJJ'c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr  pdist-double-inppdist-euclideanr   rK  r\   wpdist_no_constr   r  rN  r_  Y_rightY_test1s        r4   test_pdist_euclidean_randomz%TestPdist.test_pdist_euclidean_random  5    !"&'!![1s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y r  r  r  s        r4   test_pdist_euclidean_random_uz'TestPdist.test_pdist_euclidean_random_u  r  r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r  rZ   r_   r\   r  r   r  s        r4   #test_pdist_euclidean_random_float32z-TestPdist.test_pdist_euclidean_random_float32  s>    JJr,-.&'!![1s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  rI  r  r  r  rN  r_  r  Y_test2s        r4    test_pdist_euclidean_random_nonCz*TestPdist.test_pdist_euclidean_random_nonC  s6    !"&'!!%56s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  irispdist-euclidean-irisr   r  r  r  s        r4    test_pdist_euclidean_iris_doublez*TestPdist.test_pdist_euclidean_iris_double  s3    vJ+,!![1s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  r  r   r   rJ  rZ   r_   r\   r  r   r   r  s        r4   !test_pdist_euclidean_iris_float32z+TestPdist.test_pdist_euclidean_iris_float32  B    JJr&z"+,!![1sGaKHr6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  rI  r  r  r  s        r4   test_pdist_euclidean_iris_nonCz(TestPdist.test_pdist_euclidean_iris_nonC&  s6     vJ+,!!%56s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  pdist-seuclideanr'   r  r\   r   r   r  s        r4   test_pdist_seuclidean_randomz&TestPdist.test_pdist_seuclidean_random0  s5    !"'(<(s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       t        j
                  |dd      }t        |d|	      }t	        |||       y )
Nr  r  r  r'   r  r   rl   r  r  )rZ   r_   r\   r   r   r  )r  rN  r_  r  r  r  r  s          r4   $test_pdist_seuclidean_random_float32z.TestPdist.test_pdist_seuclidean_random_float327  sl    JJr,-.'(<(s3 FF111%<1-s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  test_seuclideanr  r  r  s        r4   !test_pdist_seuclidean_random_nonCz+TestPdist.test_pdist_seuclidean_random_nonCC  s6    !"'(,-s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  pdist-seuclidean-irisr'   r  r  r  s        r4   test_pdist_seuclidean_irisz$TestPdist.test_pdist_seuclidean_irisK  s3    vJ,-<(s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y )Nr   r  r  r'   r  )rZ   r_   r\   r   r   r  s        r4   "test_pdist_seuclidean_iris_float32z,TestPdist.test_pdist_seuclidean_iris_float32R  s<    JJr&z",-<(s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  r  r  r  r  s        r4   test_pdist_seuclidean_iris_nonCz)TestPdist.test_pdist_seuclidean_iris_nonCZ  s6     vJ,-,-s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr  r  pdist-cosiner   r  r\   wpdistr   r  s        r4   test_pdist_cosine_randomz"TestPdist.test_pdist_cosine_randomc  s4    !"^$H%s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r  rZ   r_   r\   r  r   r  s        r4    test_pdist_cosine_random_float32z*TestPdist.test_pdist_cosine_random_float32j  s=    JJr,-.^$H%s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  test_cosiner  r  r  s        r4   test_pdist_cosine_random_nonCz'TestPdist.test_pdist_cosine_random_nonCq  s4    !"^$M*s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr   r  pdist-cosine-irisr   r   r  r  s        r4   test_pdist_cosine_irisz TestPdist.test_pdist_cosine_irisy  s3    vJ()H%s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  r  r   r   r   r   )rZ   r_   r\   r  r   r   r  s        r4   test_pdist_cosine_iris_float32z(TestPdist.test_pdist_cosine_iris_float32  sB    JJr&z"()H%sGaKHr6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr   r  r  r
  r   r  r  s        r4   test_pdist_cosine_iris_nonCz%TestPdist.test_pdist_cosine_iris_nonC  s3    vJ()M*s3r6   c                     t        j                  t         j                  j                  d      j	                  d            }t        j
                  ||g      }t        t        |d      d   dk\  d       y )Ni9  [   r   r   z&cosine distance should be non-negative)msg)rZ   absr   r   r   r  r   r  )r  r   r_  s      r4   test_pdist_cosine_boundsz"TestPdist.test_pdist_cosine_bounds  s\     FF299((.33B78IIq!fq(#A&!+<	>r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr  r  pdist-cityblockr   r  r  r  s        r4   test_pdist_cityblock_randomz%TestPdist.test_pdist_cityblock_random  s5    !"&'!![1s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r  r  r  s        r4   #test_pdist_cityblock_random_float32z-TestPdist.test_pdist_cityblock_random_float32  s>    JJr,-.&'!![1s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  test_cityblockr  r  r  s        r4    test_pdist_cityblock_random_nonCz*TestPdist.test_pdist_cityblock_random_nonC  s6    !"&'!!%56s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr\  r  pdist-cityblock-irisr   r  r  r  s        r4   test_pdist_cityblock_irisz#TestPdist.test_pdist_cityblock_iris  s3    vJ+,!![1s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  r#  r   r   rJ  r  r  s        r4   !test_pdist_cityblock_iris_float32z+TestPdist.test_pdist_cityblock_iris_float32  r  r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr\  r  r#  r   r  r  r  s        r4   test_pdist_cityblock_iris_nonCz(TestPdist.test_pdist_cityblock_iris_nonC  s6     vJ+,!!%56s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr  r  pdist-correlationr   r  r  r  s        r4   test_pdist_correlation_randomz'TestPdist.test_pdist_correlation_random  s5    !"()M*s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r*  r  r  s        r4   %test_pdist_correlation_random_float32z/TestPdist.test_pdist_correlation_random_float32  s>    JJr,-.()M*s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r+  test_correlationr  r  r  s        r4   "test_pdist_correlation_random_nonCz,TestPdist.test_pdist_correlation_random_nonC  s6    !"()./s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  pdist-correlation-irisr   r  r  r  s        r4   test_pdist_correlation_irisz%TestPdist.test_pdist_correlation_iris  s3    vJ-.M*s3r6   c                     d}t         d   }t        j                  t         d         }t        |d      }t	        |||t
        dkD         y )Nr  r  r3  r   r   rJ  )r\   rZ   r_   r  r   r   r  s        r4   #test_pdist_correlation_iris_float32z-TestPdist.test_pdist_correlation_iris_float32  sB    vJ**R 89:M*sGaKHr6   c                     t         j                  dkD  rd}nt        j                  d       t        d   }t        d   }t        |d      }t        ||       y )Nl        r  zsee gh-16456r  r3  r0  r  )sysmaxsizer.  skipr\   r  r   r  s        r4    test_pdist_correlation_iris_nonCz*TestPdist.test_pdist_correlation_iris_nonC  sL    ;;CKK'vJ-../s3r6   rR  rS  rT  r   r   皙	@c                 p    d}t         d   }t        |d|      }t        |d|      }t        ||d|       y )NrW  r  r$   rX  rY  r   )r   rK  r  )r  rR  rN  r_  rO  rP  s         r4   test_pdist_minkowski_random_pz'TestPdist.test_pdist_minkowski_random_p  s=    !"Qq1Q 0A6BQS1r6   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y Nr  r  pdist-minkowski-3.2r$   r<  rX  r  r  r  s        r4   test_pdist_minkowski_randomz%TestPdist.test_pdist_minkowski_random  s7    !"*+!![C8s3r6   c                     d}t        j                  t        d         }t        d   }t        |dd      }t	        |||       y r@  r  r  s        r4   #test_pdist_minkowski_random_float32z-TestPdist.test_pdist_minkowski_random_float32  s@    JJr,-.*+!![C8s3r6   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  rA  rY  r<  rX  r  r  r  s        r4    test_pdist_minkowski_random_nonCz*TestPdist.test_pdist_minkowski_random_nonC  s8    !"*+!!%5=s3r6   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  pdist-minkowski-3.2-irisr$   r<  rX  r  r  r  s        r4   test_pdist_minkowski_3_2_irisz'TestPdist.test_pdist_minkowski_3_2_iris  5    vJ/0!![C8s3r6   c                     d}t        j                  t        d         }t        d   }t        |dd      }t	        |||       y )Nr   r  rH  r$   r<  rX  r  r  r  s        r4   %test_pdist_minkowski_3_2_iris_float32z/TestPdist.test_pdist_minkowski_3_2_iris_float32  s>    JJr&z"/0!![C8s3r6   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  rH  rY  r<  rX  r  r  r  s        r4   "test_pdist_minkowski_3_2_iris_nonCz,TestPdist.test_pdist_minkowski_3_2_iris_nonC&  6    vJ/0!!%5=s3r6   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  pdist-minkowski-5.8-irisr$   r&  rX  r  r  r  s        r4   test_pdist_minkowski_5_8_irisz'TestPdist.test_pdist_minkowski_5_8_iris.  rJ  r6   c                     d}t        j                  t        d         }t        d   }t        |dd      }t	        |||t
        dkD         y )	Nr   r  rQ  r$   r&  rX  r   rJ  r  r  s        r4   %test_pdist_minkowski_5_8_iris_float32z/TestPdist.test_pdist_minkowski_5_8_iris_float326  sD    JJr&z"/0!![C8sGaKHr6   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  rQ  rY  r&  rX  r  r  r  s        r4   "test_pdist_minkowski_5_8_iris_nonCz,TestPdist.test_pdist_minkowski_5_8_iris_nonC>  rO  r6   c                    t        j                  g d      j                  dd      }t        |d      }t	        |dt        j
                  d      t        j
                  d      t        j
                  d      t        j
                  d      t        j
                  d	      g       t        j                  d
d
gdd
gd
dgdd
gd
dgg      }t        |d      }t        j
                  d      }t	        |||||dd|z  ddd|z  dg
       t        j                  t              5  t        d
dgddggd       d d d        y # 1 sw Y   y xY w)N)r   r   r  r$  r   rl   r#   rg  rh  rj  ri  r   r   r   r   r   )
rZ   r   r   r   r   rk  r.  r/  r{   r  )r  r   rn  ro  s       r4   test_pdist_mahalanobisz TestPdist.test_pdist_mahalanobisF  s   HH)*222q9Q}-sBGGCL"''#,!wws|RWWS\2773<I 	J HHq!fr1g1v1v2w?@Q}-ggajsCc1a#gq!QWaPQ ]]:&QFQF#M: '&&s   !D>>Ec                 `    d}t         d   }t         d   }t        |d      }t        |||       y NrF  rL   pdist-hammingr   r  r  r  s        r4   test_pdist_hamming_randomz#TestPdist.test_pdist_hamming_randomW  s4    "#_%I&s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y rZ  r  r  s        r4   !test_pdist_hamming_random_float32z+TestPdist.test_pdist_hamming_random_float32^  =    JJr-./_%I&s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y NrF  rL   r[  test_hammingr  r  r  s        r4   test_pdist_hamming_random_nonCz(TestPdist.test_pdist_hamming_random_nonCe  s4    "#_%N+s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y rZ  rZ   r   r\   r  r   r  s        r4   test_pdist_dhamming_randomz$TestPdist.test_pdist_dhamming_randoml  r_  r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y rZ  r  r  s        r4   "test_pdist_dhamming_random_float32z,TestPdist.test_pdist_dhamming_random_float32s  r_  r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y ra  re  r  s        r4   test_pdist_dhamming_random_nonCz)TestPdist.test_pdist_dhamming_random_nonCz  s=    JJr-./_%N+s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y N:0yE>rL   pdist-jaccardr    r  r  r  s        r4   test_pdist_jaccard_randomz#TestPdist.test_pdist_jaccard_random  s4    "#_%I&s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y rl  r  r  s        r4   !test_pdist_jaccard_random_float32z+TestPdist.test_pdist_jaccard_random_float32  =    JJr-./_%I&s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nrm  rL   rn  test_jaccardr  r  r  s        r4   test_pdist_jaccard_random_nonCz(TestPdist.test_pdist_jaccard_random_nonC  s4    "#_%N+s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y rl  re  r  s        r4   test_pdist_djaccard_randomz$TestPdist.test_pdist_djaccard_random  rr  r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y rl  r  r  s        r4   "test_pdist_djaccard_random_float32z,TestPdist.test_pdist_djaccard_random_float32  rr  r6   c                     d}t        t        j                  d      d      }t        t        j                  d      ||       y )NrF  rf  r   r    r  r  r   rZ   zerosr   r  rN  Ys      r4   test_pdist_djaccard_allzerosz&TestPdist.test_pdist_djaccard_allzeros  s0    "((6"I.ac2r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y rt  re  r  s        r4   test_pdist_djaccard_random_nonCz)TestPdist.test_pdist_djaccard_random_nonC  s=    JJr-./_%N+s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Ndy=r  pdist-jensenshannonr!   r  r  r  s        r4   test_pdist_jensenshannon_randomz)TestPdist.test_pdist_jensenshannon_random  s5    !"*+?+s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nrm  r  r  r!   r   rJ  rZ   r_   r\   r   r   r   r  s        r4   'test_pdist_jensenshannon_random_float32z1TestPdist.test_pdist_jensenshannon_random_float32  sD    JJr,-.*+?+sGaKHr6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  test_jensenshannonr  r  r  s        r4   $test_pdist_jensenshannon_random_nonCz.TestPdist.test_pdist_jensenshannon_random_nonC  s6    !"*+/0s3r6   c                 z    t               rd}nd}t        d   }t        d   }t        |d      }t        |||       y )Ng&.=g-q=r  pdist-jensenshannon-irisr!   r   )rj   r\   r   r   r  s        r4   test_pdist_jensenshannon_irisz'TestPdist.test_pdist_jensenshannon_iris  s=    ;CCvJ/0?+s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Ngư>r  r  r!   r   r  r  r  s        r4   %test_pdist_jensenshannon_iris_float32z/TestPdist.test_pdist_jensenshannon_iris_float32  sB    JJr&z"/0?+sGaKHr6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Ng-C6
?r  r  r  r  r  r  s        r4   "test_pdist_jensenshannon_iris_nonCz,TestPdist.test_pdist_jensenshannon_iris_nonC  s4    vJ/0/0s3r6   c                     d}t        t        j                  d      d      }t        t        j                  d      ||       y )NrF  r|  ru  r  r  r}  r  s      r4   !test_pdist_djaccard_allzeros_nonCz+TestPdist.test_pdist_djaccard_allzeros_nonC  s0    "((6"N3ac2r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nrm  r  pdist-chebyshevr   r  r  r  s        r4   test_pdist_chebyshev_randomz%TestPdist.test_pdist_chebyshev_random  s5    !"&';'s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr  r  r  r   r   rJ  r  r  s        r4   #test_pdist_chebyshev_random_float32z-TestPdist.test_pdist_chebyshev_random_float32  sD    JJr,-.&';'sGaKHr6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nrm  r  r  test_chebyshevr  r  r  s        r4    test_pdist_chebyshev_random_nonCz*TestPdist.test_pdist_chebyshev_random_nonC  s6    !"&'+,s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr\  r  pdist-chebyshev-irisr   r  r  r  s        r4   test_pdist_chebyshev_irisz#TestPdist.test_pdist_chebyshev_iris  s3    vJ+,;'s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  r  r   r   rJ  r  r  s        r4   !test_pdist_chebyshev_iris_float32z+TestPdist.test_pdist_chebyshev_iris_float32   sB    JJr&z"+,;'sGaKHr6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr\  r  r  r  r  r  r  s        r4   test_pdist_chebyshev_iris_nonCz(TestPdist.test_pdist_chebyshev_iris_nonC  s4    vJ+,+,s3r6   c                 0   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t	        |ddd       t	        |ddd       y Nrl   r   rl   rl   r   rl   rl   r   rl   rl   rG   333333?r   绽|=rK  r   	wmatchingrZ   r   r  r   r  mm2s      r4   test_pdist_matching_mtica1z$TestPdist.test_pdist_matching_mtica1  sd    bhh/hh/1rxxt<xxt<>3QU3Cae4r6   c                 0   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t	        |ddd       t	        |ddd       y Nrl   r   rl   rl   rl   r   rG   UUUUUU?r   r  r  r  r  s      r4   test_pdist_matching_mtica2z$TestPdist.test_pdist_matching_mtica2  sd    bhhy)XXi(*rxx	6hhy575qu5E6r6   c                 0   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t	        |ddd       t	        |ddd       y r  wjaccardrZ   r   r  r   r  s      r4   test_pdist_jaccard_mtica1z#TestPdist.test_pdist_jaccard_mtica1   sd    RXXo.XXo.0bhhd;hhd;=3QU3Cae4r6   c                 0   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t	        |ddd       t	        |ddd       y r  r  r  s      r4   test_pdist_jaccard_mtica2z#TestPdist.test_pdist_jaccard_mtica2(  sd    RXXi(XXi(*bhhy5hhy575qu5E6r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )Nr  r  rG   r   r   r  r  wyulerZ   r   r  r   r  r   r  s      r4   test_pdist_yule_mtica1z TestPdist.test_pdist_yule_mtica10  sr    "((?+((?+-288O4888O48:Q;!H1151AAE2r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )Nr  r  rG   r   r   r  r  r  r  s      r4   test_pdist_yule_mtica2z TestPdist.test_pdist_yule_mtica2:  sr    "((9%((9%'288IT288IT24Q;!H1151AAE2r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )	Nr  r  rG   r   g۶m۶m?r   r  r  wdicerZ   r   r  r   r  r   r  s      r4   test_pdist_dice_mtica1z TestPdist.test_pdist_dice_mtica1D  sr    "((?+((?+-288O4888O48:Q;!H5qu5E6r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )	Nr  r  rG   r   rj  r   r  r  r  r  s      r4   test_pdist_dice_mtica2z TestPdist.test_pdist_dice_mtica2N  sr    "((9%((9%'288IT288IT24Q;!H3QU3Cae4r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y 	Nr  r  rG   r   g      ?r   r  r  )r)   rZ   r   r  r   r  r   r  s      r4   test_pdist_sokalsneath_mtica1z'TestPdist.test_pdist_sokalsneath_mtica1X  s    113/>/>@Q;!H5qu5E6r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y 	Nr  r  rG   r   g?r   r  r  )wsokalsneathrZ   r   r  r   r  r   r  s      r4   test_pdist_sokalsneath_mtica2z'TestPdist.test_pdist_sokalsneath_mtica2b  sr    ),),."((9D9((9D9;Q;!H5qu5E6r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y r  wrogerstanimotorZ   r   r  r   r  r   r  s      r4    test_pdist_rogerstanimoto_mtica1z*TestPdist.test_pdist_rogerstanimoto_mtica1l  ss    BHH_5HH_57RXXoTBXXoTBDQ;!H5qu5E6r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y r  r  r  s      r4    test_pdist_rogerstanimoto_mtica2z*TestPdist.test_pdist_rogerstanimoto_mtica2v  sr    BHHY/HHY/1RXXit<XXit<>Q;!H5qu5E6r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )	Nr  r  rG   r   r  r   r  r  wrussellraorZ   r   r  r   r  r   r  s      r4   test_pdist_russellrao_mtica1z&TestPdist.test_pdist_russellrao_mtica1  r  r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )	Nr  r  rG   r   r  r   r  r  r  r  s      r4   test_pdist_russellrao_mtica2z&TestPdist.test_pdist_russellrao_mtica2  sr    ++-)48)48:Q;!H5qu5E6r6   c                     t         d   }t        dkD  r t        |j                  |j                         d}t        |d      }t        |d      }t        |||t        dkD         y )Nr  r   rF  r   test_canberrarJ  )r\   r   r  r   rH   r  r   )r  DrN  r  r  s        r4   test_pdist_canberra_matchz#TestPdist.test_pdist_canberra_match  sS    vJQ;!''177#Q
+Q0BS'A+>r6   c                 X    d}t        dgdgfd      }d}t        |||t        dkD         y )Nrm  r=  r  r   gd>@1?r   r  )r  r   r   )r  rN  pdist_yr  s       r4   test_pdist_canberra_ticket_711z(TestPdist.test_pdist_canberra_ticket_711  s4     !C53%.*=sGaKHr6   c                      G d d      fd}t        j                          g        ggt              }t        ||      }d}t	        ||t
        dkD         y )	Nc                       e Zd Zy)6TestPdist.test_pdist_custom_notdouble.<locals>.myclassNrt  ri   r6   r4   rw  r    rx  r6   rw  c                 X    t        | d         rt        |d         st        d      yrz  r|  r~  s     r4   r;  z9TestPdist.test_pdist_custom_notdouble.<locals>._my_metric  r  r6   rG   rg  r{  r   r  )rZ   r   r  r   r	   r   )r  r;  rK   r  r  rw  s        @r4   test_pdist_custom_notdoublez%TestPdist.test_pdist_custom_notdouble  sR    	 		 xx')wyk2&AZ0Wgw{;r6   c           	         	 t        |fd|i|}t        |fdt        |      i|}t        |fdd|z   i|}t        |||t        dkD         t        |||t        dkD         y # t        $ r}|j
                  }	t        dkD  r t        |	j                         t        |       t        j                  |	      5  t        |fd|i| d d d        n# 1 sw Y   nxY wt        j                  |	      5  t        |fdt        |      i| d d d        n# 1 sw Y   nxY wt        j                  |	      5  t        |fdd|z   i| d d d        n# 1 sw Y   nxY wY d }~y Y d }~y d }~ww xY wr  )
r   r0  r   r   r   r  r  r   r.  r/  )
r  r_  r5   rN  r   r  r  r  r   r  s
             r4   r  z$TestPdist._check_calling_conventions  s5   	Cq2262Bq8f88Bq<6!1<V<B BgkBBgkB  
	<KKE{enn%au%a11&1 &%%u%a7V77 &%%u%a;& 0;F; &%%%%
	<s`   6A% %	E).A
E$8C	E$C	E$1D		E$D	E$3E	E$E	E$$E)c                    | j                   D ]=  }t        |   d d dd d df   }t        dkD  rt        d|d|       |dv rd|vr8| j	                  ||       |dk(  rJt        j                  |j                  t
        j                        dd	
      }| j	                  |||       |dk(  st        j                  t        j                  |j                  t
        j                        j                              }t        j                  t
        j                  j                  |      j                        }| j	                  |||       @ y )Nrf  r   r  r  >   r   r+   matchingr&   r"   r)   r(   r%   r  r'   r   rl   r  r  r#   r  )r  r\   r   r  r  rZ   r  r   r   r  r  rc  r   r^  r  )r  r5   r  r_  r  r  s         r4   test_pdist_calling_conventionsz(TestPdist.test_pdist_calling_conventions  s   
 ((G 7CaC1H%A{k69g> ) ) .47-B++Av6 %FF188BJJ/aa@//6Q/?=(MM"&&"**)=)?)?"@AXXbiimmA.001//6b/A+ )r6   c           	         d}t         d   | j                  d   ft         d   | j                  d   ft         d   | j                  d   ft         d   | j                  d	   fg}|D ]S  }|d
   d d dd d df   }	 t        ||      }|d   D ]+  }t         ||      |      }t        |||t        dkD         - U y # t
        $ r}	|	j                  }
t        dkD  r t        |
j                         t        |	       |d   D ]A  } ||      }t        j                  |
      5  t        ||       d d d        7# 1 sw Y   @xY w Y d }	~	d }	~	ww xY w)Nr  rM   r  rQ   r  rP   r   rO   r_   r   rf  r   rg  rl   rJ  )r\   r  r   r   r   r   r  r  r   r.  r/  )r  r5   rN  r  r  r1  r  r  r  r   r  r2  s               r4   test_pdist_dtype_equivalencez&TestPdist.test_pdist_dtype_equivalence  sK   '($*<*<V*DE'($*<*<V*DE&'););E)BC*+T-?-?	-JKM Da1cc"BK2f- !%QHx|F;B#BgkJ !(   1Q;%..)!H $QH!"Bu-b0 .-- !(1s1   7B::	EAED4	+	E4D=9EEc                    d}t         d   d d dd d df   }t        |j                  d   |j                  d   dz
  z  dz        }t               }|dk(  rd|d	<   t	        j
                  |t        j                  
      }t        ||fi |}t        ||fd|i|}t        |||       t        ||u        t	        j
                  |dz   t        j                  
      }	t        j                  t              5  t        ||fd|	i| d d d        t	        j
                  d|z  t        j                  
      d d d   }
t        j                  t              5  t        ||fd|
i| d d d        t	        j
                  |t        j                  
      }t        j                  t              5  t        ||fd|i| d d d        y # 1 sw Y   xY w# 1 sw Y   lxY w# 1 sw Y   y xY w)NrF  rO   rf  r   r   rl   r$   rU  rR  rG   r  r  r   )r\   r   r   r  rZ   r  r   r   r   r   r.  r/  r{   r  )r  r5   rN  r_  out_sizer   r  r  r  r  r  r  s               r4   test_pdist_outzTestPdist.test_pdist_out  s   $%cc3Q3h/
aggaj1n5:;[ F3Kxx

36,V,66t6v6 	s3 	4  xx1BJJ7]]:&!V000 ' xxHBJJ7!<]]:&!V000 ' xx1]]:&!V000 '& '&
 '&
 '&s$   6GG+GGGG%c                 V   d}t         d   d d dd d df   }|j                         }t        |j                  j                          t        |j                  j                         t               }|dk(  rd|d<   t        ||fi |}t        ||fi |}t        |||t        dkD         y )	NrF  rO   rf  r   r$   rU  rR  rJ  )	r\   r  r   r  r  r  r   r   r   )r  r5   rN  r_  X_copyr   rO  rP  s           r4   r  zTestPdist.test_striding   s     $%cc3Q3h/ 	AGG((()))*[ F3K1f''66,V,BS'A+>r6   Nr  )gr   ru  rv  r  r  r  r  r  r  r  r.  r  slowr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r$  r&  r(  r,  r.  r1  r4  r6  r;  r  rZ   r  r>  rB  rD  rF  rI  rL  rN  rR  rT  rV  rX  r\  r^  rc  rf  rh  rj  ro  rq  rv  rx  rz  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  ri   r6   r4   r  r    s   76&!9F4444 [[4 4 [[I I [[4 44
44444444 [[4 4 [[I I [[4 4>444 [[4 4 [[I I [[4 4444 [[4 4 [[I I [[4 4 [[S3c3RVV"DE2 F2444 [[4 4 [[4 4 [[4 4 [[4 4 [[I I [[4 4;"444444444443
44I4
4I43
4I44I457573375777777 [[? ?I<C*B8K2 1D?r6   r  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestSomeDistanceFunctionsc                 t    t        j                  g d      }t        j                  g d      }||fg| _        y )Nr  r   r   r$  )rZ   r   cases)r  r   r7  s      r4   r  z&TestSomeDistanceFunctions.setup_method5  s+    HH_%HH_%!fX
r6   c           	         | j                   D ]m  \  }}t        ||d      }t        |d       t        ||d      }t        |d       t        ||d      }t        |d       t        ||d      }t        |d	       o t        j                  d
dg      }t        j                  ddg      }t        t        ||      t        |j                  d      |j                  d                   y )Nrl   rX  r        ?gqaz@r   gw@rT  gR"6@i`  i  i^  i  uint16)r  r$   r
   rZ   r   r	   r   )	r  r   r7  dist1dist1p5dist2dist0p25rr   r   s	            r4   rY  z(TestSomeDistanceFunctions.test_minkowski<  s    JJDAqaa(Es+1,G)CDaa(Ez2 A.H*BC  HHc3Z HHc3Z Yq!_qxx1188H3EF	Hr6   c                     | j                   D ]0  \  }}t        ||      }t        |t        j                  d             2 y )Nrf  )r  
weuclideanr
   rZ   rk  r  r   r7  rn  s       r4   rI  z(TestSomeDistanceFunctions.test_euclideanO  s2    JJDAqa#Dbggaj1 r6   c                 \    | j                   D ]  \  }}t        ||      }t        |d        y )Nr$  )r  wsqeuclideanr
   r  s       r4   test_sqeuclideanz*TestSomeDistanceFunctions.test_sqeuclideanT  s*    JJDAq1%Dc* r6   c           
          | j                   D ]L  \  }}t        ||      }t        |ddt        j                  d      t        j                  d      z  z  z
         N y )Nr   g      2@      )r  wcosiner
   rZ   rk  r  s       r4   r
  z%TestSomeDistanceFunctions.test_cosineY  sH    JJDAq1a=DcDBGGBK"''"+4M,N&NO r6   c                     t        t        ddgddgd      t              sJ t        t        ddgddg      t              sJ y )Nrl   F)centered)r}  wcorrelationfloatr  r  s    r4   test_cosine_output_dtypez2TestSomeDistanceFunctions.test_cosine_output_dtype^  sB    ,1v1vFNNN'1a&1a&15999r6   c           
         t        j                  g d      }t        j                  g d      }| j                  D ]L  \  }}t        ||      }t	        |dt        j
                  ||      t        |      t        |      z  z  z
         N y )N)      r   r   )UUUUUUr  gUUUUUU@r   )rZ   r   r  r  r
   rb  r   )r  xmymr   r7  rn  s         r4   r0  z*TestSomeDistanceFunctions.test_correlationc  sh    XXn%XX9:JJDAq1%DcBFF2rNd2hb>Q,R&RS r6   c                     t        j                  g d      }t        j                  g d      }t        ||      }d|cxk  r4dt        j                  t         j                        j
                  z  k  sJ  J y )N)%rh  rh  rh  rh  rh  rh         rh  rh  rh  r  r  r  rh  r  rh  r  rh  rh  r  r  rh  r   rh  rh  r  rh  rh  r  rh  r  r  r  r  r  r  rh  )%r   r   r   r   r   r   r  r   r   r   r  r  r  r   r  r   r  r   r   rh  r  r   r   r   r   r  r   r   r  r   r  r  r  r  r  r  r   r   r  )rZ   r   r   finfor   rN  r  s       r4   test_correlation_positivez3TestSomeDistanceFunctions.test_correlation_positivej  sm    HH I J HH I J 1a D9B"**!5!9!9999999r6   c                    t        j                  g d      }t        j                  g d      }t        j                  g dg dg dg      }| j                  D ]1  \  }}t        |||      }t	        |t        j
                  d             3 y )Nr  r  )r   r   rh  )r   r   r   )rh  r   r   g      @)rZ   r   r  r#   r
   rk  )r  r   r7  virn  s        r4   test_mahalanobisz*TestSomeDistanceFunctions.test_mahalanobisu  se    HH_%HH_%XXIJJJDAqq!R(Dbggcl3 r6   N)r   ru  rv  r  rY  rI  r  r
  r  r0  r  r  ri   r6   r4   r  r  3  s2    H&2
+
P
:
T	:4r6   r  c                       e Zd Zej                  ej
                  ej                  ej                  egZ	d Z
d Zd Zd Zd Zd Zy)TestSquareFormc                 H    | j                   D ]  }| j                  |        y rn   )checked_dtypescheck_squareform_matrixr  rH   s     r4   test_squareform_matrixz%TestSquareForm.test_squareform_matrix       ((E((/ )r6   c                 H    | j                   D ]  }| j                  |        y rn   )r!  check_squareform_vectorr#  s     r4   test_squareform_vectorz%TestSquareForm.test_squareform_vector  r%  r6   c                 (   t        j                  d|      }t        |      }t        |j                  d       t        |j
                  |       t        j                  d|      }t        |      }t        |j                  d       t        |j
                  |       t        j                  ddgddgg|      }t        |      }t        |j                  d       t        |j
                  |       t        |t        j                  dg|             y )N)r   r   rG   r   rl   rl   r   g@)rl   )rZ   r~  r   r	   r   rH   r   r   )r  rH   ArAs       r4   r"  z&TestSquareForm.check_squareform_matrix  s    HHV5)]RXXt$RXXu%HHV5)]RXXt$RXXu%HHq#ha)7]RXXt$RXXu%2rxxU;<r6   c                    t        j                  d|      }t        |      }t        |j                  d       t        |j
                  |       t        |dgg       t        j                  dg|      }t        |      }t        |j                  d       t        |j
                  |       t        |t        j                  ddgddgg|             y )Nr*  rG   r+  r   g @)r   r   )rZ   r~  r   r	   r   rH   r   r   )r  rH   r  rvs       r4   r'  z&TestSquareForm.check_squareform_vector  s    HHT']RXXv&RXXu%2u%HHcU%(]RXXv&RXXu%2rxx!SC8(<EJKr6   c                 H    t        dd      D ]  }| j                  |        y )Nr   rf  )r|   check_squareform_multi_matrixr  ns     r4   test_squareform_multi_matrixz+TestSquareForm.test_squareform_multi_matrix  s     q!A..q1 r6   c                    t         j                  j                  |d      }t        |      }t	        t        |j                        d       t        |      }t        |      }|j                  }d}t        dk\  r+t        |j                  |j                  |j                         t	        t        |      d       t	        t        |j                        d       t	        |d   |d          t        d|d         D ]I  }t        |dz   |d         D ]2  }	||	k7  rt	        |||	f   ||          |dz  }"t	        |||	f   d       4 K y )N   rl   r   r   r   )rZ   r   r   r  r	   lenr   r   r   r  r|   )
r  r3  r_  r  r,  Yrskr   js
             r4   r1  z,TestSquareForm.check_squareform_multi_matrix  s   IINN1a AS\1%qM]GGa<!''177BHH-SVQS]A&QqT1Q4 q!A$A1q5!A$'6 1a4!A$/FA 1a4!, (  r6   N)r   ru  rv  rZ   r   r_   int32int8r  r!  r$  r(  r"  r'  r4  r1  ri   r6   r4   r  r  ~  sA    jj"**bhhFN00="L2-r6   r  c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestNumObsYc                     t        dd      D ]B  }t        j                  j                  |d      }t	        |      }t        t        |      |       D y )Nr   r  r6  )r|   rZ   r   r   r  r	   r   )r  r3  r_  r  s       r4   test_num_obs_y_multi_matrixz'TestNumObsY.test_num_obs_y_multi_matrix  s>    q"A		q!$A"A1q) r6   c                     t        j                  t              5  | j                  d       d d d        y # 1 sw Y   y xY wNrl   )r.  r/  r{   check_yr  s    r4   test_num_obs_y_1zTestNumObsY.test_num_obs_y_1  s'     ]]:&LLO '&&s   5>c                 8    t        | j                  d             y Nr   r   rD  r  s    r4   test_num_obs_y_2zTestNumObsY.test_num_obs_y_2  s     	Q r6   c                 8    t        | j                  d             y )Nr   rH  r  s    r4   test_num_obs_y_3zTestNumObsY.test_num_obs_y_3      Q r6   c                 8    t        | j                  d             y Nr6  rH  r  s    r4   test_num_obs_y_4zTestNumObsY.test_num_obs_y_4  rL  r6   c                 H    t        dd      D ]  }| j                  |        y )Nrf     )r|   minit)r  r   s     r4   test_num_obs_y_5_10zTestNumObsY.test_num_obs_y_5_10  s    q"AJJqM r6   c                    t               }t        dd      D ]  }|j                  ||dz
  z  dz          t        dd      D ]:  }||vst        j                  t
              5  | j                  |       d d d        < y # 1 sw Y   GxY wNr   rQ  rl   rf  i   setr|   addr.  r/  r{   bad_yr  rr   r3  r   s       r4   test_num_obs_y_2_100z TestNumObsY.test_num_obs_y_2_100  sp     Eq"AEE!q1u+/" q#Az]]:.JJqM /. ..   #B  B		c                 8    t        | j                  |             y rn   rH  r2  s     r4   rR  zTestNumObsY.minit  rL  r6   c                 V    t         j                  j                  |      }t        |      S rn   )rZ   r   r   r   r  r3  r7  s      r4   rZ  zTestNumObsY.bad_y  s    IINN1|r6   c                 <    t        | j                  |            |k(  S rn   )r   make_yr2  s     r4   rD  zTestNumObsY.check_y  s    Q(A--r6   c                 R    t         j                  j                  ||dz
  z  dz        S Nrl   r   rZ   r   r   r2  s     r4   rb  zTestNumObsY.make_y  s"    yy~~qAE{q011r6   N)r   ru  rv  rA  rE  rI  rK  rO  rS  r\  rR  rZ  rD  rb  ri   r6   r4   r?  r?    s9    *!
!!	"!.2r6   r?  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestNumObsDMc                    t        dd      D ]v  }t        j                  j                  |d      }t	        |      }t        |      }t        dk\  r t        |j                  |j                         t        t        |      |       x y )Nrl   r  r6  r   )r|   rZ   r   r   r  r   r   r  r   r	   r   )r  r3  r_  r  r,  s        r4   test_num_obs_dm_multi_matrixz)TestNumObsDM.test_num_obs_dm_multi_matrix  s`    q"A		q!$A"A1A!|aggqww'A* r6   c                 8    t        | j                  d             y )Nr   r   check_Dr  s    r4   test_num_obs_dm_0zTestNumObsDM.test_num_obs_dm_0      Q r6   c                 8    t        | j                  d             y rC  rk  r  s    r4   test_num_obs_dm_1zTestNumObsDM.test_num_obs_dm_1  rn  r6   c                 8    t        | j                  d             y rG  rk  r  s    r4   test_num_obs_dm_2zTestNumObsDM.test_num_obs_dm_2
  rL  r6   c                 8    t        | j                  d             y rG  rk  r  s    r4   test_num_obs_dm_3zTestNumObsDM.test_num_obs_dm_3  rL  r6   c                 8    t        | j                  d             y rN  rk  r  s    r4   test_num_obs_dm_4zTestNumObsDM.test_num_obs_dm_4  rL  r6   c                 <    t        | j                  |            |k(  S rn   )r   make_Dr2  s     r4   rl  zTestNumObsDM.check_D  s    $++a.)Q..r6   c                 B    t         j                  j                  ||      S rn   re  r2  s     r4   rx  zTestNumObsDM.make_D  s    yy~~a##r6   N)r   ru  rv  ri  rm  rp  rr  rt  rv  rl  rx  ri   r6   r4   rg  rg    s*    +!!!!!/$r6   rg  c                     t        | d      S NT)throw)r   )r  s    r4   is_valid_dm_throwr}    s    q%%r6   c                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)TestIsValidDMc                     t        j                  dt         j                        }t        j                  t
              5  t        |       d d d        y # 1 sw Y   y xY w)Nrf  rG   rZ   r~  r   r.  r/  r{   r}  r  r  s     r4   $test_is_valid_dm_improper_shape_1D_Ez2TestIsValidDM.test_is_valid_dm_improper_shape_1D_E   s6    HHT,]]:&a  '&&   AAc                 x    t        j                  dt         j                        }t        t	        |      d       y )Nr  rG   FrZ   r~  r   r	   r   r  s     r4   $test_is_valid_dm_improper_shape_1D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_1D_F%  s$    HHT,[^U+r6   c                     t        j                  dt         j                        }t        j                  t
              5  t        |       d d d        y # 1 sw Y   y xY wNr   r   r   rG   r  r  s     r4   $test_is_valid_dm_improper_shape_3D_Ez2TestIsValidDM.test_is_valid_dm_improper_shape_3D_E)  s6    HHYbjj1]]:&a  '&&r  c                 x    t        j                  dt         j                        }t        t	        |      d       y Nr  rG   Fr  r  s     r4   $test_is_valid_dm_improper_shape_3D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_3D_F.  s$    HHYbjj1[^U+r6   c                     t         j                  j                  d      }t        |      }t	        dd      D ]	  }d|||f<    t        j                  t              5  t        |       d d d        y # 1 sw Y   y xY w)Nr  r   rf  r   )	rZ   r   r   r   r|   r.  r/  r{   r}  r  r7  r  r   s       r4   #test_is_valid_dm_nonzero_diagonal_Ez1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_E2  sZ    IINN2qMq!AAadG ]]:&a  '&&s   A11A:c                     t         j                  j                  d      }t        |      }t	        dd      D ]	  }d|||f<    t        t        |      d       y )Nr  r   rf  r   F)rZ   r   r   r   r|   r	   r   r  s       r4   #test_is_valid_dm_nonzero_diagonal_Fz1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_F:  sH    IINN2qMq!AAadG [^U+r6   c                     t         j                  j                  d      }t        |      }|d   dz   |d<   t	        j
                  t              5  t        |       d d d        y # 1 sw Y   y xY w)Nr  r   rl   rl   rl   r   )rZ   r   r   r   r.  r/  r{   r}  r  r7  r  s      r4   test_is_valid_dm_asymmetric_Ez+TestIsValidDM.test_is_valid_dm_asymmetric_EA  sN    IINN2qMD'A+$]]:&a  '&&s   A$$A-c                     t         j                  j                  d      }t        |      }|d   dz   |d<   t	        t        |      d       y )Nr  r  rl   r  FrZ   r   r   r   r	   r   r  s      r4   test_is_valid_dm_asymmetric_Fz+TestIsValidDM.test_is_valid_dm_asymmetric_FH  s<    IINN2qMD'A+$[^U+r6   c                 x    t        j                  dt         j                        }t        t	        |      d       y )Nr+  rG   Tr  r  s     r4   test_is_valid_dm_correct_1_by_1z-TestIsValidDM.test_is_valid_dm_correct_1_by_1N  s$    HHV2::.[^T*r6   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y )Nrl   Tr  r  s      r4   test_is_valid_dm_correct_2_by_2z-TestIsValidDM.test_is_valid_dm_correct_2_by_2R  +    IINN1qM[^T*r6   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y Nr   Tr  r  s      r4   test_is_valid_dm_correct_3_by_3z-TestIsValidDM.test_is_valid_dm_correct_3_by_3W  r  r6   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y )N   Tr  r  s      r4   test_is_valid_dm_correct_4_by_4z-TestIsValidDM.test_is_valid_dm_correct_4_by_4\  r  r6   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y )Nr  Tr  r  s      r4   test_is_valid_dm_correct_5_by_5z-TestIsValidDM.test_is_valid_dm_correct_5_by_5a  s+    IINN2qM[^T*r6   N)r   ru  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  ri   r6   r4   r  r    sC    !
,!
,!,!,++
+
+
+r6   r  c                     t        | d      S r{  )r   )r7  s    r4   is_valid_y_throwr  g  s    at$$r6   c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestIsValidYc                     t        j                  dt         j                        }t        j                  t
              5  t        |       d d d        y # 1 sw Y   y xY w)Nr   r   rG   rZ   r~  r   r.  r/  r{   r  r  r7  s     r4   #test_is_valid_y_improper_shape_2D_Ez0TestIsValidY.test_is_valid_y_improper_shape_2D_Ep  s6    HHWBJJ/]]:&Q '&&r  c                 x    t        j                  dt         j                        }t        t	        |      d       y )Nr  rG   FrZ   r~  r   r	   r   r  s     r4   #test_is_valid_y_improper_shape_2D_Fz0TestIsValidY.test_is_valid_y_improper_shape_2D_Fu  s$    HHWBJJ/Z]E*r6   c                     t        j                  dt         j                        }t        j                  t
              5  t        |       d d d        y # 1 sw Y   y xY wr  r  r  s     r4   #test_is_valid_y_improper_shape_3D_Ez0TestIsValidY.test_is_valid_y_improper_shape_3D_Ey  s6    HHYbjj1]]:&Q '&&r  c                 x    t        j                  dt         j                        }t        t	        |      d       y r  r  r  s     r4   #test_is_valid_y_improper_shape_3D_Fz0TestIsValidY.test_is_valid_y_improper_shape_3D_F~  s$    HHYbjj1Z]E*r6   c                 P    | j                  d      }t        t        |      d       y )Nr   Tcorrect_n_by_nr	   r   r  s     r4   test_is_valid_y_correct_2_by_2z+TestIsValidY.test_is_valid_y_correct_2_by_2       "Z]D)r6   c                 P    | j                  d      }t        t        |      d       y r  r  r  s     r4   test_is_valid_y_correct_3_by_3z+TestIsValidY.test_is_valid_y_correct_3_by_3  r  r6   c                 P    | j                  d      }t        t        |      d       y )Nr6  Tr  r  s     r4   test_is_valid_y_correct_4_by_4z+TestIsValidY.test_is_valid_y_correct_4_by_4  r  r6   c                 P    | j                  d      }t        t        |      d       y )Nrf  Tr  r  s     r4   test_is_valid_y_correct_5_by_5z+TestIsValidY.test_is_valid_y_correct_5_by_5  r  r6   c                    t               }t        dd      D ]  }|j                  ||dz
  z  dz          t        dd      D ]:  }||vst        j                  t
              5  | j                  |       d d d        < y # 1 sw Y   GxY wrU  rW  r[  s       r4   test_is_valid_y_2_100z"TestIsValidY.test_is_valid_y_2_100  sn    Eq"AEE!q1u+/" q#Az]]:.JJqM /. ..r]  c                 Z    t         j                  j                  |      }t        |d      S r{  )rZ   r   r   r   r`  s      r4   rZ  zTestIsValidY.bad_y  s!    IINN1!4((r6   c                 V    t         j                  j                  ||dz
  z  dz        }|S rd  re  r`  s      r4   r  zTestIsValidY.correct_n_by_n  s&    IINNAQKA-.r6   N)r   ru  rv  r  r  r  r  r  r  r  r  r  rZ  r  ri   r6   r4   r  r  k  s9    
 
+ 
+****")r6   r  rR  )g      $g      rh  c                    t        j                  t              5  t        ddgddg|        d d d        t        j                  t              5  t        ddgddg| ddg       d d d        y # 1 sw Y   @xY w# 1 sw Y   y xY w)Nrl   r   r   r6  )r.  r/  r{   r$   rX  s    r4   
test_bad_pr    sg     
z	"1a&1a&!$ 
#	z	"1a&1a&!aV, 
#	" 
#	"	"	"s   A+A7+A47B c                      t        j                  t              5  t        g dg d       d d d        y # 1 sw Y   y xY w)N)FFF)r.  r/  r{   r)   ri   r6   r4   test_sokalsneath_all_falser    s&    	z	")+@A 
#	"	"s   4=c                  l    t        t        g dg d      d       t        t        g dg d      d       y )Nrl   r   r   r   r6  r  rl   rl   rl   r   r   rl   r   rl   r   r   )r	   	wcanberrari   r6   r4   r  r    s$    9i0!4<6:r6   c                  t    t        t        g dg d      dd       t        t        g dg d      dd       y )	Nr  r  gUUUUUU?   decimalr  r  rj  )r
   wbraycurtisri   r6   r4   test_braycurtisr    s(    Iy962NL,?bQr6   c                     t        j                  g d      } t        j                  g d      }t        t        | |      dd       t        t	        | |      t        j
                  d      d       t        j                  t        d      5  t	        | t         j                  d d f   |t         j                  d d f         t        j
                  d      f d d d        t        j                  t        d      5  t        | t         j                  d d f   |t         j                  d d f          d d d        t        j                  t        d      5  t        | d d t         j                  f   |d d t         j                  f          d d d        t        j                  d	      j                  d
d
      }t        j                  t              5  t	        ||       d d d        t        j                  t              5  t        ||       d d d        t         j                  j                  d      }|j                  d      }|j                  d      }t	        ||      }t        ||      }t        |d
z  |d       y # 1 sw Y   xY w# 1 sw Y   ]xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)N)rl   rl   rl   )r   r   r   r  r
  r  r   Input vector should be 1-Dmatchr6  r   iIr  )rZ   r   r
   r  r  rk  r.  r/  r{   newaxisr-  r   r   r   r   )rl  rm  r   rsr7  d1d2s          r4   test_euclideansr    s   	)	B	)	B R,c2>
2r*BGGAJC 
z)E	F2bjj!m$bQ&78"''!*D 
G	z)E	FR

A&2::q=(9: 
G	z)E	FR2::&1bjj=(9: 
G 			!Q"A	z	"1a 
#	z	"Q 
# 
		z	*B
A
A	Aq	B	a	BAr2.) 
G	F	F	F	F	F
 
#	"	"	"s=   AJ<7J7JJ(J4JJJ%(J14J=c                      g d} g d}t        j                  t              5  t        | |       d d d        y # 1 sw Y   y xY w)Nr   r   rl   r  r.  r/  r{   whammingr   r7  s     r4   test_hamming_unequal_lengthr    s-    AA	z	"A 
#	"	"s	   8Ac                      g d} g d}g d}d}t        j                  t        |      5  t        | ||       d d d        y # 1 sw Y   y xY w)Nr  r  z/'w' should have the same length as 'u' and 'v'.r  r  )ur  r   r  s       r4   "test_hamming_unequal_length_with_wr    s<    AAA
;C	z	-Aq 
.	-	-s   AA
c                      t        j                  g dd      } t        j                  g dd      }d}t        t        | |      |       y )N)eggsspamr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  z|S4rG   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  g?)rZ   r   r   r  )rr   r   desireds      r4   test_hamming_string_arrayr    sM    
 B 	A 	 B 	A GHQNG,r6   c                      t        j                  g dg dg      } t        | ddd       }t        | | ddd       }t        | dd      }t        | | dd      }t	        ||d       t	        ||d       y )N)
QUUT@      Y@r  r  g      B@g      N@g     V@g     b@g      8@g      H@r$   rl   )r5   rR  r   )r5   rR  rF  r  )rZ   r   r   r   r   )arr_inp0c0p1c1s        r4   test_minkowski_wr     sy    XX 223 4F 
vkQ$	7B	vvkQ$	?B	vkQ	/B	vvkQ	7BB'B'r6   c                     g d} g d}t         j                  t         j                  t         j                  t         j                  fD ]o  }t        t        j                  | |      t        j                  ||            }t        t        j                  |j                  t         j                               q t         j                  t         j                  t         j                  t         j                  fD ]  }t        j                  |      j                   }t        dgt        j                  |g|            }t        t        j                  |g|      dg      }t#        ||       t#        |t        j$                  |      dz          t         j&                  t         j$                  t         j(                  t         j*                  g}dD ]2  }t-        t         |      s|j/                  t1        t         |             4 |D ]N  }t        t        j                  | |      t        j                  ||            }t#        |j                  |       P y )Nr  )r6  rf  r  rG   r   r   )float16float128)rZ   r=  int16r<  r  r  asarrayr   r   rH   floatinguint8r  uint32uint64iinfomaxr	   r   r_   	complex64
complex128hasattrr   getattr)r   r7  rH   dumaxr  r  dtypess           r4   test_sqeuclidean_dtypesr    s    	AA''288RXXrxx8AU3RZZ5OPaggr{{34 9 ((BIIryy"))<xx""1#rzz4&>?"**dV59A3?RRD)1,- = jj"**bllBMMBF( 2uMM'"e,-	 ) AU3RZZ5OPQWWe$ r6   c                      g d} g d}| D cg c]  }t        |       }}|D cg c]  }t        |       }}t        | |      }t        ||      }t        ||       y c c}w c c}w )N)TTF)TFT)r   r(   r	   )rR  r   r   r   r7  r  r  s          r4   test_sokalmichenerr  .  sf    AAAQAAQA!QE!QE 	s
   AA#c                      d} d}d}d}d|| z   z  ||z   d|| z   z  z   z  }t        |d       t        ddgddgddg      }t        ||       g d	}g d
}dD ]  }t        t        |||g      d        y )Nrh  g?r   r   gX$I?rl   r   r   )FFTTTFFTTTTTTFTFFFTT)TTTFFTTTFTTTTTFFFTTT)g?rS  r   g      4@r  )r
   r(   )	ntfnftnttnffexpectedactuala1a2r   s	            r4   test_sokalmichener_with_weightr  :  s     C
C
C
CC#I#)a39o"=>H),Aq6Aq6aX6F&)
DB
IB $M"b1#68JK $r6   c                     t        j                  g dg dg dg dg      }|j                         }t        |||        t	        ||        t        ||       y )Nr  r  r   g3333336@gL7@g333333F@)rZ   r  r  r   r   r   )r5   r1  r  s      r4   test_modifies_inputr  P  sM    	\$$') 
*B ggiG	"b&	"fr7#r6   c                 v   t        j                  g dg dg dg dg      }t        j                  t              5  t        ||| d       d d d        t        j                  t              5  t        || d       d d d        dD ]  }|di}|dk(  r| d	k(  s|d
k(  r| dk(  s
|dk(  r| dk(  r&t        j                  t              5  t        ||| fi | d d d        t        j                  t              5  t        || fi | d d d         y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   SxY w# 1 sw Y   xY w)Nr  r  r   r  r   )rR  r  r  foor  r'   r  r#   rR  r$   )rZ   r  r.  r/  r   r   r   )r5   r1  r8  r   s       r4   test_Xdist_deprecated_argsr  \  s   	\$$') 
*B
 
y	!b"fb! 
" 
y	!b&" 
"  uCZFl24KFm$;3J6[#8]]9%"b&+F+ & ]]9%"f'' &%   
"	! 
"	! &% &%s/   D+DD#2D/DD #D,	/D8	c                    t         d   d d dd d df   }t        j                  |j                  d         }|d d d    |d d d<   | dv rt	        j
                  d       | t        |       d| z   fD ]c  }t	        j                  t              5  t        |||       d d d        t	        j                  t              5  t        ||||       d d d        e y # 1 sw Y   =xY w# 1 sw Y   |xY w)	NrO   rf  r   rl   )r'   r#   r!   not applicabler,  r  )r\   rZ   r   r   r.  r:  r0  r/  r{   r   r   )r5   r_  r   r  s       r4   test_Xdist_non_negative_weightsr!  x  s    
 !#A#ss(+A

A!fWAccF??$%d6lGf$45]]:&!Q! ']]:&!QQ '& 6&&&&s   C<C#C 	#C,	c                     g d} t        |       }t        ||        t        | t        j                        }t        ||        t	        |j
                  t        j                         dg} t        |       }t	        |j                  d       t	        ||        d} t        j                  t        d      5  t        |        d d d        t        j                  d      j                  ddd      } t        j                  t        d      5  t        |        d d d        ddgd	d
gg} t        j                  t        d      5  t        |        d d d        y # 1 sw Y   xY w# 1 sw Y   MxY w# 1 sw Y   y xY w)Nr  rG   rl   r  r  rf  r   r   r   r6  )r   r   rZ   r   r	   rH   ru   r.  r/  r{   r-  r   r  s     r4   test__validate_vectorr#    s   AAq!"**-Aq!"**%	
AAA	A	z)E	F 
G 			!QA&A	z)E	F 
G Q!QA	z)E	F 
G	F 
G	F 
G	F 
G	Fs$   4E	E! E-E!E*-E6c                      t        j                  dt              } t        | d   | d         }|dk(  sJ t	        | d      }t        |dg       t        | d d | d d d      }t        |dgg       y )N)r   r  rG   r   rh  r+   rl   )rZ   r   r  r  r   r	   r   )r   r  s     r4   test_yule_all_samer%    sq    
d#AadAaDA8O8aASEaeQrUF#AcUGr6   c                     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g       t        t        ddggddggd
      dg       t        t        ddggddggd	d      ddgg       t        t        ddggddggdd      dgg       t        j                  g dg dg dg      } t        j                  g dg dg dg      }t        t        | |d	
      g d       t        t        | |d
      g d       y )N)r   rh  rh  )rh  r   rh  r   r   rh  rj  g)>d?r  r   r   rl   gД?T)r}   keepdims)rl   r   r   r6  )rf  r     rf   )	   r        )   r
  r  rQ  )            )            )g'Y?gTyCЇ?gFw$?g\BZ?)g;0%7/?g)o?gku?)r
   r!   rZ   r   )rr   r   s     r4   r  r    sS   oLsCj3*=+-oGMSzlc3ZLqIc
$Szlc3ZLqI"%Szlc3ZLq/358;SzlDSzlc3ZLq/358A{mE 	,!# 	$A 	"""$ 	%A a3DFa39;r6   c                  .   t        j                  g d      } t        j                  g d      }t        | |      }t        | |gd      }t	        ||       t        t        j                  |       t        j                  |      d      }t	        ||       y )N)rl   r   r   )r   r   r   r   rg  )rZ   r   r   r   r   r   r  )arr_1arr_2r  r  s       r4   test_gh_17703r8    sq    HHYEHHYEE5!HE5>&1FFH%2=='=='8FFH%r6   c                     | dv rt        j                  d       t        j                  dt        j                        }|j                  d        t        t        j                  j                  |       |||       y )N)r!   r#   r'   r   r  rG   F)writer  )
r.  r:  rZ   r-  r   setflagsr  scipyspatialdistance)r5   r   s     r4   test_immutable_inputr?    sY    ??$%
		"BJJ'AJJUJ+GEMM""F+AqA6r6   rn   )	NNFTFFFFN)r8  os.pathrT   	functoolsr   r   r  numpyrZ   r   numpy.linalgr   numpy.testingr   r   r   r	   r
   r   r   r   r.  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+   scipy._lib._utilr,   r-   fixturer5   rR   r   _tdist_ytdistr\   rd   rj   r~   r   r   r   r   r   r  ra  rM  r  r  r  r  r  r  r  
wcityblock
wchebyshevr  r  wkulczynski1r  r  r  r  r  r  wsokalmichenerr  r  r  r  r  r?  rg  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r#  r%  r  r8  r?  ri   r6   r4   <module>rN     s]  F   $    2 2 2  & & &D D D D D D / ~Y7 8
@ 
/222224
 <D
E V

 >  # -17;+0/4	-$`8 '.oD&I!TB   !tQT "td#dEPU"c#*?#FcL 
Q	>!%a*/EC	Qa	H!%a-21>!.1&w? ?	HY'
Y'

&
!{+{+7#Y59
{u=j)H7	{+ /j)dA dAN	x? x?tH4 H4V@- @-F32 32l $  $F&F+ F+R%6 6r 01- 2-B;R/B-(%>	L,	$(8 4
;:&7r6   