
    e!hTW                       d dl Z d dlZd dlmZmZ d dlZd dlZd dl	Z	d dl
mZ d dlmZmZmZmZmZmZmZmZ d dlZd dlZd dlmZmZmZmZmZmZmZmZm Z  d dlm!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8  ejr                  e d	      d
        Z:g dZ; ejx                  g dg dg dg dg dg dgd      Z= ee=      Z>i Z?d Z@ e@        d ZAd]dZB	 	 	 	 	 d^dZCd ZDd ZEd]dZF eed      ZGeGd dfd ZHd!dd" d#ddddddddddd$d eGfd%ZI G d& d'      ZJd(eKfd)ZL eIed*d+      ZM eIed*dd,      ZN eIed*dd*-      ZO eIed*ddd*.      ZP eIe/      ZQ eIe)d/      xZRZS eIe5      ZT eIe'      ZU eIe$      ZV eIe#      ZW eIe&      ZX eIe%      ZY eIe,      ZZ eIe*      Z[ eIe(d0      Z\ eIe4d0      Z] eIe!      Z^ eIe"d0      Z_ eIe3      Z` eIe2      Za eIe0      Zb G d1 d2      Zc G d3 d4      Zd G d5 d6      Ze G d7 d8      Zf G d9 d:      Zg G d; d<      Zhd= Zi G d> d?      Zjd@ Zk G dA dB      Zlej                  j                  dCg dD      dE        ZodF ZpdG ZqdH ZrdI ZsdJ ZtdK ZudL ZvdM ZwdN Zxej                  j                  dO        Zzej                  j                  dP        Z{ej                  j                  dQ        Z|ej                  j                  dR        Z}ej                  j                  dS        Z~dT ZdU ZdV ZdW Zej                  j                  dX        Z G dY dZ      Z G d[ d\      Zy)_    N)wrapspartial)norm)verboseassert_assert_array_equalassert_equalassert_almost_equalassert_allclosebreak_cyclesIS_PYPY)	
squareformpdistcdist	num_obs_y
num_obs_dmis_valid_dm
is_valid_y_validate_vector_METRICS_NAMES)
braycurtiscanberra	chebyshev	cityblockcorrelationcosinedice	euclideanhammingjaccardjensenshannonkulczynski1mahalanobis	minkowskirogerstanimoto
russellrao
seuclideansokalmichenersokalsneathsqeuclideanyule)np_longnp_ulongsession)paramsscopec                     | j                   S )z;
    Fixture for all metrics in scipy.spatial.distance
    )param)requests    i/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/spatial/tests/test_distance.pymetricr5   D   s    
 ==    )zcdist-X1.txtzcdist-X2.txtziris.txtzpdist-boolean-inp.txtzpdist-chebyshev-ml-iris.txtzpdist-chebyshev-ml.txtzpdist-cityblock-ml-iris.txtzpdist-cityblock-ml.txtzpdist-correlation-ml-iris.txtzpdist-correlation-ml.txtzpdist-cosine-ml-iris.txtzpdist-cosine-ml.txtzpdist-double-inp.txtzpdist-euclidean-ml-iris.txtzpdist-euclidean-ml.txtzpdist-hamming-ml.txtzpdist-jaccard-ml.txtzpdist-jensenshannon-ml-iris.txtzpdist-jensenshannon-ml.txtzpdist-minkowski-3.2-ml-iris.txtzpdist-minkowski-3.2-ml.txtzpdist-minkowski-5.8-ml-iris.txtzpdist-seuclidean-ml-iris.txtzpdist-seuclidean-ml.txtzpdist-spearman-ml.txtzrandom-bool-data.txtzrandom-double-data.txtzrandom-int-data.txtzrandom-uint-data.txt)r     m         )r7   r   '        )r8   r<   r     4     )r9   r=   r@   r      e  )r:   r>   rA   rC   r     )r;   r?   rB   rD   rE   r   doubledtypec                     t         D ]  } | j                  dd      j                  dd      }t        j                  j	                  t        j                  j                  t              d|       }t        |      }t        j                  |      t        |<   |j                           t        j                  t        d         t        d<   t        j                  t        d         t        d<   t        j                  t        d         t        d<   t        t        d	         t        d	<   t        t        d
         t        d
<   y )Nz.txt z-mldatapdist-boolean-inprandom-bool-datarandom-double-datarandom-float32-datarandom-int-datarandom-uint-data)
_filenamesreplaceospathjoindirname__file__opennploadtxteoclosebool_float32r,   r-   )fnnamefqfnfps       r4   load_testing_filesrd   {   s     zz&"%--eR8ww||BGGOOH5vrB$Z::b>4

 !hhr*='>?BXXb);&<=B "

2.B+C DB#B'8$9:B%b);&<=Br6   c                  F    t        j                  d      j                  dk  S )Nr      )rZ   intpitemsize r6   r4   	_is_32bitrj      s    771:""r6   c                 |     D cg c]  }t        j                  |       c} |6 D cg c](  }|j                  dk7  rt        j                  |      n|* c} d}t	        d  D               |dk  r:t         fd D              st        d      t         d   j                        |   } |fz   S c c}w c c}w )N   r   c              3   F   K   | ]  }t        j                  |        y wN)rZ   
atleast_1d.0as     r4   	<genexpr>z _chk_asarrays.<locals>.<genexpr>   s     42==#4s   !c              3   V   K   | ]   }|j                   d    j                   k(   " yw)r   N)ndim)rq   rr   arrayss     r4   rs   z _chk_asarrays.<locals>.<genexpr>   s"     <166VAY^^+<s   &)z(array ndim must be the same for neg axis)rZ   
asanyarrayru   raveltupleall
ValueErrorrange)rv   axisrr   s   `  r4   _chk_asarraysr~      s    (./1bmmA/F| "# "#1"((1+!3 #4V44Fax<V<<GHHVAY^^$T*TG 0#s
   B4-B9FTc
                 b   t        |       }
|
d d |
d   c} |xr | }|s|rt        d | D              }|r`| D cg c]*  }t        j                  t        j                  |            , }}t        |      r d}d}t        d t        | |      D              } t        j                        n/|r&t        j                  | d   j                           n| fz   S |	rt              |rt        |       t        fd| D              st        d      |rdk  j                         rt        d	      |rNt        j                  dkD        d   j                  j                  k  rt        fd
| D              }    |rdk(  j                         rd | fz   S c c}w )Nr}   c              3      K   | ]=  }t         j                  j                  |      t         j                  j                  u ? y wrn   )rZ   magetmasknomaskrp   s     r4   rs   z_chk_weights.<locals>.<genexpr>   s*     QQBEEMM!,BEELL@Qs   AATc              3   h   K   | ]*  \  }}|rt         j                  j                  |      n| , y wrn   )rZ   r   masked_invalid)rq   rr   has_nans      r4   rs   z_chk_weights.<locals>.<genexpr>   s4      D)q' 7>255//21D Ds   02r   c              3   X   K   | ]!  }j                   |j                      fk(   # y wrn   shape)rq   rr   r}   weightss     r4   rs   z_chk_weights.<locals>.<genexpr>   s%     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)rZ   take)rq   rr   r}   pos_weightss     r4   rs   z_chk_weights.<locals>.<genexpr>   s!     N!2771k==Ns   "%rl   )r~   anyrZ   isnansumry   ziprw   onesr   _freq_weights_weight_maskedrz   r{   nonzerosize)rv   r   r}   force_weightssimplify_weightspos_only	neg_check
nan_screenmask_screenddofchkedrr   has_nansr   s    ``          @r4   _chk_weightsr      s   
 &t,E":uRyLFD'=,=[Q&QQ17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     r4   r   r      sD    ..%K;##%KG9UVVr6   c                    dt        j                  |      }| D ]  }t         j                  j                  |      }|t         j                  j                  u r?|j
                  dkD  r9t        fdt        |j
                        D              }|j                  |      }|d|j                  t              z
  z  } |S )Nr   rl   c              3   .   K   | ]  }|k7  s	|  y wrn   ri   )rq   ir}   s     r4   rs   z!_weight_masked.<locals>.<genexpr>   s     C1dQCs   
r   )rZ   rw   r   r   r   ru   ry   r|   r   r   r   )rv   r   r}   rr   	axis_masknot_axess     `   r4   r   r      s    |mmG$G -EEMM!$	$66A:CaffCCH!84I1y'',,,- Nr6   c                    | D cg c]Q  }t        j                  |j                  t         j                        r|j	                  t         j
                        n|S } }t        j                  |t         j
                        }t         j                  j                  |      }d }| d   j                     t        fd| D              sJ d       t        t        |      z        D ]}  }|j                  |z         }	||	   }
|j                         }||
z  ||	<   t        j                  |d|z
  |
