Ë
    ÜÍ:jûþ  ã                   ó¤  — d dl Z d dlmZ d dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZmZmZmZmZ d dlm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mZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 d d	l2m3Z3 d d
l4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@mAZAmBZBmCZCmDZD d dlEmFZFmGZG d„ ZHej’                  j•                  d e8«       «      ej’                  j•                  dg d¢«      d„ «       «       ZKd„ ZLej’                  j•                  deA«      ej’                  j•                  deB«      ej’                  j•                  de@«      ej’                  j•                  deC«      d„ «       «       «       «       ZM e>eN¬«      ej’                  j•                  de«      d„ «       «       ZOd„ ZPej’                  j•                  de*e.g«      d„ «       ZQd„ ZR ej¦                  dd «      j©                  d!d"¬#«      dd$œZUd%„ ZVej’                  j•                  d&e*d'i fe*eeUfe*d(eUfe.d)d*dife.eVd+d,ifg«      ej’                  j•                  d-ej®                  ej°                  eYg«      d.„ «       «       ZZej’                  j•                  d e8«       «      ej’                  j•                  d&e*d'i fe*d/i fe.d)d*dife.eVd+d,ife.d0d+d,ifg«      d1„ «       «       Z[d2„ Z\ej’                  j•                  dg d3¢«      ej’                  j•                  deC«      d4„ «       «       Z]ej’                  j•                  d e8«       «      ej’                  j•                  dg d5¢«      d6„ «       «       Z^d7„ Z_d8„ Z`ej’                  j•                  d9 ejÂ                  «       «      ej’                  j•                  deC«      d:„ «       «       Zbd;„ Zcej’                  jÈ                  ej’                  j•                  d<eD«      ej’                  j•                  deC«      d=„ «       «       «       Zed>„ Zfd?„ Zgd@„ Zhej’                  j•                  dAdB„ dC„ dD„ geCD � cg c]  } | fdE„‘Œ	 c} z   eDD �cg c]  }|fdF„‘Œ	 c}z   «      dG„ «       Ziej’                  j•                  dHdI„ ejdJfdK„ ejdLfdM„ ejdNfdO„ ekdPfdQ„ ekdRfdS„ ekdTfg«      dU„ «       Zld¹dV„Zmej’                  j•                  ddW«      dX„ «       Znej’                  j•                  ddW«      dY„ «       ZodZ„ Zpej’                  jã                  d[«      d\„ «       Zrej’                  j•                  d]ejæ                  geCz   d^geCD �cg c]  }|jè                  ‘Œ c}z   ¬_«      ej’                  j•                  d`ejæ                  geCz   d^geCD �cg c]  }|jè                  ‘Œ c}z   ¬_«      da„ «       «       Zuej’                  j•                  d`ejæ                  geCz   d^geCD �cg c]  }|jè                  ‘Œ c}z   ¬_«      db„ «       Zvej’                  j•                  dcddd"g«      de„ «       Zwdf„ Zxej’                  j•                  d]ejæ                  geCz   d^geCD �cg c]  }|jè                  ‘Œ c}z   ¬_«      ej’                  j•                  d`ejæ                  geCz   d^geCD �cg c]  }|jè                  ‘Œ c}z   ¬_«      dg„ «       «       Zyej’                  j•                  d]ejæ                  geCz   d^geCD �cg c]  }|jè                  ‘Œ c}z   ¬_«      dh„ «       Zzej’                  j•                  dig dj¢«      ej’                  j•                  d]ejæ                  geCz   d^geCD �cg c]  }|jè                  ‘Œ c}z   ¬_«      ej’                  j•                  d`ejæ                  geCz   d^geCD �cg c]  }|jè                  ‘Œ c}z   ¬_«      dk„ «       «       «       Z{ej’                  j•                  dig dj¢«      ej’                  j•                  d]ejæ                  geCz   d^geCD �cg c]  }|jè                  ‘Œ c}z   ¬_«      dl„ «       «       Z|ej’                  j•                  dmej°                  dndof ejú                  ej®                  dpdqej’                  jý                  dr¬s«      ¬t«      g«      ej’                  j•                  duddvg«      dw„ «       «       Zej’                  j•                  dxddd"g«      dy„ «       Z€ej’                  j•                  dz ejæ                  e�j                  d gg«       ejæ                  d e�j                   gg«      g«      ej’                  j•                  d{ ejæ                  e�j                  d gg«       ejæ                  d e�j                   gg«      dg«      d|„ «       «       Z‚ej’                  j•                  d} ejæ                  d dgdd gg«       e�j                  d~«      e�j                  f ejæ                  d dgde�j                  gg«       e�j                  d~«      e�j                  f ejæ                  e�j                  dgde�j                  gg«      e�j                  e�j                  f ejæ                  e�j                  dge�j                  d gg«       e�j                  d~«      e�j                  f ejæ                  d e�j                  gde�j                  gg«       e�j                  d~«      e�j                  f ejæ                  d dgdd gg«       e�j                  d~«      df ejæ                  d dgddgg«       e�j                  d~«      df ejæ                  ddgddgg«      e�j                  df ejæ                  ddgdd gg«       e�j                  d~«      df ejæ                  d dgddgg«       e�j                  d~«      dfg
«      d€„ «       Z…ej’                  j•                  d�e�j                  dg«      d‚„ «       Z†ej’                  j•                  d�e�j                  dg«      dƒ„ «       Z‡ej’                  j•                  d�e�j                  dg«      d„„ «       Zˆd…„ Z‰d†„ ZŠd‡„ Z‹dˆ„ ZŒd‰„ Z�dŠ„ ZŽej’                  j•                  d‹e#e/e0e"e1ef«      dŒ„ «       Z�ej’                  j•                  d‹e#e/e0e"e1ef«      ej’                  j•                  deC«      d�„ «       «       Z�dŽ„ Z‘d�„ Z’d�„ Z“ej’                  j•                  d‘d’e#fd“efg«      ej’                  j•                  deC«      d”„ «       «       Z”ej’                  j•                  deC«      d•„ «       Z•d–„ Z–d—„ Z—d˜„ Z˜d™„ Z™ej’                  j•                  deC«      dš„ «       Zšd›„ Z›dœ„ Zœd�„ Z�ej’                  j•                  dždd~g«      ej’                  j•                  ddŸd g«      ej’                  j•                  d¡e*e-g«      d¢„ «       «       «       Zžej’                  j•                  ddŸd g«      d£„ «       ZŸej’                  j•                  dg d¤¢«      ej’                  j•                  d¥ddd"gd¦d§g¬_«      d¨„ «       «       Z ej’                  j•                  d©e*e+e,g«      dª„ «       Z¡d«„ Z¢ej’                  j•                  d¬g d­¢dg d®¢g d¯¢g d°¢gfg d­¢d±d²gd³d´gd´d³gdµd´ggfg«      d¶„ «       Z£d·„ Z¤ej’                  jÈ                  ej’                  j•                  deC«      d¸„ «       «       Z¥yc c} w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )ºé    N)ÚGeneratorType)Úlinalg)Úissparse)ÚcdistÚ	cityblockÚcosineÚ	minkowskiÚpdistÚ
squareform)Úconfig_context)ÚDataConversionWarning)ÚPAIRED_DISTANCESÚPAIRWISE_BOOLEAN_FUNCTIONSÚPAIRWISE_DISTANCE_FUNCTIONSÚPAIRWISE_KERNEL_FUNCTIONSÚ_euclidean_distances_upcastÚadditive_chi2_kernelÚcheck_paired_arraysÚcheck_pairwise_arraysÚchi2_kernelÚcosine_distancesÚcosine_similarityÚeuclidean_distancesÚhaversine_distancesÚlaplacian_kernelÚlinear_kernelÚmanhattan_distancesÚnan_euclidean_distancesÚpaired_cosine_distancesÚpaired_distancesÚpaired_euclidean_distancesÚpaired_manhattan_distancesÚpairwise_distancesÚpairwise_distances_argminÚpairwise_distances_argmin_minÚpairwise_distances_chunkedÚpairwise_kernelsÚpolynomial_kernelÚ
rbf_kernelÚsigmoid_kernel)Ú	normalize)Úget_namespaceÚmove_toÚxpxÚ)yield_namespace_device_dtype_combinations)Ú_array_api_for_testsÚassert_allcloseÚassert_almost_equalÚassert_array_equalÚignore_warnings)ÚBSR_CONTAINERSÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERSÚDOK_CONTAINERS)ÚParallelÚdelayedc                 ó¶	  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }t        |d¬«      }t        |«      }t        ||«       |j                  |j                  cxk(  r| k(  sJ ‚ J ‚|j                  d«      j	                  | d¬«      }t        ||d¬«      }t        ||«      }t        ||«       |j                  |j                  cxk(  r| k(  sJ ‚ J ‚|j                  d«      j	                  | d¬«      }|j                  d«      j	                  | d¬«      }t         j                  |d<   t         j                  |d<   t        ||d	¬«      }t        ||«      }	t        ||	«       |j                  |	j                  cxk(  r| k(  sJ ‚ J ‚t        |D �
�cg c]  }
t        |
D �cg c]  }|‘Œ c}«      ‘Œ c}}
«      }t        |D �
�cg c]  }
t        |
D �cg c]  }|‘Œ c}«      ‘Œ c}}
«      }t        ||d¬«      }t        ||«       |j                  |j                  cxk(  r| k(  sJ ‚ J ‚|j                  d
«      j	                  | d¬«      }|d d …df   dz
  dz  t         j                  z  dz  |d d …df<   |d d …df   dz
  dz  t         j                  z  |d d …df<   t        |d¬«      }t        |«      }t        ||«       |j                  d«      j	                  | d¬«      }|d d …df   dz
  dz  t         j                  z  dz  |d d …df<   |d d …df   dz
  dz  t         j                  z  |d d …df<   t        ||d¬«      }t        ||«      }t        ||«       t        |d¬«      }t        |t        ¬«      }|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚t        ||«       t        ||d¬«      }t        ||t        ¬«      }|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚t        ||«       t        ||d¬«      }t        ||t         ¬«      }|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚t        ||«       y c c}w c c}}
w c c}w c c}}
w )Nr   ©é   é   F©ÚcopyÚ	euclidean©Úmetric©é   r?   ©r   r   Únan_euclidean©r>   rF   ç      à?rF   é   Ú	haversine)rF   rF   r   Ú	manhattanr   )ÚnpÚrandomÚRandomStateÚrandom_sampleÚastyper#   r   r1   ÚdtypeÚnanr   ÚtupleÚpir   r   Úshaper   )Úglobal_dtypeÚrngÚXÚSÚS2ÚYÚX_maskedÚY_maskedÚS_maskedÚ	S2_maskedÚrowÚvÚX_tuplesÚY_tupless                 úx/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/sklearn/metrics/tests/test_pairwise.pyÚ&test_pairwise_distances_for_dense_datarg   J   sk  € ä
�)‰)×
Ñ
 Ó
"€Cð 	×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€AÜ˜1 [Ô1€AÜ	˜QÓ	€BÜ�A�rÔØ�7‰7�b—h‘hÔ. ,Ò.Ð.Ñ.Ð.Ð.ð 	×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€AÜ˜1˜a¨Ô4€AÜ	˜Q Ó	"€BÜ�A�rÔØ�7‰7�b—h‘hÔ. ,Ò.Ð.Ñ.Ð.Ð.ð × Ñ  Ó(×/Ñ/°À5Ð/ÓI€HØ× Ñ  Ó(×/Ñ/°À5Ð/ÓI€HÜ—V‘V€HˆT�NÜ—V‘V€HˆT�NÜ! (¨H¸_ÔM€HÜ'¨°(Ó;€IÜ�H˜iÔ(Ø�>‰>˜YŸ_™_Ô<°Ò<Ð<Ñ<Ð<Ð<ô ¸×;°#”e¨Ö, 1šQÒ,Õ-Ó;Ó<€HÜ¸×;°#”e¨Ö, 1šQÒ,Õ-Ó;Ó<€HÜ	˜H h°{Ô	C€BÜ�A�rÔØ�7‰7�b—h‘hÔ. ,Ò.Ð.Ñ.Ð.Ð.ð
 	×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€AØ’�A�‰w˜‰} Ñ!¤B§E¡EÑ)¨AÑ-€A‚aˆ€d�GØ’�A�‰w˜‰} Ñ!¤B§E¡EÑ)€A‚aˆ€d�GÜ˜1 [Ô1€AÜ	˜QÓ	€BÜ�A�rÔð 	×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€AØ’�A�‰w˜‰} Ñ!¤B§E¡EÑ)¨AÑ-€A‚aˆ€d�GØ’�A�‰w˜‰} Ñ!¤B§E¡EÑ)€A‚aˆ€d�GÜ˜1˜a¨Ô4€AÜ	˜Q Ó	"€BÜ�A�rÔô
 	˜1 [Ô1€AÜ	˜A¤iÔ	0€BØ�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ø�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ü�A�rÔô 	˜1˜a¨Ô4€AÜ	˜A˜q¬Ô	3€BØ�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ø�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ü�A�rÔô
 	˜1˜a¨Ô1€AÜ	˜A˜q¬Ô	0€BØ�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ø�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ü�A�rÕùò_ -ùÓ;ùÚ,ùÓ;s0   Æ4S

Ç	SÇ	S

Ç&S
Ç4	SÇ=	S
ÓS

ÓS
z(array_namespace, device_name, dtype_namerD   )r   rB   rM   c                 óÐ  — t        | ||«      \  }}t        j                  j                  d«      }|j	                  d«      j                  |d¬«      }|j	                  d«      j                  |d¬«      }|j                  ||¬«      }	|j                  ||¬«      }
t        d¬«      5  t        |	|¬«      }t        |t        d	¬
«      }t        |«      d   j                  |j                  k(  sJ ‚|j                  |	j                  k(  sJ ‚|j                  |	j                  k(  sJ ‚t        ||¬«      }t        ||«       t        |	|
|¬«      }t        |t        d	¬
«      }t        |«      d   j                  |j                  k(  sJ ‚|j                  |	j                  k(  sJ ‚|j                  |	j                  k(  sJ ‚t        |||¬«      }t        ||«       d d d «       y # 1 sw Y   y xY w)Nr   r=   Fr@   ©ÚdeviceT©Úarray_api_dispatchrC   Úcpu©Úxprj   ©r]   rD   )r0   rN   rO   rP   rQ   rR   Úasarrayr   r#   r-   r,   Ú__name__rj   rS   r1   )Úarray_namespaceÚdevice_nameÚ
dtype_namerD   ro   rj   rY   ÚX_npÚY_npÚX_xpÚY_xpÚD_xpÚD_xp_npÚD_nps                 rf   Ú!test_pairwise_distances_array_apir}   ™   s­  € ô & o°{ÀJÓO�J€Bˆä
�)‰)×
Ñ
 Ó
