
    ЏkhY                       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 d dl9m:Z:  ejv                  e d	
      d        Z<g dZ= ej|                  g dg dg dg dg dg dgd      Z? ee?      Z@i ZAd ZB eB        d ZCd_dZD	 	 	 	 	 d`dZEd ZFd ZGd_dZH eed      ZIeId  dfd!ZJd"dd# d$ddddddddddd%d eIfd&ZK G d' d(      ZLd)eMfd*ZN eKed+d,      ZO eKed+dd-      ZP eKed+dd+.      ZQ eKed+ddd+/      ZR eKe/      ZS eKe)d0      xZTZU eKe5      ZV eKe'      ZW eKe$      ZX eKe#      ZY eKe&      ZZ eKe%      Z[ eKe,      Z\ eKe*      Z] eKe(d1      Z^ eKe4d1      Z_ eKe!      Z` eKe"d1      Za eKe3      Zb eKe2      Zc eKe0      Zd G d2 d3      Ze G d4 d5      Zf G d6 d7      Zg G d8 d9      Zh G d: d;      Zi G d< d=      Zjd> Zk G d? d@      ZldA Zm G dB dC      Znej                  j                  dDg dE      dF        ZqdG ZrdH ZsdI ZtdJ ZudK ZvdL ZwdM ZxdN ZydO Zzej                  j                  dP        Z|ej                  j                  dQ        Z}ej                  j                  dR        Z~ej                  j                  dS        Zej                  j                  dT        ZdU ZdV ZdW ZdX Zej                  j                  dY        ZdZ Z G d[ d\      Z G d] d^      Zy)a    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)skip_xp_invalid_argsession)paramsscopec                     | j                   S )z;
    Fixture for all metrics in scipy.spatial.distance
    )param)requests    ]/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/spatial/tests/test_distance.pymetricr6   E   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         )r8   r   '        )r9   r=   r     4     )r:   r>   rA   r      e  )r;   r?   rB   rD   r     )r<   r@   rC   rE   rF   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       r5   load_testing_filesre   |   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r7   c                  F    t        j                  d      j                  dk  S )Nr      )r[   intpitemsize r7   r5   	_is_32bitrk      s    771:""r7   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)r[   
atleast_1d.0as     r5   	<genexpr>z _chk_asarrays.<locals>.<genexpr>   s     42==#4s   !c              3   V   K   | ]   }|j                   d    j                   k(   " yw)r   N)ndim)rr   rs   arrayss     r5   rt   z _chk_asarrays.<locals>.<genexpr>   s"     <166VAY^^+<s   &)z(array ndim must be the same for neg axis)r[   
asanyarrayrv   raveltupleall
ValueErrorrange)rw   axisrs   s   `  r5   _chk_asarraysr      s    (./1bmmA/F| "# "#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ro   )r[   magetmasknomaskrq   s     r5   rt   z_chk_weights.<locals>.<genexpr>   s*     QQBEEMM!,BEELL@Qs   AATc              3   h   K   | ]*  \  }}|rt         j                  j                  |      n| , y wro   )r[   r   masked_invalid)rr   rs   has_nans      r5   rt   z_chk_weights.<locals>.<genexpr>   s4      D)q' 7>255//21D Ds   02r   c              3   X   K   | ]!  }j                   |j                      fk(   # y wro   shape)rr   rs   r~   weightss     r5   rt   z_chk_weights.<locals>.<genexpr>   s%     AQw}} 00As   '*z*weights shape must match arrays along axiszweights cannot be negativec              3   N   K   | ]  }t        j                  |         yw)r   N)r[   take)rr   rs   r~   pos_weightss     r5   rt   z_chk_weights.<locals>.<genexpr>   s!     N!2771k==Ns   "%rm   )r   anyr[   isnansumrz   ziprx   onesr   _freq_weights_weight_maskedr{   r|   nonzerosize)rw   r   r~   force_weightssimplify_weightspos_only	neg_check
nan_screenmask_screenddofchkedrs   has_nansr   s    ``          @r5   _chk_weightsr      s   
 &t,E":uRyLFD'=,=[Q&QQ178ABHHRVVAY'8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|        |S )Nz0frequency (integer count-type) weights required )astypeintr   r|   )r   int_weightss     r5   r   r      sD    ..%K;##%KG9UVVr7   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   rm   c              3   .   K   | ]  }|k7  s	|  y wro   rj   )rr   ir~   s     r5   rt   z!_weight_masked.<locals>.<genexpr>   s     C1dQCs   
r   )r[   rx   r   r   r   rv   rz   r}   r   r   r   )rw   r   r~   rs   	axis_masknot_axess     `   r5   r   r      s    |mmG$G -EEMM!$	$66A:CaffCCH!84I1y'',,,- Nr7   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 )NrH   c                     t        j                  t        j                  | ||            }|j                  t	        | j
                        D cg c]  }||k7  r| j                  |   nd c}      S c c}w )Nr   rm   )r[   rx   r   reshaper}   rv   r   )rs   ixr~   recordr   s        r5   mytakez_rand_split.<locals>.mytake   sd    rwwq"489~~(-aff7#$ ./$YqwwqzA= 7 8 	8 7s   A2r   c              3   B   K   | ]  }|j                      k(    y wro   r   )rr   rs   r~   n_obss     r5   rt   z_rand_split.<locals>.<genexpr>   s     6!qwwt}%6s   z#data must be aligned on sample axis      ?r   )r[   
issubdtyperI   integerr   float64arrayrandomRandomStater   r{   r}   r   randintrandappend)rw   r   r~   	split_perseedarrseeded_randr   r   split_ixprev_wqrs   r   s     `          @r5   _rand_splitr      si    #)* )+cii(Lcjj$ *F * hhwbjj1G))''-K8
 1IOOD!E6v66 10163y>E)* 8&&uqy1"J))Gb1f%67068+, ))Ava=!%' 8 88 7?/**8s   AE/?(E4h㈵>atolc                     | S ro   rj   xs    r5   <lambda>r     s     r7   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)r[   r   r   AttributeError	TypeErrorr|   r   _rough_check)	rs   br   keywcheck_acheck_ba_ib_is	            r5   r   r     s    !fG!fGB88Gw&'++-7G, . )w(z" BGW- 	BHCc.A	BBs   /A B
0B
	B
   c                     | S ro   rj   r   s    r5   r   r     s    1 r7   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   r[   rp   squeezerz   r   	Exceptiontyper   r   slicerv   nanr   r   r   NotImplementedErrorwarningswarn__name__)&argskwargsresultrw   restr   r~   r   rs   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_testra   r   ma_safema_very_safen_argsnan_safe	ones_testr   silentr   
split_testr   
weight_args&                        r5   wrappedz _weight_checked.<locals>.wrapped  sb   T$V$gvFG}**Z.zz&,/VW4+/TC %cr
E"IuRy:@AQbmmAIIK0AF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# 2A$T{maff4G$)',,$=GDM#GnG!"7c!1AgJ	2
 !,t3VR%<V%<#F# 5A$T{maff4G$)',,$=GDM#GnG!"7bff!4AgJ	5
 ::lD1V;$Z047H X)@)@cJCM!Na"%%"6"6q"9!NJ!N$Z047H X)@)@cJ#-1z*$VR-DV-D#N+ BHIQbii148I
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   )ra   r  r   r   r
  r   r  r  r   r  r	  r  r  r  r  r   r   r   r  s   `````````````````  r5   _weight_checkedr    s3     2YY Y Y Yt Nr7   c                       e Zd Zd Zd Zy)DummyContextManagerc                      y ro   rj   selfs    r5   	__enter__zDummyContextManager.__enter__~      r7   c                      y ro   rj   )r  r   s     r5   __exit__zDummyContextManager.__exit__  r  r7   N)r   