z        }| D cg c]#  }t        j                  | |||	            % } } | |fS c c}w c c}w )NrG   c                     t        j                  t        j                  | ||            }|j                  t	        | j
                        D cg c]  }||k7  r| j                  |   nd c}      S c c}w )Nr   rl   )rZ   rw   r   reshaper|   ru   r   )rr   ixr}   recordr   s        r4   mytakez_rand_split.<locals>.mytake   sd    rwwq"489~~(-aff7#$ ./$YqwwqzA= 7 8 	8 7s   A2r   c              3   B   K   | ]  }|j                      k(    y wrn   r   )rq   rr   r}   n_obss     r4   rs   z_rand_split.<locals>.<genexpr>   s     6!qwwt}%6s   z#data must be aligned on sample axis      ?r   )rZ   
issubdtyperH   integerr   float64arrayrandomRandomStater   rz   r|   r   randintrandappend)rv   r   r}   	split_perseedarrseeded_randr   r   split_ixprev_wqrr   r   s     `          @r4   _rand_splitr      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 rn   ri   xs    r4   <lambda>r     s     r6   c                     ||       } ||      }	 t        j                  ||k7        j                         r
 |||       y y # t        $ r  |||       Y y t        t
        f$ r% t        ||      D ]  \  }}t        |||        Y y w xY w)N)compare_assert)rZ   r   r   AttributeError	TypeErrorr{   r   _rough_check)	rr   br   keywcheck_acheck_ba_ib_is	            r4   r   r     s    !fG!fGB88Gw&'++-7G, . )w(z" BGW- 	BHCc.A	BBs   /A B
0B
	B
   c                     | S rn   ri   r   s    r4   r   r     s    1 r6   r   r   c                 n    	
 t               	 
fd       }|S )zruns fn on its arguments 2 or 3 ways, checks that the results are the same,
       then returns the same thing it would have returned beforec                      | i |}| d  }| d  }|j                  %d       }|j                  d      }t        |||dd      }|d d |d   |d   }}}$r0|D cg c]%  }t        j                  |j	                               ' }}	 t        |      |z   } r||%<   t        | | i |       r9|dz  |%<   t        | | i |       |dz  |%<   	 t        | | i |       rt        |||" 	      \  }
}||d |j                   d
||j                  d  t        |
      |z   }||%<   t        | |i |       |
D ]J  }t        d       g|j                  z  }t        |j                  d       ||<   t        |      }||   dz  ||<   L t        |
      |z   }t        | |i |       |
D ]X  }t        d       g|j                  z  }t        |j                  d       ||<   t        |      }||   t        j                  z  ||<   Z |j                  dd       dk(  r$r"t        |
      |z   }t        | |i |       ri|
D cg c]!  }t        j                  j                  |      # }
}t        |
      |z   }t        | |i |       rd |%<   t        | |i |       ~
~~rh|D cg c]  }t        j                   |||       }}t        j                   ||      dz  }t        |      |z   }||%<   t        | |i |       ~~~#rA"d
kD  r<t        |||" 	      }|\  }}t        |      |z   }||%<   t        | |i |       |S c c}w # t        $ r}	 t        |	      |	||f      |	d }	~	ww xY wc c}w c c}w # t"        $ r3}	!s&t%        j&                  j(                   d|	 d       Y d }	~	|S d }	~	ww xY w)Nr}   T)r   r}   r   r   r   )r   g     @Y@gB`"۹?)r   r   r   e   
nan_policyomitr          @z NotImplemented weights:    )
stacklevel)getr   rZ   ro   squeezery   r   	Exceptiontyper   r   sliceru   nanr   r   r   NotImplementedErrorwarningswarn__name__)&argskwargsresultrv   restr   r}   r   rr   e
dud_arraysdud_weightsdud_argsindexer
dup_arraysdup_weightsdup_argssplitsplit_arrayssplit_weights
split_args
const_testdefault_axisdud_testdup_testr`   r   ma_safema_very_safen_argsnan_safe	ones_testr   silentr   
split_testr   
weight_args&                        r4   wrappedz _weight_checked.<locals>.wrapped  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   )r`   r  r   r   r	  r   r  r  r   r  r  r   r  r  r  r   r   r   r
  s   `````````````````  r4   _weight_checkedr    s3     2YY Y Y Yt Nr6   c                       e Zd Zd Zd Zy)DummyContextManagerc                      y rn   ri   selfs    r4   	__enter__zDummyContextManager.__enter__}      r6   c                      y rn   ri   )r  r   s     r4   __exit__zDummyContextManager.__exit__  r  r6   N)r   
__module____qualname__r  r  ri   r6   r4   r  r  |  s    r6   r  r5   c                 F    | dv rt        j                         S t               S )N)r"   r(   )pytestdeprecated_callr  r5   s    r4   maybe_deprecatedr    s#    11%%''"$$r6   rl   )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)rO   rP   rQ   rN   rM   )booluintr   r_   rnd_eo_namesr-   r,   rZ   r_   r   valid_upcastsr  s    r4   setup_methodzTestCdist.setup_method  W    1 (0"**bjj&Q'.

BJJ&G&(jj"**%=*,**7r6   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      @r4  r0  Q	@r   N0tV4l1D_p4raMr      r5   test_)rZ   aranger  raisesr   r  r   eval)r  r5   X1X2r   r   s         r4   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)Nrl   r   c                     ||z   |z   S rn   ri   r   yargkwargkwarg2s        r4   
_my_metricz:TestCdist.test_cdist_extra_args_custom.<locals>._my_metric      ;''r6   r(  r*  r.  r1  r3  r5  r6  r   r7  r9  r/  ffffff
@rF  rG  rF  皙?r5   rE  rG  皙@rl   r   )rZ   r;  r  r<  r   r   r   )r  rH  r>  r?  r   r   s         r4   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         r4   #test_cdist_euclidean_random_unicodez-TestCdist.test_cdist_euclidean_random_unicode  sH    
^
^R[1R%56BS'A+>r6   p皙?      ?r   Gz?r   gffffff@gffffff@c                     d}t         d   }t         d   }t        ||d|      }t        ||d|      }t        ||d|t        dkD  	       y )
NvIh%<=rT  rU  r$   r_  test_minkowskir   r   )r   rX  r   rY  )r  r_  r[  r>  r?  r\  r]  s          r4   test_cdist_minkowski_randomz%TestCdist.test_cdist_minkowski_random  sP     
^
^R[A6R%5;BQS'A+Fr6   c                     d}t         d   }t         d   }t        ||d      }d }dt        j                  | ||      z  | ||      z  j                        z
  }t        |||t        dkD         y )	N+=rT  rU  r   c                 d    t         j                  j                  | d      j                  dd      S )Nrl   r   r   )rZ   linalgr   r   )Xs    r4   normsz1TestCdist.test_cdist_cosine_random.<locals>.norms  s&    99>>!!>,44R;;r6   rl   r   rW  )r\   wcdistrZ   dotTr   r   )r  r[  r>  r?  r\  rm  r]  s          r4   test_cdist_cosine_randomz"TestCdist.test_cdist_cosine_random  sk    
^
^BH%	< eBi2b	>*<*<==BS'A+>r6   c                    t        j                  dgdgg      }t        j                  dgdgg      }t        ||d      }t        |dt        j                  d      gt        j                  d      t        j                  d      gg       t        j                  d	d	gd
d	gg      }t        j                  d	dgdd	gd	dgg      }t        ||d      }t        j                  d      }t        ||||gdd|z  dgg       t        j                  t              5  t        d	dggddggd       d d d        y # 1 sw Y   y xY w)Nr   r      r#   r                @      ?r   r   rl   r   )rZ   r   r   r   sqrtr  r<  r{   )r  x1x2distrt2s        r4   test_cdist_mahalanobisz TestCdist.test_cdist_mahalanobis  s    XXsQCj!XXsQCj!RM2RWWS\2RWWS\2771:4NOP XX1vAw'(XX1v1v2w/0RM2ggajS#AGQ@A ]]:& 	<Aq6(aVH];	< 	< 	<s   D66D?c                      G d d      fd}t        j                          ggt              }t        |||      }d}t	        ||t
        dkD         y )	Nc                       e Zd Zy)6TestCdist.test_cdist_custom_notdouble.<locals>.myclassNr   r  r  ri   r6   r4   myclassr        r6   r  c                 X    t        | d         rt        |d         st        d      yNr   zType has been changed+?
isinstancer{   r   rD  r  s     r4   rH  z9TestCdist.test_cdist_custom_notdouble.<locals>._my_metric!  -    adG,JqtW4M !899r6   rG   r  r  r   r   )rZ   r   objectr   r	   r   )r  rH  rK   cdist_yright_yr  s        @r4   test_cdist_custom_notdoublez%TestCdist.test_cdist_custom_notdouble  sM    	 		 xx')V4d:6Wgw{;r6   c           	         	 t        ||fd|i|}t        ||fdt        |      i|}t        ||fdd|z   i|}t        |||t        dkD         t        |||t        dkD         y # t        $ r}	|	j
                  }
t        dkD  r t        |
j                         t        |	       t        j                  |
      5  t        ||fd|i| d d d        n# 1 sw Y   nxY wt        j                  |
      5  t        ||fdt        |      i| d d d        n# 1 sw Y   nxY wt        j                  |
      5  t        ||fdd|z   i| d d d        n# 1 sw Y   nxY wY d }	~	y Y d }	~	y d }	~	ww xY wNr5   r:  r   rW  )
r   r=  r   r   r   	__class__printr   r  r<  )r  r>  r?  r5   r[  r   y1y2y3r   e_clss              r4   _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 )Nrs  r   rl   r   	testing:  with: >   r   r+   r&   r"   r)   r(   r%   r   r'   r   r}   r   Vr#   VI)r#  r\   r   r  r  rZ   vstackr   r   var
atleast_2dcovrp  r   rk  inv)r  r5   eo_namer>  r?  X12r  r  s           r4   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r6   c           	         d}t         d   | j                  d   ft         d   | j                  d   ft         d   | j                  d   ft         d   | j                  d	   fg}|D ]k  }|d
   d d dd d df   }|d
   dd dd d df   }	 t        |||      }|d   D ]2  }t         ||       ||      |      }	t        ||	|t        dkD         4 m y # t
        $ r}
|
j                  }t        dkD  r t        |j                         t        |
       |d   D ]J  } ||      } ||      }t        j                  |      5  t        |||       d d d        @# 1 sw Y   IxY w Y d }
~
d }
~
ww xY w)NHz>rM   r   rQ   r!  rP   r   rO   r_   r   rs  r   rl   r   r  rW  )r\   r$  r   r   r   r   r  r  r   r  r<  )r  r5   r[  teststestr>  r?  r  new_typer  r   r  X1newX2news                 r4   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)NrS  rT  rU  r   r$   rb  r_  rG   outr   rW  rl   F)rH   order)r\   r   dictrZ   emptyr   r  r   r   r   r   r  r<  r{   int64)r  r5   r[  r>  r?  out_rout_cr   out1r\  r]  out2out3out4out5s                  r4   test_cdist_outzTestCdist.test_cdist_outy  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)	NrS  rT  r   rU  r$   rb  r_  rW  )r\   copyr	   r   flagsc_contiguousr  r  r   r   r   )
r  r5   r[  r>  r?  X1_copyX2_copyr   r\  r]  s
             r4   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$   rb  r_  r5   c              3   .   K   | ]  } |       d u   y wrn   ri   )rq   weak_refs     r4   rs   z0TestCdist.test_cdist_refcount.<locals>.<genexpr>  s     @(8:%@s   )rZ   r   r   r  r  r   weakrefrefr   r   rz   )r  r5   rx  ry  r   r  v	weak_refss           r4   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_unsafer@  rQ  r^  parametrizerZ   infrg  rq  r|  r  r  r  r  r  r  r  ri   r6   r4   r  r    s    7 [[: :0"9H? [[S3c4#&S"&&#: ;G;G?<$<C*G>K6 [[+: +:Z [[? ?8 [[A Ar6   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 ZQdO ZRdVdPZSdQ ZTdR ZUej
                  j                  dS        ZVej
                  j                  dT        ZWyU)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    r4   r%  zTestPdist.setup_method  r&  r6   c           	      $   ddgddgddgg}dt        j                  d      d}dgd	z  }t        j                  t              5  t        |      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,  r/  r6  r   r7  r9  r5   r:  )rZ   r;  r  r<  r   r  r   r=  )r  r5   r>  r   r   s        r4   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)Nrl   r   c                     ||z   |z   S rn   ri   rC  s        r4   rH  z:TestPdist.test_pdist_extra_args_custom.<locals>._my_metric  rI  r6   r   r   r+  r,  r/  r6  r7  r9  rJ  rK  rL  rM  rN  rO  rP  )rZ   r;  r  r<  r   r   r   )r  rH  r>  r   r   s        r4   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   rX  r\   wpdist_no_constr   r  r[  rl  Y_rightY_test1s        r4   test_pdist_euclidean_randomz%TestPdist.test_pdist_euclidean_random  5    !"&'!![1s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y r  r  r  s        r4   test_pdist_euclidean_random_uz'TestPdist.test_pdist_euclidean_random_u&  r  r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r  rZ   r_   r\   r  r   r  s        r4   #test_pdist_euclidean_random_float32z-TestPdist.test_pdist_euclidean_random_float32-  s>    JJr,-.&'!![1s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  rV  r  r  r  r[  rl  r  Y_test2s        r4    test_pdist_euclidean_random_nonCz*TestPdist.test_pdist_euclidean_random_nonC4  s6    !"&'!!%56s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  irispdist-euclidean-irisr   r  r  r  s        r4    test_pdist_euclidean_iris_doublez*TestPdist.test_pdist_euclidean_iris_double;  s3    vJ+,!![1s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  r  r   r   rW  rZ   r_   r\   r  r   r   r  s        r4   !test_pdist_euclidean_iris_float32z+TestPdist.test_pdist_euclidean_iris_float32C  B    JJr&z"+,!![1sGaKHr6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  rV  r  r  r  s        r4   test_pdist_euclidean_iris_nonCz(TestPdist.test_pdist_euclidean_iris_nonCK  s6     vJ+,!!%56s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  pdist-seuclideanr'   r  r\   r   r   r  s        r4   test_pdist_seuclidean_randomz&TestPdist.test_pdist_seuclidean_randomU  s5    !"'(<(s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       t        j
                  |dd      }t        |d|	      }t	        |||       y )
Nr  r  r  r'   r  r   rl   r  r  )rZ   r_   r\   r   r   r  )r  r[  rl  r  r  r  r  s          r4   $test_pdist_seuclidean_random_float32z.TestPdist.test_pdist_seuclidean_random_float32\  sl    JJr,-.'(<(s3 FF111%<1-s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  test_seuclideanr  r  r  s        r4   !test_pdist_seuclidean_random_nonCz+TestPdist.test_pdist_seuclidean_random_nonCh  s6    !"'(,-s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  pdist-seuclidean-irisr'   r  r  r  s        r4   test_pdist_seuclidean_irisz$TestPdist.test_pdist_seuclidean_irisp  s3    vJ,-<(s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y )Nr   r  r  r'   r  )rZ   r_   r\   r   r   r  s        r4   "test_pdist_seuclidean_iris_float32z,TestPdist.test_pdist_seuclidean_iris_float32w  s<    JJr&z",-<(s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  r  r  r  r  s        r4   test_pdist_seuclidean_iris_nonCz)TestPdist.test_pdist_seuclidean_iris_nonC  s6     vJ,-,-s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr  r  pdist-cosiner   r  r\   wpdistr   r  s        r4   test_pdist_cosine_randomz"TestPdist.test_pdist_cosine_random  s4    !"^$H%s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r  rZ   r_   r\   r  r   r  s        r4    test_pdist_cosine_random_float32z*TestPdist.test_pdist_cosine_random_float32  s=    JJr,-.^$H%s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  test_cosiner  r  r  s        r4   test_pdist_cosine_random_nonCz'TestPdist.test_pdist_cosine_random_nonC  s4    !"^$M*s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr   r  pdist-cosine-irisr   r   r  r  s        r4   test_pdist_cosine_irisz TestPdist.test_pdist_cosine_iris  s3    vJ()H%s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  r  r   r   r   r   )rZ   r_   r\   r  r   r   r  s        r4   test_pdist_cosine_iris_float32z(TestPdist.test_pdist_cosine_iris_float32  sB    JJr&z"()H%sGaKHr6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr   r  r  r  r   r  r  s        r4   test_pdist_cosine_iris_nonCz%TestPdist.test_pdist_cosine_iris_nonC  s3    vJ()M*s3r6   c                     t        j                  t         j                  j                  d      j	                  d            }t        j
                  ||g      }t        t        |d      d   dk\  d       y )Ni9  [   r   r   z&cosine distance should be non-negative)msg)rZ   absr   r   r   r  r   r  )r  r   rl  s      r4   test_pdist_cosine_boundsz"TestPdist.test_pdist_cosine_bounds  s\     FF299((.33B78IIq!fq(#A&!+<	>r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr  r  pdist-cityblockr   r  r  r  s        r4   test_pdist_cityblock_randomz%TestPdist.test_pdist_cityblock_random  s5    !"&'!![1s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r%  r  r  s        r4   #test_pdist_cityblock_random_float32z-TestPdist.test_pdist_cityblock_random_float32  s>    JJr,-.&'!![1s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r&  test_cityblockr  r  r  s        r4    test_pdist_cityblock_random_nonCz*TestPdist.test_pdist_cityblock_random_nonC  s6    !"&'!!%56s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nri  r  pdist-cityblock-irisr   r  r  r  s        r4   test_pdist_cityblock_irisz#TestPdist.test_pdist_cityblock_iris  s3    vJ+,!![1s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  r.  r   r   rW  r  r  s        r4   !test_pdist_cityblock_iris_float32z+TestPdist.test_pdist_cityblock_iris_float32  r  r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nri  r  r.  r+  r  r  r  s        r4   test_pdist_cityblock_iris_nonCz(TestPdist.test_pdist_cityblock_iris_nonC  s6     vJ+,!!%56s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr  r  pdist-correlationr   r  r  r  s        r4   test_pdist_correlation_randomz'TestPdist.test_pdist_correlation_random  s5    !"()M*s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r5  r  r  s        r4   %test_pdist_correlation_random_float32z/TestPdist.test_pdist_correlation_random_float32  s>    JJr,-.()M*s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r6  test_correlationr  r  r  s        r4   "test_pdist_correlation_random_nonCz,TestPdist.test_pdist_correlation_random_nonC  s6    !"()./s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  pdist-correlation-irisr   r  r  r  s        r4   test_pdist_correlation_irisz%TestPdist.test_pdist_correlation_iris  s3    vJ-.M*s3r6   c                     d}t         d   }t        j                  t         d         }t        |d      }t	        |||t
        dkD         y )Nr  r  r>  r   r   rW  )r\   rZ   r_   r  r   r   r  s        r4   #test_pdist_correlation_iris_float32z-TestPdist.test_pdist_correlation_iris_float32  sB    vJ**R 89:M*sGaKHr6   c                     t         j                  dkD  rd}nt        j                  d       t        d   }t        d   }t        |d      }t        ||       y )Nl        r  zsee gh-16456r  r>  r;  r  )sysmaxsizer  skipr\   r  r   r  s        r4    test_pdist_correlation_iris_nonCz*TestPdist.test_pdist_correlation_iris_nonC  sL    ;;CKK'vJ-../s3r6   r_  r`  ra  r   r   皙	@c                 p    d}t         d   }t        |d|      }t        |d|      }t        ||d|       y )Nrd  r  r$   re  rf  r   )r   rX  r  )r  r_  r[  rl  r\  r]  s         r4   test_pdist_minkowski_random_pz'TestPdist.test_pdist_minkowski_random_p  s=    !"Qq1Q 0A6BQS1r6   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y Nr  r  pdist-minkowski-3.2r$   rG  re  r  r  r  s        r4   test_pdist_minkowski_randomz%TestPdist.test_pdist_minkowski_random&  s7    !"*+!![C8s3r6   c                     d}t        j                  t        d         }t        d   }t        |dd      }t	        |||       y rK  r  r  s        r4   #test_pdist_minkowski_random_float32z-TestPdist.test_pdist_minkowski_random_float32-  s@    JJr,-.*+!![C8s3r6   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  rL  rf  rG  re  r  r  r  s        r4    test_pdist_minkowski_random_nonCz*TestPdist.test_pdist_minkowski_random_nonC4  s8    !"*+!!%5=s3r6   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  pdist-minkowski-3.2-irisr$   rG  re  r  r  r  s        r4   test_pdist_minkowski_3_2_irisz'TestPdist.test_pdist_minkowski_3_2_iris;  5    vJ/0!![C8s3r6   c                     d}t        j                  t        d         }t        d   }t        |dd      }t	        |||       y )Nr   r  rS  r$   rG  re  r  r  r  s        r4   %test_pdist_minkowski_3_2_iris_float32z/TestPdist.test_pdist_minkowski_3_2_iris_float32C  s>    JJr&z"/0!![C8s3r6   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  rS  rf  rG  re  r  r  r  s        r4   "test_pdist_minkowski_3_2_iris_nonCz,TestPdist.test_pdist_minkowski_3_2_iris_nonCK  6    vJ/0!!%5=s3r6   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  pdist-minkowski-5.8-irisr$   r4  re  r  r  r  s        r4   test_pdist_minkowski_5_8_irisz'TestPdist.test_pdist_minkowski_5_8_irisS  rU  r6   c                     d}t        j                  t        d         }t        d   }t        |dd      }t	        |||t
        dkD         y )	Nr   r  r\  r$   r4  re  r   rW  r  r  s        r4   %test_pdist_minkowski_5_8_iris_float32z/TestPdist.test_pdist_minkowski_5_8_iris_float32[  sD    JJr&z"/0!![C8sGaKHr6   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  r\  rf  r4  re  r  r  r  s        r4   "test_pdist_minkowski_5_8_iris_nonCz,TestPdist.test_pdist_minkowski_5_8_iris_nonCc  rZ  r6   c                    t        j                  g d      j                  dd      }t        |d      }t	        |dt        j
                  d      t        j
                  d      t        j
                  d      t        j
                  d      t        j
                  d	      g       t        j                  d