"€Cà×Ñ˜VÓ$×+Ñ+¨J¸UÐ+ÓC€DØ×Ñ˜VÓ$×+Ñ+¨J¸UÐ+ÓC€DØ�:‰:�d 6ˆ:Ó*€DØ�:‰:�d 6ˆ:Ó*€Dä	¨4Ô	0ñ 'ä! $¨vÔ6ˆÜ˜$¤2¨eÔ4ˆÜ˜TÓ" 1Ñ%×.Ñ.°"·+±+Ò=Ð=Ð=Ø�{‰{˜dŸk™kÒ)Ð)Ð)Ø�z‰z˜TŸZ™ZÒ'Ð'Ð'ä! $¨vÔ6ˆÜ˜ Ô&ô " $¨$°vÔ>ˆÜ˜$¤2¨eÔ4ˆÜ˜TÓ" 1Ñ%×.Ñ.°"·+±+Ò=Ð=Ð=Ø�{‰{˜dŸk™kÒ)Ð)Ð)Ø�z‰z˜TŸZ™ZÒ'Ð'Ð'ä! $¨$°vÔ>ˆÜ˜ Ô&÷''÷ 'ñ 'ús   Â&D-GÇG%c                  óÈ  — t        d«      \  } }t        j                  j                  d«      }|j	                  d«      }|j	                  d«      }| j                  ||¬«      }| j                  ||¬«      }t        d¬«      5  t        j                  «       5  t        j                  d«       t        ||d	¬
«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)NÚarray_api_strictr   r=   ©é   r?   ri   Trk   ÚerrorrB   rC   )r0   rN   rO   rP   rQ   rq   r   ÚwarningsÚcatch_warningsÚsimplefilterr#   )ro   rj   rY   rv   rw   rx   ry   s          rf   Ú-test_pairwise_distances_array_api_no_warningsr†   ¿   sÈ   € ô &Ð&8Ó9�J€Bˆä
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜VÓ$€DØ×Ñ˜VÓ$€DØ�:‰:�d 6ˆ:Ó*€DØ�:‰:�d 6ˆ:Ó*€Dä	¨4Ô	0ñ ?Ü×$Ñ$Ó&ñ 	?Ü×!Ñ! 'Ô*Ü˜t T°+Õ>÷	?÷?ð ?÷	?ð 	?ú÷?ð ?ús$   ÂCÂ$CÂ;CÃC	ÃCÃC!Úcoo_containerÚcsc_containerÚbsr_containerÚcsr_containerc                 óŽ  — t         j                  j                  d«      }|j                  d«      j	                  |d¬«      }|j                  d«      j	                  |d¬«      } ||«      } ||«      }	t        ||	d¬«      }
t        ||	«      }t        |
|«       |
j                  |j                  cxk(  r|k(  sJ ‚ J ‚t        ||	d¬«      }
t        ||	«      }t        |
|«       |
j                  |j                  cxk(  r|k(  sJ ‚ J ‚t        | ||«      d	¬«      }
t         ||«       | |«      «      }t        |
|«       |t         j                  k(  r$|
j                  |j                  cxk(  r|k(  sLJ ‚ J ‚t        j                  t        «      5  |
j                  |j                  cxk(  r|k(  sJ ‚ J ‚	 d d d «       t        ||«      }t        |
|«       |t         j                  k(  r$|
j                  |j                  cxk(  r|k(  sLJ ‚ J ‚t        j                  t        «      5  |
j                  |j                  cxk(  r|k(  sJ ‚ J ‚	 d d d «       d
di}t        ||fddi|¤Ž}
t        ||fdt        i|¤Ž}t        |
|«       d
di}t        |fddi|¤Ž}
t        |fdt        i|¤Ž}t        |
|«       t        j                  t         «      5  t        |d¬«       d d d «       t        j                  t         «      5  t        ||	d¬«       d d d «       y # 1 sw Y   �ŒbxY w# 1 sw Y   ŒØxY w# 1 sw Y   ŒSxY w# 1 sw Y   y xY w)Nr   r=   Fr@   rE   rB   rC   r   rM   Úpç       @rD   r	   )rN   rO   rP   rQ   rR   r#   r   r1   rS   r   r   Úfloat64ÚpytestÚraisesÚAssertionErrorr	   Ú	TypeError)r‡   rˆ   r‰   rŠ   rX   rY   rZ   r]   ÚX_sparseÚY_sparser[   r\   Úkwdss                rf   Ú'test_pairwise_distances_for_sparse_datar–   Ñ   s  € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€AØ×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€Añ ˜QÓ€HÙ˜QÓ€Hä˜8 X°kÔB€AÜ	˜X xÓ	0€BÜ�A�rÔØ�7‰7�b—h‘hÔ. ,Ò.Ð.Ñ.Ð.Ð.ä˜8 X°hÔ?€AÜ	˜( HÓ	-€BÜ�A�rÔØ�7‰7�b—h‘hÔ. ,Ò.Ð.Ñ.Ð.Ð.ä˜8¡]°1Ó%5¸kÔJ€AÜ	™]¨1Ó-©}¸QÓ/?Ó	@€BÜ�A�rÔØ”r—z‘zÒ!Ø�w‰w˜"Ÿ(™(Ô2 lÒ2Ð2Ñ2Ð2Ð2ô
 �]‰]œ>Ó*ñ 	7Ø—7‘7˜bŸh™hÔ6¨,Ò6Ð6Ñ6Ð6Ñ6÷	7ô 
˜Q Ó	"€BÜ�A�rÔØ”r—z‘zÒ!Ø�w‰w˜"Ÿ(™(Ô2 lÒ2Ð2Ñ2Ð2Ð2ô
 �]‰]œ>Ó*ñ 	7Ø—7‘7˜bŸh™hÔ6¨,Ò6Ð6Ñ6Ð6Ñ6÷	7ð �ˆ:€DÜ˜1˜aÑ<¨Ð<°tÑ<€AÜ	˜A˜qÑ	;¬Ð	;°dÑ	;€BÜ�A�rÔð �ˆ:€DÜ˜1Ñ9 [Ð9°DÑ9€AÜ	˜AÑ	8¤iÐ	8°4Ñ	8€BÜ�A�rÔô 
�‰”yÓ	!ñ 9Ü˜8¨KÕ8÷9ä	�‰”yÓ	!ñ <Ü˜1˜h¨{Õ;÷<ð <÷;	7ñ 	7ú÷	7ð 	7ú÷ 9ð 9ú÷<ð <ús0   Æ%LÈ&%L#ËL/Ë>L;ÌL Ì#L,Ì/L8Ì;M©Úcategoryc                 ój  — t         j                  j                  d«      }|j                  dd«      }|j	                  «       }d|d   z
  |d<   t        t        ¬«      5  |d fD ]D  }t        ||| ¬«      }t        j                  |d¬«       t        j                  |dk7  «      dk(  rŒDJ ‚ 	 d d d «       d	| z  }t        j                  t        |¬
«      5  t        || ¬«       d d d «       t        j                  t        |¬
«      5  t        |j                  t        «      || ¬«       d d d «       t        j                   «       5  t        j"                  dt        «       t        |j                  t        «      | ¬«       d d d «       y # 1 sw Y   ŒÜxY w# 1 sw Y   Œ²xY w# 1 sw Y   ŒyxY w# 1 sw Y   y xY w)Nr   r>   r?   rK   rG   r—   rC   )Ú
fill_valuez+Data was converted to boolean for metric %s©Úmatchrp   r‚   )rN   rO   rP   ÚrandnrA   r4   r   r#   r.   Ú
nan_to_numÚsumr�   ÚwarnsrR   Úboolrƒ   r„   r…   )rD   rY   rZ   r]   ÚZÚresÚmsgs          rf   Útest_pairwise_boolean_distancer¥     sl  € ô �)‰)×
Ñ
 Ó
"€CØ�	‰	�!�Q‹€AØ	�‰‹€AØ�!�D‘'‰k€A€d�Gô 
Ô"7Ô	8ñ )Ø�T�ò 	)ˆAÜ$ Q¨°&Ô9ˆCÜ�N‰N˜3¨1Õ-Ü—6‘6˜# ™(Ó# qÓ(Ð(Ð(ñ	)÷)ð 8¸&Ñ
@€CÜ	�‰Ô+°3Ô	7ñ -Ü˜1 VÕ,÷-ô 
�‰Ô+°3Ô	7ñ ?Ü˜1Ÿ8™8¤D›>¨Q°vÕ>÷?ô 
×	 Ñ	 Ó	"ñ :Ü×Ñ˜gÔ'<Ô=Ü˜1Ÿ8™8¤D›>°&Õ9÷:ð :÷#)ð )ú÷-ð -ú÷?ð ?ú÷:ð :ús7   ÁAFÂ&FÃFÄ"FÅ;F)ÆFÆFÆF&Æ)F2c                  ó  — t         j                  j                  d«      } | j                  dd«      }t	        j
                  «       5  t	        j                  dt        «       t        |d¬«       d d d «       y # 1 sw Y   y xY w)Nr   r>   r?   r‚   r	   rC   )	rN   rO   rP   r�   rƒ   r„   r…   r   r#   )rY   rZ   s     rf   Útest_no_data_conversion_warningr§   8  sa   € ä
�)‰)×
Ñ
 Ó
"€CØ�	‰	�!�Q‹€AÜ	×	 Ñ	 Ó	"ñ 2Ü×Ñ˜gÔ'<Ô=Ü˜1 [Õ1÷2÷ 2ñ 2ús   Á(A7Á7B Úfuncc                 óª  — t        j                  t        d¬«      5   | t        j                  d«      d¬«       d d d «       t        j                  t        d¬«      5   | t        j                  d«      t        j                  d«      d¬«       d d d «       t        j                  t        d¬«      5   | t        j                  d«      t        j                  d«      d¬«       d d d «       t        j                  d«      } | |d¬«      }||u sJ ‚t        j                  d«      } | |t        j                  d	«      d¬«      }||u sJ ‚ | t        j
                  d
ggd¬«      d¬«      }d|j                  j                  k(  sJ ‚ | dggd¬«      }t        |t        j                  «      sJ ‚y # 1 sw Y   �ŒwxY w# 1 sw Y   �Œ/xY w# 1 sw Y   ŒæxY w)Nz.* shape .*r›   )r>   r�   ÚprecomputedrC   )r?   r?   )r?   r�   ©r>   r>   )r�   r�   rK   Úint©rS   Úfç      ð?)
r�   r�   Ú
ValueErrorrN   ÚzerosÚarrayrS   ÚkindÚ
isinstanceÚndarray)r¨   r[   r\   s      rf   Útest_pairwise_precomputedr¶   A  sx  € ô 
�‰”z¨Ô	7ñ 5ÙŒR�X‰X�fÓ mÕ4÷5ô 
�‰”z¨Ô	7ñ GÙŒR�X‰X�fÓœrŸx™x¨Ó/¸ÕF÷Gô 
�‰”z¨Ô	7ñ GÙŒR�X‰X�fÓœrŸx™x¨Ó/¸ÕF÷Gô 	�‰�Ó€AÙ	ˆa˜Ô	&€BØ�‰7€Nˆ7ä
�‰�Ó€AÙ	ˆa”—‘˜&Ó!¨-Ô	8€BØ�‰7€Nˆ7ñ 	ŒR�X‰X˜�s�e 5Ô)°-Ô@€AØ�!—'‘'—,‘,ÒÐÐñ 	ˆsˆeˆW˜]Ô+€AÜ�aœŸ™Ô$Ð$Ñ$÷15ñ 5ú÷Gñ Gú÷Gð Gús#   œF/Á2F<Â22G	Æ/F9Æ<GÇ	Gc                  ó¦   — t        j                  t        d¬«      5  t        t	        j
                  dd«      d¬«       d d d «       y # 1 sw Y   y xY w)Nz.* non-negative values.*r›   r«   éÿÿÿÿrª   rC   )r�   r�   r°   r#   rN   Úfull© ó    rf   Ú&test_pairwise_precomputed_non_negativer¼   _  s?   € ä	�‰”zÐ)CÔ	Dñ FÜœ2Ÿ7™7 6¨2Ó.°}ÕE÷F÷ Fñ Fús   œ"AÁArK   r>   ÚdoubleFr@   )ÚwrŒ   c                 ó$  — t        | |«      \  }}t        t        j                  | d|¬«      t        j                  |d|¬«      fi |¤Ž}|j                  dkD  r/|j                  |d«      }|j                  dk(  rt        |d   «      S t        d«      ‚)NrF   )Úndimro   r   )r¸   )rK   z6can only convert an array of size 1 to a Python scalar)	r,   r)   r.   Ú
atleast_ndrÀ   ÚreshaperW   Úfloatr°   )ÚxÚyr•   ro   Ú_ÚKÚK_flats          rf   Úcallable_rbf_kernelrÉ   h  s‡   € Ü˜!˜QÓ�E€BˆäÜ�‰�q˜q RÔ(¬#¯.©.¸ÀÀrÔ*Jñ	ØNRñ	€Að
 	‡v�v�‚zØ—‘˜A˜uÓ%ˆØ�<‰<˜4ÒÜ˜ ™Ó#Ð#Ü
ÐMÓ
NÐNr»   zfunc, metric, kwdsrB   r	   Ú
polynomialÚdegreeÚgammaçš™™™™™¹?rS   c                 óz  — t         j                  j                  d«      }t        j                  d|j	                  d«      z  |¬«      }t        j                  d|j	                  d«      z  |¬«      } | |f|ddœ|¤Ž} | |f|ddœ|¤Ž}t        ||«        | ||f|ddœ|¤Ž} | ||f|ddœ|¤Ž}t        ||«       y )	Nr   r>   r=   r­   r€   rK   ©rD   Ún_jobsrF   )rN   rO   rP   r²   rQ   r1   )	r¨   rD   r•   rS   rY   rZ   r]   r[   r\   s	            rf   Útest_pairwise_parallelrÑ   w  sÈ   € ô( �)‰)×
Ñ
 Ó
