
    biJ                    D   d dl mZmZ d dlZd dlZd dl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/m0Z0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6m7Z7 d dl8m9Z9  ejt                  e!d	
      d        Z;g dZ< e
jz                  g dg dg dg dg dg dgd      Z> ee>      Z?i Z@d ZA eA        d ZBdYdZC	 	 	 	 	 dZdZDd ZEd ZFdYdZG eed      ZHeHd  dfd!ZId"dd# d$ddddddddddd%d eHfd&ZJ eJed'd(      ZK eJed'dd)      ZL eJed'dd'*      ZM eJed'ddd'+      ZN eJe/      ZO eJe*d,      xZPZQ eJe4      ZR eJe(      ZS eJe%      ZT eJe$      ZU eJe'      ZV eJe&      ZW eJe+      ZX eJe)d-      ZY eJe3d-      ZZ eJe"      Z[ eJe#d-      Z\ eJe2      Z] eJe0      Z^ G d. d/      Z_ G d0 d1      Z` G d2 d3      Za G d4 d5      Zb G d6 d7      Zc G d8 d9      Zdd: Ze G d; d<      Zfd= Zg G d> d?      Zhej                  j                  d@g dA      dB        ZkdC ZldD ZmdE ZndF ZodG ZpdH ZqdI ZrdJ ZsdK ZtdL ZudM ZvdN ZwdO ZxdP ZydQ ZzdR Z{dS Z|dT Z} G dU dV      Z~ G dW dX      Zy)[    )wrapspartialN)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mahalanobis	minkowskirogerstanimoto
russellrao
seuclideansokalsneathsqeuclideanyule)np_longnp_ulong)skip_xp_invalid_argsession)paramsscopec                     | j                   S )z;
    Fixture for all metrics in scipy.spatial.distance
    )param)requests    \/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/spatial/tests/test_distance.pymetricr4   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         )r6   r   '        )r7   r;   r     4     )r8   r<   r?   r      e  )r9   r=   r@   rB   r     )r:   r>   rA   rC   rD   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       r3   load_testing_filesrc   {   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r5   c                  F    t        j                  d      j                  dk  S )Nr      )rY   intpitemsize r5   r3   	_is_32bitri      s    771:""r5   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)rY   
atleast_1d.0as     r3   	<genexpr>z _chk_asarrays.<locals>.<genexpr>   s     42==#4s   !c              3   V   K   | ]   }|j                   d    j                   k(   " yw)r   N)ndim)rp   rq   arrayss     r3   rr   z _chk_asarrays.<locals>.<genexpr>   s"     <166VAY^^+<s   &)z(array ndim must be the same for neg axis)rY   
asanyarrayrt   raveltupleall
ValueErrorrange)ru   axisrq   s   `  r3   _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rm   )rY   magetmasknomaskro   s     r3   rr   z_chk_weights.<locals>.<genexpr>   s*     QQBEEMM!,BEELL@Qs   AATc              3   h   K   | ]*  \  }}|rt         j                  j                  |      n| , y wrm   )rY   r   masked_invalid)rp   rq   has_nans      r3   rr   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rm   shape)rp   rq   r|   weightss     r3   rr   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)rY   take)rp   rq   r|   pos_weightss     r3   rr   z_chk_weights.<locals>.<genexpr>   s!     N!2771k==Ns   "%rk   )r}   anyrY   isnansumrx   ziprv   onesr   _freq_weights_weight_maskedry   rz   nonzerosize)ru   r   r|   force_weightssimplify_weightspos_only	neg_check
nan_screenmask_screenddofchkedrq   has_nansr   s    ``          @r3   _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   rz   )r   int_weightss     r3   r   r      sD    ..%K;##%KG9UVVr5   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   rk   c              3   .   K   | ]  }|k7  s	|  y wrm   rh   )rp   ir|   s     r3   rr   z!_weight_masked.<locals>.<genexpr>   s     C1dQCs   
r   )rY   rv   r   r   r   rt   rx   r{   r   r   r   )ru   r   r|   rq   	axis_masknot_axess     `   r3   r   r      s    |mmG$G -EEMM!$	$66A:CaffCCH!84I1y'',,,- Nr5   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 )NrF   c                     t        j                  t        j                  | ||            }|j                  t	        | j
                        D cg c]  }||k7  r| j                  |   nd c}      S c c}w )Nr   rk   )rY   rv   r   reshaper{   rt   r   )rq   ixr|   recordr   s        r3   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rm   r   )rp   rq   r|   n_obss     r3   rr   z_rand_split.<locals>.<genexpr>   s     6!qwwt}%6s   z#data must be aligned on sample axis      ?r   )rY   
issubdtyperG   integerr   float64arrayrandomRandomStater   ry   r{   r   randintrandappend)ru   r   r|   	split_perseedarrseeded_randr   r   split_ixprev_wqrq   r   s     `          @r3   _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 rm   rh   xs    r3   <lambda>r     s     r5   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)rY   r   r   AttributeError	TypeErrorrz   r   _rough_check)	rq   br   keywcheck_acheck_ba_ib_is	            r3   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 rm   rh   r   s    r3   r   r     s    1 r5   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   rY   rn   squeezerx   r   	Exceptiontyper   r   slicert   nanr   r   r   NotImplementedErrorwarningswarn__name__)&argskwargsresultru   restr   r|   r   rq   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&                        r3   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   `````````````````  r3   _weight_checkedr
    s3     2YY Y Y Yt Nr5   rk   )r   r   )r   r   r   )r   r   r  )r   r   r   r  )r   )r   c                   (   e Zd Zd Zd Zd Zd Zej                  j                  ddddd	d
dde
j                  g      d        Zd Zd Zd ZddZd Zd Zej                  j'                   ej*                         dk(  d      d        Zd Zd Zy)	TestCdistc                    g d| _         t        t        t        j                  t        j
                  gt        t        j                  t        j
                  gt        j                  t        j
                  gt        j
                  gd| _        y N)rN   rO   rP   rM   rL   )booluintr   r^   rnd_eo_namesr+   r*   rY   r^   r   valid_upcastsselfs    r3   setup_methodzTestCdist.setup_method  W    1 (0"**bjj&Q'.

BJJ&G&(jj"**%=*,**7r5   c                    g dg dg dg}g dg dg dg}dt        j                  d      d	}dgd
z  }t        j                  t              5  t        ||fd|i| d d d        t        j                  t              5  t        ||fdt        |      i| d d d        t        j                  t              5  t        ||fdd|z   i| d d d        t        j                  t              5  t        ||g|d|i d d d        t        j                  t              5  t        ||g|dt        |      i d d d        t        j                  t              5  t        ||g|dd|z   i d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   y xY w)Nr   r         @333333?ffffff@333333@皙@r  皙@g      @      @g       @g      @333333@g @g      @r%  r!  Q	@r   N0tV4l1D_p4raMr      r4   test_)rY   arangepytestraisesr   r   eval)r  r4   X1X2r   r   s         r3   test_cdist_extra_argszTestCdist.test_cdist_extra_args  s    O_=O_=$(ryy|<v|]]9% 	3"b2262	3]]9% 	9"b8f88	9]]9% 	="b<6!1<V<	=]]9% 	0"b/$//	0]]9% 	6"b55f5	6]]9% 	:"b9D96!19	: 	:	3 	3	9 	9	= 	=	0 	0	6 	6	: 	:sH   E7?F9F-FF(F47FFFF%(F14F=c           	         dd}g dg dg dg}g dg dg d	g}d
t        j                  d      d}d
gdz  }t        j                  t              5  t        |||       d d d        t        j                  t              5  t        |||g|  d d d        t        j                  t              5  t        |||fi | d d d        t        j                  t              5  t        |||dd       d d d        t        j                  t              5  t        |||ddd       d d d        t        j                  t              5  t        |||ddd       d d d        t        j                  t              5  t        |||ddd       d d d        t        j                  t              5  t        |||dd       d d d        t        j                  t              5  t        |||d       d d d        t        j                  t              5  t        |||ddd       d d d        t        t        |||dd      d       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   RxY w# 1 sw Y   ,xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nrk   r   c                     ||z   |z   S rm   rh   r   yargkwargkwarg2s        r3   
_my_metricz:TestCdist.test_cdist_extra_args_custom.<locals>._my_metric      ;''r5   r  r  r  r"  r$  r&  r'  r   r(  r*  r   ffffff
@r8  r9  r8  皙?r4   r7  r9  皙@rk   r   )rY   r,  r-  r.  r   r   r   )r  r:  r0  r1  r   r   s         r3   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  epsr0  r1  Y1Y2s         r3   #test_cdist_euclidean_random_unicodez-TestCdist.test_cdist_euclidean_random_unicode  sH    
^
^R[1R%56BS'A+>r5   p皙?      ?r   Gz?r   gffffff@gffffff@c                     d}t         d   }t         d   }t        ||d|      }t        ||d|      }t        ||d|t        dkD  	       y )
NvIh%<=rF  rG  r#   rQ  test_minkowskir   r   )r   rJ  r   rK  )r  rQ  rM  r0  r1  rN  rO  s          r3   test_cdist_minkowski_randomz%TestCdist.test_cdist_minkowski_random  sP     
^
^R[A6R%5;BQS'A+Fr5   c                     d}t         d   }t         d   }t        ||d      }d }dt        j                  | ||      z  | ||      z  j                        z
  }t        |||t        dkD         y )	N+=rF  rG  r   c                 d    t         j                  j                  | d      j                  dd      S )Nrk   r   r   )rY   linalgr   r   )Xs    r3   normsz1TestCdist.test_cdist_cosine_random.<locals>.norms  s&    99>>!!>,44R;;r5   rk   r   rI  )r[   wcdistrY   dotTr   r   )r  rM  r0  r1  rN  r_  rO  s          r3   test_cdist_cosine_randomz"TestCdist.test_cdist_cosine_random  sk    