__module____qualname__r  r  rj   r7   r5   r  r  }  s    r7   r  r6   c                 F    | dv rt        j                         S t               S )N)r"   r(   )pytestdeprecated_callr  r6   s    r5   maybe_deprecatedr    s#    11%%''"$$r7   rm   )r   r   )r   r   r   )r   r   r  )r   r   r   r  )r  )r   c                      e Zd Zd Zej
                  j                  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ej
                  j                  d        Zej
                  j                  d        Zej
                  j                  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)rP   rQ   rR   rO   rN   )booluintr   r`   rnd_eo_namesr-   r,   r[   r`   r   valid_upcastsr  s    r5   setup_methodzTestCdist.setup_method  W    1 (0"**bjj&Q'.

BJJ&G&(jj"**%=*,**7r7   c           	      F   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        |      5  t        ||fd|i| d d d        d d d        t        j                  t              5  t        |      5  t        ||fdt        |      i| d d d        d d d        t        j                  t              5  t        |      5  t        ||fdd|z   i| d d d        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   KxY w# 1 sw Y   Px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# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r         @333333?ffffff@333333@皙@r-  皙@g      @      @g       @g      @333333@g @g      @r5  r1  Q	@r   N0tV4l1D_p4raMr      r6   test_)r[   aranger  raisesr   r  r   eval)r  r6   X1X2r   r   s         r5   test_cdist_extra_argszTestCdist.test_cdist_extra_args  s    O_=O_=$(ryy|<v|]]9% 	7!&) 7b"6V6v67	7 ]]9% 	=!&) =b"<T&\<V<=	= ]]9% 	A!&) Ab"@Wv%5@@A	A ]]9% 	0"b/$//	0]]9% 	6"b55f5	6]]9% 	:"b9D96!19	: 	:7 7	7 	7= =	= 	=A A	A 	A	0 	0	6 	6	: 	:s   G F3*G GG8G!G3-G' G3)G?HH3F=	8G  G
G	GG$'G0	,G33G<?HHH 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)Nrm   r   c                     ||z   |z   S ro   rj   r   yargkwargkwarg2s        r5   
_my_metricz:TestCdist.test_cdist_extra_args_custom.<locals>._my_metric      ;''r7   r)  r+  r/  r2  r4  r6  r7  r   r8  r:  r0  ffffff
@rG  rH  rG  皙?r6   rF  rH  皙@rm   r   )r[   r<  r  r=  r   r   r   )r  rI  r?  r@  r   r   s         r5   test_cdist_extra_args_customz&TestCdist.test_cdist_extra_args_custom  sO   	( O_=O_=$(ryy|<v|]]9% 	&"b*%	&]]9% 	-"b*,t,	-]]9% 	0"b*//	0]]9% 	="b*C<	=]]9% 	7"b*a#6	7]]9% 	7"b*a#6	7]]9% 	5"b*c34	5]]9% 	0"b*c3/	0]]9% 	+"b*c*	+]]9% 	B"b*cSA	B 	b"Z"%c347	9-	& 	&	- 	-	0 	0	= 	=	7 	7	7 	7	5 	5	0 	0	+ 	+	B 	B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  epsr?  r@  Y1Y2s         r5   #test_cdist_euclidean_random_unicodez-TestCdist.test_cdist_euclidean_random_unicode  sH    
^
^R[1R%56BS'A+>r7   p皙?      ?r   Gz?r   gffffff@gffffff@c                     d}t         d   }t         d   }t        ||d|      }t        ||d|      }t        ||d|t        dkD  	       y )
NvIh%<=rU  rV  r$   r`  test_minkowskir   r   )r   rY  r   rZ  )r  r`  r\  r?  r@  r]  r^  s          r5   test_cdist_minkowski_randomz%TestCdist.test_cdist_minkowski_random  sP     
^
^R[A6R%5;BQS'A+Fr7   c                     d}t         d   }t         d   }t        ||d      }d }dt        j                  | ||      z  | ||      z  j                        z
  }t        |||t        dkD         y )	N+=rU  rV  r   c                 d    t         j                  j                  | d      j                  dd      S )Nrm   r   r   )r[   linalgr   r   )Xs    r5   normsz1TestCdist.test_cdist_cosine_random.<locals>.norms  s&    99>>!!>,44R;;r7   rm   r   rX  )r]   wcdistr[   dotTr   r   )r  r\  r?  r@  r]  rn  r^  s          r5   test_cdist_cosine_randomz"TestCdist.test_cdist_cosine_random  sk    
^
^BH%	< eBi2b	>*<*<==BS'A+>r7   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#   r                @      ?r   r   rm   r   )r[   r   r   r   sqrtr  r=  r|   )r  x1x2distrt2s        r5   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   r  r  rj   r7   r5   myclassr        r7   r  c                 X    t        | d         rt        |d         st        d      yNr   zType has been changed+?
isinstancer|   r   rE  r  s     r5   rI  z9TestCdist.test_cdist_custom_notdouble.<locals>._my_metric"  -    adG,JqtW4M !899r7   rH   r  r  r   r   )r[   r   objectr   r	   r   )r  rI  rL   cdist_yright_yr  s        @r5   test_cdist_custom_notdoublez%TestCdist.test_cdist_custom_notdouble  sM    	 		 xx')V4d:6Wgw{;r7   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Nr6   r;  r   rX  )
r   r>  r   r   r   	__class__printr   r  r=  )r  r?  r@  r6   r\  r   y1y2y3r   e_clss              r5   _check_calling_conventionsz$TestCdist._check_calling_conventions+  sh   	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% 7b"6V6v67 7 7u% =b"<T&\<V<= = =u% Ab"@Wv%5@@A A A A A
	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 )Nrt  r   rm   r   	testing:  with: >   r   r+   r&   r"   r)   r(   r%   r!  r'   r   r~   r   Vr#   VI)r$  r]   r   r  r  r[   vstackr   r   var
atleast_2dcovrq  r   rl  inv)r  r6   eo_namer?  r@  X12r  r  s           r5   test_cdist_calling_conventionsz(TestCdist.test_cdist_calling_conventions@  sc    (( 	G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	Gr7   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>rN   r!  rR   r"  rQ   r   rP   r`   r   rt  r   rm   r   r  rX  )r]   r%  r   r   r   r   r  r  r   r  r=  )r  r6   r\  teststestr?  r@  r  new_typer  r   r  X1newX2news                 r5   test_cdist_dtype_equivalencez&TestCdist.test_cdist_dtype_equivalence_  s   '($*<*<V*DE'($*<*<V*DE&'););E)BC*+T-?-?	-JKM  	KDa1dd#BaAss#BK2r&1 !%Q KHx|Xb\&IB#BgkJK!	K
  	;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        |      5  t        |||fi |}	d d d        t        |      5  t        |||fd	|i|}
d d d        t        	
|t        d
kD         t        |
|u        t        j                  |dz
  |dz   ft        j
                        }t        j                  t              5  t        |      5  t        |||fd	|i| d d d        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        |      5  t        |||fd	|i| d d d        d d d        t        j                  t              5  t        |      5  t        |||fd	|i| d d d        d d d        t        j                  ||ft        j                        }t        j                  t              5  t        |      5  t        |||fd	|i| d d d        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   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   vxY w# 1 sw Y   y xY w)NrT  rU  rV  r   r$   rc  r`  rH   outr   rX  rm   F)rI   order)r]   r   dictr[   emptyr   r  r   r   r   r   r  r=  r|   int64)r  r6   r\  r?  r@  out_rout_cr   out1r]  r^  out2out3out4out5s                  r5   test_cdist_outzTestCdist.test_cdist_outz  s    
^
^xx{BHHQKu[ F3Kxxbjj9f% 	1r2v00B	1f% 	;r2v:4:6:B	; 	BS'A+> 	d
 xxq%'*"**=]]:& 	:!&) :b"f9$9&9:	:
 xxYE	""**669c3Q3h@xxbjjD]]:& 	:!&) :b"f9$9&9:	: ]]:& 	:!&) :b"f9$9&9:	:
 xxbhh7]]:& 	:!&) :b"f9$9&9:	: 	:=	1 	1	; 	;: :	: 	:: :	: 	:: :	: 	:: :	: 	:s   9J$J1K)J>:KK$K K$	K<K0&K<6LLL$J.1J;>K	KKK!	K$$K-0K9	5K<<LL	LLc                    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        |      5  t        |||fi |}d d d        t        |      5  t        |||fi |}	d d d        t        	|t        dkD         y # 1 sw Y   BxY w# 1 sw Y   ,xY w)	NrT  rU  r   rV  r$   rc  r`  rX  )r]   copyr	   r   flagsc_contiguousr  r  r   r   r   )
r  r6   r\  r?  r@  X1_copyX2_copyr   r]  r^  s
             r5   test_stridingzTestCdist.test_striding  sC    