"€CÜ
�‰��S×&Ñ& vÓ.Ñ.°eÔ<€AÜ
�‰��S×&Ñ& vÓ.Ñ.°eÔ<€AáˆQÐ0�v aÑ0¨4Ñ0€AÙ	ˆaÐ	1˜ qÑ	1¨DÑ	1€BÜ�A�rÔáˆQ�Ð3˜&¨Ñ3¨dÑ3€AÙ	ˆa�Ð	4˜6¨!Ñ	4¨tÑ	4€BÜ�A�rÕr»   rM   Ú	laplacianc                 óø  — t        |||«      \  }}t        j                  j                  d«      }t        j                  d|j                  d«      z  |¬«      }	t        j                  d|j                  d«      z  |¬«      }
|j                  |	|¬«      }|j                  |
|¬«      }t        d¬«      5  d	D �]+  }|€d n|}|€d n|
}
 | ||f|d
dœ|¤Ž}t        |t        d¬«      }t        |«      d   j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚ | ||f|ddœ|¤Ž}t        |t        d¬«      }t        |«      d   j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚ | |	f|ddœ|¤Ž}t        ||«       t        ||«       �Œ. 	 d d d «       y # 1 sw Y   y xY w)Nr   r>   r=   r­   r€   ri   Trk   )Nznot nonerK   rÏ   rm   rn   rF   )r0   rN   rO   rP   r²   rQ   rq   r   r-   r,   rr   rj   rS   r1   )r¨   rD   r•   rs   rt   ru   ro   rj   rY   rv   rw   rx   ry   Úy_valÚ	n_job1_xpÚn_job1_xp_npÚ	n_job2_xpÚn_job2_xp_npÚ	n_job2_nps                      rf   Ú test_pairwise_parallel_array_apirÚ   ˜  sæ  € ô" & o°{ÀJÓO�J€BˆÜ
�)‰)×
Ñ
 Ó
"€CÜ�8‰8�A˜×)Ñ)¨&Ó1Ñ1¸ÔD€DÜ�8‰8�A˜×)Ñ)¨&Ó1Ñ1¸ÔD€DØ�:‰:�d 6ˆ:Ó*€DØ�:‰:�d 6ˆ:Ó*€Dä	¨4Ô	0ñ 5Ø'ó 	5ˆEØ ˜=‘4¨dˆDØ ˜=‘4¨dˆDá˜T 4ÐI°¸qÑIÀDÑIˆIÜ" 9´¸EÔBˆLÜ  Ó+¨AÑ.×7Ñ7¸2¿;¹;ÒFÐFÐFØ×#Ñ# t§{¡{Ò2Ð2Ð2Ø—?‘? d§j¡jÒ0Ð0Ð0á˜T 4ÐI°¸qÑIÀDÑIˆIÜ" 9´¸EÔBˆLÜ  Ó+¨AÑ.×7Ñ7¸2¿;¹;ÒFÐFÐFØ×#Ñ# t§{¡{Ò2Ð2Ð2Ø—?‘? d§j¡jÒ0Ð0Ð0á˜TÐC¨&¸ÑC¸dÑCˆIä˜L¨,Ô7Ü˜L¨)Ö4ñ'	5÷5÷ 5ñ 5ús   Â4D2G0Ç0G9c                  ó4   — t        dggd„ ¬«      d   dk(  sJ ‚y )Nr¯   c                  ó   — y)Nr>   rº   ©rÄ   rÅ   s     rf   ú<lambda>z9test_pairwise_callable_nonstrict_metric.<locals>.<lambda>Ë  ó   � r»   rC   rG   r>   )r#   rº   r»   rf   Ú'test_pairwise_callable_nonstrict_metricrà   Ç  s"   € ô  ˜u˜g©nÔ=¸dÑCÀqÒHÐHÑHr»   )ÚrbfrÒ   ÚsigmoidrÊ   ÚlinearÚchi2Úadditive_chi2c                 ó¨  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t        |    }t        || ¬«      } ||«      }t        ||«       t        ||| ¬«      } |||¬«      }t        ||«       t        |D ��	cg c]  }t        |D �	cg c]  }	|	‘Œ c}	«      ‘Œ c}	}«      }
t        |D ��	cg c]  }t        |D �	cg c]  }	|	‘Œ c}	«      ‘Œ c}	}«      }t        |
|| ¬«      }t        ||«        ||«      } ||«      }| dv ry t        ||| ¬«      }t        ||«       y c c}	w c c}	}w c c}	w c c}	}w )Nr   r=   rE   rC   rp   ©r]   )rä   rå   )rN   rO   rP   rQ   r   r'   r1   rU   )rD   rŠ   rY   rZ   r]   ÚfunctionÚK1ÚK2rb   rc   rd   re   r“   r”   s                 rf   Útest_pairwise_kernelsrë   Ï  s/  € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€AÜ(¨Ñ0€Hä	˜! FÔ	+€BÙ	�!‹€BÜ�B˜Ôä	˜!˜q¨Ô	0€BÙ	�!�qÔ	€BÜ�B˜Ôä¸×;°#”e¨Ö, 1šQÒ,Õ-Ó;Ó<€HÜ¸×;°#”e¨Ö, 1šQÒ,Õ-Ó;Ó<€HÜ	˜( H°VÔ	<€BÜ�B˜Ôñ ˜QÓ€HÙ˜QÓ€HØÐ*Ñ*àÜ	˜( h°vÔ	>€BÜ�B˜Õùò -ùÓ;ùÚ,ùÓ;s0   ÂE
Â(	D>Â1	E
ÃE
Ã	E	Ã#	E
Ä>E
Å	E
)rá   râ   rÊ   rã   rÒ   rä   rå   c                 óä  — t        |||«      \  }}t        j                  j                  d«      }d|j	                  d«      z  }|j                  |d¬«      }d|j	                  d«      z  }|j                  |d¬«      }|j                  ||¬«      }	|j                  ||¬«      }
t        d¬	«      5  t        |	| ¬
«      }t        |t        d¬«      }t        |«      d   j                  |j                  k(  sJ ‚|j                  |	j                  k(  sJ ‚|j                  |	j                  k(  sJ ‚t        || ¬
«      }t        ||«       t        |	|
| ¬«      }t        |t        d¬«      }t        |«      d   j                  |j                  k(  sJ ‚|j                  |	j                  k(  sJ ‚|j                  |	j                  k(  sJ ‚t        ||| ¬«      }t        ||«       d d d «       y # 1 sw Y   y xY w)Nr   é
   r=   Fr@   rE   ri   Trk   rC   rm   rn   rp   )r0   rN   rO   rP   rQ   rR   rq   r   r'   r-   r,   rr   rj   rS   r1   )rD   rs   rt   ru   ro   rj   rY   rv   rw   rx   ry   ÚK_xpÚK_xp_npÚK_nps                 rf   Útest_pairwise_kernels_array_apirñ   ó  s»  € ô & o°{ÀJÓO�J€Bˆä
�)‰)×
Ñ
 Ó
"€CØ�×!Ñ! &Ó)Ñ)€DØ�;‰;�z¨ˆ;Ó.€DØ�×!Ñ! &Ó)Ñ)€DØ�;‰;�z¨ˆ;Ó.€DØ�:‰:�d 6ˆ:Ó*€DØ�:‰:�d 6ˆ:Ó*€Dä	¨4Ô	0ñ 'ä ¨VÔ4ˆÜ˜$¤2¨eÔ4ˆÜ˜TÓ" 1Ñ%×.Ñ.°"·+±+Ò=Ð=Ð=Ø�{‰{˜dŸk™kÒ)Ð)Ð)Ø�z‰z˜TŸZ™ZÒ'Ð'Ð'ä ¨VÔ4ˆÜ˜ Ô&ô   ¨°VÔ<ˆÜ˜$¤2¨eÔ4ˆÜ˜TÓ" 1Ñ%×.Ñ.°"·+±+Ò=Ð=Ð=Ø�{‰{˜dŸk™kÒ)Ð)Ð)Ø�z‰z˜TŸZ™ZÒ'Ð'Ð'ä ¨°VÔ<ˆÜ˜ Ô&÷''÷ 'ñ 'ús   Â0D-G&Ç&G/c                  ó>  — t         j                  j                  d«      } | j                  d«      }| j                  d«      }t        }ddi}t        |f||dœ|¤Ž}t        |fd|i|¤Ž}t        ||«       t        |f||dœ|¤Ž}t        |fd|i|¤Ž}t        ||«       y )Nr   r=   rE   rÌ   rÍ   rp   r]   )rN   rO   rP   rQ   rÉ   r'   r)   r1   )rY   rZ   r]   rD   r•   ré   rê   s          rf   Útest_pairwise_kernels_callableró     s°   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€Aä €FØ�Sˆ>€DÜ	˜!Ð	8˜q¨Ñ	8°4Ñ	8€BÜ	�AÑ	#˜Ð	#˜dÑ	#€BÜ�B˜Ôô 
˜!Ð	8˜q¨Ñ	8°4Ñ	8€BÜ	�AÑ	#˜Ð	#˜dÑ	#€BÜ�B˜Õr»   c                  ó^  — t         j                  j                  d«      } | j                  d«      }| j                  d«      }t	        ||d¬«      }dddœ}t        ||fdd	d
œ|¤Ž}t        ||«       t        j                  t        «      5  t        ||fddi|¤Ž d d d «       y # 1 sw Y   y xY w)Nr   r=   rE   rÍ   ©rÌ   z:))rÌ   Úblablará   T)rD   Úfilter_paramsrD   )
rN   rO   rP   rQ   r)   r'   r1   r�   r�   r’   )rY   rZ   r]   rÇ   Úparamsrê   s         rf   Ú"test_pairwise_kernels_filter_paramrù   0  s¥   € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€AÜ�1�a˜sÔ#€AØ dÑ+€FÜ	˜!˜QÐ	K u¸DÑ	KÀFÑ	K€BÜ�A�rÔä	�‰”yÓ	!ñ 7Ü˜˜AÑ6 eÐ6¨vÒ6÷7÷ 7ñ 7ús   Â
B#Â#B,zmetric, funcc                 ó€  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t	        ||| ¬«      } |||«      }t        ||«        | ||«       ||«      «      }t        ||«       | t        v r1t        |    ||«      }	t        j                  |	«      }	t        |	|«       y y )Nr   r=   rC   )rN   rO   rP   rQ   r    r1   r   Údiag)
rD   r¨   rŠ   rY   rZ   r]   r[   r\   ÚS3Ú	distancess
             rf   Útest_paired_distancesrþ   =  s´   € ô �)‰)×
Ñ
 Ó
"€Cà×Ñ˜&Ó!€Aà×Ñ˜&Ó!€Aä˜˜A fÔ-€AÙ	ˆa�‹€BÜ�A�rÔÙ	‰m˜AÓ¡¨aÓ 0Ó	1€BÜ�A�rÔØÔ,Ñ,ô 0°Ñ7¸¸1Ó=ˆ	Ü—G‘G˜IÓ&ˆ	Ü˜	 1Õ%ð -r»   c                 ó²  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }|j                  d«      j	                  | d¬«      }t        ||d¬«      }t        ||d„ ¬«      }t        ||«       |j                  d«      }t        j                  t        «      5  t        ||«       d d d «       y # 1 sw Y   y xY w)	Nr   r=   Fr@   rM   rC   c                 óR   — t        j                  | |z
  «      j                  d¬«      S )Nr   ©Úaxis)rN   ÚabsrŸ   rÝ   s     rf   rÞ   z0test_paired_distances_callable.<locals>.<lambda>^  s    € ´B·F±F¸1¸q¹5³M×4EÑ4EÈ1Ð4EÓ4M€ r»   r€   )
rN   rO   rP   rQ   rR   r    r1   r�   r�   r°   )rX   rY   rZ   r]   r[   r\   s         rf   Útest_paired_distances_callabler  T  s¼   € ô �)‰)×
Ñ
 Ó
"€Cà×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€Aà×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€Aä˜˜A kÔ2€AÜ	˜!˜QÑ'MÔ	N€BÜ�A�rÔð 	×Ñ˜&Ó!€AÜ	�‰”zÓ	"ñ Ü˜˜AÔ÷÷ ñ ús   Â7CÃCÚdok_containerc                 ó|  — t        j                  dgdgg|¬«      }t        j                  dgdgg|¬«      } | |«      } |||¬«      }ddg}ddg}ddg}	t        ||d¬	«      \  }
}t        ||d¬	«      }t	        |
|«       t	        ||«       t	        ||«       t        ||d¬	«      \  }}t        ||d¬	«      }t	        ||«       t	        ||«       t	        ||«       t        |«      t         j                  k(  sJ ‚t        |«      t         j                  k(  sJ ‚t        ||d
¬	«      \  }
}t        ||dddi¬«      \  }}t        ||d
¬	«      }t        ||dddi¬«      }t	        ||	«       t	        ||	«       t	        |
|«       t	        ||«       t	        ||«       t	        ||«       t        ||d¬	«      \  }
}t        ||d¬	«      }t	        |
|«       t	        ||«       t	        ||«       t        ||d¬	«      \  }}t        ||d¬	«      }t	        ||«       t	        ||«       t	        ||«       t        ||t        ddi¬«      \  }
}t	        |
|«       t	        ||«       t        ||dddi¬«      \  }
}t	        |
|«       t	        ||«       t         j                  j                  d«      }|j                  dd«      }|j                  dd«      }t        ||d¬	«      }|j                  d¬«      }||t        t        |«      «      f   }t        ||dd¬«      \  }}t	        ||d¬«       t	        ||d¬«       t        ||d¬«      \  }}t        ||d¬«      \  }}t	        ||«       t        ||«       t        ||d¬«      \  }}t        ||d¬«      \  }}t	        ||«       t        ||«       t        ||d¬«      }t        ||d¬«      }t        ||«       t        ||d¬«      }t        ||d¬«      }t        ||«       t        ||«      }t        t        j                   |«      t        j                   |«      «      }t        ||«       y )Nr   rK   r­   éþÿÿÿr�   rF   r?   rB   rC   ÚsqeuclideanÚsquaredT)rD   Úmetric_kwargsrM   rŒ   r	   éa   é•   éo   r  )r  rD   çH¯¼šò×z>©Úrtol)rN   rq   r%   r$   r1   Útyperµ   r	   rO   rP   r�   r#   ÚargminÚrangeÚlenr3   Úasfortranarray)r  rŠ   rX   rZ   r]   ÚXspÚYspÚexpected_idxÚexpected_valsÚexpected_vals_sqÚidxÚvalsÚidx2ÚidxspÚvalsspÚidxsp2Úvals2Úidx3Úidx4rY   ÚdistÚdist_orig_indÚdist_orig_valÚdist_chunked_indÚdist_chunked_valÚargmin_0Údist_0Úargmin_1Údist_1Úargmin_C_contiguousÚargmin_F_contiguouss                                  rf   Ú"test_pairwise_distances_argmin_minr/  j  s6  € ô
 	�
‰
�Q�C˜!˜�: \Ô2€AÜ
�
‰
�R�D˜1˜#�; lÔ3€Aá
˜Ó
€CÙ
˜ Ô
.€Cà�q�6€LØ˜�F€MØ˜1�vÐô .¨a°¸;ÔG�I€CˆÜ$ Q¨°+Ô>€DÜ�C˜Ô&Ü�D˜,Ô'Ü�D˜-Ô(ä1°#°sÀ;ÔO�M€Eˆ6Ü& s¨C¸ÔD€FÜ�E˜<Ô(Ü�F˜LÔ)Ü�F˜MÔ*ä�‹;œ"Ÿ*™*Ò$Ð$Ð$Ü�‹<œ2Ÿ:™:Ò%Ð%Ð%ô .¨a°¸=ÔI�I€CˆÜ/Ø	ˆ1�[°¸DÐ0Aô�K€Dˆ%ô % Q¨°-Ô@€DÜ$Ø	ˆ1�[°¸DÐ0Aô€Dô �DÐ*Ô+Ü�EÐ+Ô,ä�C˜Ô&Ü�D˜,Ô'Ü�D˜,Ô'Ü�D˜,Ô'ô .¨a°¸;ÔG�I€CˆÜ$ Q¨°+Ô>€DÜ�C˜Ô&Ü�D˜,Ô'Ü�D˜-Ô(ä1°#°sÀ;ÔO�M€Eˆ6Ü& s¨C¸ÔD€FÜ�E˜<Ô(Ü�F˜LÔ)Ü�F˜MÔ*ô .Ø	ˆ1”Y¨s°A¨hô�I€Cˆô �C˜Ô&Ü�D˜-Ô(ô .Ø	ˆ1�[°°a°ô�I€Cˆô �C˜Ô&Ü�D˜-Ô(ô �)‰)×
Ñ
 Ó
"€CØ�	‰	�"�cÓ€AØ�	‰	�#�sÓ€Aä˜a ¨;Ô7€DØ—K‘K Q�KÓ'€MØ˜¬¬c°-Ó.@Ó(AÐAÑB€Mä)FØ	ˆ1�1˜[ô*Ñ&ÐÐ&ô �MÐ#3¸$Õ?Ü�MÐ#3¸$Õ?ô 5°Q¸ÀÔBÑ€HˆfÜ4°Q¸ÀÔBÑ€Hˆfä�F˜FÔ#Ü�x Ô*ä4°Q¸ÀÔBÑ€HˆfÜ4°Q¸ÀÔBÑ€Hˆfä�F˜FÔ#Ü�x Ô*ô )¨¨A°AÔ6€HÜ(¨¨A°AÔ6€Hä�x Ô*ä(¨¨A°AÔ6€HÜ(¨¨A°AÔ6€Hä�x Ô*ô 4°A°qÓ9ÐÜ3Ü
×Ñ˜!Óœb×/Ñ/°Ó2óÐô Ð*Ð,?Õ@r»   c                 ó   — | d d …d d…f   S )Néd   rº   ©r$  Ústarts     rf   Ú_reduce_funcr4  æ  s   € Ø’�4�C�4�‰=Ðr»   c                 ó¬  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }t        |«      d d …d d…f   }t        |d t        d¬«      }t        |t        «      sJ ‚t        |«      }t        |«      dkD  sJ ‚|d   j                  |j                  k(  sJ ‚t        t        j                  |«      |d	¬
«       y )Nr   )i�  r?   Fr@   r1  ç      ð>©Úreduce_funcÚworking_memoryrK   r  ©Úatol)rN   rO   rP   rQ   rR   r#   r&   r4  r´   r   Úlistr  rS   r1   Úvstack)rX   rY   rZ   r[   ÚS_chunkss        rf   Ú&test_pairwise_distances_chunked_reducer?  ê  sÀ   € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€Aä˜1Óša  # ˜gÑ&€AÜ)Ø	ˆ4œ\¸&ô€Hô �h¤Ô.Ð.Ð.Ü�H‹~€HÜˆx‹=˜1ÒÐÐØ�A‰;×Ñ §¡Ò'Ð'Ð'ô ”B—I‘I˜hÓ'¨°Ö6r»   c                 ó(  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }t        |d d„ d¬«      }t        |t        «      sJ ‚t        |«      }t        |«      dkD  sJ ‚t        d	„ |D «       «      sJ ‚y )
Nr   ©rí   r?   Fr@   c                  ó   — y ©Nrº   r2  s     rf   rÞ   z=test_pairwise_distances_chunked_reduce_none.<locals>.<lambda>   rß   r»   r6  r7  rK   c              3   ó$   K  — | ]  }|d u –— Œ
 y ­wrC  rº   )Ú.0Úchunks     rf   ú	<genexpr>z>test_pairwise_distances_chunked_reduce_none.<locals>.<genexpr>  s   è ø€ Ò3 ˆu˜Œ}Ñ3ùs   ‚)rN   rO   rP   rQ   rR   r&   r´   r   r<  r  Úall)rX   rY   rZ   r>  s       rf   Ú+test_pairwise_distances_chunked_reduce_nonerI  û  s‹   € ä
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜'Ó"×)Ñ)¨,¸UÐ)ÓC€AÜ)Ø	ˆ4Ñ5Àfô€Hô �h¤Ô.Ð.Ð.Ü�H‹~€HÜˆx‹=˜1ÒÐÐÜÑ3¨(Ô3Ô3Ð3Ñ3r»   Úgood_reducec                 ó   — t        | «      S rC  ©r<  ©ÚDr3  s     rf   rÞ   rÞ     s
   € œ˜a›€ r»   c                 ó,   — t        j                  | «      S rC  )rN   r²   rM  s     rf   rÞ   rÞ     s   € œŸ™ !›€ r»   c                 ó.   — t        | «      t        | «      fS rC  rL  rM  s     rf   rÞ   rÞ     s   € œ$˜q›'¤4¨£7Ð+€ r»   c                 ó   —  || «      S rC  rº   )rN  r3  Úscipy_csr_types      rf   rÞ   rÞ     s   € ¹ÀqÓ8I€ r»   c                 óP   —  || «      t        j                  | «      t        | «      fS rC  )rN   r²   r<  )rN  r3  Úscipy_dok_types      rf   rÞ   rÞ     s#   € Ù˜1ÓÜ�H‰H�Q‹KÜ�‹Gð9
€ r»   c                 ó‚   — t        j                  d«      j                  dd«      }t        |d | d¬«      }t	        |«       y )Nrí   r¸   rK   é@   r7  )rN   ÚarangerÂ   r&   Únext)rJ  rZ   r>  s      rf   Ú,test_pairwise_distances_chunked_reduce_validrY    s:   € ô* 	�	‰	�"‹×Ñ˜b !Ó$€AÜ)Ø	ˆ4˜[¸ô€Hô 	ˆ…Nr»   )Ú
bad_reduceÚerr_typeÚmessagec                 ó6   — t        j                  | | dd  g«      S ©Nr¸   ©rN   Úconcatenate©rN  Úss     rf   rÞ   rÞ   (  s   € œŸ™¨¨A¨b¨c¨F¨Ó4€ r»   zlength 11\..* input: 10\.c                 ó:   — | t        j                  | | dd  g«      fS r^  r_  ra  s     rf   rÞ   rÞ   -  s   € ˜!œRŸ^™^¨Q°°"°#°¨KÓ8Ð9€ r»   z!length \(10, 11\)\..* input: 10\.c                 ó   — | d d | fS )Né	   rº   ra  s     rf   rÞ   rÞ   1  s   € �q˜˜!�u˜a�j€ r»   z length \(9, 10\)\..* input: 10\.c                  ó   — y)Né   rº   ra  s     rf   rÞ   rÞ   3  rß   r»   z2returned 7\. Expected sequence\(s\) of length 10\.c                  ó   — y)N)rg  é   rº   ra  s     rf   rÞ   rÞ   8  rß   r»   z9returned \(7, 8\)\. Expected sequence\(s\) of length 10\.c                 ó0   — t        j                  d«      dfS )Nrí   re  )rN   rW  ra  s     rf   rÞ   rÞ   =  s   € œ"Ÿ)™) B›-¨Ð+€ r»   z-, 9\)\. Expected sequence\(s\) of length 10\.c                 óü   — t        j                  d«      j                  dd«      j                  | d¬«      }t	        |d |d¬«      }t        j                  ||¬«      5  t        |«       d d d «       y # 1 sw Y   y xY w)	Nrí   r¸   rK   Fr@   rV  r7  r›   )rN   rW  rÂ   rR   r&   r�   r�   rX  )rX   rZ  r[  r\  rZ   r>  s         rf   Ú.test_pairwise_distances_chunked_reduce_invalidrl  $  sn   € ôD 	�	‰	�"‹×Ñ˜b !Ó$×+Ñ+¨L¸uÐ+ÓE€AÜ)Ø	ˆ4˜Z¸ô€Hô 
�‰�x wÔ	/ñ ÜˆXŒ÷÷ ñ ús   ÁA2Á2A;c                 ó:  — t        | |||¬«      }t        |t        «      sJ ‚t        |«      }|€| n|}t	        |«      dz  dz  }|D ]"  }|j
                  }|t        ||«      dz  k  rŒ"J ‚ t        j                  |«      }t        | ||¬«      }	t        ||	d¬«       y )N©r9  rD   ri  g      °>i   rC   r  r:  )r&   r´   r   r<  r  ÚnbytesÚmaxrN   r=  r#   r1   )
rZ   r]   r9  rD   ÚgenÚblockwise_distancesÚmin_block_mibÚblockÚmemory_usedr[   s
             rf   Ú check_pairwise_distances_chunkedrv  N  s«   € Ü
$ Q¨¸.ÐQWÔ
X€CÜ�cœ=Ô)Ð)Ð)Ü˜s›)ÐØˆY‰˜A€AÜ˜“F˜Q‘J Ñ'€Mà$ò IˆØ—l‘lˆØœc .°-Ó@À5ÑHÓHÐHÐHðIô Ÿ)™)Ð$7Ó8ÐÜ˜1˜a¨Ô/€AÜÐ'¨°Ö6r»   )rB   Úl2r  c                 ó@  — t         j                  j                  d«      }|j                  dd¬«      j	                  |d¬«      }t        t        |d| ¬«      «      }t        |«      dkD  sJ ‚t        t        j                  t        j                  |«      «      dd	¬
«       y )Nr   ©éè  rí   ç    _ B©ÚsizeÚscaleFr@   rK   rn  ç»½×Ùß|Û=r  )rN   rO   rP   ÚnormalrR   r<  r&   r  r1   rû   r=  )rD   rX   rY   rZ   Úchunkss        rf   Ú(test_pairwise_distances_chunked_diagonalr‚  ^  sz   € ä
�)‰)×
Ñ
 Ó
"€CØ�
‰
˜
¨$ˆ
Ó/×6Ñ6°|È%Ð6ÓP€AÜÔ,¨Q¸qÈÔPÓQ€FÜˆv‹;˜Š?Ðˆ?Ü”B—G‘GœBŸI™I fÓ-Ó.°¸Ö>r»   c                 óè   — t         j                  j                  d«      }|j                  dd¬«      j	                  |d¬«      }t        || d¬«      }t        t        j                  |«      dd	¬
«       y )Nr   ry  r{  r|  Fr@   rF   rÏ   r  r:  )rN   rO   rP   r€  rR   r#   r1   rû   )rD   rX   rY   rZ   rý   s        rf   Ú)test_parallel_pairwise_distances_diagonalr„  g  s[   € ä
�)‰)×
Ñ
 Ó
"€CØ�
‰
˜
¨$ˆ
Ó/×6Ñ6°|È%Ð6ÓP€AÜ" 1¨V¸AÔ>€IÜ”B—G‘G˜IÓ&¨°Ö6r»   c                  ó  — t         j                  j                  d«      } | j                  dd«      }| j                  dd«      }|dz  j	                  d¬«      }t        ||dd|¬	«      }t        ||dd|¬	«      }t        ||«       y
)zjCheck that Y_norm_squared is correctly sliced alongside Y.

    Non-regression test for issue #33877.
    é*   é   r?   é   rF   rK   r  rB   )rD   rÐ   ÚY_norm_squaredN)rN   rO   rP   ÚrandrŸ   r#   r1   )rY   rZ   r]   r‰  ÚD_singleÚ
D_parallels         rf   Ú/test_parallel_pairwise_distances_y_norm_squaredr�  o  s‚   € ô
 �)‰)×
Ñ
 Ó