^
^BH%	< eBi2b	>*<*<==BS'A+>r5   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"   r4                 @      ?r   r   rk   r   )rY   r   r   r   sqrtr-  r.  rz   )r  x1x2distrt2s        r3   test_cdist_mahalanobisz TestCdist.test_cdist_mahalanobis  s    XXsQCj!XXsQCj!RM2RWWS\2RWWS\2771:4NOP XX1vAw'(XX1v1v2w/0RM2ggajS#AGQ@A ]]:& 	<Aq6(aVH];	< 	< 	<s   D66D?c                      G d d      fd}t        j                          ggt              }t        |||      }d}t	        ||t
        dkD         y )	Nc                       e Zd Zy)6TestCdist.test_cdist_custom_notdouble.<locals>.myclassNr   
__module____qualname__rh   r5   r3   myclassrr  
      r5   rv  c                 X    t        | d         rt        |d         st        d      yNr   zType has been changed+?
isinstancerz   r   r6  rv  s     r3   r:  z9TestCdist.test_cdist_custom_notdouble.<locals>._my_metric  -    adG,JqtW4M !899r5   rF   rf  rz  r   r   )rY   r   objectr   r	   r   )r  r:  rJ   cdist_yright_yrv  s        @r3   test_cdist_custom_notdoublez%TestCdist.test_cdist_custom_notdouble	  sM    	 		 xx')V4d:6Wgw{;r5   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Nr4   r+  r   rI  )
r   r/  r   r   r   	__class__printr   r-  r.  )r  r0  r1  r4   rM  r   y1y2y3r   e_clss              r3   _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 )Nre  r   rk   r   	testing:  with: >   r   r)   r%   r'   r$   r  r&   r   r|   r   Vr"   VI)r  r[   r   r  r  rY   vstackr   r   var
atleast_2dcovrb  r   r]  inv)r  r4   eo_namer0  r1  X12r  r  s           r3   test_cdist_calling_conventionsz(TestCdist.test_cdist_calling_conventions+  sa    (( 	GG GSqS$B$Y'BGQTT3Q3Y'B{k69g> * *')++BF; %iiR)00<FF3QQ///B!/D=(iiR)00<MM"&&-0XXbiimmA.001//B2/F/	Gr5   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>rL   r  rP   r  rO   r   rN   r^   r   re  r   rk   r   rf  rI  )r[   r  r   r   r   r   r  r  r   r-  r.  )r  r4   rM  teststestr0  r1  r  new_typer  r   r  X1newX2news                 r3   test_cdist_dtype_equivalencez&TestCdist.test_cdist_dtype_equivalenceH  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-z	win-arm64znumpy#29442)reasonc                    d}t         d   }t         d   }|j                  d   |j                  d   }}t               }|dk(  rd|d<   t        j                  ||ft        j
                        }t        |||fi |}	t        |||fd	|i|}
t        |	|
|t        d
kD         t        |
|u        t        j                  |dz
  |dz   ft        j
                        }t        j                  t              5  t        |||fd	|i| d d d        t        j                  d
|z  d
|z  ft        j
                        d d d
d d d
f   }t        j                  ||ft        j
                  d      }t        j                  t              5  t        |||fd	|i| d d d        t        j                  t              5  t        |||fd	|i| d d d        t        j                  ||ft        j                        }t        j                  t              5  t        |||fd	|i| d d d        y # 1 sw Y   (xY w# 1 sw Y   xY w# 1 sw Y   |xY w# 1 sw Y   y xY w)NrE  rF  rG  r   r#   rT  rQ  rF   outr   rI  rk   F)rG   order)r[   r   dictrY   emptyr   r   r   r   r   r-  r.  rz   int64)r  r4   rM  r0  r1  out_rout_cr   out1rN  rO  out2out3out4out5s                  r3   test_cdist_outzTestCdist.test_cdist_outc  s$    
^
^xx{BHHQKu[ F3Kxxbjj92r6,V,2r66t6v6 	BS'A+> 	d
 xxq%'*"**=]]:& 	6"b&5d5f5	6 xxYE	""**669c3Q3h@xxbjjD]]:& 	6"b&5d5f5	6]]:& 	6"b&5d5f5	6 xxbhh7]]:& 	6"b&5d5f5	6 	6	6 	6	6 	6	6 	6
	6 	6s0   5H,H99II,H69IIIc                 P   d}t         d   d d dd d df   }t         d   d d dd d df   }|j                         }|j                         }t        ||       t        ||       t        |j                  j
                          t        |j                  j
                          t        |j                  j
                         t        |j                  j
                         t               }|dk(  rd|d<   t        |||fi |}t        |||fi |}	t        ||	|t        dkD         y )	NrE  rF  r   rG  r#   rT  rQ  rI  )
r[   copyr	   r   flagsc_contiguousr  r   r   r   )
r  r4   rM  r0  r1  X1_copyX2_copyr   rN  rO  s
             r3   test_stridingzTestCdist.test_striding  s    
^CaC1H%
^CaC1H%'')'') 	R!R!BHH)))*BHH)))***+**+[ F3K2r6,V,7GV6v6BS'A+>r5   c                 l   t         j                  j                  dd      }t         j                  j                  dd      }t               }|dk(  rd|d<   t	        ||fd|i|}|||fD cg c]  }t        j                  |       }}~~~t        r
t                t        d |D              sJ y c c}w )N
   r#   rT  rQ  r4   c              3   .   K   | ]  } |       d u   y wrm   rh   )rp   weak_refs     r3   rr   z0TestCdist.test_cdist_refcount.<locals>.<genexpr>  s     @(8:%@s   )
rY   r   r   r  r   weakrefrefr   r   ry   )r  r4   rk  rl  r   r  v	weak_refss           r3   test_cdist_refcountzTestCdist.test_cdist_refcount  s    YY^^B#YY^^B#[ F3KB464V4 /1"c];W[[^;	;CN@i@@@@ <s   +B1Nr  )r   rt  ru  r  r2  rC  rP  r-  markparametrizerY   infrY  rc  ro  r  r  r  r  skipif	sysconfigget_platformr  r  r  rh   r5   r3   r  r    s    7:*"9H? [[S3c4#&S"&&#: ;G;G?<$<C*G:K6 [[.	..0K?V%6 W%6N?4Ar5   r  c            	           e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                  d        Ze
j                  j                  d	        Ze
j                  j                  d
        Zd Zd Zd Zd Zd Zd Zd Zd Zd Ze