d
gdd
gd
dgdd
gd
dgg      }t        |d      }t        j
                  d      }t	        |||||dd|z  ddd|z  dg
       t        j                  t              5  t        d
dgddggd       d d d        y # 1 sw Y   y xY w)N)r   r   r)  r2  r   rl   r#   r  rt  rv  ru  r   r   r   r   r   )
rZ   r   r   r   r   rw  r  r<  r{   r  )r  r   rz  r{  s       r4   test_pdist_mahalanobisz TestPdist.test_pdist_mahalanobisk  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 NrS  rL   pdist-hammingr   r  r  r  s        r4   test_pdist_hamming_randomz#TestPdist.test_pdist_hamming_random|  s4    "#_%I&s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y re  r  r  s        r4   !test_pdist_hamming_random_float32z+TestPdist.test_pdist_hamming_random_float32  =    JJr-./_%I&s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y NrS  rL   rf  test_hammingr  r  r  s        r4   test_pdist_hamming_random_nonCz(TestPdist.test_pdist_hamming_random_nonC  s4    "#_%N+s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y re  rZ   r   r\   r  r   r  s        r4   test_pdist_dhamming_randomz$TestPdist.test_pdist_dhamming_random  rj  r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y re  r  r  s        r4   "test_pdist_dhamming_random_float32z,TestPdist.test_pdist_dhamming_random_float32  rj  r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y rl  rp  r  s        r4   test_pdist_dhamming_random_nonCz)TestPdist.test_pdist_dhamming_random_nonC  s=    JJr-./_%N+s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Ndy=r  pdist-jensenshannonr!   r  r  r  s        r4   test_pdist_jensenshannon_randomz)TestPdist.test_pdist_jensenshannon_random  s5    !"*+?+s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )N:0yE>r  rx  r!   r   rW  rZ   r_   r\   r   r   r   r  s        r4   'test_pdist_jensenshannon_random_float32z1TestPdist.test_pdist_jensenshannon_random_float32  sD    JJr,-.*+?+sGaKHr6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nrw  r  rx  test_jensenshannonr  r  r  s        r4   $test_pdist_jensenshannon_random_nonCz.TestPdist.test_pdist_jensenshannon_random_nonC  s6    !"*+/0s3r6   c                 z    t               rd}nd}t        d   }t        d   }t        |d      }t        |||       y )Ng&.=g-q=r  pdist-jensenshannon-irisr!   r   )rj   r\   r   r   r  s        r4   test_pdist_jensenshannon_irisz'TestPdist.test_pdist_jensenshannon_iris  s=    ;CCvJ/0?+s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Ngư>r  r  r!   r   r  r|  r  s        r4   %test_pdist_jensenshannon_iris_float32z/TestPdist.test_pdist_jensenshannon_iris_float32  sB    JJr&z"/0?+sGaKHr6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Ng-C6
?r  r  r  r  r  r  s        r4   "test_pdist_jensenshannon_iris_nonCz,TestPdist.test_pdist_jensenshannon_iris_nonC  s4    vJ/0/0s3r6   c                 0   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t	        |ddd       t	        |ddd       y Nrl   r   rl   rl   r   rl   rl   r   rl   rl   rG   333333?r   绽|=rX  r   	wmatchingrZ   r   r   r   r  mm2s      r4   test_pdist_matching_mtica1z$TestPdist.test_pdist_matching_mtica1  sd    bhh/hh/1rxxt<xxt<>3QU3Cae4r6   c                 0   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t	        |ddd       t	        |ddd       y Nrl   r   rl   rl   rl   r   rG   UUUUUU?r   r  r  r  r  s      r4   test_pdist_matching_mtica2z$TestPdist.test_pdist_matching_mtica2  sd    bhhy)XXi(*rxx	6hhy575qu5E6r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )Nr  r  rG   r   r   r  r  wyulerZ   r   r   r   r  r   r  s      r4   test_pdist_yule_mtica1z TestPdist.test_pdist_yule_mtica1  sr    "((?+((?+-288O4888O48:Q;!H1151AAE2r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )Nr  r  rG   r   r   r  r  r  r  s      r4   test_pdist_yule_mtica2z TestPdist.test_pdist_yule_mtica2  sr    "((9%((9%'288IT288IT24Q;!H1151AAE2r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )	Nr  r  rG   r   g۶m۶m?r   r  r  wdicerZ   r   r   r   r  r   r  s      r4   test_pdist_dice_mtica1z TestPdist.test_pdist_dice_mtica1  sr    "((?+((?+-288O4888O48:Q;!H5qu5E6r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )	Nr  r  rG   r   rv  r   r  r  r  r  s      r4   test_pdist_dice_mtica2z TestPdist.test_pdist_dice_mtica2  sr    "((9%((9%'288IT288IT24Q;!H3QU3Cae4r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y 	Nr  r  rG   r   g      ?r   r  r  )r)   rZ   r   r   r   r  r   r  s      r4   test_pdist_sokalsneath_mtica1z'TestPdist.test_pdist_sokalsneath_mtica1  s    113/>/>@Q;!H5qu5E6r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y 	Nr  r  rG   r   g?r   r  r  )wsokalsneathrZ   r   r   r   r  r   r  s      r4   test_pdist_sokalsneath_mtica2z'TestPdist.test_pdist_sokalsneath_mtica2  sr    ),),."((9D9((9D9;Q;!H5qu5E6r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y r  wrogerstanimotorZ   r   r   r   r  r   r  s      r4    test_pdist_rogerstanimoto_mtica1z*TestPdist.test_pdist_rogerstanimoto_mtica1#  ss    BHH_5HH_57RXXoTBXXoTBDQ;!H5qu5E6r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y r  r  r  s      r4    test_pdist_rogerstanimoto_mtica2z*TestPdist.test_pdist_rogerstanimoto_mtica2-  sr    BHHY/HHY/1RXXit<XXit<>Q;!H5qu5E6r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )	Nr  r  rG   r   r  r   r  r  wrussellraorZ   r   r   r   r  r   r  s      r4   test_pdist_russellrao_mtica1z&TestPdist.test_pdist_russellrao_mtica17  r  r6   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )	Nr  r  rG   r   r  r   r  r  r  r  s      r4   test_pdist_russellrao_mtica2z&TestPdist.test_pdist_russellrao_mtica2A  sr    ++-)48)48:Q;!H5qu5E6r6   c                     t         d   }t        dkD  r t        |j                  |j                         d}t        |d      }t        |d      }t        |||t        dkD         y )Nr  r   rS  r   test_canberrarW  )r\   r   r  r   rH   r  r   )r  Dr[  r  r  s        r4   test_pdist_canberra_matchz#TestPdist.test_pdist_canberra_matchK  sS    vJQ;!''177#Q
+Q0BS'A+>r6   c                 X    d}t        dgdgfd      }d}t        |||t        dkD         y )Nr{  rJ  r-  r   gd>@1?r   r  )r  r   r   )r  r[  pdist_yr  s       r4   test_pdist_canberra_ticket_711z(TestPdist.test_pdist_canberra_ticket_711U  s4     !C53%.*=sGaKHr6   c                      G d d      fd}t        j                          g        ggt              }t        ||      }d}t	        ||t
        dkD         y )	Nc                       e Zd Zy)6TestPdist.test_pdist_custom_notdouble.<locals>.myclassNr  ri   r6   r4   r  r  _  r  r6   r  c                 X    t        | d         rt        |d         st        d      yr  r  r  s     r4   rH  z9TestPdist.test_pdist_custom_notdouble.<locals>._my_metricb  r  r6   rG   r  r  r   r  )rZ   r   r  r   r	   r   )r  rH  rK   r  r  r  s        @r4   test_pdist_custom_notdoublez%TestPdist.test_pdist_custom_notdouble]  sR    	 		 xx')wyk2&AZ0Wgw{;r6   c           	         	 t        |fd|i|}t        |fdt        |      i|}t        |fdd|z   i|}t        |||t        dkD         t        |||t        dkD         y # t        $ r}|j
                  }	t        dkD  r t        |	j                         t        |       t        j                  |	      5  t        |fd|i| d d d        n# 1 sw Y   nxY wt        j                  |	      5  t        |fdt        |      i| d d d        n# 1 sw Y   nxY wt        j                  |	      5  t        |fdd|z   i| d d d        n# 1 sw Y   nxY wY d }~y Y d }~y d }~ww xY wr  )
r   r=  r   r   r   r  r  r   r  r<  )
r  rl  r5   r[  r   r  r  r  r   r  s
             r4   r  z$TestPdist._check_calling_conventionsk  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 )Nrs  r   r  r  >   r   r+   matchingr&   r"   r)   r(   r%   r   r'   r   rl   r  r  r#   r  )r#  r\   r   r  r  rZ   r  r   r   r  r  rp  r   rk  r  )r  r5   r  rl  r  r  s         r4   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r6   c           	         d}t         d   | j                  d   ft         d   | j                  d   ft         d   | j                  d   ft         d   | j                  d	   fg}|D ]S  }|d
   d d dd d df   }	 t        ||      }|d   D ]+  }t         ||      |      }t        |||t        dkD         - U y # t
        $ r}	|	j                  }