^CaC1H%
^CaC1H%'')'') 	R!R!BHH)))*BHH)))***+**+[ F3Kf% 	1r2v00B	1f% 	;w:6:B	; 	BS'A+>	1 	1	; 	;s    E"EEE%c                    t         j                  j                  dd      }t         j                  j                  dd      }t               }|dk(  rd|d<   t	        |      5  t        ||fd|i|}d d d        ||fD cg c]  }t        j                  |       }}~~~t        r
t                t        d |D              sJ y # 1 sw Y   VxY wc c}w )N
   r$   rc  r`  r6   c              3   .   K   | ]  } |       d u   y wro   rj   )rr   weak_refs     r5   rt   z0TestCdist.test_cdist_refcount.<locals>.<genexpr>  s     @(8:%@s   )r[   r   r   r  r  r   weakrefrefr   r   r{   )r  r6   ry  rz  r   r  v	weak_refss           r5   test_cdist_refcountzTestCdist.test_cdist_refcount  s    YY^^B#YY^^B#[ F3Kf% 	9B8v88C	9
 /1"c];W[[^;	;CN@i@@@@	9 	9
 <s    C?CCNr  )r   r  r  r&  r  markthread_unsaferA  rR  r_  parametrizer[   infrh  rr  r}  r  r  r  r  r  r  r  rj   r7   r5   r  r    s    7 [[: :0"9H? [[S3c4#&S"&&#: ;G;G?<$<C*G>K6 [[+: +:Z [[? ?8 [[A Ar7   r  c            	          e Zd Zd Zej
                  j                  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
                  jU                  d$d%d&d'd(d)e+jX                  g      d*        Z-d+ Z.d, Z/d- Z0ej
                  j                  d.        Z1ej
                  j                  d/        Z2ej
                  j                  d0        Z3ej
                  j                  d1        Z4ej
                  j                  d2        Z5ej
                  j                  d3        Z6d4 Z7d5 Z8d6 Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>d< Z?d= Z@d> ZAd? ZBd@ ZCdA ZDdB ZEdC ZFdD ZGdE ZHdF ZIdG ZJdH ZKdI ZLdJ ZMdK ZNdL ZOej
                  j                  dM        ZPdN ZQeRdO        ZSdVdPZTdQ ZUdR ZVej
                  j                  dS        ZWej
                  j                  dT        ZXyU)W	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    r5   r&  zTestPdist.setup_method  r'  r7   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        |      5  t        |fd
|i| d d d        d d d        t        j                  t              5  t        |      5  t        |fd
t        |      i| d d d        d d d        t        j                  t              5  t        |      5  t        |fd
d|z   i| d d d        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   FxY w# 1 sw Y   Kx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# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r,  r-  r0  r7  r   r8  r:  r6   r;  )r[   r<  r  r=  r   r  r   r>  )r  r6   r?  r   r   s        r5   test_pdist_extra_argszTestPdist.test_pdist_extra_args  s    2hc
S#J/$(ryy|<v|]]9% 	3!&) 3b22623	3 ]]9% 	9!&) 9b8f889	9 ]]9% 	=!&) =b<6!1<V<=	= ]]9% 	,"+d+V+	,]]9% 	2"1D1T&\1	2]]9% 	6"55Wv-5	6 	63 3	3 	39 9	9 	9= =	= 	=	, 	,	2 	2	6 	6s   F/F"F/G	F<+G	G" G2G"G.G:H"F,	'F//F9<G	G		GG	G""G+.G7:HH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)Nrm   r   c                     ||z   |z   S ro   rj   rD  s        r5   rI  z:TestPdist.test_pdist_extra_args_custom.<locals>._my_metric   rJ  r7   r   r   r,  r-  r0  r7  r8  r:  rK  rL  rM  rN  rO  rP  rQ  )r[   r<  r  r=  r   r   r   )r  rI  r?  r   r   s        r5   test_pdist_extra_args_customz&TestPdist.test_pdist_extra_args_custom  s5   	( 2hc
S#J/$(ryy|<v|]]9% 	""j!	"]]9% 	)"j(4(	)]]9% 	,"j+F+	,]]9% 	9"jC8	9]]9% 	3"j!Qc2	3]]9% 	3"j!Qc2	3]]9% 	1"j#sC0	1]]9% 	,"j#s+	,]]9% 	'"j#&	']]9% 	>"j#S=	> 	b"%c347	9-	" 	"	) 	)	, 	,	9 	9	3 	3	3 	3	1 	1	, 	,	' 	'	> 	>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   rY  r]   wpdist_no_constr   r  r\  rm  Y_rightY_test1s        r5   test_pdist_euclidean_randomz%TestPdist.test_pdist_euclidean_random   5    !"&'!![1s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y r  r  r  s        r5   test_pdist_euclidean_random_uz'TestPdist.test_pdist_euclidean_random_u'  r  r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r  r[   r`   r]   r  r   r  s        r5   #test_pdist_euclidean_random_float32z-TestPdist.test_pdist_euclidean_random_float32.  s>    JJr,-.&'!![1s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  rW  r  r  r  r\  rm  r  Y_test2s        r5    test_pdist_euclidean_random_nonCz*TestPdist.test_pdist_euclidean_random_nonC5  s6    !"&'!!%56s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  irispdist-euclidean-irisr   r  r  r  s        r5    test_pdist_euclidean_iris_doublez*TestPdist.test_pdist_euclidean_iris_double<  s3    vJ+,!![1s3r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  r  r   r   rX  r[   r`   r]   r  r   r   r  s        r5   !test_pdist_euclidean_iris_float32z+TestPdist.test_pdist_euclidean_iris_float32D  B    JJr&z"+,!![1sGaKHr7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  rW  r  r  r  s        r5   test_pdist_euclidean_iris_nonCz(TestPdist.test_pdist_euclidean_iris_nonCL  s6     vJ+,!!%56s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  pdist-seuclideanr'   r  r]   r   r   r  s        r5   test_pdist_seuclidean_randomz&TestPdist.test_pdist_seuclidean_randomV  s5    !"'(<(s3r7   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   rm   r  r  )r[   r`   r]   r   r   r  )r  r\  rm  r  r  r  r  s          r5   $test_pdist_seuclidean_random_float32z.TestPdist.test_pdist_seuclidean_random_float32]  sl    JJr,-.'(<(s3 FF111%<1-s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  test_seuclideanr  r  r  s        r5   !test_pdist_seuclidean_random_nonCz+TestPdist.test_pdist_seuclidean_random_nonCi  s6    !"'(,-s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  pdist-seuclidean-irisr'   r  r  r  s        r5   test_pdist_seuclidean_irisz$TestPdist.test_pdist_seuclidean_irisq  s3    vJ,-<(s3r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y )Nr   r  r  r'   r  )r[   r`   r]   r   r   r  s        r5   "test_pdist_seuclidean_iris_float32z,TestPdist.test_pdist_seuclidean_iris_float32x  s<    JJr&z",-<(s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  r  r  r  r  s        r5   test_pdist_seuclidean_iris_nonCz)TestPdist.test_pdist_seuclidean_iris_nonC  s6     vJ,-,-s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr  r  pdist-cosiner   r  r]   wpdistr   r  s        r5   test_pdist_cosine_randomz"TestPdist.test_pdist_cosine_random  s4    !"^$H%s3r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r  r[   r`   r]   r  r   r  s        r5    test_pdist_cosine_random_float32z*TestPdist.test_pdist_cosine_random_float32  s=    JJr,-.^$H%s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  test_cosiner  r  r  s        r5   test_pdist_cosine_random_nonCz'TestPdist.test_pdist_cosine_random_nonC  s4    !"^$M*s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr   r  pdist-cosine-irisr   r   r  r  s        r5   test_pdist_cosine_irisz TestPdist.test_pdist_cosine_iris  s3    vJ()H%s3r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  r  r   r   r   r   )r[   r`   r]   r  r   r   r  s        r5   test_pdist_cosine_iris_float32z(TestPdist.test_pdist_cosine_iris_float32  sB    JJr&z"()H%sGaKHr7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr   r  r  r  r   r  r  s        r5   test_pdist_cosine_iris_nonCz%TestPdist.test_pdist_cosine_iris_nonC  s3    vJ()M*s3r7   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)r[   absr   r   r   r  r   r  )r  r   rm  s      r5   test_pdist_cosine_boundsz"TestPdist.test_pdist_cosine_bounds  s\     FF299((.33B78IIq!fq(#A&!+<	>r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr  r  pdist-cityblockr   r  r  r  s        r5   test_pdist_cityblock_randomz%TestPdist.test_pdist_cityblock_random  s5    !"&'!![1s3r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r&  r  r  s        r5   #test_pdist_cityblock_random_float32z-TestPdist.test_pdist_cityblock_random_float32  s>    JJr,-.&'!![1s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r'  test_cityblockr  r  r  s        r5    test_pdist_cityblock_random_nonCz*TestPdist.test_pdist_cityblock_random_nonC  s6    !"&'!!%56s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nrj  r  pdist-cityblock-irisr   r  r  r  s        r5   test_pdist_cityblock_irisz#TestPdist.test_pdist_cityblock_iris  s3    vJ+,!![1s3r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  r/  r   r   rX  r  r  s        r5   !test_pdist_cityblock_iris_float32z+TestPdist.test_pdist_cityblock_iris_float32  r  r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nrj  r  r/  r,  r  r  r  s        r5   test_pdist_cityblock_iris_nonCz(TestPdist.test_pdist_cityblock_iris_nonC  s6     vJ+,!!%56s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr  r  pdist-correlationr   r  r  r  s        r5   test_pdist_correlation_randomz'TestPdist.test_pdist_correlation_random  s5    !"()M*s3r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r6  r  r  s        r5   %test_pdist_correlation_random_float32z/TestPdist.test_pdist_correlation_random_float32  s>    JJr,-.()M*s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r7  test_correlationr  r  r  s        r5   "test_pdist_correlation_random_nonCz,TestPdist.test_pdist_correlation_random_nonC  s6    !"()./s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  pdist-correlation-irisr   r  r  r  s        r5   test_pdist_correlation_irisz%TestPdist.test_pdist_correlation_iris  s3    vJ-.M*s3r7   c                     d}t         d   }t        j                  t         d         }t        |d      }t	        |||t
        dkD         y )Nr  r  r?  r   r   rX  )r]   r[   r`   r  r   r   r  s        r5   #test_pdist_correlation_iris_float32z-TestPdist.test_pdist_correlation_iris_float32  sB    vJ**R 89:M*sGaKHr7   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  r?  r<  r  )sysmaxsizer  skipr]   r  r   r  s        r5    test_pdist_correlation_iris_nonCz*TestPdist.test_pdist_correlation_iris_nonC  sL    ;;CKK'vJ-../s3r7   r`  ra  rb  r   r   皙	@c                 p    d}t         d   }t        |d|      }t        |d|      }t        ||d|       y )Nre  r  r$   rf  rg  r   )r   rY  r  )r  r`  r\  rm  r]  r^  s         r5   test_pdist_minkowski_random_pz'TestPdist.test_pdist_minkowski_random_p  s=    !"Qq1Q 0A6BQS1r7   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y Nr  r  pdist-minkowski-3.2r$   rH  rf  r  r  r  s        r5   test_pdist_minkowski_randomz%TestPdist.test_pdist_minkowski_random'  s7    !"*+!![C8s3r7   c                     d}t        j                  t        d         }t        d   }t        |dd      }t	        |||       y rL  r  r  s        r5   #test_pdist_minkowski_random_float32z-TestPdist.test_pdist_minkowski_random_float32.  s@    JJr,-.*+!![C8s3r7   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  rM  rg  rH  rf  r  r  r  s        r5    test_pdist_minkowski_random_nonCz*TestPdist.test_pdist_minkowski_random_nonC5  s8    !"*+!!%5=s3r7   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  pdist-minkowski-3.2-irisr$   rH  rf  r  r  r  s        r5   test_pdist_minkowski_3_2_irisz'TestPdist.test_pdist_minkowski_3_2_iris<  5    vJ/0!![C8s3r7   c                     d}t        j                  t        d         }t        d   }t        |dd      }t	        |||       y )Nr   r  rT  r$   rH  rf  r  r  r  s        r5   %test_pdist_minkowski_3_2_iris_float32z/TestPdist.test_pdist_minkowski_3_2_iris_float32D  s>    JJr&z"/0!![C8s3r7   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  rT  rg  rH  rf  r  r  r  s        r5   "test_pdist_minkowski_3_2_iris_nonCz,TestPdist.test_pdist_minkowski_3_2_iris_nonCL  6    vJ/0!!%5=s3r7   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  pdist-minkowski-5.8-irisr$   r5  rf  r  r  r  s        r5   test_pdist_minkowski_5_8_irisz'TestPdist.test_pdist_minkowski_5_8_irisT  rV  r7   c                     d}t        j                  t        d         }t        d   }t        |dd      }t	        |||t
        dkD         y )	Nr   r  r]  r$   r5  rf  r   rX  r  r  s        r5   %test_pdist_minkowski_5_8_iris_float32z/TestPdist.test_pdist_minkowski_5_8_iris_float32\  sD    JJr&z"/0!![C8sGaKHr7   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  r]  rg  r5  rf  r  r  r  s        r5   "test_pdist_minkowski_5_8_iris_nonCz,TestPdist.test_pdist_minkowski_5_8_iris_nonCd  r[  r7   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*  r3  r   rm   r#   r  ru  rw  rv  r   r   r   r   r   )
r[   r   r   r   r   rx  r  r=  r|   r  )r  r   r{  r|  s       r5   test_pdist_mahalanobisz TestPdist.test_pdist_mahalanobisl  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 NrT  rM   pdist-hammingr   r  r  r  s        r5   test_pdist_hamming_randomz#TestPdist.test_pdist_hamming_random}  s4    "#_%I&s3r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y rf  r  r  s        r5   !test_pdist_hamming_random_float32z+TestPdist.test_pdist_hamming_random_float32  =    JJr-./_%I&s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y NrT  rM   rg  test_hammingr  r  r  s        r5   test_pdist_hamming_random_nonCz(TestPdist.test_pdist_hamming_random_nonC  s4    "#_%N+s3r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y rf  r[   r   r]   r  r   r  s        r5   test_pdist_dhamming_randomz$TestPdist.test_pdist_dhamming_random  rk  r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y rf  r  r  s        r5   "test_pdist_dhamming_random_float32z,TestPdist.test_pdist_dhamming_random_float32  rk  r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y rm  rq  r  s        r5   test_pdist_dhamming_random_nonCz)TestPdist.test_pdist_dhamming_random_nonC  s=    JJr-./_%N+s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Ndy=r  pdist-jensenshannonr!   r  r  r  s        r5   test_pdist_jensenshannon_randomz)TestPdist.test_pdist_jensenshannon_random  s5    !"*+?+s3r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )N:0yE>r  ry  r!   r   rX  r[   r`   r]   r   r   r   r  s        r5   'test_pdist_jensenshannon_random_float32z1TestPdist.test_pdist_jensenshannon_random_float32  sD    JJr,-.*+?+sGaKHr7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nrx  r  ry  test_jensenshannonr  r  r  s        r5   $test_pdist_jensenshannon_random_nonCz.TestPdist.test_pdist_jensenshannon_random_nonC  s6    !"*+/0s3r7   c                 z    t               rd}nd}t        d   }t        d   }t        |d      }t        |||       y )Ng&.=g-q=r  pdist-jensenshannon-irisr!   r   )rk   r]   r   r   r  s        r5   test_pdist_jensenshannon_irisz'TestPdist.test_pdist_jensenshannon_iris  s=    ;CCvJ/0?+s3r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Ngư>r  r  r!   r   r  r}  r  s        r5   %test_pdist_jensenshannon_iris_float32z/TestPdist.test_pdist_jensenshannon_iris_float32  sB    JJr&z"/0?+sGaKHr7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Ng-C6
?r  r  r  r  r  r  s        r5   "test_pdist_jensenshannon_iris_nonCz,TestPdist.test_pdist_jensenshannon_iris_nonC  s4    vJ/0/0s3r7   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rm   r   rm   rm   r   rm   rm   r   rm   rm   rH   333333?r   绽|=rY  r   	wmatchingr[   r   r!  r   r  mm2s      r5   test_pdist_matching_mtica1z$TestPdist.test_pdist_matching_mtica1  sd    bhh/hh/1rxxt<xxt<>3QU3Cae4r7   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rm   r   rm   rm   rm   r   rH   UUUUUU?r   r  r  r  r  s      r5   test_pdist_matching_mtica2z$TestPdist.test_pdist_matching_mtica2  sd    bhhy)XXi(*rxx	6hhy575qu5E6r7   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  rH   r   r   r  r  wyuler[   r   r!  r   r  r   r  s      r5   test_pdist_yule_mtica1z TestPdist.test_pdist_yule_mtica1  sr    "((?+((?+-288O4888O48:Q;!H1151AAE2r7   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  rH   r   r   r  r  r  r  s      r5   test_pdist_yule_mtica2z TestPdist.test_pdist_yule_mtica2  sr    "((9%((9%'288IT288IT24Q;!H1151AAE2r7   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  rH   r   g۶m۶m?r   r  r  wdicer[   r   r!  r   r  r   r  s      r5   test_pdist_dice_mtica1z TestPdist.test_pdist_dice_mtica1  sr    "((?+((?+-288O4888O48:Q;!H5qu5E6r7   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  rH   r   rw  r   r  r  r  r  s      r5   test_pdist_dice_mtica2z TestPdist.test_pdist_dice_mtica2  sr    "((9%((9%'288IT288IT24Q;!H3QU3Cae4r7   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  rH   r   g      ?r   r  r  )r)   r[   r   r!  r   r  r   r  s      r5   test_pdist_sokalsneath_mtica1z'TestPdist.test_pdist_sokalsneath_mtica1  s    113/>/>@Q;!H5qu5E6r7   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  rH   r   g?r   r  r  )wsokalsneathr[   r   r!  r   r  r   r  s      r5   test_pdist_sokalsneath_mtica2z'TestPdist.test_pdist_sokalsneath_mtica2  sr    ),),."((9D9((9D9;Q;!H5qu5E6r7   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  wrogerstanimotor[   r   r!  r   r  r   r  s      r5    test_pdist_rogerstanimoto_mtica1z*TestPdist.test_pdist_rogerstanimoto_mtica1$  ss    BHH_5HH_57RXXoTBXXoTBDQ;!H5qu5E6r7   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      r5    test_pdist_rogerstanimoto_mtica2z*TestPdist.test_pdist_rogerstanimoto_mtica2.  sr    BHHY/HHY/1RXXit<XXit<>Q;!H5qu5E6r7   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  rH   r   r  r   r  r  wrussellraor[   r   r!  r   r  r   r  s      r5   test_pdist_russellrao_mtica1z&TestPdist.test_pdist_russellrao_mtica18  r  r7   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  rH   r   r  r   r  r  r  r  s      r5   test_pdist_russellrao_mtica2z&TestPdist.test_pdist_russellrao_mtica2B  sr    ++-)48)48:Q;!H5qu5E6r7   c                     t         d   }t        dkD  r t        |j                  |j                         d}t        |d      }t        |d      }t        |||t        dkD         y )Nr  r   rT  r   test_canberrarX  )r]   r   r  r   rI   r  r   )r  Dr\  r  r  s        r5   test_pdist_canberra_matchz#TestPdist.test_pdist_canberra_matchL  sS    vJQ;!''177#Q
+Q0BS'A+>r7   c                 X    d}t        dgdgfd      }d}t        |||t        dkD         y )Nr|  rK  r.  r   gd>@1?r   r  )r  r   r   )r  r\  pdist_yr  s       r5   test_pdist_canberra_ticket_711z(TestPdist.test_pdist_canberra_ticket_711V  s4     !C53%.*=sGaKHr7   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>.myclassNr  rj   r7   r5   r  r  a  r  r7   r  c                 X    t        | d         rt        |d         st        d      yr  r  r  s     r5   rI  z9TestPdist.test_pdist_custom_notdouble.<locals>._my_metricd  r  r7   rH   r  r  r   r  )r[   r   r  r   r	   r   )r  rI  rL   r  r  r  s        @r5   test_pdist_custom_notdoublez%TestPdist.test_pdist_custom_notdouble^  sR    	 		 xx')wyk2&AZ0Wgw{;r7   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   r>  r   r   r   r  r  r   r  r=  )
r  rm  r6   r\  r   r  r  r  r   r  s
             r5   r  z$TestPdist._check_calling_conventionsm  sT   	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% 2a11&12 2 2u% 8a7V778 8 8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 )Nrt  r   r  r  >   r   r+   matchingr&   r"   r)   r(   r%   r!  r'   r   rm   r  r  r#   r  )r$  r]   r   r  r  r[   r  r   r   r  r  rq  r   rl  r  )r  r6   r  rm  r  r  s         r5   test_pdist_calling_conventionsz(TestPdist.test_pdist_calling_conventions  s   
 (( 	BG 7CaC1H%A{k69g> ) ) .47-B++Av6 %FF188BJJ/aa@//6Q/?=(MM"&&"**)=)?)?"@AXXbiimmA.001//6b/A+	Br7   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  rN   r!  rR   r"  rQ   r   rP   r`   r   rt  r   r  rm   rX  )r]   r%  r   r   r   r   r  r  r   r  r=  )r  r6   r\  r  r  r?  r  r  r  r   r  r@  s               r5   test_pdist_dtype_equivalencez&TestPdist.test_pdist_dtype_equivalence  sg   '($*<*<V*DE'($*<*<V*DE&'););E)BC*+T-?-?	-JKM  	KDa1cc"BK2f- !%Q KHx|F;B#BgkJK	K  1Q;%..)!H $Q 1H!"Bu- 1b01 1 11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        |      5  t        ||fi |}d d d        t        |      5  t        ||fd|i|}d d d        t        |       t        ||u        t	        j
                  |dz   t        j                  
      }	t        j                  t              5  t        |      5  t        ||fd|	i| d d d        d d d        t	        j
                  d|z  t        j                  
      d d d   }
t        j                  t              5  t        |      5  t        ||fd|
i| d d d        d d d        t	        j
                  |t        j                  
      }t        j                  t              5  t        |      5  t        ||fd|i| d d d        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   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)NrT  rP   rt  r   r   rm   r$   rc  r`  rH   r  r  r   )r]   r   r   r  r[   r  r   r  r   r   r   r  r=  r|   r  )r  r6   r\  rm  out_sizer   r  r  r  r  r  r  s               r5   test_pdist_outzTestPdist.test_pdist_out  sD    $%cc3Q3h/
aggaj1n5:;[ F3Kxx

3f% 	1Av00G	1f% 	;Av:4:6:G	; 	s3 	4  xx1BJJ7]]:& 	5!&) 5a4T4V45	5
 xxHBJJ7!<]]:& 	5!&) 5a4T4V45	5
 xx1]]:& 	5!&) 5a4T4V45	5 	53	1 	1	; 	;5 5	5 	55 5	5 	55 5	5 	5s   	H(*H5I*I:II(I-I(;J I4J (H25H?I	III%	!I((I14I=	9J  J	c                    d}t         d   d d dd d df   }|j                         }t        |j                  j                          t        |j                  j                         t               }|dk(  rd|d<   t        |      5  t        ||fi |}d d d        t        |      5  t        ||fi |}d d d        t        |t        dkD         y # 1 sw Y   AxY w# 1 sw Y   ,xY w)	NrT  rP   rt  r   r$   rc  r`  rX  )