j                  j                  d        Ze
j                  j                  d        Ze
j                  j                  d        Zd Zd Zd Zd Ze
j                  j                  d        Z e
j                  j                  d        Z!e
j                  j                  d        Z"d Z#d Z$d  Z%e
j                  j                  d!        Z&e
j                  j                  d"        Z'e
j                  j                  d#        Z(e
j                  jS                  d$d%d&d'd(d)e*jV                  g      d*        Z,d+ Z-d, Z.d- Z/e
j                  j                  d.        Z0e
j                  j                  d/        Z1e
j                  j                  d0        Z2e
j                  j                  d1        Z3e
j                  j                  d2        Z4e
j                  j                  d3        Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdK ZMdL ZNe
j                  j                  dM        ZOdN ZPeQdO        ZRdVdPZSdQ ZTdR ZUdS ZVdT 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    r3   r  zTestPdist.setup_method  r  r5   c                 ^   ddgddgddgg}dt        j                  d      d}dgd	z  }t        j                  t              5  t        |fd
|i| d d d        t        j                  t              5  t        |fd
t        |      i| d d d        t        j                  t              5  t        |fd
d|z   i| d d d        t        j                  t              5  t        |g|d
|i d d d        t        j                  t              5  t        |g|d
t        |      i d d d        t        j                  t              5  t        |g|d
d|z   i d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   y xY w)Nr   r   r  r  r   r'  r   r(  r*  r4   r+  )rY   r,  r-  r.  r   r   r/  )r  r4   r0  r   r   s        r3   test_pdist_extra_argszTestPdist.test_pdist_extra_args  s   2hc
S#J/$(ryy|<v|]]9% 	/".V.v.	/]]9% 	5"4T&\4V4	5]]9% 	9"8Wv-88	9]]9% 	,"+d+V+	,]]9% 	2"1D1T&\1	2]]9% 	6"55Wv-5	6 	6	/ 	/	5 	5	9 	9	, 	,	2 	2	6 	6sH   E&3E3,E?FF
F#&E03E<?FFF #F,c                 T   dd}ddgddgddgg}d	t        j                  d      d
}d	gdz  }t        j                  t              5  t        ||       d d d        t        j                  t              5  t        ||g|  d d d        t        j                  t              5  t        ||fi | d d d        t        j                  t              5  t        ||dd       d d d        t        j                  t              5  t        ||ddd       d d d        t        j                  t              5  t        ||ddd       d d d        t        j                  t              5  t        ||ddd       d d d        t        j                  t              5  t        ||dd       d d d        t        j                  t              5  t        ||d       d d d        t        j                  t              5  t        ||ddd       d d d        t        t        ||dd      d       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   LxY w# 1 sw Y   'xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nrk   r   c                     ||z   |z   S rm   rh   r5  s        r3   r:  z:TestPdist.test_pdist_extra_args_custom.<locals>._my_metric  r;  r5   r   r   r  r  r   r'  r(  r*  r<  r=  r>  r?  r@  rA  rB  )rY   r,  r-  r.  r   r   r   )r  r:  r0  r   r   s        r3   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   rJ  r[   wpdist_no_constr   r  rM  r^  Y_rightY_test1s        r3   test_pdist_euclidean_randomz%TestPdist.test_pdist_euclidean_random  5    !"&'!![1s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y r  r  r  s        r3   test_pdist_euclidean_random_uz'TestPdist.test_pdist_euclidean_random_u  r  r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r  rY   r^   r[   r  r   r  s        r3   #test_pdist_euclidean_random_float32z-TestPdist.test_pdist_euclidean_random_float32  s>    JJr,-.&'!![1s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  rH  r  r  r  rM  r^  r  Y_test2s        r3    test_pdist_euclidean_random_nonCz*TestPdist.test_pdist_euclidean_random_nonC  s6    !"&'!!%56s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  irispdist-euclidean-irisr   r  r  r  s        r3    test_pdist_euclidean_iris_doublez*TestPdist.test_pdist_euclidean_iris_double  s3    vJ+,!![1s3r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  r  r   r   rI  rY   r^   r[   r  r   r   r  s        r3   !test_pdist_euclidean_iris_float32z+TestPdist.test_pdist_euclidean_iris_float32  B    JJr&z"+,!![1sGaKHr5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  rH  r  r  r  s        r3   test_pdist_euclidean_iris_nonCz(TestPdist.test_pdist_euclidean_iris_nonC&  s6     vJ+,!!%56s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  pdist-seuclideanr&   r  r[   r   r   r  s        r3   test_pdist_seuclidean_randomz&TestPdist.test_pdist_seuclidean_random0  s5    !"'(<(s3r5   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   rk   r  r  )rY   r^   r[   r   r   r  )r  rM  r^  r  r  r  r  s          r3   $test_pdist_seuclidean_random_float32z.TestPdist.test_pdist_seuclidean_random_float327  sl    JJr,-.'(<(s3 FF111%<1-s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  test_seuclideanr  r  r  s        r3   !test_pdist_seuclidean_random_nonCz+TestPdist.test_pdist_seuclidean_random_nonCC  s6    !"'(,-s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  pdist-seuclidean-irisr&   r  r  r  s        r3   test_pdist_seuclidean_irisz$TestPdist.test_pdist_seuclidean_irisK  s3    vJ,-<(s3r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y )Nr   r  r  r&   r  )rY   r^   r[   r   r   r  s        r3   "test_pdist_seuclidean_iris_float32z,TestPdist.test_pdist_seuclidean_iris_float32R  s<    JJr&z",-<(s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  r  r  r  r  s        r3   test_pdist_seuclidean_iris_nonCz)TestPdist.test_pdist_seuclidean_iris_nonCZ  s6     vJ,-,-s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr  r  pdist-cosiner   r  r[   wpdistr   r  s        r3   test_pdist_cosine_randomz"TestPdist.test_pdist_cosine_randomc  s4    !"^$H%s3r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r  rY   r^   r[   r  r   r  s        r3    test_pdist_cosine_random_float32z*TestPdist.test_pdist_cosine_random_float32j  s=    JJr,-.^$H%s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  test_cosiner  r  r  s        r3   test_pdist_cosine_random_nonCz'TestPdist.test_pdist_cosine_random_nonCq  s4    !"^$M*s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr   r  pdist-cosine-irisr   r   r  r  s        r3   test_pdist_cosine_irisz TestPdist.test_pdist_cosine_irisy  s3    vJ()H%s3r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  r  r   r   r   r   )rY   r^   r[   r  r   r   r  s        r3   test_pdist_cosine_iris_float32z(TestPdist.test_pdist_cosine_iris_float32  sB    JJr&z"()H%sGaKHr5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr   r  r  r  r   r  r  s        r3   test_pdist_cosine_iris_nonCz%TestPdist.test_pdist_cosine_iris_nonC  s3    vJ()M*s3r5   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)rY   absr   r   r   r  r   r  )r  r   r^  s      r3   test_pdist_cosine_boundsz"TestPdist.test_pdist_cosine_bounds  s\     FF299((.33B78IIq!fq(#A&!+<	>r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr  r  pdist-cityblockr   r  r  r  s        r3   test_pdist_cityblock_randomz%TestPdist.test_pdist_cityblock_random  s5    !"&'!![1s3r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r  r  r  s        r3   #test_pdist_cityblock_random_float32z-TestPdist.test_pdist_cityblock_random_float32  s>    JJr,-.&'!![1s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  test_cityblockr  r  r  s        r3    test_pdist_cityblock_random_nonCz*TestPdist.test_pdist_cityblock_random_nonC  s6    !"&'!!%56s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr[  r  pdist-cityblock-irisr   r  r  r  s        r3   test_pdist_cityblock_irisz#TestPdist.test_pdist_cityblock_iris  s3    vJ+,!![1s3r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  r&  r   r   rI  r  r  s        r3   !test_pdist_cityblock_iris_float32z+TestPdist.test_pdist_cityblock_iris_float32  r  r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr[  r  r&  r#  r  r  r  s        r3   test_pdist_cityblock_iris_nonCz(TestPdist.test_pdist_cityblock_iris_nonC  s6     vJ+,!!%56s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr  r  pdist-correlationr   r  r  r  s        r3   test_pdist_correlation_randomz'TestPdist.test_pdist_correlation_random  s5    !"()M*s3r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r-  r
  r  s        r3   %test_pdist_correlation_random_float32z/TestPdist.test_pdist_correlation_random_float32  s>    JJr,-.()M*s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r.  test_correlationr  r  r  s        r3   "test_pdist_correlation_random_nonCz,TestPdist.test_pdist_correlation_random_nonC  s6    !"()./s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  pdist-correlation-irisr   r  r  r  s        r3   test_pdist_correlation_irisz%TestPdist.test_pdist_correlation_iris  s3    vJ-.M*s3r5   c                     d}t         d   }t        j                  t         d         }t        |d      }t	        |||t
        dkD         y )Nr  r  r6  r   r   rI  )r[   rY   r^   r  r   r   r  s        r3   #test_pdist_correlation_iris_float32z-TestPdist.test_pdist_correlation_iris_float32  sB    vJ**R 89:M*sGaKHr5   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  r6  r3  r  )sysmaxsizer-  skipr[   r  r   r  s        r3    test_pdist_correlation_iris_nonCz*TestPdist.test_pdist_correlation_iris_nonC  sL    ;;CKK'vJ-../s3r5   rQ  rR  rS  r   r   皙	@c                 p    d}t         d   }t        |d|      }t        |d|      }t        ||d|       y )NrV  r  r#   rW  rX  r   )r   rJ  r  )r  rQ  rM  r^  rN  rO  s         r3   test_pdist_minkowski_random_pz'TestPdist.test_pdist_minkowski_random_p  s=    !"Qq1Q 0A6BQS1r5   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y Nr  r  pdist-minkowski-3.2r#   r?  rW  r  r  r  s        r3   test_pdist_minkowski_randomz%TestPdist.test_pdist_minkowski_random  s7    !"*+!![C8s3r5   c                     d}t        j                  t        d         }t        d   }t        |dd      }t	        |||       y rC  r  r  s        r3   #test_pdist_minkowski_random_float32z-TestPdist.test_pdist_minkowski_random_float32  s@    JJr,-.*+!![C8s3r5   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  rD  rX  r?  rW  r  r  r  s        r3    test_pdist_minkowski_random_nonCz*TestPdist.test_pdist_minkowski_random_nonC  s8    !"*+!!%5=s3r5   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  pdist-minkowski-3.2-irisr#   r?  rW  r  r  r  s        r3   test_pdist_minkowski_3_2_irisz'TestPdist.test_pdist_minkowski_3_2_iris  5    vJ/0!![C8s3r5   c                     d}t        j                  t        d         }t        d   }t        |dd      }t	        |||       y )Nr   r  rK  r#   r?  rW  r  r  r  s        r3   %test_pdist_minkowski_3_2_iris_float32z/TestPdist.test_pdist_minkowski_3_2_iris_float32  s>    JJr&z"/0!![C8s3r5   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  rK  rX  r?  rW  r  r  r  s        r3   "test_pdist_minkowski_3_2_iris_nonCz,TestPdist.test_pdist_minkowski_3_2_iris_nonC&  6    vJ/0!!%5=s3r5   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  pdist-minkowski-5.8-irisr#   r%  rW  r  r  r  s        r3   test_pdist_minkowski_5_8_irisz'TestPdist.test_pdist_minkowski_5_8_iris.  rM  r5   c                     d}t        j                  t        d         }t        d   }t        |dd      }t	        |||t
        dkD         y )	Nr   r  rT  r#   r%  rW  r   rI  r  r  s        r3   %test_pdist_minkowski_5_8_iris_float32z/TestPdist.test_pdist_minkowski_5_8_iris_float326  sD    JJr&z"/0!![C8sGaKHr5   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  rT  rX  r%  rW  r  r  r  s        r3   "test_pdist_minkowski_5_8_iris_nonCz,TestPdist.test_pdist_minkowski_5_8_iris_nonC>  rR  r5   c                    t        j                  g d      j                  dd      }t        |d      }t	        |dt        j
                  d      t        j
                  d      t        j
                  d      t        j
                  d      t        j
                  d	      g       t        j                  d