#€CØ�‰��Q‹€AØ�‰��Q‹€AØ˜‘d—Z‘Z Q�ZÓ'€Nä!Ø	ˆ1�[¨¸>ô€Hô $Ø	ˆ1�[¨¸>ô€Jô �J Õ)r»   z0ignore:Could not adhere to working_memory configc                 óþ  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }t        |d dd¬«       t        dd«      D ]  }t        |d d	|z  d¬«       Œ t        |j                  «       d dd¬«       |j                  d
«      j	                  | d¬«      }t        ||dd¬«       t        |j                  «       |j                  «       dd¬«       t        ||dd¬«       t        ||dd¬«       t        |«      }t        |dd¬«      }t        |t        «      sJ ‚t        |«      |u sJ ‚t        j                  t        «      5  t        |«       d d d «       y # 1 sw Y   y xY w)Nr   )éÈ   r?   Fr@   rK   rB   rn  iðÿÿÿrF   )r1  r?   i'  r   r6  rª   )rN   rO   rP   rQ   rR   rv  r  Útolistr#   r&   r´   r   rX  r�   r�   ÚStopIteration)rX   rY   rZ   Úpowerr]   rN  rq  s          rf   Útest_pairwise_distances_chunkedr“  ‚  sX  € ô �)‰)×
Ñ
 Ó
"€Cà×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€AÜ$ Q¨¸QÀ{ÕSä�s˜A“ò 
ˆÜ(Øˆt A u¡H°[ö	
ð
ô
 %Ø	�‰‹
�D¨°;õð 	×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€AÜ$ Q¨¸!ÀKÕPÜ$Ø	�‰‹
�A—H‘H“J¨q¸õô % Q¨¸%ÈÕTô % Q¨¸!ÀKÕPô 	˜1Ó€AÜ
$ Q°vÀmÔ
T€CÜ�cœ=Ô)Ð)Ð)Ü�‹9˜‰>Ðˆ>Ü	�‰”}Ó	%ñ ÜˆSŒ	÷÷ ñ ús   ÅE3Å3E<Úx_array_constrÚdense)ÚidsÚy_array_constrc                 óf   —  | dgg«      } |dgdgg«      }t        ||«      }t        |ddgg«       y ©Nr   rK   rF   r¯   r�   )r   r1   )r”  r—  rZ   r]   rN  s        rf   Ú%test_euclidean_distances_known_resultrš  §  s@   € ñ 	˜˜�uÓ€AÙ˜˜˜a˜S�zÓ"€AÜ˜A˜qÓ!€AÜ�A˜˜c˜
�|Õ$r»   c                 óv  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }|j                  d«      j	                  | d¬«      }|j	                  t         j
                  «      dz  j                  d¬«      j                  dd	«      }|j	                  t         j
                  «      dz  j                  d¬«      j                  dd	«      } ||«      }t        ||«      }t        |||¬
«      }t        |||¬«      }	t        ||||¬«      }
t        ||«       t        |	|«       t        |
|«       t        ||t        j                  |«      t        j                  |«      ¬«      }t        j                  t        «      5  t        ||«       d d d «       y # 1 sw Y   y xY w)Nr   ©rí   rí   Fr@   ©é   rí   rF   rK   r  r¸   ©ÚX_norm_squared©r‰  ©r   r‰  )rN   rO   rP   rQ   rR   rŽ   rŸ   rÂ   r   r1   Ú
zeros_liker�   r�   r‘   )rX   r—  rY   rZ   r]   Ú	X_norm_sqÚ	Y_norm_sqÚD1ÚD2ÚD3ÚD4Úwrong_Ds               rf   Ú#test_euclidean_distances_with_normsr«  ¹  su  € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€AØ×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€Að —‘œ"Ÿ*™*Ó%¨Ñ*×/Ñ/°QÐ/Ó7×?Ñ?ÀÀ2ÓF€IØ—‘œ"Ÿ*™*Ó%¨Ñ*×/Ñ/°QÐ/Ó7×?Ñ?ÀÀ2ÓF€Iá�qÓ€Aä	˜Q Ó	"€BÜ	˜Q °)Ô	<€BÜ	˜Q °)Ô	<€BÜ	˜Q °)ÈIÔ	V€BÜ�B˜ÔÜ�B˜ÔÜ�B˜Ôô "Ø	Ø	Ü—}‘} YÓ/Ü—}‘} YÓ/ô	€Gô 
�‰”~Ó	&ñ %Ü˜ Ô$÷%÷ %ñ %ús   ÆF/Æ/F8Ú	symmetricTc                 óL  — t         j                  j                  | «      }|j                  d«      }|r|n|j                  d«      }|j	                  t         j
                  «      dz  j                  d¬«      j                  dd«      }|j	                  t         j
                  «      dz  j                  d¬«      j                  dd«      }t        ||«      }t        |||¬«      }t        |||¬«      }	t        ||||¬	«      }
t        ||«       t        |	|«       t        |
|«       y )
Nrœ  r�  rF   rK   r  r¸   rŸ  r¡  r¢  )
rN   rO   rP   rQ   rR   Úfloat32rŸ   rÂ   r   r1   )Úglobal_random_seedr¬  rY   rZ   r]   r¤  r¥  r¦  r§  r¨  r©  s              rf   Ú&test_euclidean_distances_float32_normsr°  Þ  s÷   € ô �)‰)×
Ñ
Ð 2Ó
3€CØ×Ñ˜(Ó#€AÙ‰˜C×-Ñ-¨hÓ7€AØ—‘œ"Ÿ*™*Ó%¨Ñ*×/Ñ/°QÐ/Ó7×?Ñ?ÀÀ2ÓF€IØ—‘œ"Ÿ*™*Ó%¨Ñ*×/Ñ/°QÐ/Ó7×?Ñ?ÀÀ2ÓF€IÜ	˜Q Ó	"€BÜ	˜Q °)Ô	<€BÜ	˜Q °)Ô	<€BÜ	˜Q °)ÈIÔ	V€BÜ�B˜ÔÜ�B˜ÔÜ�B˜Õr»   c            	      óè  — t         j                  j                  d«      } | j                  d«      }| j                  d«      }|dz  j	                  d¬«      }|dz  j	                  d¬«      }t        ||||¬«      }t        |||j                  dd«      |j                  dd«      ¬«      }t        |||j                  dd«      |j                  dd«      ¬«      }t        ||«       t        ||«       t        j                  t        d	¬
«      5  t        |||d d ¬«       d d d «       t        j                  t        d¬
«      5  t        |||d d ¬«       d d d «       y # 1 sw Y   Œ?xY w# 1 sw Y   y xY w)Nr   rœ  r�  rF   rK   r  r¢  r¸   zIncompatible dimensions for Xr›   r>   rŸ  zIncompatible dimensions for Yr¡  )rN   rO   rP   rQ   rŸ   r   rÂ   r1   r�   r�   r°   )rY   rZ   r]   r   r‰  r¦  r§  r¨  s           rf   Ú$test_euclidean_distances_norm_shapesr²  ï  sg  € ä
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜(Ó#€AØ×Ñ˜(Ó#€Aà˜‘d—Z‘Z Q�ZÓ'€NØ˜‘d—Z‘Z Q�ZÓ'€Nä	Ø	ˆ1˜^¸Nô
€Bô 
Ø	Ø	Ø%×-Ñ-¨b°!Ó4Ø%×-Ñ-¨b°!Ó4ô	
€Bô 
Ø	Ø	Ø%×-Ñ-¨a°Ó4Ø%×-Ñ-¨a°Ó4ô	
€Bô �B˜ÔÜ�B˜Ôä	�‰”zÐ)HÔ	Iñ EÜ˜A˜q°ÀÀÐ1CÕD÷Eä	�‰”zÐ)HÔ	Iñ EÜ˜A˜q°ÀÀÐ1CÕD÷Eð E÷Eð Eú÷Eð Eús   ÄEÅE(ÅE%Å(E1c                 óx  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }d||dk  <   |j                  d«      j	                  | d¬«      }d||dk  <   t        ||«      } ||«      } ||«      }t        ||«      }t        ||d¬«       |j                  | k(  sJ ‚y )	Nr   ©r1  rí   Fr@   çš™™™™™é?rœ  ç�íµ ÷Æ°>r  )	rN   rO   rP   rQ   rR   r   r   r1   rS   )rX   r”  r—  rY   rZ   r]   Úexpectedrý   s           rf   Útest_euclidean_distancesr¸    s½   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$×+Ñ+¨L¸uÐ+ÓE€AØ€A€aˆ#�g�JØ×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€AØ€A€aˆ#�g�Jä�Q˜‹{€Há�qÓ€AÙ�qÓ€AÜ# A qÓ)€Iô �I˜x¨dÕ3Ø�?‰?˜lÒ*Ð*Ñ*r»   c                 ó"  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }d||dk  <   t        t        |«      «      } ||«      }t        |«      }t        ||d¬«       |j                  | k(  sJ ‚y )Nr   r´  Fr@   rµ  r¶  r  )
rN   rO   rP   rQ   rR   r   r
   r   r1   rS   )rX   r”  rY   rZ   r·  rý   s         rf   Útest_euclidean_distances_symrº  0  s‡   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$×+Ñ+¨L¸uÐ+ÓE€AØ€A€aˆ#�g�Jäœ% ›(Ó#€Há�qÓ€AÜ# AÓ&€Iô �I˜x¨dÕ3Ø�?‰?˜lÒ*Ð*Ñ*r»   Ú
batch_size)Nr>   rg  ée   c                 óÜ  — t         j                  j                  d«      }|j                  d«      j	                  t         j
                  «      }d||dk  <   |j                  d«      j	                  t         j
                  «      }d||dk  <   t        ||«      } ||«      } ||«      }t        ||| ¬«      }t        j                  t        j                  |d«      «      }t        ||d¬«       y )Nr   r´  rµ  rœ  ©r]   r»  r¶  r  )rN   rO   rP   rQ   rR   r®  r   r   ÚsqrtÚmaximumr1   )r»  r”  r—  rY   rZ   r]   r·  rý   s           rf   Útest_euclidean_distances_upcastrÁ  G  sÄ   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$×+Ñ+¬B¯J©JÓ7€AØ€A€aˆ#�g�JØ×Ñ˜(Ó#×*Ñ*¬2¯:©:Ó6€AØ€A€aˆ#�g�Jä�Q˜‹{€Há�qÓ€AÙ�qÓ€AÜ+¨A°¸zÔJ€IÜ—‘œŸ
™
 9¨aÓ0Ó1€Iô �I˜x¨dÖ3r»   c                 óp  — t         j                  j                  d«      }|j                  d«      j	                  t         j
                  «      }d||dk  <   t        t        |«      «      } ||«      }t        ||| ¬«      }t        j                  t        j                  |d«      «      }t        ||d¬«       y )Nr   r´  rµ  r¾  r¶  r  )rN   rO   rP   rQ   rR   r®  r   r
   r   r¿  rÀ  r1   )r»  r”  rY   rZ   r·  rý   s         rf   Ú#test_euclidean_distances_upcast_symrÃ  f  s‘   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$×+Ñ+¬B¯J©JÓ7€AØ€A€aˆ#�g�Jäœ% ›(Ó#€Há�qÓ€AÜ+¨A°¸zÔJ€IÜ—‘œŸ
™
 9¨aÓ0Ó1€Iô �I˜x¨dÖ3r»   zdtype, eps, rtolg-Cëâ6?çñhãˆµøä>g:Œ0âŽyE>g®Gáz®ï?z failing due to lack of precision)Úreason)ÚmarksÚdimi@B c                 óÆ   — t        j                  dg|z  g| ¬«      }t        j                  d|z   g|z  g| ¬«      }t        ||«      }t        ||«      }t	        ||d¬«       y )Nr¯   r­   rÄ  r  )rN   r²   r   r   r1   )rS   Úepsr  rÇ  rZ   r]   rý   r·  s           rf   Ú'test_euclidean_distances_extreme_valuesrÊ  }  s]   € ô  	�‰�3�%˜#‘+� eÔ,€AÜ
�‰�3˜‘9�+ Ñ#Ð$¨EÔ2€Aä# A qÓ)€IÜ�Q˜‹{€Hä�I˜x¨dÖ3r»   r	  c                 óÚ   — t         j                  j                  d«      }|j                  dd«      }|j                  dd«      }t	        ||| ¬«      }t        ||| ¬«      }t        ||«       y )Né9  r�   r?   )r]   r	  )rN   rO   rP   r�   r   r   r1   )r	  rY   rZ   r]   Únormal_distanceÚnan_distances         rf   Ú8test_nan_euclidean_distances_equal_to_euclidean_distancerÏ  –  s\   € ô �)‰)×
Ñ
 Ó