t        dkD  r t        |
j                         t        |	       |d   D ]A  } ||      }t        j                  |
      5  t        ||       d d d        7# 1 sw Y   @xY w Y d }	~	d }	~	ww xY w)Nr  rM   r   rQ   r!  rP   r   rO   r_   r   rs  r   r  rl   rW  )r\   r$  r   r   r   r   r  r  r   r  r<  )r  r5   r[  r  r  r>  r  r  r  r   r  r?  s               r4   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)NrS  rO   rs  r   r   rl   r$   rb  r_  rG   r  r  r   )r\   r   r   r  rZ   r  r   r  r   r   r   r  r<  r{   r  )r  r5   r[  rl  out_sizer   r  r  r  r  r  r  s               r4   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)	NrS  rO   rs  r   r$   rb  r_  rW  )
r\   r  r   r  r  r  r  r   r   r   )r  r5   r[  rl  X_copyr   r\  r]  s           r4   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  )Xr   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,  r/  r1  r3  r7  r9  r<  r?  rA  rF  r  rZ   r  rI  rM  rO  rQ  rT  rW  rY  r]  r_  ra  rc  rg  ri  rn  rq  rs  ru  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ri   r6   r4   r  r    s   7 [[6 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 [[? ?r6   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   r2  )rZ   r   cases)r  r   rD  s      r4   r%  z&TestSomeDistanceFunctions.setup_method  s+    HH_%HH_%!fX
r6   c           	         | j                   D ]m  \  }}t        ||d      }t        |d       t        ||d      }t        |d       t        ||d      }t        |d       t        ||d      }t        |d	       o t        j                  d
dg      }t        j                  ddg      }t        t        ||      t        |j                  d      |j                  d                   y )Nrl   re  r)        ?gqaz@r   gw@ra  gR"6@i`  i  i^  i  uint16)r  r$   r
   rZ   r   r	   r   )	r  r   rD  dist1dist1p5dist2dist0p25rr   r   s	            r4   rf  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r6   c                     | j                   D ]0  \  }}t        ||      }t        |t        j                  d             2 y )Nrs  )r  