r]   r  r   r  r  r  r  r   r   r   )r  r6   r\  rm  X_copyr   r]  r^  s           r5   r  zTestPdist.test_striding  s     $%cc3Q3h/ 	AGG((()))*[ F3Kf% 	,q&+F+B	,f% 	1vv00B	1 	BS'A+>	, 	,	1 	1s   C&CCC(Nr  )Yr   r  r  r&  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-  r0  r2  r4  r8  r:  r=  r@  rB  rG  r  r[   r  rJ  rN  rP  rR  rU  rX  rZ  r^  r`  rb  rd  rh  rj  ro  rr  rt  rv  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  rj   r7   r5   r  r    s   7 [[6 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I4
4I4573375777777 [[? ?I < <C*B8K2 [[%5 %5N [[? ?r7   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej                  j                  ej                  j                  d	      ej                  j                  d
eeg      d                      Zd Zy)TestSomeDistanceFunctionsc                 t    t        j                  g d      }t        j                  g d      }||fg| _        y )Nr)  r   r   r3  )r[   r   cases)r  r   rE  s      r5   r&  z&TestSomeDistanceFunctions.setup_method  s+    HH_%HH_%!fX
r7   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 )Nrm   rf  r*        ?gqaz@r   gw@rb  gR"6@i`  i  i^  i  uint16)r  r$   r
   r[   r   r	   r   )	r  r   rE  dist1dist1p5dist2dist0p25rs   r   s	            r5   rg  z(TestSomeDistanceFunctions.test_minkowski  s    JJ 	DDAqaa(Es+1,G)CDaa(Ez2 A.H*BC	D HHc3Z HHc3Z Yq!_qxx1188H3EF	Hr7   c                     | j                   D ]0  \  }}t        ||      }t        |t        j                  d             2 y )Nrt  )r  