%€CØ�	‰	�!�Q‹€AØ�	‰	�!�Q‹€Aä)¨!¨q¸'ÔB€OÜ*¨1°¸7ÔC€LÜ�O \Õ2r»   rZ   r]   c                 ó²   — t        j                  t        «      5 }t        | |¬«       d d d «       d}|t	        j
                  «      k(  sJ ‚y # 1 sw Y   Œ&xY w)Nrç   zBInput contains infinity or a value too large for dtype('float64').)r�   r�   r°   r   ÚstrÚvalue)rZ   r]   ÚexcinfoÚexp_msgs       rf   Ú,test_nan_euclidean_distances_infinite_valuesrÕ  ¢  sP   € ô 
�‰”zÓ	"ð ( gÜ  QÕ'÷(ð S€GØ”c˜'Ÿ-™-Ó(Ò(Ð(Ñ(÷	(ð (ús   šAÁAzX, X_diag, missing_valuerF   r¸   c                 ó*  — t        j                  d|g|dgg«      }t        | |¬«      }t        ||«       t        | d|¬«      }t        |dz  |«       t        | | |¬«      }t        ||«       t        | | j	                  «       |¬«      }t        ||«       y )Nç        r   ©Úmissing_valuesT©r	  rÙ  rF   )rN   r²   r   r1   rA   )rZ   ÚX_diagÚmissing_valueÚexp_distr$  Údist_sqÚdist_twoÚdist_two_copys           rf   Ú test_nan_euclidean_distances_2x2rá  ¬  s‡   € ô  �x‰x˜#˜v˜¨°¨Ð4Ó5€Hä" 1°]ÔC€DÜ�H˜dÔ#ä% a°ÀmÔT€GÜ�H˜a‘K Ô)ä& q¨!¸MÔJ€HÜ�H˜hÔ'ä+¨A¨q¯v©v«xÈÔV€MÜ�H˜mÕ,r»   rÜ  c                 óF  — t        j                  | | gddgg«      }t        j                  t         j                  t         j                  gt         j                  dgg«      }t        || ¬«      }t	        ||«       t        ||j                  «       | ¬«      }t	        ||«       y )Nr   rK   rØ  )rN   r²   rT   r   r1   rA   )rÜ  rZ   rÝ  r$  s       rf   Ú)test_nan_euclidean_distances_complete_nanrã  Ë  sz   € ä
�‰�= -Ð0°1°a°&Ð9Ó:€Aä�x‰xœ"Ÿ&™&¤"§&¡&Ð)¬B¯F©F°A¨;Ð7Ó8€Hä" 1°]ÔC€DÜ�H˜dÔ#ä" 1 a§f¡f£h¸}ÔM€DÜ�H˜dÕ#r»   c           	      óœ  — t        j                  d| dddg| ddd| gd| | | dgg«      }t        j                  | dd| dg| | dddg| | | ddgg«      }t        ||| ¬«      }t        ||| ¬«      }t        ||j                  «       t        t        |d d	 |d d	 d
| ¬«      dgg«       t        t        |d	d |d	d d| ¬«      t        j                  d«      gg«       t        || ¬«      }t        ||| ¬«      }t        ||j                  «       | ¬«      }t        ||«       t        ||«       t        ||d
¬«      }t        ||d¬«      }	t        ||	«       y )Nr¯   g      @g      @r�   g      @g      @g      @rØ  rK   TrÚ  g      D@rF   Fg      9@r@   )rN   r²   r   r2   ÚTr1   r¿  rA   )
rÜ  rZ   r]   r¦  r§  r¨  r©  ÚD5ÚD6ÚD7s
             rf   Ú(test_nan_euclidean_distances_not_trivialré  Ø  s„  € ä
�‰à�-  c¨3Ð/Ø˜C  c¨=Ð9Ø�- °¸sÐCð	
ó	€Aô 	�‰à˜C  m°SÐ9Ø˜M¨3°°SÐ9Ø˜M¨=¸#¸sÐCð	
ó	€Aô 
!  A°mÔ	D€BÜ	   A°mÔ	D€Bä˜˜BŸD™DÔ!ô ÜØˆbˆqˆE�1�R�a�5 $°}ô	
ð 4Ð	4Ð5ô	ô ÜØˆa�ˆF�A�a˜�F E¸-ô	
ô �'‰'Ð;Ó
<Ð	=Ð>ô	ô 
! °=Ô	A€BÜ	   A°mÔ	D€BÜ	   A§F¡F£H¸]Ô	K€BÜ�B˜ÔÜ�B˜Ôô 
!  A¨DÔ	1€BÜ	   A¨EÔ	2€BÜ�B˜Õr»   c                 óÆ   — t        j                  dd| dgd| d| gg«      }t        || d¬«      }t        j                  |dk\  «      sJ ‚t        || d¬«      }t	        |d	«       y )
Ngáz®G‘^Àg     @„@gÍÌÌÌÌìB@gÿ–|Ã¯Æ@T)rÙ  r	  r   Fr×  )rN   r²   r   rH  r1   )rÜ  rZ   Údist_squaredr$  s       rf   Ú7test_nan_euclidean_distances_one_feature_match_positiverì    ss   € ô
 	�‰à�e˜]¨EÐ2Ø�m Z°Ð?ð	
ó	€Aô +Ø	˜-°ô€Lô �6‰6�, !Ñ#Ô$Ð$Ð$ä" 1°]ÈEÔR€DÜ�D˜#Õr»   c                  ó¦  — t         j                  j                  d«      } t        j                  | j	                  d«      «      }t        j
                  ||g«      }t        |«      }t        |ddgddggd¬«       t        j                  |dk\  «      sJ ‚t        j                  |dk  «      sJ ‚t        |t        j                  |«         ddg«       t        j
                  || g«      }t        |«      }t        j                  |dk\  «      sJ ‚t        j                  |dk  «      sJ ‚t        |ddgddgg«       t        j                  | j	                  dd«      «      }t        |«      }t        |t        j                  |«         dg|j                  d	   z  «       t        j                  |dk\  «      sJ ‚t        j                  |dk  «      sJ ‚y )
NrÌ  iŽ  r×  r  r:  r�   rz  iˆ  r   )rN   rO   rP   r  rŠ  r=  r   r1   rH  Údiag_indices_fromrW   )rY   rÄ   ÚXArN  ÚXBr§  rZ   s          rf   Útest_cosine_distancesrñ  "  s†  € ä
�)‰)×
Ñ
 Ó
%€CÜ
�‰ˆs�x‰x˜‹}Ó€AÜ	�‰�A�q�6Ó	€BÜ˜Ó€AÜ�A˜˜c˜
 S¨# JÐ/°eÕ<ä�6‰6�!�s‘(ÔÐÐÜ�6‰6�!�s‘(ÔÐÐä�A”b×*Ñ*¨1Ó-Ñ.°°c°
Ô;ä	�‰�A˜�r�7Ó	€BÜ	˜"Ó	€Bä�6‰6�"˜‘)ÔÐÐÜ�6‰6�"˜‘)ÔÐÐä�B˜#˜s˜ c¨3 ZÐ0Ô1ô 	�‰ˆs�x‰x˜˜dÓ#Ó$€AÜ˜Ó€Aä�A”b×*Ñ*¨1Ó-Ñ.°°¸¿¹À¹
Ñ0BÔCÜ�6‰6�!�s‘(ÔÐÐÜ�6‰6�!�s‘(ÔÐÑr»   c                  óâ  — d„ } t         j                  j                  d«      }|j                  d«      }|j                  d«      }t        j                  |D ��cg c]  }|D �cg c]  } | ||«      ‘Œ c}‘Œ c}}«      }t        ||«      }t        ||«       |j                  d«      }d}t        j                  t        |¬«      5  t        |«       d d d «       y c c}w c c}}w # 1 sw Y   y xY w)Nc                 óZ  — |d   | d   z
  }|d   | d   z
  }t        j                  |dz  «      dz  t        j                  | d   «      t        j                  |d   «      z  t        j                  |dz  «      dz  z  z   }dt        j                  t        j                  |«      «      z  }|S )Nr   rK   rF   )rN   ÚsinÚcosÚarcsinr¿  )rÄ   rÅ   Údiff_latÚdiff_lonÚaÚcs         rf   Úslow_haversine_distancesz:test_haversine_distances.<locals>.slow_haversine_distancesB  s™   € Ø�Q‘4˜!˜A™$‘;ˆØ�Q‘4˜!˜A™$‘;ˆÜ�F‰F�8˜a‘<Ó  AÑ%Ü�F‰F�1�Q‘4‹Lœ2Ÿ6™6 ! A¡$›<Ñ'¬"¯&©&°¸A±Ó*>À!Ñ*CÑCñ
ˆð ”—	‘	œ"Ÿ'™' !›*Ó%Ñ%ˆØˆr»   r   rI   )rí   rF   )rí   r�   z-Haversine distance only valid in 2 dimensionsr›   )
rN   rO   rP   rQ   r²   r   r1   r�   r�   r°   )	rû  rY   rZ   r]   rÄ   rÅ   r¦  r§  Úerr_msgs	            rf   Útest_haversine_distancesrý  @  sÌ   € òô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜'Ó"€AÜ	�‰È×JÀ1¸AÖ>°qÑ,¨Q°Õ2Ô>ÓJÓ	K€BÜ	˜Q Ó	"€BÜ�B˜Ôà×Ñ˜'Ó"€AØ=€GÜ	�‰”z¨Ô	1ñ Ü˜AÔ÷ð ùò ?ùÓJ÷ð ús$   Á	C
Á"CÁ2C
ÃC%ÃC
Ã%C.c                  óP   — dgdgg} dgdgg}t        | |«      }t        |ddg«       y r™  )r!   r1   ©rZ   r]   rN  s      rf   Útest_paired_euclidean_distancesr   [  ó6   € à
ˆˆqˆcˆ
€AØ
ˆˆqˆcˆ
€AÜ" 1 aÓ(€AÜ�A˜˜S�zÕ"r»   c                  óP   — dgdgg} dgdgg}t        | |«      }t        |ddg«       y r™  )r"   r1   rÿ  s      rf   Útest_paired_manhattan_distancesr  c  r  r»   c                  óP   — dgdgg} dgdgg}t        | |«      }t        |ddg«       y )Nr   rK   rF   rJ   )r   r1   rÿ  s      rf   Útest_paired_cosine_distancesr  k  s6   € à
ˆˆqˆcˆ
€AØ
ˆˆqˆcˆ
€AÜ  1Ó%€AÜ�A˜˜S�zÕ"r»   c                  óT  — t         j                  j                  d«      } | j                  d«      }| j                  d«      }t	        ||«      }d}t        |||¬«      }|j                  t        k(  sJ ‚t        |«      D ]t  \  }}t        |«      D ]a  \  }}	t        j                  ||	z
  dz  ||	z   z  «       }
t        j                  ||
z  «      }t        |||f   |
«       t        |||f   |«       Œc Œv t        |«      }t        t        j                  |«      d«       t        j                  |dkD  «      sJ ‚t        j                  |t        j                  t        j                  |«      «      z
  dk  «      sJ ‚| j                  d«      j                  t         j                   «      }| j                  d«      j                  t         j                   «      }t        ||«      }|j                  t         j                   k(  sJ ‚| j                  d«      j                  t         j"                  «      }t        ||«      }t        j$                  |«      j                  «       sJ ‚|j                  t        k(  sJ ‚dd	gd
dgg}ddgddgg}t        ||«      }|d   |d   kD  sJ ‚|d   |d   kD  sJ ‚t'        j(                  t*        «      5  t        ddgg«       d d d «       t'        j(                  t*        «      5  t        ddggddgg«       d d d «       t'        j(                  t*        «      5  t        ddggddgg«       d d d «       t'        j(                  t*        «      5  t        ddggg d¢g«       d d d «       y # 1 sw Y   Œ¦xY w# 1 sw Y   Œ~xY w# 1 sw Y   ŒVxY w# 1 sw Y   y xY w)Nr   r=   rA  rÍ   rõ   rF   rK   g333333Ó?gffffffæ?r¯   gÍÌÌÌÌÌì?rG   )r   rK   )rK   rK   )rK   r   r¸   )çš™™™™™É?r  g333333ã?)rN   rO   rP   rQ   r   r   rS   rÃ   Ú	enumeraterŸ   Úexpr2   r3   rû   rH  rR   r®  Úint32Úisfiniter�   r�   r°   )rY   rZ   r]   ÚK_addrÌ   rÇ   ÚirÄ   ÚjrÅ   rä   Úchi2_exps               rf   Útest_chi_square_kernelr  s  s<  € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜'Ó"€AÜ   AÓ&€EØ€EÜ�A�q Ô&€AØ�7‰7”eÒÐÐÜ˜!“ò 3‰ˆˆ1Ü˜a“Lò 	3‰DˆAˆqÜ—F‘F˜A ™E a™<¨1¨q©5Ñ1Ó2Ð2ˆDÜ—v‘v˜e d™lÓ+ˆHÜ  a¨ d¡¨TÔ2Ü  ! Q $¡¨Õ2ñ		3ð3ô 	�A‹€AÜ”r—w‘w˜q“z 1Ô%ä�6‰6�!�a‘%Œ=Ðˆ=Ü�6‰6�!”b—g‘gœbŸg™g a›jÓ)Ñ)¨AÑ-Ô.Ð.Ð.à×Ñ˜&Ó!×(Ñ(¬¯©Ó4€AØ×Ñ˜'Ó"×)Ñ)¬"¯*©*Ó5€AÜ�A�qÓ€AØ�7‰7”b—j‘jÒ Ð Ð ð 	×Ñ˜'Ó"×)Ñ)¬"¯(©(Ó3€AÜ�A�qÓ€AÜ�;‰;�q‹>×ÑÔÐÐØ�7‰7”eÒÐÐð ˆsˆ�c˜1�XÐ€AØ
ˆQˆ�#�s�Ð€AÜ�A�qÓ€AØˆT‰7�Q�t‘WÒÐÐØˆT‰7�Q�t‘WÒÐÐô 
�‰”zÓ	"ñ Ü�a˜�W�IÔ÷ä	�‰”zÓ	"ñ +Ü�a˜�W�I  R ˜zÔ*÷+ä	�‰”zÓ	"ñ *Ü�a˜�V�H  B˜x˜jÔ)÷*ô 
�‰”zÓ	"ñ 1Ü�a˜�V�HšÐ/Ô0÷1ð 1÷ð ú÷+ð +ú÷*ð *ú÷1ð 1ús0   ËM:Ë6NÌ*NÍNÍ:NÎNÎNÎN'Úkernelc                 ó¤   — t         j                  j                  d«      }|j                  d«      } | ||«      }t	        ||j
                  d«       y )Nr   r=   rˆ  )rN   rO   rP   rQ   r1   rå  )r  rY   rZ   rÇ   s       rf   Útest_kernel_symmetryr  ©  sC   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AÙˆq�!‹€AÜ�A�q—s‘s˜BÕr»   c                 ó°   — t         j                  j                  d«      }|j                  d«      } ||«      } | ||«      } | ||«      }t	        ||«       y ©Nr   r=   )rN   rO   rP   rQ   r1   )r  rŠ   rY   rZ   r“   rÇ   rê   s          rf   Útest_kernel_sparser  ¼  sS   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AÙ˜QÓ€HÙˆq�!‹€AÙ	�˜(Ó	#€BÜ�A�rÕr»   c            	      ó  — t         j                  j                  d«      } | j                  d«      }t	        ||«      }t        |j                  d d d…   |D �cg c]  }t        j                  |«      dz  ‘Œ c}«       y c c}w )Nr   r=   é   rF   )	rN   rO   rP   rQ   r   r1   Úflatr   Únorm)rY   rZ   rÇ   rÄ   s       rf   Útest_linear_kernelr  Ñ  sc   € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AÜ�a˜Ó€Aä�A—F‘F™3˜Q˜3‘K¸qÖ!A¸!¤&§+¡+¨a£.°AÓ"5Ò!AÕBùÒ!As   ÁA>
c                  óÚ   — t         j                  j                  d«      } | j                  d«      }t	        ||«      }t        |j                  d d d…   t        j                  d«      «       y )Nr   r=   r  r>   )rN   rO   rP   rQ   r)   r1   r  Úones©rY   rZ   rÇ   s      rf   Útest_rbf_kernelr  Ù  sP   € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AÜ�1�aÓ€Aä�A—F‘F™3˜Q˜3‘K¤§¡¨£Õ,r»   c                  óš  — t         j                  j                  d«      } | j                  d«      }t	        ||«      }t        t        j                  |«      t        j                  d«      «       t        j                  |dkD  «      sJ ‚t        j                  |t        j                  t        j                  |«      «      z
  dk  «      sJ ‚y )Nr   r=   r>   rK   )	rN   rO   rP   rQ   r   r1   rû   r  rH  r  s      rf   Útest_laplacian_kernelr!  á  s�   € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AÜ˜˜AÓ€Aä”B—G‘G˜A“J¤§¡¨£