weuclideanr
   rZ   rw  r  r   rD  rz  s       r4   rV  z(TestSomeDistanceFunctions.test_euclidean  s7    JJ 	2DAqa#Dbggaj1	2r6   c                 \    | j                   D ]  \  }}t        ||      }t        |d        y )Nr2  )r  wsqeuclideanr
   r  s       r4   test_sqeuclideanz*TestSomeDistanceFunctions.test_sqeuclidean  s/    JJ 	+DAq1%Dc*	+r6   c           
          | j                   D ]L  \  }}t        ||      }t        |ddt        j                  d      t        j                  d      z  z  z
         N y )Nr   g      2@      )r  wcosiner
   rZ   rw  r  s       r4   r  z%TestSomeDistanceFunctions.test_cosine  sO    JJ 	PDAq1a=DcDBGGBK"''"+4M,N&NO	Pr6   c                     t        t        ddgddgd      t              sJ t        t        ddgddg      t              sJ y )Nrl   F)centered)r  wcorrelationfloatr  r  s    r4   test_cosine_output_dtypez2TestSomeDistanceFunctions.test_cosine_output_dtype  sB    ,1v1vFNNN'1a&1a&15999r6   c           
         t        j                  g d      }t        j                  g d      }| j                  D ]L  \  }}t        ||      }t	        |dt        j
                  ||      t        |      t        |      z  z  z
         N y )N)      r   r   )UUUUUUr  gUUUUUU@r   )rZ   r   r  r  r
   ro  r   )r  xmymr   rD  rz  s         r4   r;  z*TestSomeDistanceFunctions.test_correlation#  so    XXn%XX9:JJ 	TDAq1%DcBFF2rNd2hb>Q,R&RS	Tr6   c                     t        j                  g d      }t        j                  g d      }t        ||      }d|cxk  r4dt        j                  t         j                        j
                  z  k  sJ  J y )N)%rt  rt  rt  rt  rt  rt         rt  rt  rt  r  r  r  rt  r  rt  r  rt  rt  r  r  rt  r   rt  rt  r  rt  rt  r  rt  r  r  r  r  r  r  rt  )%r   r   r   r   r   r   r  r   r   r   r  r  r  r   r  r   r  r   r   rt  r  r   r   r   r   r  r   r   r  r   r  r  r  r  r  r  r   r   r  )rZ   r   r   finfor   r[  r  s       r4   test_correlation_positivez3TestSomeDistanceFunctions.test_correlation_positive*  sm    HH I J HH I J 1a D9B"**!5!9!9999999r6   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   rD  s       r4   test_corr_dep_complexz/TestSomeDistanceFunctions.test_corr_dep_complex5  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   rt  )r   r   r   )rt  r   r   g      @)rZ   r   r  r#   r
   rw  )r  r   rD  virz  s        r4   test_mahalanobisz*TestSomeDistanceFunctions.test_mahalanobis>  sj    HH_%HH_%XXIJJJ 	4DAqq!R(Dbggcl3	4r6   N)r   r  r  r%  rf  rV  r  r  r  r;  r  r  r  r  filterwarningsr  r   r   r  r  ri   r6   r4   r  r    s    H&2