weuclideanr
   r[   rx  r  r   rE  r{  s       r5   rW  z(TestSomeDistanceFunctions.test_euclidean  s7    JJ 	2DAqa#Dbggaj1	2r7   c                 \    | j                   D ]  \  }}t        ||      }t        |d        y )Nr3  )r  wsqeuclideanr
   r  s       r5   test_sqeuclideanz*TestSomeDistanceFunctions.test_sqeuclidean  s/    JJ 	+DAq1%Dc*	+r7   c           
          | j                   D ]L  \  }}t        ||      }t        |ddt        j                  d      t        j                  d      z  z  z
         N y )Nr   g      2@      )r  wcosiner
   r[   rx  r  s       r5   r  z%TestSomeDistanceFunctions.test_cosine  sO    JJ 	PDAq1a=DcDBGGBK"''"+4M,N&NO	Pr7   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 )Nrm   F)centered)r  wcorrelationfloatr  r  s    r5   test_cosine_output_dtypez2TestSomeDistanceFunctions.test_cosine_output_dtype   sB    ,1v1vFNNN'1a&1a&15999r7   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   )r[   r   r  r  r
   rp  r   )r  xmymr   rE  r{  s         r5   r<  z*TestSomeDistanceFunctions.test_correlation%  so    XXn%XX9:JJ 	TDAq1%DcBFF2rNd2hb>Q,R&RS	Tr7   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)%ru  ru  ru  ru  ru  ru         ru  ru  ru  r  r  r  ru  r  ru  r  ru  ru  r  r  ru  r   ru  ru  r  ru  ru  r  ru  r  r  r  r  r  r  ru  )%r   r   r   r   r   r   r  r   r   r   r  r  r  r   r  r   r  r   r   ru  r  r   r   r   r   r  r   r   r  r   r  r  r  r  r  r  r   r   r  )r[   r   r   finfor   r\  r  s       r5   test_correlation_positivez3TestSomeDistanceFunctions.test_correlation_positive,  sm    HH I J HH I J 1a D9B"**!5!9!9999999r7   zignore:Casting complexfuncc                 |    ddg}ddg}t        j                  d      5   |||       d d d        y # 1 sw Y   y xY w)Ny      ?        y       @        y      @        y      @        z"Complex `u` and `v` are deprecatedmatch)r  r  )r  r  r   rE  s       r5   test_corr_dep_complexz/TestSomeDistanceFunctions.test_corr_dep_complex7  sC     4L4L##*NO 	AJ	 	 	s   