d
gdd
gd
dgdd
gd
dgg      }t        |d      }t        j
                  d      }t	        |||||dd|z  ddd|z  dg
       t        j                  t              5  t        d
dgddggd       d d d        y # 1 sw Y   y xY w)N)r   r   r  r#  r   rk   r"   rf  rg  ri  rh  r   r   r   r   r   )
rY   r   r   r   r   rj  r-  r.  rz   r  )r  r   rm  rn  s       r3   test_pdist_mahalanobisz TestPdist.test_pdist_mahalanobisF  s   HH)*222q9Q}-sBGGCL"''#,!wws|RWWS\2773<I 	J HHq!fr1g1v1v2w?@Q}-ggajsCc1a#gq!QWaPQ ]]:& 	;QFQF#M:	; 	; 	;s   !D>>Ec                 `    d}t         d   }t         d   }t        |d      }t        |||       y NrE  rK   pdist-hammingr   r  r  r  s        r3   test_pdist_hamming_randomz#TestPdist.test_pdist_hamming_randomW  s4    "#_%I&s3r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r]  r
  r  s        r3   !test_pdist_hamming_random_float32z+TestPdist.test_pdist_hamming_random_float32^  =    JJr-./_%I&s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y NrE  rK   r^  test_hammingr  r  r  s        r3   test_pdist_hamming_random_nonCz(TestPdist.test_pdist_hamming_random_nonCe  s4    "#_%N+s3r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r]  rY   r   r[   r  r   r  s        r3   test_pdist_dhamming_randomz$TestPdist.test_pdist_dhamming_randoml  rb  r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r]  r
  r  s        r3   "test_pdist_dhamming_random_float32z,TestPdist.test_pdist_dhamming_random_float32s  rb  r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y rd  rh  r  s        r3   test_pdist_dhamming_random_nonCz)TestPdist.test_pdist_dhamming_random_nonCz  s=    JJr-./_%N+s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Ndy=r  pdist-jensenshannonr!   r  r  r  s        r3   test_pdist_jensenshannon_randomz)TestPdist.test_pdist_jensenshannon_random  s5    !"*+?+s3r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )N:0yE>r  rp  r!   r   rI  rY   r^   r[   r   r   r   r  s        r3   'test_pdist_jensenshannon_random_float32z1TestPdist.test_pdist_jensenshannon_random_float32  sD    JJr,-.*+?+sGaKHr5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nro  r  rp  test_jensenshannonr  r  r  s        r3   $test_pdist_jensenshannon_random_nonCz.TestPdist.test_pdist_jensenshannon_random_nonC  s6    !"*+/0s3r5   c                 z    t               rd}nd}t        d   }t        d   }t        |d      }t        |||       y )Ng&.=g-q=r  pdist-jensenshannon-irisr!   r   )ri   r[   r   r   r  s        r3   test_pdist_jensenshannon_irisz'TestPdist.test_pdist_jensenshannon_iris  s=    ;CCvJ/0?+s3r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Ngư>r  rz  r!   r   r  rt  r  s        r3   %test_pdist_jensenshannon_iris_float32z/TestPdist.test_pdist_jensenshannon_iris_float32  sB    JJr&z"/0?+sGaKHr5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Ng-C6
?r  rz  rw  r  r  r  s        r3   "test_pdist_jensenshannon_iris_nonCz,TestPdist.test_pdist_jensenshannon_iris_nonC  s4    vJ/0/0s3r5   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rk   r   rk   rk   r   rk   rk   r   rk   rk   rF   333333?r   绽|=rJ  r   	wmatchingrY   r   r  r   r  mm2s      r3   test_pdist_matching_mtica1z$TestPdist.test_pdist_matching_mtica1  sd    bhh/hh/1rxxt<xxt<>3QU3Cae4r5   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rk   r   rk   rk   rk   r   rF   UUUUUU?r   r  r  r  r  s      r3   test_pdist_matching_mtica2z$TestPdist.test_pdist_matching_mtica2  sd    bhhy)XXi(*rxx	6hhy575qu5E6r5   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  rF   r   r   r  r  wyulerY   r   r  r   r  r   r  s      r3   test_pdist_yule_mtica1z TestPdist.test_pdist_yule_mtica1  sr    "((?+((?+-288O4888O48:Q;!H1151AAE2r5   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  rF   r   r   r  r  r  r  s      r3   test_pdist_yule_mtica2z TestPdist.test_pdist_yule_mtica2  sr    "((9%((9%'288IT288IT24Q;!H1151AAE2r5   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  rF   r   g۶m۶m?r   r  r  wdicerY   r   r  r   r  r   r  s      r3   test_pdist_dice_mtica1z TestPdist.test_pdist_dice_mtica1  sr    "((?+((?+-288O4888O48:Q;!H5qu5E6r5   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  rF   r   ri  r   r  r  r  r  s      r3   test_pdist_dice_mtica2z TestPdist.test_pdist_dice_mtica2  sr    "((9%((9%'288IT288IT24Q;!H3QU3Cae4r5   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  rF   r   g      ?r   r  r  )r'   rY   r   r  r   r  r   r  s      r3   test_pdist_sokalsneath_mtica1z'TestPdist.test_pdist_sokalsneath_mtica1  s    113/>/>@Q;!H5qu5E6r5   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  rF   r   g?r   r  r  )wsokalsneathrY   r   r  r   r  r   r  s      r3   test_pdist_sokalsneath_mtica2z'TestPdist.test_pdist_sokalsneath_mtica2  sr    ),),."((9D9((9D9;Q;!H5qu5E6r5   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  wrogerstanimotorY   r   r  r   r  r   r  s      r3    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6r5   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      r3    test_pdist_rogerstanimoto_mtica2z*TestPdist.test_pdist_rogerstanimoto_mtica2  sr    BHHY/HHY/1RXXit<XXit<>Q;!H5qu5E6r5   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  rF   r   r  r   r  r  wrussellraorY   r   r  r   r  r   r  s      r3   test_pdist_russellrao_mtica1z&TestPdist.test_pdist_russellrao_mtica1  r  r5   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  rF   r   r  r   r  r  r  r  s      r3   test_pdist_russellrao_mtica2z&TestPdist.test_pdist_russellrao_mtica2  sr    ++-)48)48:Q;!H5qu5E6r5   c                     t         d   }t        dkD  r t        |j                  |j                         d}t        |d      }t        |d      }t        |||t        dkD         y )Nr  r   rE  r   test_canberrarI  )r[   r   r  r   rG   r  r   )r  DrM  r  r  s        r3   test_pdist_canberra_matchz#TestPdist.test_pdist_canberra_match&  sS    vJQ;!''177#Q
+Q0BS'A+>r5   c                 X    d}t        dgdgfd      }d}t        |||t        dkD         y )Nrs  r<  r  r   gd>@1?r   r  )r  r   r   )r  rM  pdist_yr  s       r3   test_pdist_canberra_ticket_711z(TestPdist.test_pdist_canberra_ticket_7110  s4     !C53%.*=sGaKHr5   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>.myclassNrs  rh   r5   r3   rv  r  ;  rw  r5   rv  c                 X    t        | d         rt        |d         st        d      yry  r{  r}  s     r3   r:  z9TestPdist.test_pdist_custom_notdouble.<locals>._my_metric>  r~  r5   rF   rf  rz  r   r  )rY   r   r  r   r	   r   )r  r:  rJ   r  r  rv  s        @r3   test_pdist_custom_notdoublez%TestPdist.test_pdist_custom_notdouble8  sR    	 		 xx')wyk2&AZ0Wgw{;r5   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  r^  r4   rM  r   r  r  r  r   r  s
             r3   r  z$TestPdist._check_calling_conventionsG  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 )Nre  r   r  r  >   r   r)   matchingr%   r'   r$   r  r&   r   rk   r  r  r"   r  )r  r[   r   r  r  rY   r  r   r   r  r  rb  r   r]  r  )r  r4   r  r^  r  r  s         r3   test_pdist_calling_conventionsz(TestPdist.test_pdist_calling_conventions\  s   
 (( 	BG 7CaC1H%A{k69g> ) )-37-B++Av6 %FF188BJJ/aa@//6Q/?=(MM"&&"**)=)?)?"@AXXbiimmA.001//6b/A'	Br5   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  rL   r  rP   r  rO   r   rN   r^   r   re  r   rf  rk   rI  )r[   r  r   r   r   r   r  r  r   r-  r.  )r  r4   rM  r  r  r0  r  r  r  r   r  r1  s               r3   test_pdist_dtype_equivalencez&TestPdist.test_pdist_dtype_equivalencev  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        ||fi |}t        ||fd|i|}t        |||       t        ||u        t	        j
                  |dz   t        j                  
      }	t        j                  t              5  t        ||fd|	i| d d d        t	        j
                  d|z  t        j                  
      d d d   }
t        j                  t              5  t        ||fd|
i| d d d        t	        j
                  |t        j                  
      }t        j                  t              5  t        ||fd|i| d d d        y # 1 sw Y   xY w# 1 sw Y   lxY w# 1 sw Y   y xY w)NrE  rN   re  r   r   rk   r#   rT  rQ  rF   r  r  r   )r[   r   r   r  rY   r  r   r   r   r   r-  r.  rz   r  )r  r4   rM  r^  out_sizer   r  r  r  r  r  r  s               r3   test_pdist_outzTestPdist.test_pdist_out  s   $%cc3Q3h/
aggaj1n5:;[ F3Kxx

36,V,66t6v6 	s3 	4  xx1BJJ7]]:& 	1!V000	1 xxHBJJ7!<]]:& 	1!V000	1 xx1]]:& 	1!V000	1 	1	1 	1
	1 	1
	1 	1s$   6GG+GGGG%c                 V   d}t         d   d d dd d df   }|j                         }t        |j                  j                          t        |j                  j                         t               }|dk(  rd|d<   t        ||fi |}t        ||fi |}t        |||t        dkD         y )	NrE  rN   re  r   r#   rT  rQ  rI  )	r[   r  r   r  r  r  r   r   r   )r  r4   rM  r^  X_copyr   rN  rO  s           r3   r  zTestPdist.test_striding  s     $%cc3Q3h/ 	AGG((()))*[ F3K1f''66,V,BS'A+>r5   Nr  )Xr   rt  ru  r  r  r  r  r  r  r  r-  r  slowr  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r!  r$  r'  r)  r+  r/  r1  r4  r7  r9  r>  r  rY   r  rA  rE  rG  rI  rL  rO  rQ  rU  rW  rY  r[  r_  ra  rf  ri  rk  rm  rq  ru  rx  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   r5   r3   r  r    s   76&!9F4444 [[4 4 [[I I [[4 44