+
P
:
T	: [[[[ 89[[Vk6%:; < : 4r6   r  c                       e Zd Zej                  ej
                  ej                  ej                  egZ	d Z
d Zd Zd Zd Zd Zy)TestSquareFormc                 H    | j                   D ]  }| j                  |        y rn   )checked_dtypescheck_squareform_matrixr  rH   s     r4   test_squareform_matrixz%TestSquareForm.test_squareform_matrixJ  %    (( 	0E((/	0r6   c                 H    | j                   D ]  }| j                  |        y rn   )r  check_squareform_vectorr  s     r4   test_squareform_vectorz%TestSquareForm.test_squareform_vectorN  r  r6   c                 (   t        j                  d|      }t        |      }t        |j                  d       t        |j
                  |       t        j                  d|      }t        |      }t        |j                  d       t        |j
                  |       t        j                  ddgddgg|      }t        |      }t        |j                  d       t        |j
                  |       t        |t        j                  dg|             y )N)r   r   rG   r   rl   rl   r   g@)rl   )rZ   zerosr   r	   r   rH   r   r   )r  rH   ArAs       r4   r  z&TestSquareForm.check_squareform_matrixR  s    HHV5)]RXXt$RXXu%HHV5)]RXXt$RXXu%HHq#ha)7]RXXt$RXXu%2rxxU;<r6   c                    t        j                  d|      }t        |      }t        |j                  d       t        |j
                  |       t        |dgg       t        j                  dg|      }t        |      }t        |j                  d       t        |j
                  |       t        |t        j                  ddgddgg|             y )Nr  rG   r  r   g @)r   r   )rZ   r  r   r	   r   rH   r   r   )r  rH   r  rvs       r4   r	  z&TestSquareForm.check_squareform_vectorc  s    HHT']RXXv&RXXu%2u%HHcU%(]RXXv&RXXu%2rxx!SC8(<EJKr6   c                 H    t        dd      D ]  }| j                  |        y )Nr   rs  )r|   check_squareform_multi_matrixr  ns     r4   test_squareform_multi_matrixz+TestSquareForm.test_squareform_multi_matrixp  s%    q! 	2A..q1	2r6   c                    t         j                  j                  |d      }t        |      }t	        t        |j                        d       t        |      }t        |      }|j                  }d}t        dk\  r+t        |j                  |j                  |j                         t	        t        |      d       t	        t        |j                        d       t	        |d   |d          t        d|d         D ]I  }t        |dz   |d         D ]2  }	||	k7  rt	        |||	f   ||          |dz  }"t	        |||	f   d       4 K y )N   rl   r   r   r   )rZ   r   r   r  r	   lenr   r   r   r  r|   )
r  r  rl  Yr  Yrskr   js
             r4   r  z,TestSquareForm.check_squareform_multi_matrixt  s   IINN1a AS\1%qM]GGa<!''177BHH-SVQS]A&QqT1Q4 q!A$ 	-A1q5!A$' -6 1a4!A$/FA 1a4!,-	-r6   N)r   r  r  rZ   r   r_   int32int8r   r  r  r
  r  r	  r  r  ri   r6   r4   r  r  G  sA    jj"**bhhFN00="L2-r6   r  c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestNumObsYc                     t        dd      D ]B  }t        j                  j                  |d      }t	        |      }t        t        |      |       D y )Nr   r  r  )r|   rZ   r   r   r  r	   r   )r  r  rl  r  s       r4   test_num_obs_y_multi_matrixz'TestNumObsY.test_num_obs_y_multi_matrix  sC    q" 	*A		q!$A"A1q)	*r6   c                     t        j                  t              5  | j                  d       d d d        y # 1 sw Y   y xY wNrl   )r  r<  r{   check_yr  s    r4   test_num_obs_y_1zTestNumObsY.test_num_obs_y_1  s0     ]]:& 	LLO	 	 	s   5>c                 8    t        | j                  d             y Nr   r   r(  r  s    r4   test_num_obs_y_2zTestNumObsY.test_num_obs_y_2  s     	Q r6   c                 8    t        | j                  d             y )Nr   r,  r  s    r4   test_num_obs_y_3zTestNumObsY.test_num_obs_y_3      Q r6   c                 8    t        | j                  d             y Nr  r,  r  s    r4   test_num_obs_y_4zTestNumObsY.test_num_obs_y_4  r0  r6   c                 H    t        dd      D ]  }| j                  |        y )Nrs     )r|   minit)r  r   s     r4   test_num_obs_y_5_10zTestNumObsY.test_num_obs_y_5_10  s"    q" 	AJJqM	r6   c                    t               }t        dd      D ]  }|j                  ||dz
  z  dz          t        dd      D ]:  }||vst        j                  t
              5  | j                  |       d d d        < y # 1 sw Y   GxY wNr   r5  rl   rs  i   setr|   addr  r<  r{   bad_yr  rr   r  r   s       r4   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 rn   r,  r  s     r4   r6  zTestNumObsY.minit  r0  r6   c                 V    t         j                  j                  |      }t        |      S rn   )rZ   r   r   r   r  r  rD  s      r4   r>  zTestNumObsY.bad_y  s    IINN1|r6   c                 <    t        | j                  |            |k(  S rn   )r   make_yr  s     r4   r(  zTestNumObsY.check_y  s    Q(A--r6   c                 R    t         j                  j                  ||dz
  z  dz        S Nrl   r   rZ   r   r   r  s     r4   rF  zTestNumObsY.make_y  s"    yy~~qAE{q011r6   N)r   r  r  r%  r)  r-  r/  r3  r7  r@  r6  r>  r(  rF  ri   r6   r4   r#  r#    s9    *!
!!	"!.2r6   r#  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestNumObsDMc                    t        dd      D ]v  }t        j                  j                  |d      }t	        |      }t        |      }t        dk\  r t        |j                  |j                         t        t        |      |       x y )Nrl   r  r  r   )r|   rZ   r   r   r  r   r   r  r   r	   r   )r  r  rl  r  r  s        r4   test_num_obs_dm_multi_matrixz)TestNumObsDM.test_num_obs_dm_multi_matrix  se    q" 	+A		q!$A"A1A!|aggqww'A*	+r6   c                 8    t        | j                  d             y )Nr   r   check_Dr  s    r4   test_num_obs_dm_0zTestNumObsDM.test_num_obs_dm_0      Q r6   c                 8    t        | j                  d             y r'  rO  r  s    r4   test_num_obs_dm_1zTestNumObsDM.test_num_obs_dm_1  rR  r6   c                 8    t        | j                  d             y r+  rO  r  s    r4   test_num_obs_dm_2zTestNumObsDM.test_num_obs_dm_2  r0  r6   c                 8    t        | j                  d             y r+  rO  r  s    r4   test_num_obs_dm_3zTestNumObsDM.test_num_obs_dm_3  r0  r6   c                 8    t        | j                  d             y r2  rO  r  s    r4   test_num_obs_dm_4zTestNumObsDM.test_num_obs_dm_4  r0  r6   c                 <    t        | j                  |            |k(  S rn   )r   make_Dr  s     r4   rP  zTestNumObsDM.check_D  s    $++a.)Q..r6   c                 B    t         j                  j                  ||      S rn   rI  r  s     r4   r\  zTestNumObsDM.make_D  s    yy~~a##r6   N)r   r  r  rM  rQ  rT  rV  rX  rZ  rP  r\  ri   r6   r4   rK  rK    s*    +!!!!!/$r6   rK  c                     t        | d      S NT)throw)r   )r  s    r4   is_valid_dm_throwra    s    q%%r6   c                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)TestIsValidDMc                     t        j                  dt         j                        }t        j                  t
              5  t        |       d d d        y # 1 sw Y   y xY w)Nrs  rG   rZ   r  r   r  r<  r{   ra  r  r  s     r4   $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 )Nre  rG   FrZ   r  r   r	   r   rg  s     r4   $test_is_valid_dm_improper_shape_1D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_1D_F  s$    HHT,[^U+r6   c                     t        j                  dt         j                        }t        j                  t
              5  t        |       d d d        y # 1 sw Y   y xY wNr   r   r   rG   rf  rg  s     r4   $test_is_valid_dm_improper_shape_3D_Ez2TestIsValidDM.test_is_valid_dm_improper_shape_3D_E  s?    HHYbjj1]]:& 	!a 	! 	! 	!ri  c                 x    t        j                  dt         j                        }t        t	        |      d       y Nro  rG   Frk  rg  s     r4   $test_is_valid_dm_improper_shape_3D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_3D_F  s$    HHYbjj1[^U+r6   c                     t         j                  j                  d      }t        |      }t	        dd      D ]	  }d|||f<    t        j                  t              5  t        |       d d d        y # 1 sw Y   y xY w)Nr  r   rs  r   )	rZ   r   r   r   r|   r  r<  r{   ra  r  rD  r  r   s       r4   #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   rs  r   F)rZ   r   r   r   r|   r	   r   ru  s       r4   #test_is_valid_dm_nonzero_diagonal_Fz1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_F  sM    IINN2qMq! 	AAadG	[^U+r6   c                     t         j                  j                  d      }t        |      }|d   dz   |d<   t	        j
                  t              5  t        |       d d d        y # 1 sw Y   y xY w)Nr  r   rl   rl   rl   r   )rZ   r   r   r   r  r<  r{   ra  r  rD  r  s      r4   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  rz  rl   r{  FrZ   r   r   r   r	   r   r|  s      r4   test_is_valid_dm_asymmetric_Fz+TestIsValidDM.test_is_valid_dm_asymmetric_F  s<    IINN2qMD'A+$[^U+r6   c                 x    t        j                  dt         j                        }t        t	        |      d       y )Nr  rG   Trk  rg  s     r4   test_is_valid_dm_correct_1_by_1z-TestIsValidDM.test_is_valid_dm_correct_1_by_1  s$    HHV2::.[^T*r6   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y )Nrl   Tr  r|  s      r4   test_is_valid_dm_correct_2_by_2z-TestIsValidDM.test_is_valid_dm_correct_2_by_2  +    IINN1qM[^T*r6   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y Nr   Tr  r|  s      r4   test_is_valid_dm_correct_3_by_3z-TestIsValidDM.test_is_valid_dm_correct_3_by_3   r  r6   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y )N   Tr  r|  s      r4   test_is_valid_dm_correct_4_by_4z-TestIsValidDM.test_is_valid_dm_correct_4_by_4%  r  r6   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y )Nr  Tr  r|  s      r4   test_is_valid_dm_correct_5_by_5z-TestIsValidDM.test_is_valid_dm_correct_5_by_5*  s+    IINN2qM[^T*r6   N)r   r  r  rh  rl  rp  rs  rv  rx  r}  r  r  r  r  r  r  ri   r6   r4   rc  rc    sC    !