2;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   ru  )r   r   r   )ru  r   r   g      @)r[   r   r  r#   r
   rx  )r  r   rE  vir{  s        r5   test_mahalanobisz*TestSomeDistanceFunctions.test_mahalanobis@  sj    HH_%HH_%XXIJJJ 	4DAqq!R(Dbggcl3	4r7   N)r   r  r  r&  rg  rW  r  r  r  r<  r  r  r  r  filterwarningsr  r   r   r  r  rj   r7   r5   r  r    s    H&2
+
P
:
T	: [[[[ 89[[Vk6%:; < : 4r7   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 ro   )checked_dtypescheck_squareform_matrixr  rI   s     r5   test_squareform_matrixz%TestSquareForm.test_squareform_matrixL  %    (( 	0E((/	0r7   c                 H    | j                   D ]  }| j                  |        y ro   )r  check_squareform_vectorr  s     r5   test_squareform_vectorz%TestSquareForm.test_squareform_vectorP  r  r7   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   rH   r   rm   rm   r   g@)rm   )r[   zerosr   r	   r   rI   r   r   )r  rI   ArAs       r5   r  z&TestSquareForm.check_squareform_matrixT  s    HHV5)]RXXt$RXXu%HHV5)]RXXt$RXXu%HHq#ha)7]RXXt$RXXu%2rxxU;<r7   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  rH   r  r   g @)r   r   )r[   r  r   r	   r   rI   r   r   )r  rI   r  rvs       r5   r
  z&TestSquareForm.check_squareform_vectore  s    HHT']RXXv&RXXu%2u%HHcU%(]RXXv&RXXu%2rxx!SC8(<EJKr7   c                 H    t        dd      D ]  }| j                  |        y )Nr   rt  )r}   check_squareform_multi_matrixr  ns     r5   test_squareform_multi_matrixz+TestSquareForm.test_squareform_multi_matrixr  s%    q! 	2A..q1	2r7   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   rm   r   r   r   )r[   r   r   r  r	   lenr   r   r   r  r}   )
r  r  rm  Yr  Yrskr   js
             r5   r  z,TestSquareForm.check_squareform_multi_matrixv  s   IINN1a AS\1%qM]GGa<!''177BHH-SVQS]A&QqT1Q4 q!A$ 	-A1q5!A$' -6 1a4!A$/FA 1a4!,-	-r7   N)r   r  r  r[   r   r`   int32int8r!  r  r  r  r  r
  r  r  rj   r7   r5   r  r  I  sA    jj"**bhhFN00="L2-r7   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  r  )r}   r[   r   r   r  r	   r   )r  r  rm  r  s       r5   test_num_obs_y_multi_matrixz'TestNumObsY.test_num_obs_y_multi_matrix  sC    q" 	*A		q!$A"A1q)	*r7   c                     t        j                  t              5  | j                  d       d d d        y # 1 sw Y   y xY wNrm   )r  r=  r|   check_yr  s    r5   test_num_obs_y_1zTestNumObsY.test_num_obs_y_1  s0     ]]:& 	LLO	 	 	s   5>c                 8    t        | j                  d             y Nr   r   r)  r  s    r5   test_num_obs_y_2zTestNumObsY.test_num_obs_y_2  s     	Q r7   c                 8    t        | j                  d             y )Nr   r-  r  s    r5   test_num_obs_y_3zTestNumObsY.test_num_obs_y_3      Q r7   c                 8    t        | j                  d             y Nr  r-  r  s    r5   test_num_obs_y_4zTestNumObsY.test_num_obs_y_4  r1  r7   c                 H    t        dd      D ]  }| j                  |        y )Nrt     )r}   minit)r  r   s     r5   test_num_obs_y_5_10zTestNumObsY.test_num_obs_y_5_10  s"    q" 	AJJqM	r7   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   r6  rm   rt  i   setr}   addr  r=  r|   bad_yr  rs   r  r   s       r5   test_num_obs_y_2_100z TestNumObsY.test_num_obs_y_2_100  s     Eq" 	#AEE!q1u+/"	#q# 	"Az]]:. "JJqM" "	"" "   #B  B		c                 8    t        | j                  |             y ro   r-  r  s     r5   r7  zTestNumObsY.minit  r1  r7   c                 V    t         j                  j                  |      }t        |      S ro   )r[   r   r   r   r  r  rE  s      r5   r?  zTestNumObsY.bad_y  s    IINN1|r7   c                 <    t        | j                  |            |k(  S ro   )r   make_yr  s     r5   r)  zTestNumObsY.check_y  s    Q(A--r7   c                 R    t         j                  j                  ||dz
  z  dz        S Nrm   r   r[   r   r   r  s     r5   rG  zTestNumObsY.make_y  s"    yy~~qAE{q011r7   N)r   r  r  r&  r*  r.  r0  r4  r8  rA  r7  r?  r)  rG  rj   r7   r5   r$  r$    s9    *!
!!	"!.2r7   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 )Nrm   r  r  r   )r}   r[   r   r   r  r   r   r  r   r	   r   )r  r  rm  r  r  s        r5   test_num_obs_dm_multi_matrixz)TestNumObsDM.test_num_obs_dm_multi_matrix  se    q" 	+A		q!$A"A1A!|aggqww'A*	+r7   c                 8    t        | j                  d             y )Nr   r   check_Dr  s    r5   test_num_obs_dm_0zTestNumObsDM.test_num_obs_dm_0      Q r7   c                 8    t        | j                  d             y r(  rP  r  s    r5   test_num_obs_dm_1zTestNumObsDM.test_num_obs_dm_1  rS  r7   c                 8    t        | j                  d             y r,  rP  r  s    r5   test_num_obs_dm_2zTestNumObsDM.test_num_obs_dm_2  r1  r7   c                 8    t        | j                  d             y r,  rP  r  s    r5   test_num_obs_dm_3zTestNumObsDM.test_num_obs_dm_3  r1  r7   c                 8    t        | j                  d             y r3  rP  r  s    r5   test_num_obs_dm_4zTestNumObsDM.test_num_obs_dm_4  r1  r7   c                 <    t        | j                  |            |k(  S ro   )r   make_Dr  s     r5   rQ  zTestNumObsDM.check_D  s    $++a.)Q..r7   c                 B    t         j                  j                  ||      S ro   rJ  r  s     r5   r]  zTestNumObsDM.make_D  s    yy~~a##r7   N)r   r  r  rN  rR  rU  rW  rY  r[  rQ  r]  rj   r7   r5   rL  rL    s*    +!!!!!/$r7   rL  c                     t        | d      S NT)throw)r   )r  s    r5   is_valid_dm_throwrb    s    q%%r7   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rt  rH   r[   r  r   r  r=  r|   rb  r  r  s     r5   $test_is_valid_dm_improper_shape_1D_Ez2TestIsValidDM.test_is_valid_dm_improper_shape_1D_E  s?    HHT,]]:& 	!a 	! 	! 	!   AAc                 x    t        j                  dt         j                        }t        t	        |      d       y )Nrf  rH   Fr[   r  r   r	   r   rh  s     r5   $test_is_valid_dm_improper_shape_1D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_1D_F  s$    HHT,[^U+r7   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   rH   rg  rh  s     r5   $test_is_valid_dm_improper_shape_3D_Ez2TestIsValidDM.test_is_valid_dm_improper_shape_3D_E  s?    HHYbjj1]]:& 	!a 	! 	! 	!rj  c                 x    t        j                  dt         j                        }t        t	        |      d       y Nrp  rH   Frl  rh  s     r5   $test_is_valid_dm_improper_shape_3D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_3D_F  s$    HHYbjj1[^U+r7   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   rt  r   )	r[   r   r   r   r}   r  r=  r|   rb  r  rE  r  r   s       r5   #test_is_valid_dm_nonzero_diagonal_Ez1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_E  sh    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   rt  r   F)r[   r   r   r   r}   r	   r   rv  s       r5   #test_is_valid_dm_nonzero_diagonal_Fz1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_F  sM    IINN2qMq! 	AAadG	[^U+r7   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   rm   rm   rm   r   )r[   r   r   r   r  r=  r|   rb  r  rE  r  s      r5   test_is_valid_dm_asymmetric_Ez+TestIsValidDM.test_is_valid_dm_asymmetric_E  sW    IINN2qMD'A+$]]:& 	!a 	! 	! 	!s   A$$A-c                     t         j                  j                  d      }t        |      }|d   dz   |d<   t	        t        |      d       y )Nr  r{  rm   r|  Fr[   r   r   r   r	   r   r}  s      r5   test_is_valid_dm_asymmetric_Fz+TestIsValidDM.test_is_valid_dm_asymmetric_F  s<    IINN2qMD'A+$[^U+r7   c                 x    t        j                  dt         j                        }t        t	        |      d       y )Nr  rH   Trl  rh  s     r5   test_is_valid_dm_correct_1_by_1z-TestIsValidDM.test_is_valid_dm_correct_1_by_1  s$    HHV2::.[^T*r7   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y )Nrm   Tr  r}  s      r5   test_is_valid_dm_correct_2_by_2z-TestIsValidDM.test_is_valid_dm_correct_2_by_2  +    IINN1qM[^T*r7   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y Nr   Tr  r}  s      r5   test_is_valid_dm_correct_3_by_3z-TestIsValidDM.test_is_valid_dm_correct_3_by_3"  r  r7   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y )N   Tr  r}  s      r5   test_is_valid_dm_correct_4_by_4z-TestIsValidDM.test_is_valid_dm_correct_4_by_4'  r  r7   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y )Nr  Tr  r}  s      r5   test_is_valid_dm_correct_5_by_5z-TestIsValidDM.test_is_valid_dm_correct_5_by_5,  s+    IINN2qM[^T*r7   N)r   r  r  ri  rm  rq  rt  rw  ry  r~  r  r  r  r  r  r  rj   r7   r5   rd  rd    sC    !
,!
,!,!,++
+
+
+r7   rd  c                     t        | d      S r`  )r   )rE  s    r5   is_valid_y_throwr  2  s    at$$r7   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   rH   r[   r  r   r  r=  r|   r  r  rE  s     r5   #test_is_valid_y_improper_shape_2D_Ez0TestIsValidY.test_is_valid_y_improper_shape_2D_E;  s?    HHWBJJ/]]:& 	 Q	  	  	 rj  c                 x    t        j                  dt         j                        }t        t	        |      d       y )Nr  rH   Fr[   r  r   r	   r   r  s     r5   #test_is_valid_y_improper_shape_2D_Fz0TestIsValidY.test_is_valid_y_improper_shape_2D_F@  s$    HHWBJJ/Z]E*r7   c                     t        j                  dt         j                        }t        j                  t
              5  t        |       d d d        y # 1 sw Y   y xY wro  r  r  s     r5   #test_is_valid_y_improper_shape_3D_Ez0TestIsValidY.test_is_valid_y_improper_shape_3D_ED  s?    HHYbjj1]]:& 	 Q	  	  	 rj  c                 x    t        j                  dt         j                        }t        t	        |      d       y rs  r  r  s     r5   #test_is_valid_y_improper_shape_3D_Fz0TestIsValidY.test_is_valid_y_improper_shape_3D_FI  s$    HHYbjj1Z]E*r7   c                 P    | j                  d      }t        t        |      d       y )Nr   Tcorrect_n_by_nr	   r   r  s     r5   test_is_valid_y_correct_2_by_2z+TestIsValidY.test_is_valid_y_correct_2_by_2M       "Z]D)r7   c                 P    | j                  d      }t        t        |      d       y r  r  r  s     r5   test_is_valid_y_correct_3_by_3z+TestIsValidY.test_is_valid_y_correct_3_by_3Q  r  r7   c                 P    | j                  d      }t        t        |      d       y )Nr  Tr  r  s     r5   test_is_valid_y_correct_4_by_4z+TestIsValidY.test_is_valid_y_correct_4_by_4U  r  r7   c                 P    | j                  d      }t        t        |      d       y )Nrt  Tr  r  s     r5   test_is_valid_y_correct_5_by_5z+TestIsValidY.test_is_valid_y_correct_5_by_5Y  r  r7   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r:  r<  r@  s       r5   test_is_valid_y_2_100z"TestIsValidY.test_is_valid_y_2_100]  s    Eq" 	#AEE!q1u+/"	#q# 	"Az]]:. "JJqM" "	"" "rB  c                 Z    t         j                  j                  |      }t        |d      S r`  )r[   r   r   r   rE  s      r5   r?  zTestIsValidY.bad_yf  s!    IINN1!4((r7   c                 V    t         j                  j                  ||dz
  z  dz        }|S rI  rJ  rE  s      r5   r  zTestIsValidY.correct_n_by_nj  s&    IINNAQKA-.r7   N)r   r  r  r  r  r  r  r  r  r  r  r  r?  r  rj   r7   r5   r  r  6  s9    
 
+ 
+****")r7   r  r`  )g      $g      ru  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)Nrm   r   r   r  )r  r=  r|   r$   rf  s    r5   
test_bad_pr  o  sy     
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)   rj   r7   r5   test_sokalsneath_all_falser  x  s3    	z	" B)+@AB B Bs   4=c                  l    t        t        g dg d      d       t        t        g dg d      d       y )Nrm   r   r   r   r  r  rm   rm   rm   r   r   rm   r   rm   r   r   )r	   	wcanberrarj   r7   r5   r  r  ~  s$    9i0!4<6:r7   c                  t    t        t        g dg d      dd       t        t        g dg d      dd       y )	Nr  r  UUUUUU?   decimalr  r  rw  )r
   wbraycurtisrj   r7   r5   test_braycurtisr    s(    Iy962NL,?bQr7   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)rm   rm   rm   r   r   r   r*  r  r  r   Input vector should be 1-Dr  r  r   iIr  )r[   r   r
   r  r  rx  r  r=  r|   newaxisr<  r   r   r   r   )ry  rz  r   rsrE  d1d2s          r5   test_euclideansr    s   	)	B	)	B R,c2>