44444444 [[4 4 [[I I [[4 4>444 [[4 4 [[I I [[4 4444 [[4 4 [[I I [[4 4 [[S3c3RVV"DE2 F2444 [[4 4 [[4 4 [[4 4 [[4 4 [[I I [[4 4;"4444444I4
4I4573375777777 [[? ?I < <C*B4K2 1D?r5   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                  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   r#  )rY   r   cases)r  r   r6  s      r3   r  z&TestSomeDistanceFunctions.setup_method  s+    HH_%HH_%!fX
r5   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 )Nrk   rW  r        ?gqaz@r   gw@rS  gR"6@i`  i  i^  i  uint16)r  r#   r
   rY   r   r	   r   )	r  r   r6  dist1dist1p5dist2dist0p25rq   r   s	            r3   rX  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r5   c                     | j                   D ]0  \  }}t        ||      }t        |t        j                  d             2 y )Nre  )r  
weuclideanr
   rY   rj  r  r   r6  rm  s       r3   rH  z(TestSomeDistanceFunctions.test_euclidean  s7    JJ 	2DAqa#Dbggaj1	2r5   c                 \    | j                   D ]  \  }}t        ||      }t        |d        y )Nr#  )r  wsqeuclideanr
   r  s       r3   test_sqeuclideanz*TestSomeDistanceFunctions.test_sqeuclidean  s/    JJ 	+DAq1%Dc*	+r5   c           
          | j                   D ]L  \  }}t        ||      }t        |ddt        j                  d      t        j                  d      z  z  z
         N y )Nr   g      2@      )r  wcosiner
   rY   rj  r  s       r3   r  z%TestSomeDistanceFunctions.test_cosine  sO    JJ 	PDAq1a=DcDBGGBK"''"+4M,N&NO	Pr5   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 )Nrk   F)centered)r|  wcorrelationfloatr  r  s    r3   test_cosine_output_dtypez2TestSomeDistanceFunctions.test_cosine_output_dtype  sB    ,1v1vFNNN'1a&1a&15999r5   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   )rY   r   r  r  r
   ra  r   )r  xmymr   r6  rm  s         r3   r3  z*TestSomeDistanceFunctions.test_correlation  so    XXn%XX9:JJ 	TDAq1%DcBFF2rNd2hb>Q,R&RS	Tr5   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)%rg  rg  rg  rg  rg  rg         rg  rg  rg  r  r  r  rg  r  rg  r  rg  rg  r  r  rg  r   rg  rg  r  rg  rg  r  rg  r  r  r  r  r  r  rg  )%r   r   r   r   r   r   r  r   r   r   r  r  r  r   r  r   r  r   r   rg  r  r   r   r   r   r  r   r   r  r   r  r  r  r  r  r  r   r   r  )rY   r   r   finfor   rM  r  s       r3   test_correlation_positivez3TestSomeDistanceFunctions.test_correlation_positive  sm    HH I J HH I J 1a D9B"**!5!9!9999999r5   zignore:Casting complexfuncc                     ddg}ddg}t        j                  t        d      5   |||       d d d        y # 1 sw Y   y xY w)Ny      ?        y       @        y      @        y      @        realmatch)r-  r.  r   )r  r  r   r6  s       r3   test_corr_dep_complexz/TestSomeDistanceFunctions.test_corr_dep_complex  sB     4L4L]]9F3 	AJ	 	 	s	   
7A 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   rg  )r   r   r   )rg  r   r   g      @)rY   r   r  r"   r
   rj  )r  r   r6  virm  s        r3   test_mahalanobisz*TestSomeDistanceFunctions.test_mahalanobis  sj    HH_%HH_%XXIJJJ 	4DAqq!R(Dbggcl3	4r5   N)r   rt  ru  r  rX  rH  r  r  r  r3  r  r-  r  filterwarningsr  r   r   r  r  rh   r5   r3   r  r    st    H&2