,!
,!,!,++
+
+
+r6   rc  c                     t        | d      S r_  )r   )rD  s    r4   is_valid_y_throwr  0  s    at$$r6   c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestIsValidYc                     t        j                  dt         j                        }t        j                  t
              5  t        |       d d d        y # 1 sw Y   y xY w)Nr   r   rG   rZ   r  r   r  r<  r{   r  r  rD  s     r4   #test_is_valid_y_improper_shape_2D_Ez0TestIsValidY.test_is_valid_y_improper_shape_2D_E9  s?    HHWBJJ/]]:& 	 Q	  	  	 ri  c                 x    t        j                  dt         j                        }t        t	        |      d       y )Nr  rG   FrZ   r  r   r	   r   r  s     r4   #test_is_valid_y_improper_shape_2D_Fz0TestIsValidY.test_is_valid_y_improper_shape_2D_F>  s$    HHWBJJ/Z]E*r6   c                     t        j                  dt         j                        }t        j                  t
              5  t        |       d d d        y # 1 sw Y   y xY wrn  r  r  s     r4   #test_is_valid_y_improper_shape_3D_Ez0TestIsValidY.test_is_valid_y_improper_shape_3D_EB  s?    HHYbjj1]]:& 	 Q	  	  	 ri  c                 x    t        j                  dt         j                        }t        t	        |      d       y rr  r  r  s     r4   #test_is_valid_y_improper_shape_3D_Fz0TestIsValidY.test_is_valid_y_improper_shape_3D_FG  s$    HHYbjj1Z]E*r6   c                 P    | j                  d      }t        t        |      d       y )Nr   Tcorrect_n_by_nr	   r   r  s     r4   test_is_valid_y_correct_2_by_2z+TestIsValidY.test_is_valid_y_correct_2_by_2K       "Z]D)r6   c                 P    | j                  d      }t        t        |      d       y r  r  r  s     r4   test_is_valid_y_correct_3_by_3z+TestIsValidY.test_is_valid_y_correct_3_by_3O  r  r6   c                 P    | j                  d      }t        t        |      d       y )Nr  Tr  r  s     r4   test_is_valid_y_correct_4_by_4z+TestIsValidY.test_is_valid_y_correct_4_by_4S  r  r6   c                 P    | j                  d      }t        t        |      d       y )Nrs  Tr  r  s     r4   test_is_valid_y_correct_5_by_5z+TestIsValidY.test_is_valid_y_correct_5_by_5W  r  r6   c                    t               }t        dd      D ]  }|j                  ||dz
  z  dz          t        dd      D ]:  }||vst        j                  t
              5  | j                  |       d d d        < y # 1 sw Y   GxY wr9  r;  r?  s       r4   test_is_valid_y_2_100z"TestIsValidY.test_is_valid_y_2_100[  s    Eq" 	#AEE!q1u+/"	#q# 	"Az]]:. "JJqM" "	"" "rA  c                 Z    t         j                  j                  |      }t        |d      S r_  )rZ   r   r   r   rD  s      r4   r>  zTestIsValidY.bad_yd  s!    IINN1!4((r6   c                 V    t         j                  j                  ||dz
  z  dz        }|S rH  rI  rD  s      r4   r  zTestIsValidY.correct_n_by_nh  s&    IINNAQKA-.r6   N)r   r  r  r  r  r  r  r  r  r  r  r  r>  r  ri   r6   r4   r  r  4  s9    
 
+ 
+****")r6   r  r_  )g      $g      rt  c                    t        j                  t              5  t        ddgddg|        d d d        t        j                  t              5  t        ddgddg| ddg       d d d        y # 1 sw Y   @xY w# 1 sw Y   y xY w)Nrl   r   r   r  )r  r<  r{   r$   re  s    r4   
test_bad_pr  m  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)   ri   r6   r4   test_sokalsneath_all_falser  v  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rl   r   r   r   r  r  rl   rl   rl   r   r   rl   r   rl   r   r   )r	   	wcanberrari   r6   r4   r  r  |  s$    9i0!4<6:r6   c                  t    t        t        g dg d      dd       t        t        g dg d      dd       y )	Nr  r  UUUUUU?   decimalr  r  rv  )r
   wbraycurtisri   r6   r4   test_braycurtisr    s(    Iy962NL,?bQr6   c                     t        j                  g d      } t        j                  g d      }t        t        | |      dd       t        t	        | |      t        j
                  d      d       t        j                  t        d      5  t	        | t         j                  d d f   |t         j                  d d f         t        j
                  d      f d d d        t        j                  t        d      5  t        | t         j                  d d f   |t         j                  d d f          d d d        t        j                  t        d      5  t        | d d t         j                  f   |d d t         j                  f          d d d        t        j                  d	      j                  d
d
      }t        j                  t              5  t	        ||       d d d        t        j                  t              5  t        ||       d d d        t         j                  j                  d      }|j                  d      }|j                  d      }t	        ||      }t        ||      }t        |d
z  |d       y # 1 sw Y   xY w# 1 sw Y   ]xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)N)rl   rl   rl   r   r   r   r)  r  r  r   Input vector should be 1-Dr  r  r   iIr  )rZ   r   r
   r  r  rw  r  r<  r{   newaxisr;  r   r   r   r   )rx  ry  r   rsrD  d1d2s          r4   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   rl   r  r  r<  r{   whammingr   rD  s     r4   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       r4   "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|S4rG   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  g?)rZ   r   r   r  )rr   r   desireds      r4   test_hamming_string_arrayr    sM    
 B 	A 	 B 	A GHQNG,r6   c                      t        j                  g dg dg      } t        | ddd       }t        | | ddd       }t        | dd      }t        | | dd      }t	        ||d       t	        ||d       y )N)