2r*BGGAJC 
z)E	F E2bjj!m$bQ&78"''!*DE	z)E	F ;R

A&2::q=(9:;	z)E	F ;R2::&1bjj=(9:; 			!Q"A	z	" 1a	z	" Q 
		z	*B
A
A	Aq	B	a	BAr2.)E E; ;; ;
  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   rm   r  r  r=  r|   whammingr   rE  s     r5   test_hamming_unequal_lengthr    s6    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       r5   "test_hamming_unequal_length_with_wr    sE    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|S4rH   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  g?)r[   r   r   r  )rs   r   desireds      r5   test_hamming_string_arrayr    sM    
 B 	A 	 B 	A GHQNG,r7   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$   rm   )r6   r`  r   )r6   r`  rT  r  )r[   r   r   r   r   )arr_inp0c0p1c1s        r5   test_minkowski_wr    sy    XX 223 4F 
vkQ$	7B	vvkQ$	?B	vkQ	/B	vvkQ	7BB'B'r7   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  )r  rt  r  rH   r   r   )float16float128)r[   r"  int16r!  r  r  asarrayr   r   rI   floatinguint8r  uint32uint64iinfomaxr	   r   r`   	complex64
complex128hasattrr   getattr)r   rE  rI   dumaxr  r  dtypess           r5   test_sqeuclidean_dtypesr    s    	AA''288RXXrxx8 5AU3RZZ5OPaggr{{345 ((BIIryy"))< .xx""1#rzz4&>?"**dV59A3?RRD)1,-. jj"**bllBMMBF( . 2uMM'"e,-	.  %AU3RZZ5OPQWWe$%r7   c                  t   g d} g d}| D cg c]  }t        |       }}|D cg c]  }t        |       }}t        j                         5  t        | |      }d d d        t        j                         5  t        ||      }d d d        t	               y c c}w c c}w # 1 sw Y   IxY w# 1 sw Y   ,xY w)N)TTF)TFT)r   r  r  r(   r	   )r`  r   r   r   rE  r  r  s          r5   test_sokalmichenerr    s     	AAAQAAQA				! $a#$				! $a#$  	$ $$ $s"   BBB"6B."B+.B7c            	         d} d}d}d}d|| z   z  ||z   d|| z   z  z   z  }t        |d       t        j                         5  t        ddgddgddg      }d d d        t        |       g d	}g d
}dD ]7  }t        j                         5  t        t        |||g      d       d d d        9 y # 1 sw Y   ZxY w# 1 sw Y   PxY w)Nru  g?r   r   gX$I?rm   r   r   )FFTTTFFTTTTTTFTFFFTT)TTTFFTTTFTTTTTFFFTTT)g?ra  r   g      4@r  )r
   r  r  r(   )	ntfnftnttnffexpectedactuala1a2r   s	            r5   test_sokalmichener_with_weightr    s    
 C