+
P
:
T	: [[ 89[[Vk6%:; < :4r5   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 rm   )checked_dtypescheck_squareform_matrixr  rG   s     r3   test_squareform_matrixz%TestSquareForm.test_squareform_matrix  %    (( 	0E((/	0r5   c                 H    | j                   D ]  }| j                  |        y rm   )r  check_squareform_vectorr  s     r3   test_squareform_vectorz%TestSquareForm.test_squareform_vector  r   r5   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   rF   r   rk   rk   r   g@)rk   )rY   zerosr   r	   r   rG   r   r   )r  rG   ArAs       r3   r  z&TestSquareForm.check_squareform_matrix"  s    HHV5)]RXXt$RXXu%HHV5)]RXXt$RXXu%HHq#ha)7]RXXt$RXXu%2rxxU;<r5   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  rF   r  r   g @)r   r   )rY   r  r   r	   r   rG   r   r   )r  rG   r  rvs       r3   r  z&TestSquareForm.check_squareform_vector3  s    HHT']RXXv&RXXu%2u%HHcU%(]RXXv&RXXu%2rxx!SC8(<EJKr5   c                 H    t        dd      D ]  }| j                  |        y )Nr   re  )r{   check_squareform_multi_matrixr  ns     r3   test_squareform_multi_matrixz+TestSquareForm.test_squareform_multi_matrix@  s%    q! 	2A..q1	2r5   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   rk   r   r   r   )rY   r   r   r  r	   lenr   r   r   r  r{   )
r  r  r^  Yr  Yrskr   js
             r3   r  z,TestSquareForm.check_squareform_multi_matrixD  s   IINN1a AS\1%qM]GGa<!''177BHH-SVQS]A&QqT1Q4 q!A$ 	-A1q5!A$' -6 1a4!A$/FA 1a4!,-	-r5   N)r   rt  ru  rY   r   r^   int32int8r  r  r  r  r  r  r  r  rh   r5   r3   r  r    sA    jj"**bhhFN00="L2-r5   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{   rY   r   r   r  r	   r   )r  r  r^  r  s       r3   test_num_obs_y_multi_matrixz'TestNumObsY.test_num_obs_y_multi_matrix\  sC    q" 	*A		q!$A"A1q)	*r5   c                     t        j                  t              5  | j                  d       d d d        y # 1 sw Y   y xY wNrk   )r-  r.  rz   check_yr  s    r3   test_num_obs_y_1zTestNumObsY.test_num_obs_y_1b  s0     ]]:& 	LLO	 	 	s   5>c                 8    t        | j                  d             y Nr   r   r!  r  s    r3   test_num_obs_y_2zTestNumObsY.test_num_obs_y_2h  s     	Q r5   c                 8    t        | j                  d             y )Nr   r%  r  s    r3   test_num_obs_y_3zTestNumObsY.test_num_obs_y_3m      Q r5   c                 8    t        | j                  d             y Nr  r%  r  s    r3   test_num_obs_y_4zTestNumObsY.test_num_obs_y_4p  r)  r5   c                 H    t        dd      D ]  }| j                  |        y )Nre     )r{   minit)r  r   s     r3   test_num_obs_y_5_10zTestNumObsY.test_num_obs_y_5_10s  s"    q" 	AJJqM	r5   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   r.  rk   re  i   setr{   addr-  r.  rz   bad_yr  rq   r  r   s       r3   test_num_obs_y_2_100z TestNumObsY.test_num_obs_y_2_100w  s     Eq" 	#AEE!q1u+/"	#q# 	"Az]]:. "JJqM" "	"" "   #B  B		c                 8    t        | j                  |             y rm   r%  r  s     r3   r/  zTestNumObsY.minit  r)  r5   c                 V    t         j                  j                  |      }t        |      S rm   )rY   r   r   r   r  r  r6  s      r3   r7  zTestNumObsY.bad_y  s    IINN1|r5   c                 <    t        | j                  |            |k(  S rm   )r   make_yr  s     r3   r!  zTestNumObsY.check_y  s    Q(A--r5   c                 R    t         j                  j                  ||dz
  z  dz        S Nrk   r   rY   r   r   r  s     r3   r?  zTestNumObsY.make_y  s"    yy~~qAE{q011r5   N)r   rt  ru  r  r"  r&  r(  r,  r0  r9  r/  r7  r!  r?  rh   r5   r3   r  r  Z  s9    *!
!!	"!.2r5   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 )Nrk   r  r  r   )r{   rY   r   r   r  r   r   r  r   r	   r   )r  r  r^  r  r  s        r3   test_num_obs_dm_multi_matrixz)TestNumObsDM.test_num_obs_dm_multi_matrix  se    q" 	+A		q!$A"A1A!|aggqww'A*	+r5   c                 8    t        | j                  d             y )Nr   r   check_Dr  s    r3   test_num_obs_dm_0zTestNumObsDM.test_num_obs_dm_0      Q r5   c                 8    t        | j                  d             y r   rH  r  s    r3   test_num_obs_dm_1zTestNumObsDM.test_num_obs_dm_1  rK  r5   c                 8    t        | j                  d             y r$  rH  r  s    r3   test_num_obs_dm_2zTestNumObsDM.test_num_obs_dm_2  r)  r5   c                 8    t        | j                  d             y r$  rH  r  s    r3   test_num_obs_dm_3zTestNumObsDM.test_num_obs_dm_3  r)  r5   c                 8    t        | j                  d             y r+  rH  r  s    r3   test_num_obs_dm_4zTestNumObsDM.test_num_obs_dm_4  r)  r5   c                 <    t        | j                  |            |k(  S rm   )r   make_Dr  s     r3   rI  zTestNumObsDM.check_D  s    $++a.)Q..r5   c                 B    t         j                  j                  ||      S rm   rB  r  s     r3   rU  zTestNumObsDM.make_D  s    yy~~a##r5   N)r   rt  ru  rF  rJ  rM  rO  rQ  rS  rI  rU  rh   r5   r3   rD  rD    s*    +!!!!!/$r5   rD  c                     t        | d      S NT)throw)r   )r  s    r3   is_valid_dm_throwrZ    s    q%%r5   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re  rF   rY   r  r   r-  r.  rz   rZ  r  r  s     r3   $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 )Nr^  rF   FrY   r  r   r	   r   r`  s     r3   $test_is_valid_dm_improper_shape_1D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_1D_F  s$    HHT,[^U+r5   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   rF   r_  r`  s     r3   $test_is_valid_dm_improper_shape_3D_Ez2TestIsValidDM.test_is_valid_dm_improper_shape_3D_E  s?    HHYbjj1]]:& 	!a 	! 	! 	!rb  c                 x    t        j                  dt         j                        }t        t	        |      d       y Nrh  rF   Frd  r`  s     r3   $test_is_valid_dm_improper_shape_3D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_3D_F  s$    HHYbjj1[^U+r5   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   re  r   )	rY   r   r   r   r{   r-  r.  rz   rZ  r  r6  r  r   s       r3   #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   re  r   F)rY   r   r   r   r{   r	   r   rn  s       r3   #test_is_valid_dm_nonzero_diagonal_Fz1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_F  sM    IINN2qMq! 	AAadG	[^U+r5   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   rk   rk   rk   r   )rY   r   r   r   r-  r.  rz   rZ  r  r6  r  s      r3   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  rs  rk   rt  FrY   r   r   r   r	   r   ru  s      r3   test_is_valid_dm_asymmetric_Fz+TestIsValidDM.test_is_valid_dm_asymmetric_F  s<    IINN2qMD'A+$[^U+r5   c                 x    t        j                  dt         j                        }t        t	        |      d       y )Nr  rF   Trd  r`  s     r3   test_is_valid_dm_correct_1_by_1z-TestIsValidDM.test_is_valid_dm_correct_1_by_1  s$    HHV2::.[^T*r5   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y )Nrk   Trx  ru  s      r3   test_is_valid_dm_correct_2_by_2z-TestIsValidDM.test_is_valid_dm_correct_2_by_2  +    IINN1qM[^T*r5   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y Nr   Trx  ru  s      r3   test_is_valid_dm_correct_3_by_3z-TestIsValidDM.test_is_valid_dm_correct_3_by_3  r~  r5   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y )N   Trx  ru  s      r3   test_is_valid_dm_correct_4_by_4z-TestIsValidDM.test_is_valid_dm_correct_4_by_4  r~  r5   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y )Nr  Trx  ru  s      r3   test_is_valid_dm_correct_5_by_5z-TestIsValidDM.test_is_valid_dm_correct_5_by_5  s+    IINN2qM[^T*r5   N)r   rt  ru  ra  re  ri  rl  ro  rq  rv  ry  r{  r}  r  r  r  rh   r5   r3   r\  r\    sC    !
,!
,!,!,++
+
+
+r5   r\  c                     t        | d      S rX  )r   )r6  s    r3   is_valid_y_throwr     s    at$$r5   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   rF   rY   r  r   r-  r.  rz   r  r  r6  s     r3   #test_is_valid_y_improper_shape_2D_Ez0TestIsValidY.test_is_valid_y_improper_shape_2D_E	  s?    HHWBJJ/]]:& 	 Q	  	  	 rb  c                 x    t        j                  dt         j                        }t        t	        |      d       y )Nr  rF   FrY   r  r   r	   r   r  s     r3   #test_is_valid_y_improper_shape_2D_Fz0TestIsValidY.test_is_valid_y_improper_shape_2D_F  s$    HHWBJJ/Z]E*r5   c                     t        j                  dt         j                        }t        j                  t
              5  t        |       d d d        y # 1 sw Y   y xY wrg  r  r  s     r3   #test_is_valid_y_improper_shape_3D_Ez0TestIsValidY.test_is_valid_y_improper_shape_3D_E  s?    HHYbjj1]]:& 	 Q	  	  	 rb  c                 x    t        j                  dt         j                        }t        t	        |      d       y rk  r  r  s     r3   #test_is_valid_y_improper_shape_3D_Fz0TestIsValidY.test_is_valid_y_improper_shape_3D_F  s$    HHYbjj1Z]E*r5   c                 P    | j                  d      }t        t        |      d       y )Nr   Tcorrect_n_by_nr	   r   r  s     r3   test_is_valid_y_correct_2_by_2z+TestIsValidY.test_is_valid_y_correct_2_by_2       "Z]D)r5   c                 P    | j                  d      }t        t        |      d       y r  r  r  s     r3   test_is_valid_y_correct_3_by_3z+TestIsValidY.test_is_valid_y_correct_3_by_3  r  r5   c                 P    | j                  d      }t        t        |      d       y )Nr  Tr  r  s     r3   test_is_valid_y_correct_4_by_4z+TestIsValidY.test_is_valid_y_correct_4_by_4#  r  r5   c                 P    | j                  d      }t        t        |      d       y )Nre  Tr  r  s     r3   test_is_valid_y_correct_5_by_5z+TestIsValidY.test_is_valid_y_correct_5_by_5'  r  r5   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r2  r4  r8  s       r3   test_is_valid_y_2_100z"TestIsValidY.test_is_valid_y_2_100+  s    Eq" 	#AEE!q1u+/"	#q# 	"Az]]:. "JJqM" "	"" "r:  c                 Z    t         j                  j                  |      }t        |d      S rX  )rY   r   r   r   r=  s      r3   r7  zTestIsValidY.bad_y4  s!    IINN1!4((r5   c                 V    t         j                  j                  ||dz
  z  dz        }|S rA  rB  r=  s      r3   r  zTestIsValidY.correct_n_by_n8  s&    IINNAQKA-.r5   N)r   rt  ru  r  r  r  r  r  r  r  r  r  r7  r  rh   r5   r3   r  r    s9    
 