Ô+ô �6‰6�!�a‘%Œ=Ðˆ=Ü�6‰6�!”b—g‘gœbŸg™g a›jÓ)Ñ)¨AÑ-Ô.Ð.Ñ.r»   zmetric, pairwise_funcrã   r   c                 óŠ  — t         j                  j                  d«      }|j                  d«      }|j                  d«      } ||«      } ||«      } |||d¬«      }t	        |«      sJ ‚ |||d¬«      }	t	        |	«      rJ ‚t        |j                  «       |	«       t        ||| ¬«      }
t        |j                  «       |
«       y )Nr   r=   r€   F)Údense_outputTrp   )rN   rO   rP   rQ   r   r1   Útoarrayr'   )rD   Úpairwise_funcrŠ   rY   rZ   r]   ÚXcsrÚYcsrré   rê   ÚK3s              rf   Ú&test_pairwise_similarity_sparse_outputr)  í  sµ   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€AÙ˜Ó€DÙ˜Ó€Dñ 
�t˜T°Ô	6€BÜ�BŒ<Ðˆ<ñ 
�q˜!¨$Ô	/€BÜ˜Œ|ÐÐÜ�B—J‘J“L "Ô%ô 
˜!˜q¨Ô	0€BÜ�B—J‘J“L "Õ%r»   c                 óR  — t         j                  j                  d«      }|j                  d«      }|j                  d«      } | |«      } | |«      }|d f||f|d f||ffD ]E  \  }}t	        ||d¬«      }t        |«      }|�t        |«      }t	        ||d¬«      }	t        ||	«       ŒG y )Nr   r=   r€   r   rp   rã   )rN   rO   rP   rQ   r'   r+   r1   )
rŠ   rY   rZ   r]   r&  r'  ÚX_ÚY_ré   rê   s
             rf   Útest_cosine_similarityr-    s·   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€AÙ˜Ó€DÙ˜Ó€Dà�t�9˜q !˜f t¨T l°T¸4°LÐAò  ‰ˆˆBô ˜b B¨xÔ8ˆÜ�r‹]ˆØˆ>Ü˜2“ˆBÜ˜b B¨xÔ8ˆÜ˜˜BÕñ r»   c                  ó˜   — t        j                  t        j                  d«      d«      } t        | d «      \  }}||u sJ ‚t	        | |«       y ©Né(   ©r>   ri  )rN   ÚresizerW  r   r3   )rï  Ú
XA_checkedÚ
XB_checkeds      rf   Útest_check_dense_matricesr5    sE   € ô 
�‰”2—9‘9˜R“= &Ó	)€BÜ2°2°tÓ<Ñ€J�
Ø˜Ñ#Ð#Ð#Ü�r˜:Õ&r»   c                  ó–  — t        j                  t        j                  d«      d«      } t        j                  t        j                  d«      d«      }t        | |«      \  }}t	        | |«       t	        ||«       t        j                  t        j                  d«      d«      }t        | |«      \  }}t	        | |«       t	        ||«       y )Nr0  r1  é    ©r?   ri  )rN   r2  rW  r   r3   r   ©rï  rð  r3  r4  s       rf   Útest_check_XB_returnedr:  %  s–   € ô 
�‰”2—9‘9˜R“= &Ó	)€BÜ	�‰”2—9‘9˜R“= &Ó	)€BÜ2°2°rÓ:Ñ€J�
Ü�r˜:Ô&Ü�r˜:Ô&ä	�‰”2—9‘9˜R“= &Ó	)€BÜ0°°RÓ8Ñ€J�
Ü�r˜:Ô&Ü�r˜:Õ&r»   c                  óâ  — t        j                  t        j                  d«      d«      } t        j                  t        j                  d«      d«      }t        j                  t
        «      5  t        | |«       d d d «       t        j                  t        j                  d«      d«      }t        j                  t
        «      5  t        | |«       d d d «       y # 1 sw Y   ŒaxY w# 1 sw Y   y xY w)Né-   )r>   re  r7  r8  é$   )r?   re  )rN   r2  rW  r�   r�   r°   r   r   ©rï  rð  s     rf   Útest_check_different_dimensionsr?  5  s¨   € ä	�‰”2—9‘9˜R“= &Ó	)€BÜ	�‰”2—9‘9˜R“= &Ó	)€BÜ	�‰”zÓ	"ñ &Ü˜b "Ô%÷&ô 
�‰”2—9‘9˜UÓ# VÓ	,€BÜ	�‰”zÓ	"ñ $Ü˜B Ô#÷$ð $÷	&ð &ú÷$ð $ús   Á,CÃC%ÃC"Ã%C.c                  ó  — t        j                  d«      j                  dd«      } t        j                  d«      j                  dd«      }t        j                  t
        «      5  t        | |«       d d d «       t        j                  d«      j                  dd«      } t        j                  d«      j                  dd«      }t        j                  t
        «      5  t        | |«       d d d «       y # 1 sw Y   Œ‚xY w# 1 sw Y   y xY w)Nr<  re  r>   r7  r?   ri  )rN   rW  rÂ   r�   r�   r°   r   r>  s     rf   Útest_check_invalid_dimensionsrA  A  sÇ   € ô 
�‰�2‹×	Ñ	˜q !Ó	$€BÜ	�‰�2‹×	Ñ	˜q !Ó	$€BÜ	�‰”zÓ	"ñ &Ü˜b "Ô%÷&ä	�‰�2‹×	Ñ	˜q !Ó	$€BÜ	�‰�2‹×	Ñ	˜q !Ó	$€BÜ	�‰”zÓ	"ñ &Ü˜b "Ô%÷&ð &÷	&ð &ú÷&ð &ús   Á$C2ÃC>Ã2C;Ã>Dc                 óR  — t         j                  j                  d«      }|j                  d«      } | |«      }|j                  d«      } | |«      }t	        ||«      \  }}t        |«      sJ ‚t        ||z
  «      j                  «       dk(  sJ ‚t        |«      sJ ‚t        ||z
  «      j                  «       dk(  sJ ‚t	        ||«      \  }}t        |«      sJ ‚t        ||z
  «      j                  «       dk(  sJ ‚t        |«      sJ ‚t        ||z
  «      j                  «       dk(  sJ ‚y r  )rN   rO   rP   rQ   r   r   r  rŸ   )	rŠ   rY   rï  Ú	XA_sparserð  Ú	XB_sparser3  r4  ÚXA_2_checkeds	            rf   Útest_check_sparse_arraysrF  O  s,  € ô �)‰)×
Ñ
 Ó
"€CØ	×	Ñ	˜6Ó	"€BÙ˜bÓ!€IØ	×	Ñ	˜6Ó	"€BÙ˜bÓ!€IÜ2°9¸iÓHÑ€J�
ô �JÔÐÐÜˆy˜:Ñ%Ó&×*Ñ*Ó,°Ò1Ð1Ð1Ü�JÔÐÐÜˆy˜:Ñ%Ó&×*Ñ*Ó,°Ò1Ð1Ð1ä4°YÀ	ÓJÑ€J�Ü�JÔÐÐÜˆy˜:Ñ%Ó&×*Ñ*Ó,°Ò1Ð1Ð1Ü�LÔ!Ð!Ð!Üˆ|˜jÑ(Ó)×-Ñ-Ó/°1Ò4Ð4Ñ4r»   c                 ó~   — | j                   }t        |«      dkD  rt        d„ | D «       «      S t        d„ | D «       «      S )NrK   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrC  )Útuplify)rE  rb   s     rf   rG  ztuplify.<locals>.<genexpr>k  s   è ø€ Ò/ c”W˜S—\Ñ/ùs   ‚c              3   ó    K  — | ]  }|–— Œ y ­wrC  rº   )rE  Úrs     rf   rG  ztuplify.<locals>.<genexpr>n  s   è ø€ ’N˜1”Q‘Nùs   ‚)rW   r  rU   )rZ   rb  s     rf   rI  rI  f  s8   € à	�‰€AÜ
ˆ1ƒv�‚zäÑ/¨QÔ/Ó/Ð/ô ‘N ”NÓ"Ð"r»   c                  ó   — t         j                  j                  d«      } | j                  d«      }t	        |«      }| j                  d«      }t	        |«      }t        ||«      \  }}t        ||«       t        ||«       y r  )rN   rO   rP   rQ   rI  r   r3   )rY   rï  Ú	XA_tuplesrð  Ú	XB_tuplesr3  r4  s          rf   Útest_check_tuple_inputrO  q  sm   € ä
�)‰)×
Ñ
 Ó
"€CØ	×	Ñ	˜6Ó	"€BÜ˜“€IØ	×	Ñ	˜6Ó	"€BÜ˜“€IÜ2°9¸iÓHÑ€J�
Ü�y *Ô-Ü�y *Õ-r»   c                  óB  — t        j                  t        j                  d«      d«      j                  t         j                  «      } t        j                  t        j                  d«      d«      j                  t         j                  «      }t        | d «      \  }}|j                  t         j                  k(  sJ ‚t        | |«      \  }}|j                  t         j                  k(  sJ ‚|j                  t         j                  k(  sJ ‚t        | j                  t        «      |«      \  }}|j                  t        k(  sJ ‚|j                  t        k(  sJ ‚t        | |j                  t        «      «      \  }}|j                  t        k(  sJ ‚|j                  t        k(  sJ ‚y r/  )rN   r2  rW  rR   r®  r   rS   rÃ   r9  s       rf   Útest_check_preserve_typerQ  }  sD  € ä	�‰”2—9‘9˜R“= &Ó	)×	0Ñ	0´·±Ó	<€BÜ	�‰”2—9‘9˜R“= &Ó	)×	0Ñ	0´·±Ó	<€Bä2°2°tÓ<Ñ€J�
Ø×ÑœrŸz™zÒ)Ð)Ð)ô 3°2°rÓ:Ñ€J�
Ø×ÑœrŸz™zÒ)Ð)Ð)Ø×ÑœrŸz™zÒ)Ð)Ð)ô 3°2·9±9¼UÓ3CÀRÓHÑ€J�
Ø×ÑœuÒ$Ð$Ð$Ø×ÑœuÒ$Ð$Ð$ô 3°2°r·y±yÄÓ7GÓHÑ€J�
Ø×ÑœuÒ$Ð$Ð$Ø×ÑœuÒ$Ð$Ñ$r»   rÐ   Ú
seuclideanÚmahalanobisÚdist_functionc           
      ó8  — t        d¬«      5  t        j                  j                  d«      }|j	                  d«      }t        t        ||¬«      «      }t        j                  t         |||| ¬«      «      «      }t        ||«       d d d «       y # 1 sw Y   y xY w)NrÍ   )r9  r   r´  rC   rÏ   )
r   rN   rO   rP   rQ   r   r
   r=  rU   r1   )rÐ   rD   rT  rY   rZ   Úexpected_distr$  s          rf   Ú+test_pairwise_distances_data_derived_paramsrW  •  s|   € ô 
 sÔ	+ñ -Ü�i‰i×#Ñ# AÓ&ˆØ×Ñ˜iÓ(ˆä"¤5¨°6Ô#:Ó;ˆÜ�y‰yœ™}¨Q°vÀfÔMÓNÓOˆä˜˜mÔ,÷-÷ -ñ -ús   �A:BÂBc                 ó
  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t	        j
                  t        d| › d�¬«      5  t        ||| ¬«       d d d «       y # 1 sw Y   y xY w)Nr   r´  z+The '(V|VI)' parameter is required for the z metricr›   rC   )rN   rO   rP   rQ   r�   r�   r°   r#   )rD   rY   rZ   r]   s       rf   Ú1test_pairwise_distances_data_derived_params_errorrY  §  sv   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$€AØ×Ñ˜)Ó$€Aä	�‰ÜØ<¸V¸HÀGÐLô
ñ 0ô 	˜1˜a¨Õ/÷	0÷ 0ñ 0ús   Á!A9Á9B)Ú
braycurtisÚcanberraÚ	chebyshevÚcorrelationÚhammingrS  r	   rR  r  r   r   rB   Úy_is_xzY is Xz
Y is not Xc           	      ó¢  — t         j                  j                  d«      }|j                  d«      j	                  |d¬«      }i }|r|}t        t        || ¬«      «      }nÖ|j                  d«      j	                  |d¬«      }t        ||| ¬«      }| dk(  r?dt        j                  t        j                  ||g«      ddt         j                  ¬	«      i}nb| d
k(  r]dt         j                  j                  t        j                  t        j                  ||g«      j                  «      «      j                  i}t        ||fd| i|¤Ž}t!        ||«       y )Nr   r=   Fr@   rC   rR  ÚVrK   )r  ÚddofrS   rS  ÚVIrD   )rN   rO   rP   rQ   rR   r   r
   r   Úvarr=  rŽ   r   ÚinvÚcovrå  r#   r1   )	rD   rX   r_  rY   rZ   rø   r]   rV  r$  s	            rf   Ú)test_numeric_pairwise_distances_datatypesrg  ¶  s  € ô6 �)‰)×