QUUT@      Y@r  r  g      B@g      N@g     V@g     b@g      8@g      H@r$   rl   )r5   r_  r   )r5   r_  rS  r  )rZ   r   r   r   r   )arr_inp0c0p1c1s        r4   test_minkowski_wr    sy    XX 223 4F 
vkQ$	7B	vvkQ$	?B	vkQ	/B	vvkQ	7BB'B'r6   c                     g d} g d}t         j                  t         j                  t         j                  t         j                  fD ]o  }t        t        j                  | |      t        j                  ||            }t        t        j                  |j                  t         j                               q t         j                  t         j                  t         j                  t         j                  fD ]  }t        j                  |      j                   }t        dgt        j                  |g|            }t        t        j                  |g|      dg      }t#        ||       t#        |t        j$                  |      dz          t         j&                  t         j$                  t         j(                  t         j*                  g}dD ]2  }t-        t         |      s|j/                  t1        t         |             4 |D ]N  }t        t        j                  | |      t        j                  ||            }t#        |j                  |       P y )Nr  )r  rs  r  rG   r   r   )float16float128)rZ   r!  int16r   r  r  asarrayr   r   rH   floatinguint8r  uint32uint64iinfomaxr	   r   r_   	complex64
complex128hasattrr   getattr)r   rD  rH   dumaxr  r  dtypess           r4   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$%r6   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   rD  r  r  s          r4   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)Nrt  g?r   r   gX$I?rl   r   r   )FFTTTFFTTTTTTFTFFFTT)TTTFFTTTFTTTTTFFFTTT)g?r`  r   g      4@r  )r
   r  r  r(   )	ntfnftnttnffexpectedactuala1a2r   s	            r4   test_sokalmichener_with_weightr    s    
 C
C
C
CC#I#)a39o"=>H),				! ;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@)rZ   r  r  r  r   r   r   )r5   r>  r  s      r4   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 ]  }|di}|dk(  r| d	k(  s|d
k(  r| dk(  s
|dk(  r| dk(  r&t        j                  t              5  t        |       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  foor  r'   r  r#   r_  r$   )rZ   r  r  r<  r   r   r   r  )r5   r>  rE  r   s       r4   test_Xdist_deprecated_argsr  .  sl    
\$$') 
*B
 
y	! "b"fb!" 
y	! b&"   ,uCZFl24KFm$;3J6[#8]]9% 	0!&) 0b"f//0	0 ]]9% 	,!&) ,b&+F+,	, 	,," " 0 0	0 	0
, ,	, 	,s_   D3+D?EEEE/E# E/3D<?EEEE 	#E,(E//E8	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)	NrO   rs  r   rl   )r'   r#   r!   not applicabler:  r  )r\   rZ   r   r   r  rE  r=  r<  r{   r  r   r   )r5   rl  r   r  s       r4   test_Xdist_non_negative_weightsr  M  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  rG   rl   r  r  rs  r   r   r   r  )r   r   rZ   r   r	   rH   ru   r  r<  r{   r;  r   r  s     r4   test__validate_vectorr  _  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  rG   r   rt  r+   rl   )rZ   r   r   r  r   r	   r   )r   r  s     r4   test_yule_all_samer	  y  sq    
d#AadAaDA8O8aASEaeQrUF#AcUGr6   c                     t        t        g dg dd      d       t        t        ddgddg      d       t        t        g dg d      d       t        t        ddggddggd	
      ddg       t        t        ddggddggd
      dg       t        t        ddggddggd	d      ddgg       t        t        ddggddggdd      dgg       t        j                  g dg dg dg      } t        j                  g dg dg dg      }t        t        | |d	
      g d       t        t        | |d
      g d       y )N)r   rt  rt  )rt  r   rt  r   r   rt  rv  g)>d?r  r   r   rl   gД?T)r}   keepdims)rl   r   r   r  )rs  r     rf   )	   r        )   r  r  r5  )            )            )g'Y?gTyCЇ?gFw$?g\BZ?)g;0%7/?g)o?gku?)r
   r!   rZ   r   )rr   r   s     r4   r  r    sS   oLsCj3*=+-oGMSzlc3ZLqIc
$Szlc3ZLqI"%Szlc3ZLq/358;SzlDSzlc3ZLq/358A{mE 	,!# 	$A 	"""$ 	%A a3DFa39;r6   c                  .   t        j                  g d      } t        j                  g d      }t        | |      }t        | |gd      }t	        ||       t        t        j                  |       t        j                  |      d      }t	        ||       y )N)rl   r   r   )r   r   r   r   r  )rZ   r   r   r   r   r   r  )arr_1arr_2r  r  s       r4   test_gh_17703r    sq    HHYEHHYEE5!HE5>&1FFH%2=='=='8FFH%r6   c                 >   | dv rt        j                  d       t        j                  dt        j                        }|j                  d       t        |       5   t        t        j                  j                  |       |||       d d d        y # 1 sw Y   y xY w)N)r!   r#   r'   r  r  rG   F)writer  )r  rE  rZ   r;  r   setflagsr  r  scipyspatialdistance)r5   r   s     r4   test_immutable_inputr#    sv    ??$%
		"BJJ'AJJUJ	&	! ;/&&/1:; ; ;s   .BB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{  rL   pdist-jaccardr    r  r  r  s        r4   test_pdist_jaccard_randomz%TestJaccard.test_pdist_jaccard_random  s4    "#_%I&s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r'  r  r  s        r4   !test_pdist_jaccard_random_float32z-TestJaccard.test_pdist_jaccard_random_float32  =    JJr-./_%I&s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr{  rL   r(  test_jaccardr  r  r  s        r4   test_pdist_jaccard_random_nonCz*TestJaccard.test_pdist_jaccard_random_nonC  s4    "#_%N+s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r'  rp  r  s        r4   test_pdist_djaccard_randomz&TestJaccard.test_pdist_djaccard_random  r,  r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r'  r  r  s        r4   "test_pdist_djaccard_random_float32z.TestJaccard.test_pdist_djaccard_random_float32  r,  r6   c                     d}t        t        j                  d      d      }t        t        j                  d      ||       y )NrS  rs  r   r    r  r  r   rZ   r  r   r  r[  r  s      r4   test_pdist_djaccard_allzerosz(TestJaccard.test_pdist_djaccard_allzeros  s0    "((6"I.ac2r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r.  rp  r  s        r4   test_pdist_djaccard_random_nonCz+TestJaccard.test_pdist_djaccard_random_nonC  s=    JJr-./_%N+s3r6   c                     d}t        t        j                  d      d      }t        t        j                  d      ||       y )NrS  r6  r/  r  r  r7  r8  s      r4   !test_pdist_djaccard_allzeros_nonCz-TestJaccard.test_pdist_djaccard_allzeros_nonC  s0    "((6"N3ac2r6   c                 0   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t	        |ddd       t	        |ddd       y r  wjaccardrZ   r   r   r   r  s      r4   test_pdist_jaccard_mtica1z%TestJaccard.test_pdist_jaccard_mtica1  sd    RXXo.XXo.0bhhd;hhd;=3QU3Cae4r6   c                 0   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t	        |ddd       t	        |ddd       y r  r?  r  s      r4   test_pdist_jaccard_mtica2z%TestJaccard.test_pdist_jaccard_mtica2  sd    RXXi(XXi(*bhhy5hhy575qu5E6r6   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    )	rZ   r   r  r  r[  r   r    r   r   )r  r   rD  r[  s       r4   test_non_01_inputzTestJaccard.test_non_01_input  sw     HH]#HH]#hhuo!!1s5qcA3	2cUG<q!fi03%8r6   N)r   r  r  r)  r+  r0  r2  r4  r9  r;  r=  rA  rC  rF  ri   r6   r4   r%  r%    s9    444443
43
579r6   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        r4   test_pdist_chebyshev_randomz)TestChebyshev.test_pdist_chebyshev_random	  s5    !"&';'s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr  r  rJ  r   r   rW  r|  r  s        r4   #test_pdist_chebyshev_random_float32z1TestChebyshev.test_pdist_chebyshev_random_float32	  sD    JJr,-.&';'sGaKHr6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr{  r  rJ  test_chebyshevr  r  r  s        r4    test_pdist_chebyshev_random_nonCz.TestChebyshev.test_pdist_chebyshev_random_nonC	  s6    !"&'+,s3r6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nri  r  pdist-chebyshev-irisr   r  r  r  s        r4   test_pdist_chebyshev_irisz'TestChebyshev.test_pdist_chebyshev_iris 	  s3    vJ+,;'s3r6   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  rR  r   r   rW  r|  r  s        r4   !test_pdist_chebyshev_iris_float32z/TestChebyshev.test_pdist_chebyshev_iris_float32'	  sB    JJr&z"+,;'sGaKHr6   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nri  r  rR  rO  r  r  r  s        r4   test_pdist_chebyshev_iris_nonCz,TestChebyshev.test_pdist_chebyshev_iris_nonC.	  s4    vJ+,+,s3r6   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  rs  r  )r   rl   rs  r   r   r  r	   r   r   r   r  r   rD  r   s       r4   test_weightedzTestChebyshev.test_weighted5	  s\     Yq!Q'+UAq6;!4qc:UA3[A6!>r6   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  rY  r  r   r   r  rZ  r[  s       r4   test_zero_weightzTestChebyshev.test_zero_weight?	  sZ    Yq!Q'+UAq6;!4qc:UA3[A6!>r6   N)r   r  r  rK  rM  rP  rS  rU  rW  r\  r^  ri   r6   r4   rH  rH  		  s,    4I44I4??r6   rH  rn   )	NNFTFFFFN)rC  os.pathrT   	functoolsr   r   r  numpyrZ   r   numpy.linalgr   numpy.testingr   r   r   r	   r
   r   r   r   r  scipy.spatial.distancer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   scipy._lib._utilr,   r-   fixturer5   rR   r   _tdist_ytdistr\   rd   rj   r~   r   r   r   r   assert_allclose_forgivingr   r  r  strr  rn  rZ  r  r  r  r  r  r  r  
wcityblock
wchebyshevr  r  wkulczynski1r@  r  r  r  r  r  wsokalmichenerr  r  r  r  r  r#  rK  ra  rc  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%  rH  ri   r6   r4   <module>ro     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	W? W?r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=? =?r6   