+ 
+****")r5   r  rQ  )g      $g      rg  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)Nrk   r   r   r  )r-  r.  rz   r#   rW  s    r3   
test_bad_pr  =  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.  rz   r'   rh   r5   r3   test_sokalsneath_all_falser  F  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rk   r   r   r   r  r  rk   rk   rk   r   r   rk   r   rk   r   r   )r	   	wcanberrarh   r5   r3   r  r  L  s$    9i0!4<6:r5   c                  t    t        t        g dg d      dd       t        t        g dg d      dd       y )	Nr  r  UUUUUU?   decimalr  r  ri  )r
   wbraycurtisrh   r5   r3   test_braycurtisr  R  s(    Iy962NL,?bQr5   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)rk   rk   rk   r   r   r   r  r  r  r   Input vector should be 1-Dr  r  r   iIr  )rY   r   r
   r  r  rj  r-  r.  rz   newaxisr,  r   r   r   r   )rk  rl  r   rsr6  d1d2s          r3   test_euclideansr  X  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   rk   r  r-  r.  rz   whammingr   r6  s     r3   test_hamming_unequal_lengthr  y  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       r3   "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|S4rF   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  g?)rY   r   r   r  )rq   r   desireds      r3   test_hamming_string_arrayr    sM    
 B 	A 	 B 	A GHQNG,r5   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#   rk   )r4   rQ  r   )r4   rQ  rE  r  )rY   r   r   r   r   )arr_inp0c0p1c1s        r3   test_minkowski_wr    sy    XX 223 4F 
vkQ$	7B	vvkQ$	?B	vkQ	/B	vvkQ	7BB'B'r5   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  re  r  rF   r   r   )float16float128)rY   r  int16r  r  r  asarrayr   r   rG   floatinguint8r  uint32uint64iinfomaxr	   r   r^   	complex64
complex128hasattrr   getattr)r   r6  rG   dumaxr  r  dtypess           r3   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$%r5   c                     t        j                  g dg dg dg dg      }|j                         }t        |||        t	        ||        t        ||       y )Nr  r  r  g3333336@gL7@g333333F@)rY   r  r  r   r   r   )r4   r0  r  s      r3   test_modifies_inputr    sM    	\$$') 
*B ggiG	"b&	"fr7#r5   c                    t        j                  g dg dg dg dg      }t        j                  t              5  t        ||| d       d d d        t        j                  t              5  t        || d       d d d        dD ]  }|t        j                  d      i}|dk(  r| d	k(  s|d
k(  r| dk(  s
|dk(  r| dk(  r9t        j                  t              5  t        ||| fi | d d d        t        j                  t              5  t        || fi | d d d         y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   SxY w# 1 sw Y   xY w)Nr  r  r  r  r   )rQ  r  r  r   r  r&   r  r"   rQ  r#   )rY   r  r-  r.  r   r   r   )r4   r0  r7  r   s       r3   test_Xdist_deprecated_argsr    s9   	\$$') 
*B
 
y	! "b"fb!" 
y	! b&"   (rzz"~&CZFl24KFm$;3J6[#8]]9% 	,"b&+F+	, ]]9% 	("f''	( 	((" " 	, 	,	( 	(s/   D+D*D6ED'*D36D?	E	c                    t         d   d d dd d df   }t        j                  |j                  d         }|d d d    |d d d<   | dv rt	        j
                  d       | t        |       d| z   fD ]c  }t	        j                  t              5  t        |||       d d d        t	        j                  t              5  t        ||||       d d d        e y # 1 sw Y   =xY w# 1 sw Y   |xY w)	NrN   re  r   rk   )r&   r"   r!   not applicabler+  r   )r[   rY   r   r   r-  r=  r/  r.  rz   r   r   )r4   r^  r   r  s       r3   test_Xdist_non_negative_weightsr    s    
 !#A#ss(+A

A!fWAccF??$%d6lGf$45  ]]:& 	!Q!	]]:& 	 !QQ	  	  	 		  	 s   C<C#C 	#C,	c                     g d} t        |       }t        ||        t        | t        j                        }t        ||        t	        |j
                  t        j                         dg} t        |       }t	        |j                  d       t	        ||        d} t        j                  t        d      5  t        |        d d d        t        j                  d      j                  ddd      } t        j                  t        d      5  t        |        d d d        ddgd	d