Ñ
 Ó
"€Cà×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€Aà€FÙØˆÜ"¤5¨°6Ô#:Ó;‰à×Ñ˜fÓ%×,Ñ,¨\ÀÐ,ÓFˆÜ˜a ¨6Ô2ˆà�\Ò!Øœ2Ÿ6™6¤"§)¡)¨Q°¨FÓ"3¸!À!Ì2Ï:É:ÔVÐW‰FØ�}Ò$ØœBŸI™IŸM™M¬"¯&©&´·±¸A¸q¸6Ó1B×1DÑ1DÓ*EÓF×HÑHÐIˆFä˜a Ñ<¨6Ð<°VÑ<€Dä�D˜-Õ(r»   Úpairwise_distances_funcc                 óœ   — ddgdt         j                  gddgddgg} | ||d¬«      }t        j                  |«      j                  «       rJ ‚y)	z8Check that `nan_euclidean` is lenient with `nan` values.r   rK   rF   r�   r>   rH   rC   N)rN   rT   ÚisnanÚany)rh  rZ   Úoutputs      rf   Útest_nan_euclidean_supportrm  ç  sR   € ð ˆQˆ�!”R—V‘V�˜q !˜f q¨! fÐ-€AÙ$ Q¨°/ÔB€Fä�x‰x˜Ó×#Ñ#Ô%Ð%Ð%Ð%r»   c                  ó(  — t         j                  t         j                  gt         j                  t         j                  gt         j                  t         j                  gg} t        | | d¬«      }ddgddgddgg}t        ||d¬«      }t        ||«       y)zyCheck that the behavior of constant input is the same in the case of
    full of nan vector and full of zero vector.
    rH   rC   r   N)rN   rT   r$   r1   )ÚX_nanÚ
argmin_nanÚX_constÚargmin_consts       rf   Ú(test_nan_euclidean_constant_input_argminrs  ô  su   € ô
 �f‰f”b—f‘fÐ¤§¡¬¯©Ð/´"·&±&¼"¿&¹&Ð1AÐB€EÜ*¨5°%ÀÔP€Jà�1ˆv˜˜1�v  1˜vÐ&€GÜ,¨W°gÀoÔV€Lä�J Õ-r»   zX,Y,expected_distance)rù  ÚabÚabc)r×  r¯   r�   )r¯   r×  r¯   )r�   r¯   r×  rù  rt  r×  r¯   r�   c                 ó>   — d„ }t        | ||¬«      }t        ||«       y)z8Check pairwise_distances with lists of strings as input.c                 óV   — t        j                  t        | «      t        |«      z
  «      S rC  )rN   r  r  rÝ   s     rf   Údummy_string_similarityzLtest_pairwise_dist_custom_metric_for_string.<locals>.dummy_string_similarity  s   € Ü�v‰v”c˜!“fœs 1›v‘oÓ&Ð&r»   )rZ   r]   rD   N)r#   r1   )rZ   r]   Úexpected_distancerx  Úactual_distances        rf   Ú+test_pairwise_dist_custom_metric_for_stringr{    s#   € ò$'ô )¨1°Ð:QÔR€OÜ�OÐ%6Õ7r»   c                  óÀ   — d„ } t        j                  g d¢g d¢g d¢gt        ¬«      }t        j                  g d¢g d¢g d¢g«      }t        || ¬	«      }t	        ||«       y
)zjCheck that pairwise_distances does not convert boolean input to float
    when using a custom metric.
    c                 óV   — d| |z  j                  «       | |z  j                  «       z  z
  S )NrK   )rŸ   )Úv1Úv2s     rf   Údummy_bool_distzBtest_pairwise_dist_custom_metric_for_bool.<locals>.dummy_bool_dist   s&   € à�B˜‘G—=‘=“? b¨2¡g§]¡]£_Ñ4Ñ4Ð4r»   )rK   r   r   r   )rK   r   rK   r   )rK   rK   rK   rK   r­   )r×  rJ   ç      è?)rJ   r×  rJ   )r�  rJ   r×  )rZ   rD   N)rN   r²   r¡   r#   r1   )r€  rZ   ry  rz  s       rf   Ú)test_pairwise_dist_custom_metric_for_boolr‚    sV   € ò
5ô 	�‰’,¢ªlÐ;Ä4ÔH€AäŸ™âÚÚð	
óÐô )¨1°_ÔE€OÜ�OÐ%6Õ7r»   c                 ó¼   —  | t        j                  d«      «      g} | t        j                  d«      «      g} t        dd¬«      d„ t        ||«      D «       «       y )Nr«   rF   r   )rÐ   Ú
max_nbytesc              3   óN   K  — | ]  \  }} t        t        «      ||«      –— Œ y ­wrC  )r;   r   )rE  Úm1Úm2s      rf   rG  z9test_sparse_manhattan_readonly_dataset.<locals>.<genexpr><  s)   è ø€ ò %Ù17°°RÐ$ŒÔ#Ó$ R¨×,ñ%ùs   ‚#%)rN   r  r:   Úzip)rŠ   Ú	matrices1Ú	matrices2s      rf   Ú&test_sparse_manhattan_readonly_datasetr‹  4  sU   € ñ œrŸw™w v›Ó/Ð0€IÙœrŸw™w v›Ó/Ð0€Ið %„H�A !Ô$ñ %Ü;>¸yÈ)Ó;Tô%õ r»   )rB   )¦rƒ   Útypesr   ÚnumpyrN   r�   r   Úscipy.sparser   Úscipy.spatial.distancer   r   r   r	   r
   r   Úsklearnr   Úsklearn.exceptionsr   Úsklearn.metrics.pairwiser   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*   Úsklearn.preprocessingr+   Úsklearn.utils._array_apir,   r-   r.   r/   Úsklearn.utils._testingr0   r1   r2   r3   r4   Úsklearn.utils.fixesr5   r6   r7   r8   r9   Úsklearn.utils.parallelr:   r;   rg   ÚmarkÚparametrizer}   r†   r–   ÚDeprecationWarningr¥   r§   r¶   r¼   rW  rR   Ú_minkowski_kwdsrÉ   rŽ   r®  r¬   rÑ   rÚ   rà   rë   rñ   ró   rù   Úitemsrþ   r  Úthread_unsafer/  r4  r?  rI  rY  r°   r’   rl  rv  r‚  r„  r�  Úfilterwarningsr“  r²   rr   rš  r«  r°  r²  r¸  rº  rÁ  rÃ  ÚparamÚxfailrÊ  rÏ  ÚinfrÕ  r¿  rT   rá  rã  ré  rì  rñ  rý  r   r  r  r  r  r  r  r  r!  r)  r-  r5  r:  r?  rA  rF  rI  rO  rQ  rW  rY  rg  rm  rs  r{  r‚  r‹  )rR  rT  Ú	containers   000rf   ú<module>r£     s…  ðÛ Ý ã Û Ý Ý !÷÷ õ #Ý 4÷÷ ÷ ÷ ÷ ÷ ÷ õ õ> ,÷ó ÷õ ÷õ ÷ 5òLð^ ‡�×ÑØ.Ù-Ó/óð ‡�×Ñ˜Ò#GÓHñ'ó Ió	ð
'òB?ð$ ‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜¨.Ó9ñ><ó :ó :ó :ó :ð><ñF Ð,Ô-Ø‡�×Ñ˜Ð#=Ó>ñ:ó ?ó .ð:ò<2ð ‡�×Ñ˜Ð"4Ð6FÐ!GÓHñ%ó Ið%ò:Fð "˜Ÿ	™	 ! Q›×.Ñ.¨x¸eÐ.ÓDÈ1ÑM€òOð ‡�×ÑØà	˜[¨"Ð-àØØð	
ð ØØð	
ð
 
˜<¨(°A¨Ð7Ø	Ð.°¸#°Ð?ðóð$ ‡�×Ñ˜ 2§:¡:¨r¯z©z¸3Ð"?Ó@ñó Aó%ð&ð ‡�×ÑØ.Ù-Ó/óð ‡�×ÑØà	˜[¨"Ð-Ø	˜[¨"Ð-Ø	˜<¨(°A¨Ð7Ø	Ð.°¸#°Ð?Ø	˜;¨°#¨Ð7ðó	ñ5ó	ó	ð5òBIð ‡�×ÑØÚTóð ‡�×Ñ˜¨.Ó9ñó :ó	ð
ð> ‡�×ÑØ.Ù-Ó/óð ‡�×ÑØÚTóñ'ó	ó	ð'òDò&
7ð ‡�×Ñ˜Ð)?Ð)9×)?Ñ)?Ó)AÓBØ‡�×Ñ˜¨.Ó9ñ&ó :ó Cð&ò*ð, ‡�×ÑØ‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜¨.Ó9ñvAó :ó :ó ðvAòrò7ò"
4ð ‡�×ÑØá Ù$Ù+ðð -öàð )7ÔIòñð -öð ð )7ô 	
òñóñ(ó)ð(ð ‡�×ÑØ)ñ 5ØØ(ð	
ñ :ØØ0ð	
ñ
 
! *Ð.QÐRáØØAð	
ñ  ØØHð	
ñ ,ØØ<ð	
ð-óñ>ó?ð>ó7ð  ‡�×Ñ˜Ð#EÓFñ?ó Gð?ð ‡�×Ñ˜Ð#EÓFñ7ó Gð7ò*ð& ‡�×ÑÐNÓOñ!ó Pð!ðH ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ð
 ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ñ
%óóð%ð ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ñ
%óð
%ð@ ‡�×Ñ˜ t¨U mÓ4ñó 5ðò EðD ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ð
 ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ñ
+óóð+ð* ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ñ
+óð
+ð$ ‡�×Ñ˜Ò'8Ó9Ø‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ð
 ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ñ
4óóó :ð4ð( ‡�×Ñ˜Ò'8Ó9Ø‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ñ
4óó :ð4ð" ‡�×ÑØà	�‰�T˜4Ð Øˆ�‰Ø�J‰JØØØ—+‘+×#Ñ#Ð+MÐ#ÓNô		
ðóð ‡�×Ñ˜  G Ó-ñ	4ó .óð	4ð ‡�×Ñ˜ T¨5 MÓ2ñ3ó 3ð3ð ‡�×Ñ˜˜x˜rŸx™x¨"¯&ª&°!¨¨Ó6¸¸¿¹À1ÀrÇvÂvÀgÀ,ÀÓ8PÐQÓRØ‡�×Ñ˜˜x˜rŸx™x¨"¯&ª&°!¨¨Ó6¸¸¿¹À1ÀrÇvÂvÀgÀ,ÀÓ8PÐRVÐWÓXñ)ó Yó Sð)ð ‡�×ÑØà	ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	# W R§W¢W¨Q£Z°·²Ð8Ø	ˆ�‰�A�q�6˜A˜rŸvšv˜;Ð'Ó	(¨'¨"¯'ª'°!«*°b·f²fÐ=Ø	ˆ�‰�B—F’F˜A�;  B§F¢F Ð,Ó	-¨r¯vªv°r·v²vÐ>Ø	ˆ�‰�B—F’F˜A�; §¢¨ Ð,Ó	-¨w¨r¯wªw°q«z¸2¿6º6ÐBØ	ˆ�‰�A�r—v’v�;  B§F¢F Ð,Ó	-¨w¨r¯wªw°q«z¸2¿6º6ÐBØ	ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	# W R§W¢W¨Q£Z°Ð4Ø	ˆ�‰�A�q�6˜A˜r˜7Ð#Ó	$ g b§g¢g¨a£j°"Ð5Ø	ˆ�‰�B˜�7˜Q ˜GÐ$Ó	% r§v¢v¨rÐ2Ø	ˆ�‰�B˜�7˜R ˜GÐ$Ó	% w r§w¢w¨q£z°2Ð6Ø	ˆ�‰�A�r�7˜Q ˜GÐ$Ó	% w r§w¢w¨q£z°2Ð6ðóñ-óð-ð  ‡�×Ñ˜¨2¯6ª6°2¨,Ó7ñ	$ó 8ð	$ð ‡�×Ñ˜¨2¯6ª6°2¨,Ó7ñ1ó 8ð1ðh ‡�×Ñ˜¨2¯6ª6°2¨,Ó7ñó 8ðò(ò<ò6#ò#ò#ò31ðl ‡�×ÑØàØØØØØðó
ñ ó
ð ð ‡�×ÑØàØØØØØðó
ð ‡�×Ñ˜¨.Ó9ñó :ó
ðòCò-ò	/ð ‡�×ÑØØ�Ð Ð+<Ð =Ð>óð ‡�×Ñ˜¨.Ó9ñ&ó :ó	ð
&ð* ‡�×Ñ˜¨.Ó9ñ ó :ð ò('ò'ò 	$ò&ð ‡�×Ñ˜¨.Ó9ñ5ó :ð5ò,#ò	.ò%ð0 ‡�×Ñ˜ A q 6Ó*Ø‡�×Ñ˜ L°-Ð#@ÓAØ‡�×ÑØÐ(Ð*DÐEóñ
-óó Bó +ð

-ð ‡�×Ñ˜ L°-Ð#@ÓAñ0ó Bð0ð ‡�×ÑØòóð" ‡�×Ñ˜ D¨% =°xÀÐ6NÐÓOñ)ó Pó#ð$)ð> ‡�×ÑØØÐ2Ð4QÐRóñ&ó	ð&ò.ð ‡�×ÑØò ØÚšoªÐ?ð	
ò Ø�$ˆKØ�3ˆZ˜#˜s˜ c¨3 ZÐ0ð	
ðóñ8óð8ò8ð2 ‡�×ÑØ‡�×Ñ˜¨.Ó9ñó :ó ñùòO!ùòùòn Iùò
 Iùò Iùòp Iùò
 Iùò4 Iùò0 Iùò
 Iùò4 IsB   Ð9|Ñ| Ô?|%Ö|*×|/Ù|4Ú|9Û&|>Ý}Þ}à}