C
C
CC#I#)a39o"=>H),				! ;1v1v!S:;&)
DB
IB $ P##% 	Pb"qc :<NO	P 	PP; ;	P 	Ps    B.
B:.B7:C	c                 0   t        j                  g dg dg dg dg      }|j                         }t        |       5  t	        |||        d d d        t        |       5  t        ||        d d d        t        ||       y # 1 sw Y   6xY w# 1 sw Y   "xY w)Nr)  r+  r/  g3333336@gL7@g333333F@)r[   r  r  r  r   r   r   )r6   r?  r  s      r5   test_modifies_inputr   !  s     
\$$') 
*B ggiG	&	! b"f	&	! b&r7#	  s   B B B	Bc                    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 ]  }|t        j                  d      i}|dk(  r| d	k(  s|d
k(  r| dk(  s
|dk(  r| dk(  r9t        j                  t              5  t        |       5  t        ||| fi | d d d        d d d        t        j                  t              5  t        |       5  t        || fi | d d d        d d d         y # 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   sxY w# 1 sw Y   DxY w# 1 sw Y   	xY w)Nr)  r+  r/  r  r   )r`  r  r  r   r  r'   r  r#   r`  r$   )r[   r  r  r=  r   r   r   r  )r6   r?  rF  r   s       r5   test_Xdist_deprecated_argsr  0  su    
\$$') 
*B
 
y	! "b"fb!" 
y	! b&"   ,rzz"~&CZFl24KFm$;3J6[#8]]9% 	0!&) 0b"f//0	0 ]]9% 	,!&) ,b&+F+,	, 	,," " 0 0	0 	0
, ,	, 	,s_   E+EE*!E0E*F%E63FEEE'#E**E3	6E?;FF	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 ]  }t	        j                  t              5  t        |       5  t        |||       d d d        d d d        t	        j                  t              5  t        |       5  t        ||||       d d d        d d d         y # 1 sw Y   YxY w# 1 sw Y   ]xY w# 1 sw Y   ,xY w# 1 sw Y   xY w)	NrP   rt  r   rm   )r'   r#   r!   not applicabler;  r  )r]   r[   r   r   r  rF  r>  r=  r|   r  r   r   )r6   rm  r   r  s       r5   test_Xdist_non_negative_weightsr  O  s   
 !#A#ss(+A

A!fWAccF??$%d6lGf$45 $]]:& 	!!&) !aa !	! ]]:& 	$!&) $aA#$	$ 	$	$! !	! 	!$ $	$ 	$sH   DC?'DD#D,D#?DDD	D D##D,	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  rH   rm   r  r  rt  r   r   r   r  )r   r   r[   r   r	   rI   rv   r  r=  r|   r<  r   r  s     r5   test__validate_vectorr  a  s0   AAq!"**-Aq!"**%	
AAA	A	z)E	F  			!QA&A	z)E	F  Q!QA	z)E	F     s$   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  rH   r   ru  r+   rm   )r[   r   r!  r  r   r	   r   )r   r  s     r5   test_yule_all_samer	  {  sq    
d#AadAaDA8O8aASEaeQrUF#AcUGr7   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   ru  ru  )ru  r   ru  r   r   ru  rw  g)>d?r  r   r   rm   gД?T)r~   keepdims)rm   r   r   r  )rt  r     rg   )	   r        )   r  r  r6  )            )            )g'Y?gTyCЇ?gFw$?g\BZ?)g;0%7/?g)o?gku?)r
   r!   r[   r   )rs   r   s     r5   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;r7   c                  .   t        j                  g d      } t        j                  g d      }t        | |      }t        | |gd      }t	        ||       t        t        j                  |       t        j                  |      d      }t	        ||       y )N)rm   r   r   )r   r   r   r   r  )r[   r   r   r   r   r   r  )arr_1arr_2r  r  s       r5   test_gh_17703r    sq    HHYEHHYEE5!HE5>&1FFH%2=='=='8FFH%r7   c                 >   | dv rt        j                  d       t        j                  dt        j                        }|j                  d       t        |       5   t        t        j                  j                  |       |||       d d d        y # 1 sw Y   y xY w)N)r!   r#   r'   r  r  rH   F)writer  )r  rF  r[   r<  r   setflagsr  r  scipyspatialdistance)r6   r   s     r5   test_immutable_inputr#    sv    ??$%
		"BJJ'AJJUJ	&	! ;/&&/1:; ; ;s   .BBc                  D   t        j                  g d      } t        j                  g d      }t        j                  g d      }t        | ||      }t	        |d       t        t        j                  |       t        j                  |      d|      }t	        ||       y )N)r   r   rm   rm   )r   rm   rm   r   )r  r,  gffffff?g?r  g2)^ ?r+   )r6   r   )r[   r   r  r+   r   r   r  )rs   r   r   r  r  s        r5   test_gh_23109r%    sw    
A
A


'(AAqAHH012==#==# A'F FH%r7   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)TestJaccardc                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr|  rM   pdist-jaccardr    r  r  r  s        r5   test_pdist_jaccard_randomz%TestJaccard.test_pdist_jaccard_random  s4    "#_%I&s3r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r)  r  r  s        r5   !test_pdist_jaccard_random_float32z-TestJaccard.test_pdist_jaccard_random_float32  =    JJr-./_%I&s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr|  rM   r*  test_jaccardr  r  r  s        r5   test_pdist_jaccard_random_nonCz*TestJaccard.test_pdist_jaccard_random_nonC  s4    "#_%N+s3r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r)  rq  r  s        r5   test_pdist_djaccard_randomz&TestJaccard.test_pdist_djaccard_random  r.  r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r)  r  r  s        r5   "test_pdist_djaccard_random_float32z.TestJaccard.test_pdist_djaccard_random_float32  r.  r7   c                     d}t        t        j                  d      d      }t        t        j                  d      ||       y )NrT  rt  r   r    r  r  r   r[   r  r   r  r\  r  s      r5   test_pdist_djaccard_allzerosz(TestJaccard.test_pdist_djaccard_allzeros  s0    "((6"I.ac2r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r0  rq  r  s        r5   test_pdist_djaccard_random_nonCz+TestJaccard.test_pdist_djaccard_random_nonC  s=    JJr-./_%N+s3r7   c                     d}t        t        j                  d      d      }t        t        j                  d      ||       y )NrT  r8  r1  r  r  r9  r:  s      r5   !test_pdist_djaccard_allzeros_nonCz-TestJaccard.test_pdist_djaccard_allzeros_nonC  s0    "((6"N3ac2r7   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  wjaccardr[   r   r!  r   r  s      r5   test_pdist_jaccard_mtica1z%TestJaccard.test_pdist_jaccard_mtica1  sd    RXXo.XXo.0bhhd;hhd;=3QU3Cae4r7   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  rA  r  s      r5   test_pdist_jaccard_mtica2z%TestJaccard.test_pdist_jaccard_mtica2	  sd    RXXi(XXi(*bhhy5hhy575qu5E6r7   c                 >   t        j                  g d      }t        j                  g d      }t        j                  t              j                  }t        t        ||      d|       t        t        |g|gd      dgg       t        t        ||gd      dg       y )N)ig      @r   )r   r   r  r  r    )	r[   r   r  r  r\  r   r    r   r   )r  r   rE  r\  s       r5   test_non_01_inputzTestJaccard.test_non_01_input	  sw     HH]#HH]#hhuo!!1s5qcA3	2cUG<q!fi03%8r7   N)r   r  r  r+  r-  r2  r4  r6  r;  r=  r?  rC  rE  rH  rj   r7   r5   r'  r'    s9    444443
43
579r7   r'  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestChebyshevc                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr|  r  pdist-chebyshevr   r  r  r  s        r5   test_pdist_chebyshev_randomz)TestChebyshev.test_pdist_chebyshev_random	  s5    !"&';'s3r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr  r  rL  r   r   rX  r}  r  s        r5   #test_pdist_chebyshev_random_float32z1TestChebyshev.test_pdist_chebyshev_random_float32 	  sD    JJr,-.&';'sGaKHr7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr|  r  rL  test_chebyshevr  r  r  s        r5    test_pdist_chebyshev_random_nonCz.TestChebyshev.test_pdist_chebyshev_random_nonC'	  s6    !"&'+,s3r7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nrj  r  pdist-chebyshev-irisr   r  r  r  s        r5   test_pdist_chebyshev_irisz'TestChebyshev.test_pdist_chebyshev_iris.	  s3    vJ+,;'s3r7   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  rT  r   r   rX  r}  r  s        r5   !test_pdist_chebyshev_iris_float32z/TestChebyshev.test_pdist_chebyshev_iris_float325	  sB    JJr&z"+,;'sGaKHr7   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nrj  r  rT  rQ  r  r  r  s        r5   test_pdist_chebyshev_iris_nonCz,TestChebyshev.test_pdist_chebyshev_iris_nonC<	  s4    vJ+,+,s3r7   c                     g d}g d}g d}t        t        |||      d       t        t        ||gd|      dg       t        t        |g|gd|      dgg       y )Nr  r  rt  r  )r   rm   rt  r   r   r  r	   r   r   r   r  r   rE  r   s       r5   test_weightedzTestChebyshev.test_weightedC	  s\     Yq!Q'+UAq6;!4qc:UA3[A6!>r7   c                     g d}g d}g d}t        t        |||      d       t        t        ||gd|      dg       t        t        |g|gd|      dgg       y )Nr  r[  r  r   r   r  r\  r]  s       r5   test_zero_weightzTestChebyshev.test_zero_weightM	  sZ    Yq!Q'+UAq6;!4qc:UA3[A6!>r7   N)r   r  r  rM  rO  rR  rU  rW  rY  r^  r`  rj   r7   r5   rJ  rJ  	  s,    4I44I4??r7   rJ  ro   )	NNFTFFFFN)rD  os.pathrU   	functoolsr   r   r  numpyr[   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-   scipy.conftestr.   fixturer6   rS   r   _tdist_ytdistr]   re   rk   r   r   r   r   r   assert_allclose_forgivingr   r  r  strr  ro  r[  r  r  r  r  r  r  r  
wcityblock
wchebyshevr  r  wkulczynski1rB  r  r  r  r  r  wsokalmichenerr  r  r  r  r  r$  rL  rb  rd  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'  rJ  rj   r7   r5   <module>rr     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 $O$?  '@!TB   !tQT "td#dEPU"c#<cL %S % 
Q	>!%a*/EC	Qa	H!%a-21>!.1&w? ?	HY'
Y'

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