gg} t        j                  t        d      5  t        |        d d d        y # 1 sw Y   xY w# 1 sw Y   MxY w# 1 sw Y   y xY w)Nr  rF   rk   r  r  re  r   r   r   r  )r   r   rY   r   r	   rG   rt   r-  r.  rz   r,  r   r  s     r3   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  rF   r   rg  r)   rk   )rY   r   r  r  r   r	   r   )r   r  s     r3   test_yule_all_samer    sq    
d#AadAaDA8O8aASEaeQrUF#AcUGr5   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   rg  rg  )rg  r   rg  r   r   rg  ri  g)>d?r  r   r   rk   gД?T)r|   keepdims)rk   r   r   r  )re  r     re   )	   r        )   r  r  r.  )            )            )g'Y?gTyCЇ?gFw$?g\BZ?)g;0%7/?g)o?gku?)r
   r!   rY   r   )rq   r   s     r3   rw  rw  %  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;r5   c                  .   t        j                  g d      } t        j                  g d      }t        | |      }t        | |gd      }t	        ||       t        t        j                  |       t        j                  |      d      }t	        ||       y )N)rk   r   r   )r   r   r   r   rf  )rY   r   r   r   r   r   r  )arr_1arr_2expectedactuals       r3   test_gh_17703r
  B  sq    HHYEHHYEE5!HE5>&1FFH%2=='=='8FFH%r5   c                     | dv rt        j                  d       t        j                  dt        j                        }|j                  d        t        t        j                  j                  |       |||       y )N)r!   r"   r&   r  r  rF   F)writer  )
r-  r=  rY   r,  r   setflagsr  scipyspatialdistance)r4   r   s     r3   test_immutable_inputr  M  sY    ??$%
		"BJJ'AJJUJ+GEMM""F+AqA6r5   c                  D   t        j                  g d      } t        j                  g d      }t        j                  g d      }t        | ||      }t	        |d       t        t        j                  |       t        j                  |      d|      }t	        ||       y )N)r   r   rk   rk   )r   rk   rk   r   )r  r  gffffff?g?r  g2)^ ?r)   )r4   r   )rY   r   r  r)   r   r   r  )rq   r   r   r  r	  s        r3   test_gh_23109r  U  sw    
A
A


'(AAqAHH012==#==# A'F FH%r5   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 Nrs  rK   pdist-jaccardr    r  r  r  s        r3   test_pdist_jaccard_randomz%TestJaccard.test_pdist_jaccard_randomc  s4    "#_%I&s3r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r  r
  r  s        r3   !test_pdist_jaccard_random_float32z-TestJaccard.test_pdist_jaccard_random_float32j  =    JJr-./_%I&s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nrs  rK   r  test_jaccardr  r  r  s        r3   test_pdist_jaccard_random_nonCz*TestJaccard.test_pdist_jaccard_random_nonCq  s4    "#_%N+s3r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r  rh  r  s        r3   test_pdist_djaccard_randomz&TestJaccard.test_pdist_djaccard_randomx  r  r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r  r
  r  s        r3   "test_pdist_djaccard_random_float32z.TestJaccard.test_pdist_djaccard_random_float32  r  r5   c                     d}t        t        j                  d      d      }t        t        j                  d      ||       y )NrE  re  r   r    r  r  r   rY   r  r   r  rM  r  s      r3   test_pdist_djaccard_allzerosz(TestJaccard.test_pdist_djaccard_allzeros  s0    "((6"I.ac2r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r  rh  r  s        r3   test_pdist_djaccard_random_nonCz+TestJaccard.test_pdist_djaccard_random_nonC  s=    JJr-./_%N+s3r5   c                     d}t        t        j                  d      d      }t        t        j                  d      ||       y )NrE  r&  r  r  r  r'  r(  s      r3   !test_pdist_djaccard_allzeros_nonCz-TestJaccard.test_pdist_djaccard_allzeros_nonC  s0    "((6"N3ac2r5   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  wjaccardrY   r   r  r   r  s      r3   test_pdist_jaccard_mtica1z%TestJaccard.test_pdist_jaccard_mtica1  sd    RXXo.XXo.0bhhd;hhd;=3QU3Cae4r5   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      r3   test_pdist_jaccard_mtica2z%TestJaccard.test_pdist_jaccard_mtica2  sd    RXXi(XXi(*bhhy5hhy575qu5E6r5   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    )	rY   r   r  r  rM  r   r    r   r   )r  r   r6  rM  s       r3   test_non_01_inputzTestJaccard.test_non_01_input  sw     HH]#HH]#hhuo!!1s5qcA3	2cUG<q!fi03%8r5   N)r   rt  ru  r  r  r   r"  r$  r)  r+  r-  r1  r3  r6  rh   r5   r3   r  r  a  s9    444443
43
579r5   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 )Nrs  r  pdist-chebyshevr   r  r  r  s        r3   test_pdist_chebyshev_randomz)TestChebyshev.test_pdist_chebyshev_random  s5    !"&';'s3r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr  r  r:  r   r   rI  rt  r  s        r3   #test_pdist_chebyshev_random_float32z1TestChebyshev.test_pdist_chebyshev_random_float32  sD    JJr,-.&';'sGaKHr5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nrs  r  r:  test_chebyshevr  r  r  s        r3    test_pdist_chebyshev_random_nonCz.TestChebyshev.test_pdist_chebyshev_random_nonC  s6    !"&'+,s3r5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr[  r  pdist-chebyshev-irisr   r  r  r  s        r3   test_pdist_chebyshev_irisz'TestChebyshev.test_pdist_chebyshev_iris  s3    vJ+,;'s3r5   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  rB  r   r   rI  rt  r  s        r3   !test_pdist_chebyshev_iris_float32z/TestChebyshev.test_pdist_chebyshev_iris_float32  sB    JJr&z"+,;'sGaKHr5   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr[  r  rB  r?  r  r  r  s        r3   test_pdist_chebyshev_iris_nonCz,TestChebyshev.test_pdist_chebyshev_iris_nonC  s4    vJ+,+,s3r5   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  re  r  )r   rk   re  r   r   r  r	   r   r   r   r  r   r6  r   s       r3   test_weightedzTestChebyshev.test_weighted  s\     Yq!Q'+UAq6;!4qc:UA3[A6!>r5   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  rI  r  r   r   r  rJ  rK  s       r3   test_zero_weightzTestChebyshev.test_zero_weight  sZ    Yq!Q'+UAq6;!4qc:UA3[A6!>r5   N)r   rt  ru  r;  r=  r@  rC  rE  rG  rL  rN  rh   r5   r3   r8  r8    s,    4I44I4??r5   r8  rm   )	NNFTFFFFN)	functoolsr   r   os.pathrS   r;  r  r   r  numpyrY   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)   scipy._lib._utilr*   r+   scipy.conftestr,   fixturer4   rQ   r   _tdist_ytdistr[   rc   ri   r}   r   r   r   r   assert_allclose_forgivingr   r
  r`  rL  r  r  r  r  r  r  r  
wcityblock
wchebyshevr  r  r0  r  r  r  r  r  r  r  r  r  r  r  rD  rZ  r\  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rw  r
  r  r  r  r8  rh   r5   r3   <module>r]     sb  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 
Q	>!%a*/EC	Qa	H!%a-21>!.1&w? ?	HY'
Y'

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