Ë
    ÏÍ:jLÏ  ã                   ó   — d dl Z d dlZd dlmZmZmZmZmZmZ d dl	m
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 d dlmZ d dlmZmZ d dlmZmZ d d	lmZmZmZm Z   e	jB                  eeg¬
«      d„ «       Z"d„ Z#d„ Z$ G d„ d«      Z%e# G d„ de%«      «       Z&e# G d„ de&«      «       Z'e# G d„ de%«      «       Z(e# G d„ de(«      «       Z) G d„ d«      Z* G d„ d«      Z+ G d„ d«      Z,e# G d„ de,«      «       Z-e# G d „ d!e,«      «       Z.e# G d"„ d#e,«      «       Z/e# G d$„ d%e-«      «       Z0e# G d&„ d'e-«      «       Z1e# G d(„ d)e-«      «       Z2e# G d*„ d+e.«      «       Z3e# G d,„ d-e-«      «       Z4e# G d.„ d/e-«      «       Z5d0„ Z6e	jn                  jq                  d1¬2«      e	jn                  js                  d3«      d4„ «       «       Z:e	jn                  jq                  d1¬2«      e	jn                  js                  d3«      d5„ «       «       Z; G d6„ d7«      Z<e# G d8„ d9e<«      «       Z=e# G d:„ d;e<«      «       Z>e# G d<„ d=e=«      «       Z?e# G d>„ d?e>«      «       Z@e# G d@„ dAe=«      «       ZAe# G dB„ dCe>«      «       ZB G dD„ dE«      ZCdF„ ZDdG„ ZEdH„ ZFdI„ ZG G dJ„ dK«      ZHe# G dL„ dMeH«      «       ZI G dN„ dO«      ZJe# G dP„ dQeJ«      «       ZKdR„ ZLdS„ ZMdT„ ZNdU„ ZOdV„ ZPdW„ ZQdX„ ZRdY„ ZSdZ„ ZTd[„ ZUd\„ ZVd]„ ZWd^„ ZXd_„ ZYd`„ ZZda„ Z[e	jn                  js                  db«      dc„ «       Z\dd„ Z]de„ Z^df„ Z_dg„ Z`e	jn                  jÂ                  dh„ «       Zbdi„ Zce	jn                  js                  db«      dj„ «       Zddk„ Zedl„ Zfdm„ Zgdn„ Zhdo„ Zidp„ Zjdq„ Zke	jn                  jÙ                  drg ds¢«      dt„ «       Zme# G du„ dv«      «       Zndw„ Zodx„ Zpdy„ Zqe	jn                  jq                  dz¬2«      d{„ «       Zrd|„ Zse	jn                  jÙ                  d}eeg«      d~„ «       Ztd„ Zud€„ Zve	jn                  jÙ                  d�eeg«      d‚„ «       Zwdƒ„ Zxy)„é    N)Úassert_equalÚassert_array_equalÚassert_Úassert_almost_equalÚassert_array_almost_equalÚassert_allclose)Úraises)Ú_run_concurrent_barrier)ÚKDTreeÚ	RectangleÚdistance_matrixÚcKDTree)ÚcKDTreeNode)Úminkowski_distanceÚminkowski_distance_p)ÚcdistÚ	minkowski)Ú	dok_arrayÚ	coo_arrayÚ
dok_matrixÚ
coo_matrix)Úparamsc                 ó   — | j                   S ©N)Úparam)Úrequests    út/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/scipy/spatial/tests/test_kdtree.pyÚkdtree_typer      s   € à�=‰=Ðó    c                 ó   — | j                   j                  d«      st        d«      ‚t        t        fD ]X  }| j                   dd dz   |j                   z   }|t        «       v rt        d|z   «      ‚t        || fd|i«      }|t        «       |<   ŒZ | S )z‹Class decorator to create test cases for KDTree and cKDTree

    Tests use the class variable ``kdtree_type`` as the tree constructor.
    Ú_Testz)Expected a class name starting with _Testé   NÚ_zDuplicated test name: r   )Ú__name__Ú
startswithÚRuntimeErrorr   r   ÚglobalsÚtype)ÚklsÚtreeÚ	test_nameÚ	test_cases       r   Ú
KDTreeTestr-      s™   € ð
 �<‰<×"Ñ" 7Ô+ÜÐFÓGÐGäœÐ!ò )ˆØ—L‘L  Ð$ sÑ*¨T¯]©]Ñ:ˆ	àœ›	Ñ!ÜÐ7¸)ÑCÓDÐDô ˜ S F¨]¸DÐ,AÓBˆ	Ø(Œ‹	�)Òð)ð €Jr   c                 óv   — | |z
  }||d|z  kD  xx   |z  cc<   ||d|z  k  xx   |z  cc<   t        |d|«      }|S )Nç      à?g      à¿r   ©r   )ÚaÚbÚpÚboxsizeÚdiffÚds         r   Údistance_boxr7   .   sP   € Øˆq‰5€DØˆ��g‘Ñ	Ó 'Ñ)ÓØˆ��w‘Ñ	Ó 7Ñ*ÓÜ�$˜˜1Ó€AØ€Hr   c                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚConsistencyTestsc                 ó   — t        |||«      S r   r0   ©Úselfr1   r2   r3   s       r   ÚdistancezConsistencyTests.distance6   ó   € Ü˜˜A˜qÓ!Ð!r   c                 óŠ  — | j                   }| j                  j                  |d«      \  }}t        |dz  t	        j
                  || j                  |   z
  dz  «      «       d}t        t	        j                  t	        j
                  | j                  |t        j                  d d …f   z
  dz  d¬«      |dz  |z
  kD  «      «       y )Nr"   é   ç:Œ0âŽyE>©Úaxis)
ÚxÚkdtreeÚqueryr   ÚnpÚsumÚdatar   ÚallÚnewaxis)r<   rD   r6   ÚiÚepss        r   Útest_nearestzConsistencyTests.test_nearest9   s–   € Ø�F‰FˆØ�{‰{× Ñ   AÓ&‰ˆˆ1Ü˜A˜q™D¤"§&¡&¨!¨D¯I©I°a©L©.¸1Ñ)<Ó"=Ô>ØˆÜ”—‘”r—v‘v˜tŸy™y¨¬2¯:©:²q¨=Ñ)9Ñ9¸AÑ=ÀAÔFÈÈAÉÈcÉÑQÓRÕSr   c                 óþ  — | j                   }| j                  }| j                  j                  ||«      \  }}t	        j
                  |«      }|t	        j                  |«         }t        |dz  t	        j                  || j                  |   z
  dz  «      «       d}t        t	        j                  t	        j                  | j                  |t        j                  d d …f   z
  dz  d¬«      |dz  |z   k  «      |«       y )Nr@   rA   r"   rB   )rD   ÚmrE   rF   rG   ÚamaxÚargmaxr   rH   rI   r   rK   )r<   rD   rP   ÚddÚiir6   rL   rM   s           r   Útest_m_nearestzConsistencyTests.test_m_nearest@   sÄ   € Ø�F‰FˆØ�F‰FˆØ—‘×"Ñ" 1 aÓ(‰ˆˆBÜ�G‰G�B‹KˆØŒr�y‰y˜‹}ÑˆÜ˜A˜q™D¤"§&¡&¨!¨D¯I©I°a©L©.¸1Ñ)<Ó"=Ô>ØˆÜÜ�F‰F”2—6‘6˜4Ÿ9™9 Q¤r§z¡z²1 }Ñ%5Ñ5¸Ñ9ÀÔBÀQÈÁTÈ#ÁXÑMÓNØõ	
r   c           	      ó$  — | j                   }| j                  }| j                  j                  || j                  j                  |¬«      \  }}d}d}t        ||«      D ]m  \  }}|t        j                  k(  rŒ|dz  }t        |dz  t        j                  || j                  |   z
  dz  «      «       t        |||z   k  d|d›d|d›�«       Œo t        t        j                  | j                  | j                  |d«      |dz  |z   k  «      |«       y )	N©ÚkÚdistance_upper_boundrA   r   r"   r@   únear_d=Úgú should be less than )rD   r6   rE   rF   ÚnÚziprG   Úinfr   rH   rI   r   r   r=   ©	r<   rD   r6   rS   rT   rM   ÚhitsÚnear_dÚnear_is	            r   Útest_points_nearz!ConsistencyTests.test_points_nearM   sù   € Ø�F‰FˆØ�F‰FˆØ—‘×"Ñ" 1¨¯©¯©ÈAÐ"ÓN‰ˆˆBØˆØˆÜ! " b›kò 	T‰NˆF�FØœŸ™ÒØØ�A‰IˆDÜ ¨¡	¬2¯6©6°1°T·Y±Y¸vÑ5FÑ3FÈÑ2JÓ+KÔLÜ�F˜Q˜s™U‘N g¨f°Q¨ZÐ7LÈQÈqÈEÐ$RÕSð	Tô 	”R—V‘V˜DŸM™M¨$¯)©)°Q¸Ó:¸QÀ¹TÀ#¹XÑEÓFÈÕMr   c           	      ó
  — | j                   }| j                  }| j                  j                  || j                  j                  d|¬«      \  }}d}d}t        ||«      D ]b  \  }}|t        j                  k(  rŒ|dz  }t        || j                  || j                  |   d«      «       t        |||z   k  d|d›d|d›�«       Œd t        t        j                  | j                  | j                  |d«      ||z   k  «      |«       y )Nr"   ©rX   r3   rY   rA   r   rZ   r[   r\   )rD   r6   rE   rF   r]   r^   rG   r_   r   r=   rI   r   r   rH   r`   s	            r   Útest_points_near_l1z$ConsistencyTests.test_points_near_l1[   sî   € Ø�F‰FˆØ�F‰FˆØ—‘×"Ñ" 1¨¯©¯©¸ÐQRÐ"ÓS‰ˆˆBØˆØˆÜ! " b›kò 	T‰NˆF�FØœŸ™ÒØØ�A‰IˆDÜ ¨¯©°a¸¿¹À6Ñ9JÈAÓ(NÔOÜ�F˜Q˜s™U‘N g¨f°Q¨ZÐ7LÈQÈqÈEÐ$RÕSð	Tô 	”R—V‘V˜DŸM™M¨$¯)©)°Q¸Ó:¸Q¸s¹UÑBÓCÀTÕJr   c           	      ó^  — | j                   }| j                  }| j                  j                  || j                  j                  t
        j                  |¬«      \  }}d}d}t        ||«      D ]p  \  }}|t
        j                  k(  rŒ|dz  }t        || j                  || j                  |   t
        j                  «      «       t        |||z   k  d|d›d|d›�«       Œr t        t        j                  | j                  | j                  |t
        j                  «      ||z   k  «      |«       y )Nrf   rA   r   r"   rZ   r[   r\   )rD   r6   rE   rF   r]   rG   r_   r^   r   r=   rI   r   r   rH   r`   s	            r   Útest_points_near_linfz&ConsistencyTests.test_points_near_linfi   sú   € Ø�F‰FˆØ�F‰FˆØ—‘×"Ñ" 1¨¯©¯©¼¿¹ÐVWÐ"ÓX‰ˆˆBØˆØˆÜ! " b›kò 	T‰NˆF�FØœŸ™ÒØØ�A‰IˆDÜ ¨¯©°a¸¿¹À6Ñ9JÌBÏFÉFÓ(SÔTÜ�F˜Q˜s™U‘N g¨f°Q¨ZÐ7LÈQÈqÈEÐ$RÕSð	Tô 	”R—V‘V˜DŸM™M¨$¯)©)°Q¼¿¹Ó?À!ÀCÁ%ÑGÓHÈ$ÕOr   c                 ó  — | j                   }| j                  }d}| j                  j                  ||«      \  }}| j                  j                  |||¬«      \  }}t	        t        j                  ||d|z   z  k  «      «       y )Nçš™™™™™¹?)rM   r"   )rD   rX   rE   rF   r   rG   rJ   )r<   rD   rX   rM   Úd_realÚi_realr6   rL   s           r   Útest_approxzConsistencyTests.test_approxw   sp   € Ø�F‰FˆØ�F‰FˆØˆØŸ™×*Ñ*¨1¨aÓ0‰ˆ�Ø�{‰{× Ñ   A¨3Ð Ó/‰ˆˆ1Ü”—‘�q˜F A c¡E™NÑ*Ó+Õ,r   N)
r$   Ú
__module__Ú__qualname__r=   rN   rU   rd   rg   ri   rn   © r   r   r9   r9   5   s)   „ ò"òTò
òNòKòPó-r   r9   c                   ó   — e Zd Zd„ Zy)Ú_Test_randomc                 óŒ  — d| _         d| _        t        j                  j	                  d«       t        j                  j                  | j                   | j                  «      | _        | j                  | j                  d¬«      | _        t        j                  j                  | j                  «      | _	        d| _
        d| _        y )Néd   é   éÒ  r@   ©Úleafsizeçš™™™™™É?é
   )r]   rP   rG   ÚrandomÚseedÚrandnrI   r   rE   rD   r6   rX   ©r<   s    r   Úsetup_methodz_Test_random.setup_method‚   s   € ØˆŒØˆŒÜ
�	‰	�‰�tÔÜ—I‘I—O‘O D§F¡F¨D¯F©FÓ3ˆŒ	Ø×&Ñ& t§y¡y¸1Ð&Ó=ˆŒÜ—‘—‘ §¡Ó(ˆŒØˆŒØˆ�r   N©r$   ro   rp   r€   rq   r   r   rs   rs   €   s   „ ór   rs   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_random_farc                 ó„   •— t         ‰| �  «        t        j                  j	                  | j
                  «      dz   | _        y )Nr{   )Úsuperr€   rG   r|   r~   rP   rD   ©r<   Ú	__class__s    €r   r€   z_Test_random_far.setup_method�   s+   ø€ Ü‰ÑÔÜ—‘—‘ §¡Ó(¨Ñ+ˆ�r   ©r$   ro   rp   r€   Ú__classcell__©r‡   s   @r   rƒ   rƒ   �   s   ø„ ÷,ð ,r   rƒ   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)Ú_Test_smallc                 ó¶  — t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g«      | _        | j                  | j                  «      | _        | j                  j
                  | _        | j                  j                  | _        t         j                  j                  d	«       t         j                  j                  d
«      | _
        d| _        d| _        y )N©r   r   r   ©r   r   r"   ©r   r"   r   ©r   r"   r"   ©r"   r   r   ©r"   r   r"   ©r"   r"   r   ©r"   r"   r"   rw   é   r/   rv   )rG   ÚarrayrI   r   rE   r]   rP   r|   r}   r~   rD   r6   rX   r   s    r   r€   z_Test_small.setup_method–   s–   € Ü—H‘HšiÚ'Ú'Ú'Ú'Ú'Ú'Ú'ð)ó *ˆŒ	ð ×&Ñ& t§y¡yÓ1ˆŒØ—‘—‘ˆŒØ—‘—‘ˆŒÜ
�	‰	�‰�tÔÜ—‘—‘ Ó#ˆŒØˆŒØˆ�r   c                 óP   — t        | j                  j                  dd«      d«       y )N©r   r   rk   r"   )rk   r   ©r   rE   rF   r   s    r   rN   z_Test_small.test_nearest§   s!   € ÜØ—‘×!Ñ! +¨qÓ1Øõ	r   c                 ó\   — t        | j                  j                  dd«      ddgddgf«       y )Nr™   r@   rk   gÍÌÌÌÌÌì?r   r"   rš   r   s    r   Útest_nearest_twoz_Test_small.test_nearest_two¬   s.   € ÜØ—‘×!Ñ! +¨qÓ1Ø�s�˜a ˜VÐ$õ	&r   N)r$   ro   rp   r€   rN   rœ   rq   r   r   rŒ   rŒ   ”   s   „ òò"ó
&r   rŒ   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_small_nonleafc                 óf   •— t         ‰| �  «        | j                  | j                  d¬«      | _        y )Nr"   rx   )r…   r€   r   rI   rE   r†   s    €r   r€   z _Test_small_nonleaf.setup_method´   s)   ø€ Ü‰ÑÔØ×&Ñ& t§y¡y¸1Ð&Ó=ˆ�r   rˆ   rŠ   s   @r   rž   rž   ²   s   ø„ ÷>ð >r   rž   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTest_vectorization_KDTreec                 óœ   — t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g«      | _        t        | j                  «      | _        y ©	NrŽ   r�   r�   r‘   r’   r“   r”   r•   )rG   r—   rI   r   rE   r   s    r   r€   z&Test_vectorization_KDTree.setup_methodº   s@   € Ü—H‘HšiÚ'Ú'Ú'Ú'Ú'Ú'Ú'ð)ó *ˆŒ	ô ˜TŸY™YÓ'ˆ�r   c                 óö   — | j                   j                  t        j                  g d¢«      «      \  }}t	        t        |t        «      «       t	        t        j                  |t        j                  «      «       y ©NrŽ   )	rE   rF   rG   r—   r   Ú
isinstanceÚfloatÚ
issubdtypeÚsignedinteger©r<   r6   rL   s      r   Útest_single_queryz+Test_vectorization_KDTree.test_single_queryÅ   sK   € Ø�{‰{× Ñ ¤§¡ª)Ó!4Ó5‰ˆˆ1Ü”
˜1œeÓ$Ô%Ü”—‘˜a¤×!1Ñ!1Ó2Õ3r   c                 óâ   — | j                   j                  t        j                  d«      «      \  }}t	        t        j
                  |«      d«       t	        t        j
                  |«      d«       y ©N©r@   rv   r–   )r@   rv   ©rE   rF   rG   Úzerosr   Úshaperª   s      r   Útest_vectorized_queryz/Test_vectorization_KDTree.test_vectorized_queryÊ   óG   € Ø�{‰{× Ñ ¤§¡¨)Ó!4Ó5‰ˆˆ1Ü”R—X‘X˜a“[ &Ô)Ü”R—X‘X˜a“[ &Õ)r   c           	      ó  — d}| j                   j                  |z   }| j                   j                  t        j                  g d¢«      |¬«      \  }}t        t        j                  |«      |f«       t        t        j                  |«      |f«       t        t        j                  t        j                  || d  «       «      «       t        t        j                  || d  | j                   j                  k(  «      «       y ©Né   rŽ   ©rX   )
rE   r]   rF   rG   r—   r   r±   r   rJ   Úisfinite©r<   ÚsÚkkr6   rL   s        r   Ú$test_single_query_multiple_neighborsz>Test_vectorization_KDTree.test_single_query_multiple_neighborsÏ   s±   € ØˆØ�[‰[�]‰]˜1‰_ˆØ�{‰{× Ñ ¤§¡ª)Ó!4¸Ð Ó;‰ˆˆ1Ü”R—X‘X˜a“[ 2 %Ô(Ü”R—X‘X˜a“[ 2 %Ô(Ü”—‘œŸ™ A q b c FÓ+Ð+Ó,Ô-Ü”—‘�q˜!˜˜�v §¡§¡Ñ.Ó/Õ0r   c                 ó*  — d}| j                   j                  |z   }| j                   j                  t        j                  d«      |¬«      \  }}t        t        j                  |«      dd|f«       t        t        j                  |«      dd|f«       t        t        j                  t        j                  |d d …d d …| d …f   «       «      «       t        t        j                  |d d …d d …| d …f   | j                   j                  k(  «      «       y ©Nr¶   r®   r·   r@   rv   ©
rE   r]   rF   rG   r°   r   r±   r   rJ   r¸   r¹   s        r   Ú(test_vectorized_query_multiple_neighborszBTest_vectorization_KDTree.test_vectorized_query_multiple_neighborsØ   óÅ   € ØˆØ�[‰[�]‰]˜1‰_ˆØ�{‰{× Ñ ¤§¡¨)Ó!4¸Ð Ó;‰ˆˆ1Ü”R—X‘X˜a“[ 1 a¨ *Ô-Ü”R—X‘X˜a“[ 1 a¨ *Ô-Ü”—‘œŸ™ A¢aª¨Q¨B©C i¡LÓ1Ð1Ó2Ô3Ü”—‘�qššA ˜r™s˜‘| t§{¡{§}¡}Ñ4Ó5Õ6r   c                 ó¢   — d}t        j                  t        d¬«      5  | j                  j	                  |d ¬«       d d d «       y # 1 sw Y   y xY w)Nç      ð?zk must be an integer or*©Úmatchr·   )Úpytestr	   Ú
ValueErrorrE   rF   )r<   rD   s     r   Útest_query_raises_for_k_nonez6Test_vectorization_KDTree.test_query_raises_for_k_noneá   sB   € ØˆÜ�]‰]œ:Ð-GÔHñ 	)Ø�K‰K×Ñ˜a 4ÐÔ(÷	)÷ 	)ñ 	)ús   žAÁAN)	r$   ro   rp   r€   r«   r²   r¼   rÀ   rÈ   rq   r   r   r¡   r¡   ¹   s    „ ò	(ò4ò
*ò
1ò7ó)r   r¡   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTest_vectorization_cKDTreec                 óœ   — t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g«      | _        t        | j                  «      | _        y r£   )rG   r—   rI   r   rE   r   s    r   r€   z'Test_vectorization_cKDTree.setup_methodç   s@   € Ü—H‘HšiÚ'Ú'Ú'Ú'Ú'Ú'Ú'ð)ó *ˆŒ	ô ˜dŸi™iÓ(ˆ�r   c                 ó¨   — | j                   j                  g d¢«      \  }}t        t        |t        «      «       t        t        |t
        «      «       y r¥   )rE   rF   r   r¦   r§   Úintrª   s      r   r«   z,Test_vectorization_cKDTree.test_single_queryò   s8   € Ø�{‰{× Ñ ¢Ó+‰ˆˆ1Ü”
˜1œeÓ$Ô%Ü”
˜1œcÓ"Õ#r   c                 óâ   — | j                   j                  t        j                  d«      «      \  }}t	        t        j
                  |«      d«       t	        t        j
                  |«      d«       y r­   r¯   rª   s      r   r²   z0Test_vectorization_cKDTree.test_vectorized_query÷   r³   r   c                 óL  — t         j                  j                  d«       t         j                  j                  dd«      j                  }| j
                  j                  |«      \  }}t        |||«      D ]-  \  }}}t        | j
                  j                  |«      ||f«       Œ/ y )Nrw   r–   éè  )	rG   r|   r}   r~   ÚTrE   rF   r^   r   )r<   ÚqsÚdsÚi_sÚqr6   rL   s          r   Ú*test_vectorized_query_noncontiguous_valueszETest_vectorization_cKDTree.test_vectorized_query_noncontiguous_valuesü   s   € Ü
�	‰	�‰�tÔÜ�Y‰Y�_‰_˜Q Ó%×'Ñ'ˆØ—+‘+×#Ñ# BÓ'‰ˆˆCÜ˜2˜r 3Ó'ò 	7‰GˆAˆq�!Ü˜Ÿ™×*Ñ*¨1Ó-°°1¨vÕ6ñ	7r   c           	      óÜ  — d}| j                   j                  |z   }| j                   j                  g d¢|¬«      \  }}t        t	        j
                  |«      |f«       t        t	        j
                  |«      |f«       t        t	        j                  t	        j                  || d  «       «      «       t        t	        j                  || d  | j                   j                  k(  «      «       y rµ   )	rE   r]   rF   r   rG   r±   r   rJ   r¸   r¹   s        r   r¼   z?Test_vectorization_cKDTree.test_single_query_multiple_neighbors  s¨   € ØˆØ�[‰[�]‰]˜1‰_ˆØ�{‰{× Ñ ¢¨bÐ Ó1‰ˆˆ1Ü”R—X‘X˜a“[ 2 %Ô(Ü”R—X‘X˜a“[ 2 %Ô(Ü”—‘œŸ™ A q b c FÓ+Ð+Ó,Ô-Ü”—‘�q˜!˜˜�v §¡§¡Ñ.Ó/Õ0r   c                 ó*  — d}| j                   j                  |z   }| j                   j                  t        j                  d«      |¬«      \  }}t        t        j                  |«      dd|f«       t        t        j                  |«      dd|f«       t        t        j                  t        j                  |d d …d d …| d …f   «       «      «       t        t        j                  |d d …d d …| d …f   | j                   j                  k(  «      «       y r¾   r¿   r¹   s        r   rÀ   zCTest_vectorization_cKDTree.test_vectorized_query_multiple_neighbors  rÁ   r   N)	r$   ro   rp   r€   r«   r²   rÖ   r¼   rÀ   rq   r   r   rÊ   rÊ   æ   s    „ ò	)ò$ò
*ò
7ò1ó7r   rÊ   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)Úball_consistencyç        c                 ó(   — t        |dz  |dz  |«      S ©NrÃ   r0   r;   s       r   r=   zball_consistency.distance  s   € Ü˜˜S™ ! c¡'¨1Ó-Ð-r   c                 ó€  — t        j                  | j                  «      }t        j                  | j                  |j
                  d d «      }| j                  j                  || j                  | j                  | j                  ¬«      }t        |«      D ]§  \  }}| j                  | j                  |   ||   | j                  «      ||   d| j                  z   z  z
  }| j                  | j                  |   ||   | j                  «      ||   d| j                  z   z  z   }t        || j                  |z  k  d«       Œ© y )Néÿÿÿÿ©r3   rM   rÃ   T)rG   Ú
atleast_2drD   Úbroadcast_tor6   r±   rÑ   Úquery_ball_pointr3   rM   Ú	enumerater=   rI   r   Útol)r<   rD   r6   ÚlrL   ÚindÚdistÚnorms           r   Útest_in_ballzball_consistency.test_in_ball  sù   € Ü�M‰M˜$Ÿ&™&Ó!ˆÜ�O‰O˜DŸF™F A§G¡G¨C¨R LÓ1ˆØ�F‰F×#Ñ# A t§v¡v°·±¸T¿X¹XÐ#ÓFˆÜ “lò 	=‰FˆAˆsØ—=‘= §¡¨3¡°°1±°t·v±vÓ>ÀÀ1ÁÀrÈ$Ï(É(Á{ÑASÑSˆDØ—=‘= §¡¨3¡°°1±°t·v±vÓ>ÀÀ1ÁÀrÈ$Ï(É(Á{ÑASÑSˆDÜ˜t d§h¡h°¡oÑ5°tÕ<ñ	=r   c                 óê  — t        j                  | j                  «      }t        j                  | j                  |j
                  d d «      }| j                  j                  || j                  | j                  | j                  ¬«      }t        |«      D ]Ü  \  }}t        j                  | j                  j                  t        ¬«      }d||<   | j                  | j                  |   ||   | j                  «      ||   d| j                  z   z  z
  }| j                  | j                  |   ||   | j                  «      ||   d| j                  z   z  z   }t!        || j"                   |z  kD  d«       ŒÞ y )Nrß   rà   ©ÚdtypeFrÃ   T)rG   rá   rD   râ   r6   r±   rÑ   rã   r3   rM   rä   Úonesr]   Úboolr=   rI   r   rå   )	r<   rD   r6   ræ   rL   rç   Úcrè   ré   s	            r   Útest_found_allzball_consistency.test_found_all$  s  € Ü�M‰M˜$Ÿ&™&Ó!ˆÜ�O‰O˜DŸF™F A§G¡G¨C¨R LÓ1ˆØ�F‰F×#Ñ# A t§v¡v°·±¸T¿X¹XÐ#ÓFˆÜ “lò 	>‰FˆAˆsÜ—‘˜Ÿ™Ÿ™¬Ô-ˆAØˆAˆc‰FØ—=‘= §¡¨1¡¨q°©t°T·V±VÓ<¸qÀ¹tÀRÈÏÉÁ[Ñ?QÑQˆDØ—=‘= §¡¨1¡¨q°©t°T·V±VÓ<¸qÀ¹tÀRÈÏÉÁ[Ñ?QÑQˆDÜ˜t t§x¡x i°$Ñ&6Ñ6¸Õ=ñ	>r   N)r$   ro   rp   rå   r=   rê   rñ   rq   r   r   rÚ   rÚ     s   „ Ø
€Cò.ò=ó	>r   rÚ   c                   ó   — e Zd Zd„ Zy)Ú_Test_random_ballc                 óJ  — d}d}t         j                  j                  d«       t         j                  j                  ||«      | _        | j                  | j                  d¬«      | _        t         j                  j                  |«      | _        d| _        d| _	        d| _
        y )	Nru   rv   rw   r@   rx   ç       @r   rz   )rG   r|   r}   r~   rI   r   rÑ   rD   r3   rM   r6   ©r<   r]   rP   s      r   r€   z_Test_random_ball.setup_method1  sv   € ØˆØˆÜ
�	‰	�‰�tÔÜ—I‘I—O‘O A qÓ)ˆŒ	Ø×!Ñ! $§)¡)°aÐ!Ó8ˆŒÜ—‘—‘ Ó#ˆŒØˆŒØˆŒØˆ�r   Nr�   rq   r   r   ró   ró   /  s   „ ó	r   ró   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú_Test_random_ball_periodicc                 ó   — t        |||d«      S rÝ   ©r7   r;   s       r   r=   z#_Test_random_ball_periodic.distance?  ó   € Ü˜A˜q ! SÓ)Ð)r   c                 ó>  — d}d}t         j                  j                  d«       t         j                  j                  ||f¬«      | _        | j                  | j                  dd¬«      | _        t        j                  |d«      | _        d	| _	        d
| _
        d| _        y )Né'  rv   rw   ©Úsizer@   r"   ©ry   r4   rk   rõ   r   rz   )rG   r|   r}   ÚuniformrI   r   rÑ   ÚfullrD   r3   rM   r6   rö   s      r   r€   z'_Test_random_ball_periodic.setup_methodB  s|   € ØˆØˆÜ
�	‰	�‰�tÔÜ—I‘I×%Ñ%¨A¨q¨6Ð%Ó2ˆŒ	Ø×!Ñ! $§)¡)°aÀÐ!ÓCˆŒÜ—‘˜˜C“ˆŒØˆŒØˆŒØˆ�r   c                 ó°  — | j                   j                  | j                  dz   | j                  | j                  | j
                  ¬«      }|D ]\  }t        | j                  | j                  |   | j                  | j                  «      | j                  d| j
                  z   z  k  «       Œ^ | j                   j                  | j                  dz
  | j                  | j                  | j
                  ¬«      }|D ]\  }t        | j                  | j                  |   | j                  | j                  «      | j                  d| j
                  z   z  k  «       Œ^ y )NrÃ   rà   )	rÑ   rã   rD   r6   r3   rM   r   r=   rI   )r<   ræ   rL   s      r   Útest_in_ball_outsidez/_Test_random_ball_periodic.test_in_ball_outsideM  sü   € Ø�F‰F×#Ñ# D§F¡F¨S¡L°$·&±&¸D¿F¹FÈÏÉÐ#ÓQˆØò 	YˆAÜ�D—M‘M $§)¡)¨A¡,°·±¸¿¹Ó?À4Ç6Á6È2ÈdÏhÉhÉ;ÑCWÑWÕXð	Yà�F‰F×#Ñ# D§F¡F¨S¡L°$·&±&¸D¿F¹FÈÏÉÐ#ÓQˆØò 	YˆAÜ�D—M‘M $§)¡)¨A¡,°·±¸¿¹Ó?À4Ç6Á6È2ÈdÏhÉhÉ;ÑCWÑWÕXñ	Yr   c                 ó6  — t        j                  | j                  j                  t        ¬«      }| j                  j                  | j                  dz   | j                  | j                  | j                  ¬«      }d||<   t        j                  | j                  | j                  |   | j                  | j                  «      | j                  d| j                  z   z  k\  «      sJ ‚| j                  j                  | j                  dz
  | j                  | j                  | j                  ¬«      }d||<   t        j                  | j                  | j                  |   | j                  | j                  «      | j                  d| j                  z   z  k\  «      sJ ‚y )Nrì   rÃ   rà   F)rG   rî   rÑ   r]   rï   rã   rD   r6   r3   rM   rJ   r=   rI   )r<   rð   ræ   s      r   Útest_found_all_outsidez1_Test_random_ball_periodic.test_found_all_outsideU  s(  € Ü�G‰G�D—F‘F—H‘H¤DÔ)ˆØ�F‰F×#Ñ# D§F¡F¨S¡L°$·&±&¸D¿F¹FÈÏÉÐ#ÓQˆØˆˆ!‰Ü�v‰vØ�M‰M˜$Ÿ)™) A™,¨¯©°·±Ó7¸4¿6¹6À2ÀdÇhÁhÁ;Ñ;OÑOô
ð 	
ð 
ð �F‰F×#Ñ# D§F¡F¨S¡L°$·&±&¸D¿F¹FÈÏÉÐ#ÓQˆØˆˆ!‰Ü�v‰vØ�M‰M˜$Ÿ)™) A™,¨¯©°·±Ó7¸4¿6¹6À2ÀdÇhÁhÁ;Ñ;OÑOô
ð 	
ñ 
r   N)r$   ro   rp   r=   r€   r  r  rq   r   r   rø   rø   =  s   „ ò*ò	òYó
r   rø   c                   ó   — e Zd ZdZd„ Zy)Ú"_Test_random_ball_largep_issue9890g‚vIhÂ%<=c                 ó(  — d}d}t         j                  j                  d«       t         j                  j                  dd||f¬«      | _        | j                  | j                  «      | _        | j                  | _        d| _        d| _	        d| _
        y )NrÐ   r@   é{   ru   rþ   r   r{   )rG   r|   r}   ÚrandintrI   r   rÑ   rD   r3   rM   r6   rö   s      r   r€   z/_Test_random_ball_largep_issue9890.setup_methodj  ss   € ØˆØˆÜ
�	‰	�‰�sÔÜ—I‘I×%Ñ% c¨4°q¸!°fÐ%Ó=ˆŒ	Ø×!Ñ! $§)¡)Ó,ˆŒØ—‘ˆŒØˆŒØˆŒØˆ�r   N)r$   ro   rp   rå   r€   rq   r   r   r  r  d  s   „ ð €Có	r   r  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_random_ball_approxc                 ó0   •— t         ‰| �  «        d| _        y ©Nrk   ©r…   r€   rM   r†   s    €r   r€   z%_Test_random_ball_approx.setup_methody  ó   ø€ Ü‰ÑÔØˆ�r   rˆ   rŠ   s   @r   r  r  v  ó   ø„ ÷ð r   r  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú!_Test_random_ball_approx_periodicc                 ó0   •— t         ‰| �  «        d| _        y r  r  r†   s    €r   r€   z._Test_random_ball_approx_periodic.setup_method�  r  r   rˆ   rŠ   s   @r   r  r  ~  r  r   r  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_random_ball_farc                 ó0   •— t         ‰| �  «        d| _        y ©Nrõ   ©r…   r€   r6   r†   s    €r   r€   z"_Test_random_ball_far.setup_method‰  ó   ø€ Ü‰ÑÔØˆ�r   rˆ   rŠ   s   @r   r  r  †  ó   ø„ ÷ð r   r  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_random_ball_far_periodicc                 ó0   •— t         ‰| �  «        d| _        y r  r  r†   s    €r   r€   z+_Test_random_ball_far_periodic.setup_method�  r  r   rˆ   rŠ   s   @r   r  r  �  r  r   r  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_random_ball_l1c                 ó0   •— t         ‰| �  «        d| _        y )Nr"   )r…   r€   r3   r†   s    €r   r€   z!_Test_random_ball_l1.setup_method˜  ó   ø€ Ü‰ÑÔØˆ�r   rˆ   rŠ   s   @r   r!  r!  •  ó   ø„ ÷ð r   r!  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_random_ball_linfc                 óL   •— t         ‰| �  «        t        j                  | _        y r   ©r…   r€   rG   r_   r3   r†   s    €r   r€   z#_Test_random_ball_linf.setup_method   ó   ø€ Ü‰ÑÔÜ—‘ˆ�r   rˆ   rŠ   s   @r   r&  r&  �  ó   ø„ ÷ð r   r&  c                 ó\  — d}d}t         j                  j                  d«        | t         j                  j                  ||«      «      }|j	                  t         j                  j                  dd|«      d«      }t        |j                  d«       t        t        |d   t        «      «       y )	Né   é   rw   r@   r–   r"   ©r@   r–   ©r   r   )
rG   r|   r}   r~   rã   r   r±   r   r¦   Úlist)r   r]   rP   rÑ   Úrs        r   Útest_random_ball_vectorizedr2  ¥  sy   € Ø
€AØ	€AÜ‡I�I‡N�N�4ÔÙ”B—I‘I—O‘O A qÓ)Ó*€Aà	×Ñœ2Ÿ9™9Ÿ?™?¨1¨a°Ó3°QÓ7€AÜ�—‘˜&Ô!ÜŒJ�q˜‘w¤Ó%Õ&r   zTest spawns worker threads)Úreasonr-  c                 óÆ  — t         j                  j                  d«       d}d}t         j                  j                  ||«      } | |«      }|j	                  |dd¬«      }|j	                  |dd¬«      }|j	                  |dd¬«      }t        |«      D ]  }||   s||   sŒt        ||   ||   «       Œ! t        |«      D ]  }||   s||   sŒt        ||   ||   «       Œ! y )	Nr   éˆ  r@   gú~j¼t“h?r"   ©Úworkersé@   rß   )rG   r|   r}   r~   rã   Úranger   )	r   r]   rX   ÚpointsrÑ   Úl1Úl2Úl3rL   s	            r   Ú+test_query_ball_point_multithreaded_workersr>  °  sç   € ô ‡I�I‡N�N�1ÔØ€AØ	€AÜ�Y‰Y�_‰_˜Q Ó"€FÙ�FÓ€AØ	
×	Ñ	˜F E°1Ð	Ó	5€BØ	
×	Ñ	˜F E°2Ð	Ó	6€BØ	
×	Ñ	˜F E°2Ð	Ó	6€Bä�1‹Xò -ˆØˆaŠ5�B�q“EÜ˜r !™u b¨¡eÕ,ð-ô �1‹Xò -ˆØˆaŠ5�B�q“EÜ˜r !™u b¨¡eÕ,ñ-r   c                 óÒ  ‡— t         j                  j                  d«      }d}d}|j                  ||«      } | |«      }d}||z  |z  |k(  sJ ‚|j                  |||z  |«      }t        j                  |||f«      }dŠˆfd„}	t        ||	||«      }
|j                  |‰«      }t        t        j                  t        j                  |
«      «      t        j                  |«      «       y )Nl   e]IG rý   r@   r{   ç333333Ó?c                 ó.   •— |j                  ||    ‰«      S r   )rã   )rL   r*   Úsearch_pointsÚradiuss      €r   Úworker_funczAtest_query_ball_point_multithreaded_explicit.<locals>.worker_funcÔ  s   ø€ Ø×$Ñ$ ]°1Ñ%5°vÓ>Ð>r   )
rG   r|   ÚRandomStater~   Úreshaper
   rã   r   ÚsortÚconcatenate)r   Úrngr]   rX   r:  r*   Úmax_workersrB  Úall_search_pointsrD  ÚresultsÚserial_resultsrC  s               @r   Ú,test_query_ball_point_multithreaded_explicitrN  Å  sÞ   ø€ ô �)‰)×
Ñ
 
Ó
+€CØ€AØ	€Aà�Y‰Y�q˜!‹_€FÙ�vÓ€DØ€KØˆk‰>˜KÑ'¨1Ò,Ð-Ð,Ø—I‘I˜k¨1¨k©>¸1Ó=€MÜŸ
™
 =°1°a°&Ó9ÐØ€Fô?ô &Ø�[ $¨ó7€Gð ×*Ñ*Ð+<¸fÓE€Nô ”r—w‘wœrŸ~™~¨gÓ6Ó7¼¿¹ÀÓ9PÕQr   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)Útwo_trees_consistencyc                 ó   — t        |||«      S r   r0   r;   s       r   r=   ztwo_trees_consistency.distanceâ  r>   r   c                 ór  — | j                   j                  | j                  | j                  | j                  | j
                  ¬«      }t        |«      D ]b  \  }}|D ]X  }| j                  | j                  |   | j                  |   | j                  «      | j                  d| j
                  z   z  k  rŒXJ ‚ Œd y )Nrà   rÃ   )
ÚT1Úquery_ball_treeÚT2r6   r3   rM   rä   r=   Údata1Údata2)r<   r1  rL   ræ   Újs        r   Útest_all_in_ballz&two_trees_consistency.test_all_in_ballå  sœ   € Ø�G‰G×#Ñ# D§G¡G¨T¯V©V°t·v±vÀ4Ç8Á8Ð#ÓLˆÜ˜a“Lò 	1‰DˆAˆqØò 1�ØŸ™ d§j¡j°¡m°T·Z±ZÀ±]ÀDÇFÁFÓKØŸ6™6 2 d§h¡h¡;Ñ/ó0ð 1ð 0ñ1ñ	1r   c                 óò  — | j                   j                  | j                  | j                  | j                  | j
                  ¬«      }t        |«      D ]¢  \  }}t        j                  | j                  j                  t        ¬«      }d||<   t        j                  | j                  | j                  |   | j                  |   | j                  «      | j                  d| j
                  z   z  k\  «      rŒ¢J ‚ y )Nrà   rì   FrÃ   )rS  rT  rU  r6   r3   rM   rä   rG   rî   r]   rï   rJ   r=   rW  rV  )r<   r1  rL   ræ   rð   s        r   rñ   z$two_trees_consistency.test_found_allì  s¹   € Ø�G‰G×#Ñ# D§G¡G¨T¯V©V°t·v±vÀ4Ç8Á8Ð#ÓLˆÜ˜a“Lò 	3‰DˆAˆqÜ—‘˜Ÿ™Ÿ	™	¬Ô.ˆAØˆAˆa‰DÜ—6‘6˜$Ÿ-™-¨¯
©
°1©°t·z±zÀ!±}ÀdÇfÁfÓMØ!ŸV™V R¨¯©¡[Ñ1ñ2õ 3ð 3ð 3ñ	3r   N)r$   ro   rp   r=   rY  rñ   rq   r   r   rP  rP  à  s   „ ò"ò1ó3r   rP  c                   ó   — e Zd Zd„ Zy)Ú_Test_two_random_treesc                 ó�  — d}d}t         j                  j                  d«       t         j                  j                  ||«      | _        | j                  | j                  d¬«      | _        t         j                  j                  ||«      | _        | j                  | j                  d¬«      | _        d| _	        d| _
        d| _        y )	Né2   rv   rw   r@   rx   rõ   r   rz   )rG   r|   r}   r~   rV  r   rS  rW  rU  r3   rM   r6   rö   s      r   r€   z#_Test_two_random_trees.setup_methodø  s“   € ØˆØˆÜ
�	‰	�‰�tÔÜ—Y‘Y—_‘_ Q¨Ó*ˆŒ
Ø×"Ñ" 4§:¡:¸Ð"Ó:ˆŒÜ—Y‘Y—_‘_ Q¨Ó*ˆŒ
Ø×"Ñ" 4§:¡:¸Ð"Ó:ˆŒØˆŒØˆŒØˆ�r   Nr�   rq   r   r   r\  r\  õ  s   „ ó
r   r\  c                   ó   — e Zd Zd„ Zd„ Zy)Ú_Test_two_random_trees_periodicc                 ó   — t        |||d«      S rÝ   rú   r;   s       r   r=   z(_Test_two_random_trees_periodic.distance  rû   r   c                 óœ  — d}d}t         j                  j                  d«       t         j                  j                  ||f¬«      | _        | j                  | j                  dd¬«      | _        t         j                  j                  ||f¬«      | _        | j                  | j                  dd¬«      | _        d| _	        d	| _
        d
| _        y )Nr^  rv   rw   rþ   r@   rÃ   r   rõ   r   rz   )rG   r|   r}   r  rV  r   rS  rW  rU  r3   rM   r6   rö   s      r   r€   z,_Test_two_random_trees_periodic.setup_method
  s¥   € ØˆØˆÜ
�	‰	�‰�tÔÜ—Y‘Y×&Ñ&¨Q°¨FÐ&Ó3ˆŒ
Ø×"Ñ" 4§:¡:¸À3Ð"ÓGˆŒÜ—Y‘Y×&Ñ&¨Q°¨FÐ&Ó3ˆŒ
Ø×"Ñ" 4§:¡:¸À3Ð"ÓGˆŒØˆŒØˆŒØˆ�r   N)r$   ro   rp   r=   r€   rq   r   r   r`  r`    s   „ ò*ó
r   r`  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_two_random_trees_farc                 ó0   •— t         ‰| �  «        d| _        y ©Nr@   r  r†   s    €r   r€   z'_Test_two_random_trees_far.setup_method  r#  r   rˆ   rŠ   s   @r   rd  rd    r$  r   rd  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú#_Test_two_random_trees_far_periodicc                 ó0   •— t         ‰| �  «        d| _        y rf  r  r†   s    €r   r€   z0_Test_two_random_trees_far_periodic.setup_method"  r#  r   rˆ   rŠ   s   @r   rh  rh    r$  r   rh  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_two_random_trees_linfc                 óL   •— t         ‰| �  «        t        j                  | _        y r   r(  r†   s    €r   r€   z(_Test_two_random_trees_linf.setup_method*  r)  r   rˆ   rŠ   s   @r   rk  rk  '  r*  r   rk  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú$_Test_two_random_trees_linf_periodicc                 óL   •— t         ‰| �  «        t        j                  | _        y r   r(  r†   s    €r   r€   z1_Test_two_random_trees_linf_periodic.setup_method2  r)  r   rˆ   rŠ   s   @r   rn  rn  /  r*  r   rn  c                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚTest_rectanglec                 ó.   — t        ddgddg«      | _        y )Nr   r"   )r   Úrectr   s    r   r€   zTest_rectangle.setup_method9  s   € Ü˜q !˜f q¨! fÓ-ˆ�	r   c                 óR   — t        | j                  j                  ddg«      d«       y )Nr/   r   ©r   rs  Úmin_distance_pointr   s    r   Útest_min_insidezTest_rectangle.test_min_inside<  s   € Ü˜DŸI™I×8Ñ8¸#¸s¸ÓDÀaÕHr   c                 óR   — t        | j                  j                  ddg«      d«       y ©Nr/   ç      ø?ru  r   s    r   Útest_min_one_sidez Test_rectangle.test_min_one_side?  s   € Ü˜DŸI™I×8Ñ8¸#¸s¸ÓDÀcÕJr   c                 óx   — t        | j                  j                  ddg«      t        j                  d«      «       y rf  )r   rs  rv  rG   Úsqrtr   s    r   Útest_min_two_sidesz!Test_rectangle.test_min_two_sidesB  s'   € Ü˜DŸI™I×8Ñ8¸!¸Q¸Ó@Ä"Ç'Á'È!Ã*ÕMr   c                 ó~   — t        | j                  j                  ddg«      dt        j                  d«      z  «       y )Nr/   r"   r@   ©r   rs  Úmax_distance_pointrG   r}  r   s    r   Útest_max_insidezTest_rectangle.test_max_insideE  s,   € Ü˜DŸI™I×8Ñ8¸#¸s¸ÓDÀaÌÏÉÐPQË
ÁlÕSr   c                 óz   — t        | j                  j                  ddg«      t        j                  dd«      «       y ry  )r   rs  r�  rG   Úhypotr   s    r   Útest_max_one_sidez Test_rectangle.test_max_one_sideH  s-   € Ü˜DŸI™I×8Ñ8¸#¸s¸ÓDÜŸH™H S¨#Ó.õ	0r   c                 ó~   — t        | j                  j                  ddg«      dt        j                  d«      z  «       y rf  r€  r   s    r   Útest_max_two_sidesz!Test_rectangle.test_max_two_sidesL  s+   € Ü˜DŸI™I×8Ñ8¸!¸Q¸Ó@À!ÄBÇGÁGÈAÃJÁ,ÕOr   c                 ó  — | j                   j                  dd«      \  }}t        |j                  ddg«       t        |j                  ddg«       t        |j                  ddg«       t        |j                  ddg«       y )Nr   rk   r"   )rs  Úsplitr   ÚmaxesÚmins)r<   ÚlessÚgreaters      r   Ú
test_splitzTest_rectangle.test_splitO  sb   € ØŸ	™	Ÿ™¨¨3Ó/‰ˆˆgÜ˜4Ÿ:™:¨¨Q xÔ0Ü˜4Ÿ9™9 q¨! fÔ-Ü˜7Ÿ=™=¨1¨a¨&Ô1Ü˜7Ÿ<™<¨#¨q¨Õ2r   N)r$   ro   rp   r€   rw  r{  r~  r‚  r…  r‡  rŽ  rq   r   r   rq  rq  7  s/   „ ò.òIòKòNòTò0òPó3r   rq  c                  óB  — t        j                  d¬«      5  t        t        ddgddgd«      t	        j
                  d«      «       d d d «       t        j                  d¬«      5  t        t        ddgddgd«      d«       d d d «       y # 1 sw Y   ŒDxY w# 1 sw Y   y xY w©Nú1.20.0rÄ   r   r"   r@   )rÆ   Údeprecated_callr   r   rG   r}  r   rq   r   r   Útest_distance_l2r“  W  s–   € Ü	×	Ñ	 hÔ	/ñ OÜÔ.°°1¨v¸¸1°v¸qÓAÄ2Ç7Á7È1Ã:ÔN÷Oä	×	Ñ	 hÔ	/ñ HÜÔ0°!°Q°¸!¸Q¸ÀÓCÀQÔG÷Hð H÷Oð Oú÷Hð Hús   —/B	Á$BÂ	BÂBc                  ó�   — t        j                  d¬«      5  t        t        ddgddgd«      d«       d d d «       y # 1 sw Y   y xY wr�  )rÆ   r’  r   r   rq   r   r   Útest_distance_l1r•  ^  sE   € Ü	×	Ñ	 hÔ	/ñ FÜÔ.°°1¨v¸¸1°v¸qÓAÀ1ÔE÷F÷ Fñ Fús	   —<¼Ac                  ó¬   — t        j                  d¬«      5  t        t        ddgddgt        j
                  «      d«       d d d «       y # 1 sw Y   y xY w)Nr‘  rÄ   r   r"   )rÆ   r’  r   r   rG   r_   rq   r   r   Útest_distance_linfr—  c  sI   € Ü	×	Ñ	 hÔ	/ñ KÜÔ.°°1¨v¸¸1°v¼r¿v¹vÓFÈÔJ÷K÷ Kñ Kús   —*A
Á
Ac                  ó\  — t         j                  j                  d«       t         j                  j                  ddd«      } t         j                  j                  ddd«      }t	        j
                  d¬«      5  t        t        | |«      j                  d«       d d d «       y # 1 sw Y   y xY w)	Nrw   r{   r"   r–   é   r‘  rÄ   )r{   r™  )	rG   r|   r}   r~   rÆ   r’  r   r   r±   )rD   Úys     r   Útest_distance_vectorizationr›  h  sy   € Ü‡I�I‡N�N�4ÔÜ
�	‰	�‰˜˜A˜qÓ!€AÜ
�	‰	�‰˜˜1˜aÓ €AÜ	×	Ñ	 hÔ	/ñ >ÜÔ'¨¨1Ó-×3Ñ3°WÔ=÷>÷ >ñ >ús   Á8!B"Â"B+c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)Úcount_neighbors_consistencyc                 ó  — d}t        | j                  j                  | j                  |«      t	        j
                  | j                  j                  | j                  |«      D �cg c]  }t        |«      ‘Œ c}«      «       y c c}w )Nrz   ©r   rS  Úcount_neighborsrU  rG   rH   rT  Úlen©r<   r1  ræ   s      r   Útest_one_radiusz+count_neighbors_consistency.test_one_radiusq  sZ   € ØˆÜ�T—W‘W×,Ñ,¨T¯W©W°aÓ8Ü—‘¨¯©×(?Ñ(?ÀÇÁÈÓ(KÖL 1œ˜A�ÒLÓMõ	OùÚLó   Á$Bc                 ó  — d}t        | j                  j                  | j                  |«      t	        j
                  | j                  j                  | j                  |«      D �cg c]  }t        |«      ‘Œ c}«      «       y c c}w )NrÐ   rŸ  r¢  s      r   Útest_large_radiusz-count_neighbors_consistency.test_large_radiusv  sZ   € ØˆÜ�T—W‘W×,Ñ,¨T¯W©W°aÓ8Ü—‘¨¯©×(?Ñ(?ÀÇÁÈÓ(KÖL 1œ˜A�ÒLÓMõ	OùÚLr¤  c                 óà  — t        j                  t        j                  t        j                  d«      t        j                  d«      d«      «      }| j                  j                  | j                  |«      }t        t        j                  t        j                  |«      dk\  «      «       t        ||«      D ]5  \  }}t        | j                  j                  | j                  |«      |«       Œ7 y )Nç{®Gáz„?r{   r–   r   )rG   ÚexpÚlinspaceÚlogrS  r   rU  r   rJ   r5   r^   r   )r<   ÚrsrL  r1  Úresults        r   Útest_multiple_radiusz0count_neighbors_consistency.test_multiple_radius{  s¡   € Ü�V‰V”B—K‘K¤§¡ t£¬b¯f©f°R«j¸!Ó<Ó=ˆØ—'‘'×)Ñ)¨$¯'©'°2Ó6ˆÜ”—‘”r—w‘w˜wÓ'¨1Ñ,Ó-Ô.Ü˜R Ó)ò 	F‰IˆAˆvÜ˜Ÿ™×0Ñ0°·±¸!Ó<¸fÕEñ	Fr   N)r$   ro   rp   r£  r¦  r®  rq   r   r   r�  r�  p  s   „ òOò
Oó
Fr   r�  c                   ó   — e Zd Zd„ Zy)Ú_Test_count_neighborsc                 ó"  — d}d}t         j                  j                  d«       | j                  t         j                  j	                  ||«      d¬«      | _        | j                  t         j                  j	                  ||«      d¬«      | _        y )Nr^  r@   rw   rx   )rG   r|   r}   r   r~   rS  rU  rö   s      r   r€   z"_Test_count_neighbors.setup_method„  sh   € ØˆØˆÜ
�	‰	�‰�tÔØ×"Ñ"¤2§9¡9§?¡?°1°aÓ#8À1Ð"ÓEˆŒØ×"Ñ"¤2§9¡9§?¡?°1°aÓ#8À1Ð"ÓEˆ�r   Nr�   rq   r   r   r°  r°  ‚  s   „ óFr   r°  c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú"sparse_distance_matrix_consistencyc                 ó   — t        |||«      S r   r0   r;   s       r   r=   z+sparse_distance_matrix_consistency.distanceŽ  r>   r   c           
      ó
  — | j                   j                  | j                  | j                  d¬«      }| j                   j	                  | j                  | j                  «      }t        |«      D ]h  \  }}|D ]^  }t        |||f   | j                  | j                   j                  |   | j                  j                  |   | j                  «      d¬«       Œ` Œj |j                  «       D ]  \  \  }}}t        |||   v «       Œ y )Nr   ©Úoutput_typeé   ©Údecimal)rS  Úsparse_distance_matrixrU  r1  rT  rä   r   r=   rI   r3   Úitemsr   )r<   ÚMr1  rL   ræ   rX  r6   s          r   Útest_consistency_with_neighborszBsparse_distance_matrix_consistency.test_consistency_with_neighbors‘  sÚ   € Ø�G‰G×*Ñ*¨4¯7©7°D·F±FÈÐ*ÓTˆØ�G‰G×#Ñ# D§G¡G¨T¯V©VÓ4ˆÜ˜a“Lò 	‰DˆAˆqØò �Ü#Ø�a˜�d‘GØ—M‘M $§'¡'§,¡,¨q¡/°4·7±7·<±<À±?ÀDÇFÁFÓKØöñð	ð Ÿ7™7›9ò 	‰K‰Vˆa��QÜ�A˜˜1™�IÕñ	r   c                 óh   — | j                   j                  | j                   | j                  d¬«       y )Nr   r¶  )rS  r»  r1  r   s    r   Útest_zero_distancez5sparse_distance_matrix_consistency.test_zero_distancež  s#   € à�‰×&Ñ& t§w¡w°·±ÀKÐ&ÕPr   c                 ó,  — | j                   j                  | j                  | j                  d¬«      }t	        | j                   j
                  | j                  j
                  «      }d||| j                  kD  <   t        |j                  «       |d¬«       y )Nr   r¶  r   r¸  r¹  )rS  r»  rU  r1  r   rI   r   Útoarray)r<   ÚM1Úexpecteds      r   Útest_consistencyz3sparse_distance_matrix_consistency.test_consistency¢  sf   € à�W‰W×+Ñ+¨D¯G©G°T·V±VÈÐ+ÓUˆÜ˜Ÿ™Ÿ™ t§w¡w§|¡|Ó4ˆØ&'ˆ�˜DŸF™FÑ"Ñ#Ü! "§*¡*£,°À"ÖEr   c                 óP  — t         j                  j                  d«       t        j                  t         j                  j	                  dd«      t
        ¬«      }| j                  |dd¬«      }|j                  |dd¬	«      j                  «       }t        ||j                  d
¬«       y )Nr   é   r@   rì   F©Úbalanced_treeÚcompact_nodesr–   r   r¶  r¸  r¹  )rG   r|   r}   r—   r~   rÍ   r   r»  rÂ  r   rÑ   )r<   Útoo_manyr*   r6   s       r   Ú#test_against_logic_error_regressionzFsparse_distance_matrix_consistency.test_against_logic_error_regression©  s~   € ä
�	‰	�‰�qÔÜ—8‘8œBŸI™IŸO™O¨B°Ó2¼#Ô>ˆØ×ÑØ E¸ð  ó @ˆà×'Ñ'¨¨a¸[Ð'ÓI×QÑQÓSˆÜ! ! Q§S¡S°"Ö5r   c                 ó„  — t        j                  | j                  | j                  f«      }t        | j                  «      D ]^  }t        | j                  «      D ]D  }| j                  |d d …f   | j
                  |d d …f   z
  }t        j                  ||«      |||f<   ŒF Œ` t        j                  |«      }d||| j                  kD  <   t        j                  | j                  | j                  f«      }| j                  j                  | j                  | j                  d¬«      }|j                  «       D ]  \  }}|||f   |||f<   Œ t        ||d¬«       t        j                  | j                  | j                  f«      }| j                  j                  | j                  | j                  d¬«      }t        |j                  d   «      D ]!  }|d   |   }|d	   |   }|d
   |   }||||f<   Œ# t        ||d¬«       | j                  j                  | j                  | j                  d¬«      }t        ||j                  «       d¬«       t!        |t"        «      sJ ‚| j                  j                  | j                  | j                  d¬«      }t        ||j                  «       d¬«       t!        |t$        «      sJ ‚| j                  j                  | j                  | j                  d¬«      }t        ||j                  «       d¬«       t!        |t&        «      sJ ‚| j                  j                  | j                  | j                  d¬«      }t        ||j                  «       d¬«       t!        |t(        «      sJ ‚| j                  j                  | j                  | j                  «      }t!        |t$        «      sJ ‚y )NrÛ   Údictr¶  r¸  r¹  Úndarrayr   rL   rX  Úvr   r   r   r   )rG   r°   r]   r9  rV  rW  Údotr}  r1  rS  r»  rU  Úkeysr   r±   rÂ  r¦   r   r   r   r   )r<   ÚrefrL   rX  rÐ  rè   r1  rX   s           r   Útest_ckdtree_return_typesz<sparse_distance_matrix_consistency.test_ckdtree_return_types²  s  € ä�h‰h˜Ÿ™ §¡Ð'Ó(ˆÜ�t—v‘v“ò 	)ˆAÜ˜4Ÿ6™6“]ò )�Ø—J‘J˜q¢!˜tÑ$ t§z¡z°!²Q°$Ñ'7Ñ7�ÜŸF™F 1 a›L��A�q�D’	ñ)ð	)ô �g‰g�c‹lˆØˆˆC�$—&‘&‰LÑä�x‰x˜Ÿ™ §¡Ð(Ó)ˆØ�G‰G×*Ñ*¨4¯7©7°D·F±FÈÐ*ÓOˆØ—F‘F“Hò 	#‰DˆAˆqØ˜A˜q˜6™ˆD��A�ŠJð	#ä! # t°RÕ8ä�x‰x˜Ÿ™ §¡Ð(Ó)ˆØ�G‰G×*Ñ*¨4¯7©7°D·F±FØ!ð +ó #ˆä�q—w‘w˜q‘zÓ"ò 	ˆAØ�#‘�q‘	ˆAØ�#‘�q‘	ˆAØ�#‘�q‘	ˆAØˆD��A�ŠJð		ô
 	" # t°RÕ8à�G‰G×*Ñ*¨4¯7©7°D·F±FØ#ð +ó %ˆä! # q§y¡y£{¸BÕ?Ü˜!œYÔ'Ð'Ð'à�G‰G×*Ñ*¨4¯7©7°D·F±FØ$ð +ó &ˆä! # q§y¡y£{¸BÕ?Ü˜!œZÔ(Ð(Ð(à�G‰G×*Ñ*¨4¯7©7°D·F±FØ#ð +ó %ˆä! # q§y¡y£{¸BÕ?Ü˜!œYÔ'Ð'Ð'à�G‰G×*Ñ*¨4¯7©7°D·F±FØ$ð +ó &ˆä! # q§y¡y£{¸BÕ?Ü˜!œZÔ(Ð(Ð(à�G‰G×*Ñ*¨4¯7©7°D·F±FÓ;ˆÜ˜!œZÔ(Ð(Ñ(r   N)	r$   ro   rp   r=   r¾  rÀ  rÅ  rÌ  rÔ  rq   r   r   r³  r³  Œ  s"   „ ò"òòQòFò6ó/)r   r³  c                   ó   — e Zd Zd„ Zy)Ú_Test_sparse_distance_matrixc                 ó~  — d}d}t         j                  j                  d«       t         j                  j                  ||«      }t         j                  j                  ||«      }| j	                  |d¬«      | _        | j	                  |d¬«      | _        d| _        d| _        || _	        || _
        || _        || _        y )Nr^  rv   rw   r@   rx   r/   )rG   r|   r}   r~   r   rS  rU  r1  r3   rV  rW  r]   rP   )r<   r]   rP   rV  rW  s        r   r€   z)_Test_sparse_distance_matrix.setup_methodæ  sœ   € ØˆØˆÜ
�	‰	�‰�tÔÜ—	‘	—‘  1Ó%ˆÜ—	‘	—‘  1Ó%ˆØ×"Ñ" 5°1Ð"Ó5ˆŒØ×"Ñ" 5°1Ð"Ó5ˆŒØˆŒØˆŒØˆŒ
ØˆŒ
ØˆŒØˆ�r   Nr�   rq   r   r   rÖ  rÖ  ä  s   „ ór   rÖ  c            
      óD  — d} d}d}t         j                  j                  d«       t         j                  j                  | |«      }t         j                  j                  ||«      }t	        j
                  d¬«      5  t        ||«      }d d d «       t        j                  | |f«       t        | «      D ]R  }t        |«      D ]B  }t	        j
                  d¬«      5  t        t        ||   ||   «      |||f   «       d d d «       ŒD ŒT y # 1 sw Y   Œ‚xY w# 1 sw Y   Œ]xY w)Nr{   é   rv   rw   r‘  rÄ   )rG   r|   r}   r~   rÆ   r’  r   r   r±   r9  r   r   )rP   r]   rX   ÚxsÚysrÓ   rL   rX  s           r   Útest_distance_matrixrÜ  ö  s  € Ø
€AØ
€AØ	€AÜ‡I�I‡N�N�4ÔÜ	�‰�‰˜˜AÓ	€BÜ	�‰�‰˜˜AÓ	€BÜ	×	Ñ	 hÔ	/ñ %Ü˜R Ó$ˆ÷%ä�—‘˜A˜q˜6Ô"Ü�1‹Xò PˆÜ�q“ò 	PˆAÜ×'Ñ'¨hÔ7ñ PÜ#Ô$6°r¸!±u¸bÀ¹eÓ$DÀbÈÈAÈÁhÔO÷Pð Pñ	PñP÷%ð %ú÷
Pð Pús   Á<D
Ã"DÄ
DÄDc                  óÆ  — d} d}d}t         j                  j                  d«       t         j                  j                  | |«      }t         j                  j                  ||«      }t	        j
                  d¬«      5  t        ||«      }d d d «       t	        j
                  d¬«      5  t        ||d¬«      }d d d «       t        «       y # 1 sw Y   ŒCxY w# 1 sw Y   Œ"xY w)	Nr{   rÙ  rv   rw   r‘  rÄ   r"   )Ú	threshold)rG   r|   r}   r~   rÆ   r’  r   r   )rP   r]   rX   rÚ  rÛ  rÓ   Údsls          r   Útest_distance_matrix_loopingrà    s³   € Ø
€AØ
€AØ	€AÜ‡I�I‡N�N�4ÔÜ	�‰�‰˜˜AÓ	€BÜ	�‰�‰˜˜AÓ	€BÜ	×	Ñ	 hÔ	/ñ %Ü˜R Ó$ˆ÷%ä	×	Ñ	 hÔ	/ñ 3Ü˜b "°Ô2ˆ÷3ä��SÕ÷	%ð %ú÷3ð 3ús   Á<CÂ'CÃCÃC c                 óÜ   — | j                  | |«      }t        «       }t        |«      D ]%  \  }}|D ]  }||k  sŒ	|j                  ||f«       Œ Œ' t	        || j                  |«      k(  «       y r   )rT  Úseträ   Úaddr   Úquery_pairs)rÑ   r6   r1  rº   rL   ræ   rX  s          r   Úcheck_onetree_queryrå    so   € Ø	×Ñ˜!˜QÓ€AÜ‹€AÜ˜!“ò ‰ˆˆ1Øò 	ˆAØ�1‹uØ—‘�q˜!�f•ñ	ðô
 ˆA�—‘˜qÓ!Ñ!Õ"r   c                 ó¦  — t         j                  j                  d«       d}d}t         j                  j                  ||«      } | |«      }t	        |d«       t         j                  j                  d|z  |«      }|d |xxx dz  ccc ||d|z  xxx dz  ccc  | |«      }t	        |d«       t	        |d«       t	        |d«       t	        |d	«       y )
Nr   r^  rv   rk   r–   gü©ñÒMbP?r@   gñhãˆµøä>g�íµ ÷Æ°>)rG   r|   r}   r~   rå  )r   r]   rX   r:  rÑ   s        r   Útest_onetree_queryrç    s²   € Ü‡I�I‡N�N�1ÔØ
€AØ	€AÜ�Y‰Y�_‰_˜Q Ó"€FÙ�FÓ€AÜ˜˜3Ôä�Y‰Y�_‰_˜Q˜q™S !Ó$€FØ
ˆ2ˆAƒJ�%ÑƒJØ
ˆ1ˆQˆq‰SƒM�QÑƒMÙ�FÓ€AÜ˜˜3ÔÜ˜˜5Ô!Ü˜˜7Ô#Ü˜˜4Õ r   c                 ó`   —  | ddgg«      }t        |j                  d«      t        «       «       y )Nr   r"   r/   )r   rä  râ  )r   r*   s     r   Útest_query_pairs_single_noderé  0  s)   € Ù˜˜A˜�xÓ €DÜ�×!Ñ! #Ó&¬«Õ.r   c           	      ó>  — t         j                  j                  d«       d}d}d}|dz  }t         j                  j                  ||«      } | |«      }t	        «       }t        |«      D ]V  }t        |dz   |«      D ]B  }	||d d …f   ||	d d …f   z
  }
t        j                  |
|
«      |k  sŒ0|j                  ||	f«       ŒD ŒX t        |«      }|j                  |«      }t        |«      }t        ||«       |j                  |d¬«      }t        |«      }t        ||«       t	        «       }|j                  |d¬«      }t        |j                  d   «      D ]1  }|j                  t        ||df   «      t        ||df   «      f«       Œ3 t        |«      }t        ||«       y )	Nr   r^  r@   rk   r"   râ  r¶  rÏ  )rG   r|   r}   r~   râ  r9  rÑ  rã  Úsortedrä  r   r±   rÍ   )r   r]   rX   r1  Úr2r:  rÑ   ÚbruterL   rX  rÐ  Úl0rº   r;  Úarrr<  s                   r   Útest_kdtree_query_pairsrð  5  sy  € Ü‡I�I‡N�N�1ÔØ
€AØ	€AØ€AØ	
ˆA‰€BÜ�Y‰Y�_‰_˜Q Ó"€FÙ�FÓ€Aä‹E€EÜ�1‹Xò "ˆÜ�q˜‘s˜A“ò 	"ˆAØ�qš!�t‘˜v aª d™|Ñ+ˆAÜ�v‰v�a˜‹|˜rÓ!Ø—	‘	˜1˜a˜&Õ!ñ	"ð"ô
 
�‹€Bà	�‰�aÓ€AÜ	�‹€BÜ�r˜2Ôà	�‰�a UˆÓ+€AÜ	�‹€BÜ�r˜2Ôä‹€AØ
�-‰-˜ yˆ-Ó
1€CÜ�3—9‘9˜Q‘<Ó ò 0ˆØ	�‰Œs�3�q˜!�t‘9‹~œs 3 q¨! t¡9›~Ð.Õ/ð0ä	�‹€BÜ�r˜2Õr   c                 óN  — t        j                  d«      }t        j                  dd|z  d«      }t        j                  dd|z  d«      }|D ��cg c]  }|D ]  }||f‘Œ Œ }}} | |«      }|j                  |d¬«      }|j                  |dz  ¬«      }	t	        |	|«       y c c}}w )	Nr@   r   r–   rv   rk   )r1  rM   ç)\�Âõ(ð?©r1  )rG   r}  rª  rä  r   )
r   ÚspacingÚx_rangeÚy_rangeÚxiÚyiÚxy_arrayr*   Ú	pairs_epsÚpairss
             r   Útest_query_pairs_epsrü  V  s£   € Ü�g‰g�a‹j€Gä�k‰k˜!˜Q ™[¨!Ó,€GÜ�k‰k˜!˜Q ™[¨!Ó,€GØ#*×=˜R°WÒ=¨r��R’Ð=�Ð=€HÑ=Ù�xÓ €DØ× Ñ  7°Ð Ó3€Ià×Ñ˜w¨™~ÐÓ.€Eä�˜	Õ"ùó >s   ÁB!c           	      ó´  — t         j                  dd…dd…f   \  }}t        t        |j	                  «       |j	                  «       «      «      } | |«      }t        t        g d¢«      t        |j                  dd«      «      «       t        j                  |t        ¬«      } | |«      }t        t        g d¢«      t        |j                  dd«      «      «       y )Nr   rv   )rv   é   é	   é   )r@   r   r"   rì   )
rG   Úmgridr0  r^   Úravelr   rë  rã   Úasarrayr§   )r   rD   rš  r:  r*   s        r   Útest_ball_point_intsr  d  s©   € ä�8‰8�A�a�C˜˜1˜�HÑ�D€A€qÜ”#�a—g‘g“i §¡£Ó+Ó,€FÙ�vÓ€DÜ”šÓ&Ü˜×-Ñ-¨f°aÓ8Ó9ô;ä�Z‰Z˜¤eÔ,€FÙ�vÓ€DÜ”šÓ&Ü˜×-Ñ-¨f°aÓ8Ó9õ;r   c            	      óª   — t        d«      D � cg c]  } t        j                  «       ‘Œ }} t        t	        |«      t	        |d d d…   «      «       y c c} w )Nr–   rß   )r9  r   Únoder   rë  )r#   Únodess     r   Útest_kdtree_comparisonsr  q  s?   € ä$)¨!£HÖ-˜qŒV�[‰[�]Ð-€EÐ-Ü”˜“¤ u©T¨r¨T¡{Ó 3Õ4ùò .s   ŽAc                 óÀ  — t         j                  j                  d«       d}d}t         j                  j                  ||«      } | |«      j	                  |d¬«      d   } | |d¬«      j	                  |d¬«      d   } | |d¬	«      j	                  |d¬«      d   } | |dd¬
«      j	                  |d¬«      d   }t        ||«       t        ||«       t        ||«       y )Nr   r5  rv   r-  r·   rß   F)rÊ  )rÉ  )rÊ  rÉ  )rG   r|   r}   r~   rF   r   )r   r]   rX   r:  rS  rU  ÚT3ÚT4s           r   Útest_kdtree_build_modesr  w  sÖ   € ä‡I�I‡N�N�1ÔØ€AØ	€AÜ�Y‰Y�_‰_˜Q Ó"€FÙ	�VÓ	×	"Ñ	" 6¨QÐ	"Ó	/°Ñ	3€BÙ	�V¨5Ô	1×	7Ñ	7¸À!Ð	7Ó	DÀRÑ	H€BÙ	�V¨5Ô	1×	7Ñ	7¸À!Ð	7Ó	DÀRÑ	H€BÙ	�V¨5Ø#(ô
*ß*/©%°¸!¨%Ó*<¸Rñ
A€Bä�r˜2ÔÜ�r˜2ÔÜ�r˜2Õr   c                 óV  — dd l }t        j                  j                  d«       d}d}t        j                  j	                  ||«      } | |«      }|j                  |«      }|j                  |«      }|j                  |d¬«      d   }|j                  |d¬«      d   }t        ||«       y )Nr   r^  rv   r-  r·   rß   )	ÚpicklerG   r|   r}   r~   ÚdumpsÚloadsrF   r   ©r   r  r]   rX   r:  rS  ÚtmprU  s           r   Útest_kdtree_pickler  †  s‘   € ãÜ‡I�I‡N�N�1ÔØ
€AØ	€AÜ�Y‰Y�_‰_˜Q Ó"€FÙ	�VÓ	€BØ
�,‰,�rÓ
€CØ	�‰�cÓ	€BØ	�‰�&˜AˆÓ	˜rÑ	"€BØ	�‰�&˜AˆÓ	˜rÑ	"€BÜ�r˜2Õr   c                 ó^  — dd l }t        j                  j                  d«       d}d}t        j                  j	                  ||f¬«      } | |d¬«      }|j                  |«      }|j                  |«      }|j                  |d¬«      d	   }|j                  |d¬«      d	   }t        ||«       y )
Nr   r^  rv   rþ   rÃ   ©r4   r-  r·   rß   )	r  rG   r|   r}   r  r  r  rF   r   r  s           r   Útest_kdtree_pickle_boxsizer  ”  sš   € ãÜ‡I�I‡N�N�1ÔØ
€AØ	€AÜ�Y‰Y×Ñ Q¨ FÐÓ+€FÙ	�V SÔ	)€BØ
�,‰,�rÓ
€CØ	�‰�cÓ	€BØ	�‰�&˜AˆÓ	˜rÑ	"€BØ	�‰�&˜AˆÓ	˜rÑ	"€BÜ�r˜2Õr   c                 ót  — t         j                  j                  d«       d}d}t         j                  j                  ||«      } | |d¬«      }|j	                  «       }|j                  |d¬«      d   }t         j                  j                  ||«      |d	<   |j                  |d¬«      d   }t        ||«       y )
Nr   r5  rv   T)Ú	copy_datar-  r·   rß   .)rG   r|   r}   r~   ÚcopyrF   r   )r   r]   rX   r:  rÑ   rÕ   rS  rU  s           r   Útest_kdtree_copy_datar  ¢  s—   € ô ‡I�I‡N�N�1ÔØ€AØ	€AÜ�Y‰Y�_‰_˜Q Ó"€FÙ�F dÔ+€AØ�‰‹€AØ	
�‰��aˆ‹˜Ñ	€BÜ—)‘)—/‘/ ! QÓ'€Fˆ3�KØ	
�‰��aˆ‹˜Ñ	€BÜ�r˜2Õr   c                 ó
  — t         j                  j                  d«       d}d}t         j                  j                  ||«      } | |«      }|j	                  |dd¬«      d   }|j	                  |dd¬«      d   }|j	                  |d¬«      d   }t        ||«       t        ||«       |j                  t        d	d
„ «       t        j                  t        d¬«      5  |j	                  |dd¬«       d d d «       y # 1 sw Y   y xY w)Nr   r5  rv   r-  r8  )rX   r7  rß   r·   Ú	cpu_countc                   ó   — y r   rq   rq   r   r   ú<lambda>z'test_ckdtree_parallel.<locals>.<lambda>¾  s   � r   zCannot determine therÄ   r"   r6  )rG   r|   r}   r~   rF   r   ÚsetattrÚosrÆ   r	   ÚNotImplementedError)	r   Úmonkeypatchr]   rX   r:  rÑ   rS  rU  r
  s	            r   Útest_ckdtree_parallelr#  ±  sà   € ä‡I�I‡N�N�1ÔØ€AØ	€AÜ�Y‰Y�_‰_˜Q Ó"€FÙ�FÓ€AØ	
�‰�˜1 bˆÓ	)¨"Ñ	-€BØ	
�‰�˜1 bˆÓ	)¨"Ñ	-€BØ	
�‰�˜1ˆÓ	˜bÑ	!€BÜ�r˜2ÔÜ�r˜2Ôà×Ñœ˜K©Ô6Ü	�‰Ô*Ð2HÔ	Iñ 'Ø	�‰�˜ 2ˆÔ&÷'÷ 'ñ 'ús   ÃC9Ã9Dc                  ó²  ‡‡— t         j                  j                  d«       d} d}t         j                  j                  | |«      }t	        |«      Šˆˆfd„Š ‰‰j
                  «       ‰j
                  } t        t        j                  | j                  «      t        d«      «       t        ‰j                  | j                  d d …f   | j                  «       y )Nr   ru   rv   c                 óJ  •— t        t        | t        «      «       | j                  dk(  r^t        | j                  d u «       t        | j
                  d u «       t        | j                  j                  d   ‰j                  k  «       y  ‰| j                  «        ‰| j
                  «       | j                  j                  d d …| j                  f   }| j
                  j                  d d …| j                  f   }t        |j                  «       |j                  «       k  «       y )Nrß   r   )r   r¦   r   Ú	split_dimÚlesserr�  Úindicesr±   ry   Údata_pointsÚmaxÚmin)r]   rD   rš  rE   Úrecurse_trees      €€r   r,  z'test_ckdtree_view.<locals>.recurse_treeÎ  sÇ   ø€ Ü”
˜1œkÓ*Ô+Ø�;‰;˜"ÒÜ�A—H‘H Ð$Ô%Ü�A—I‘I Ð%Ô&Ü�A—I‘I—O‘O AÑ&¨&¯/©/Ñ9Õ:á˜Ÿ™Ô"Ù˜Ÿ™Ô#Ø—‘×$Ñ$¢Q¨¯© ^Ñ4ˆAØ—	‘	×%Ñ%¢a¨¯© nÑ5ˆAÜ�A—E‘E“G˜aŸe™e›gÑ%Õ&r   )rG   r|   r}   r~   r   r*   r   rG  r(  r9  rI   r)  )r]   rX   r:  rE   r,  s      @@r   Útest_ckdtree_viewr-  Ã  s’   ù€ ô ‡I�I‡N�N�1ÔØ€AØ	€AÜ�Y‰Y�_‰_˜Q Ó"€FÜ�V‹_€Fõ'ñ �—‘Ôà�‰€AÜ”r—w‘w˜qŸy™yÓ)¬5°«:Ô6ä�v—{‘{ 1§9¡9ªa <Ñ0°!·-±-Õ@r   c                 óV  — d}d}g d¢}d}t         j                  j                  d«       t         j                  j                  ||f¬«      } | |d¬«      }|j	                  ||«      \  }}|j	                  ||«      \  }	}
t        ||	«       t        ||
«       t        j                  ddg«      }d}|j	                  ||«      \  }}|j	                  ||«      \  }	}
t        |	|d	|dz
  f   «       t        |
|d	|dz
  f   «       |j	                  |d«      \  }}|j	                  |dg«      \  }	}
t        t        |j                  «      d«       t        t        |	j                  «      d«       t        |t        j                  |	«      «       t        |t        j                  |
«      «       y )
NéÈ   r@   )r"   r@   r–   r–   rw   rþ   r"   rx   .)
rG   r|   r}   r  rF   r   r—   r¡  r±   r  )r   r]   rP   ÚklistÚkintrI   rE   rS   rT   Údd1Úii1s              r   Útest_kdtree_list_kr4  å  sn  € à€AØ	€AÚ€EØ€Dä‡I�I‡N�N�4ÔÜ�9‰9×Ñ 1 a &ÐÓ)€DÙ˜¨Ô*€Fð �\‰\˜$ Ó&�F€BˆØ�|‰|˜D $Ó'�H€CˆÜ��SÔÜ��SÔô �H‰H�a˜�VÓ€EØ€DØ�\‰\˜$ Ó%�F€BˆØ�|‰|˜D %Ó(�H€CˆÜ��b˜˜e a™i˜Ñ(Ô)Ü��b˜˜e a™i˜Ñ(Ô)ð �\‰\˜$ Ó"�F€BˆØ�|‰|˜D 1 #Ó&�H€CˆÜ”�R—X‘X“ Ô"Ü”�S—Y‘Y“ Ô#Ü�”R—X‘X˜c“]Ô#Ü�”R—X‘X˜c“]Õ#r   r{   c                 ó:  — d}d}d}t         j                  j                  d«       t         j                  j                  ||f¬«      } | |dd¬«      } | |d¬«      }dd	d
t         j                  fD ]¨  }|j                  |||¬«      \  }}	|j                  |dz   ||¬«      \  }
}t        ||
«       t        |	|«       |j                  |dz
  ||¬«      \  }
}t        ||
«       t        |	|«       t        |||d|¬«      \  }}t        ||«       t        |	|«       Œª y )NéÐ  r–   rw   rþ   r"   rÃ   r   rx   r@   g      @©r3   )r4   r3   )	rG   r|   r}   r  r_   rF   r   r   Úsimulate_periodic_box)r   r]   rP   rX   rI   rE   Úkdtree2r3   rS   rT   r2  r3  Údd2Úii2s                 r   Útest_kdtree_boxr<    s  € ð 	€AØ	€AØ	€AÜ‡I�I‡N�N�4ÔÜ�9‰9×Ñ 1 a &ÐÓ)€DÙ˜¨°3Ô7€Fñ ˜$¨Ô+€Gà��CœŸ™Ð ò ˆØ—‘˜d A¨�Ó+‰ˆˆBà—<‘<  s¡
¨A°�<Ó3‰ˆˆSÜ˜B Ô$Ü�R˜Ôà—<‘<  s¡
¨A°�<Ó3‰ˆˆSÜ˜B Ô$Ü�R˜Ôä(¨°$¸À3È!ÔL‰ˆˆSÜ˜B Ô$Ü�R˜Õñr   c                 óx  — d}d}d}t         j                  j                  d«       t         j                  j                  ||f¬«      } | |dd¬«      } | |d¬	«      }ddt         j                  fD ]H  }|j                  |||¬
«      \  }}	|j                  |||¬
«      \  }
}t        ||
«       t        |	|«       ŒJ y )Nr6  r@   r–   rw   rþ   r"   rÛ   r   rx   r7  )rG   r|   r}   r  r_   rF   r   r   )r   r]   rP   rX   rI   rE   r9  r3   rS   rT   r2  r3  s               r   Útest_kdtree_box_0boxsizer>  #  sµ   € à€AØ	€AØ	€AÜ‡I�I‡N�N�4ÔÜ�9‰9×Ñ 1 a &ÐÓ)€DÙ˜¨°3Ô7€Fñ ˜$¨Ô+€Gà�”B—F‘Fˆ^ò ˆØ—‘˜d A¨�Ó+‰ˆˆBà—=‘=  q¨A�=Ó.‰ˆˆSÜ˜B Ô$Ü�R˜Õñr   c                 ón  — t        j                  ddd«      j                  dd«      }|d d …dfxx   dz  cc<   t        j                  t
        «      5   | |dd¬«       d d d «       t        j                  t
        «      5   | |dd¬«       d d d «        | |dd	¬«       y # 1 sw Y   ŒBxY w# 1 sw Y   Œ!xY w)
Nr   r@   r{   rß   r"   rÃ   r   )rÛ   rõ   )rõ   rÛ   )rG   rª  rF  rÆ   r	   rÇ   ©r   rI   s     r   Útest_kdtree_box_upper_boundsrA  6  s›   € Ü�;‰;�q˜!˜RÓ ×(Ñ(¨¨QÓ/€DØŠˆAˆƒJ�"ÑƒJÜ	�‰”zÓ	"ñ 3Ù�D 1¨cÕ2÷3ä	�‰”zÓ	"ñ :Ù�D 1¨jÕ9÷:ñ �˜q¨*Ö5÷3ð 3ú÷:ð :ús   ÁBÁ?B+ÂB(Â+B4c                 óZ   — t        j                  ddd«      }t        t        | |dd¬«       y )Nrß   r"   r{   rÃ   r   )rG   rª  Úassert_raisesrÇ   r@  s     r   Útest_kdtree_box_lower_boundsrD  @  s$   € Ü�;‰;�r˜1˜bÓ!€DÜ”*˜k¨4¸!ÀSÖIr   c                 óü  — g }g }t        j                  d|j                  d   z  «      }t        j                  t        j                  |dg|j                  d   z  «      «      j
                  }|dz
  }|D ]j  }	||	dz  |z  z   }
| j                  |
||¬«      \  }}|j                  d|«      }|j                  d|«      }|j                  |«       |j                  |«       Œl t        j                  |d¬«      }t        j                  |d¬«      }t        j                  t        |«      t        |«      |z  gddg¬	«      }||d
   d d  ||d   d d  |j                  d¬«       |d   d d …d |…f   |d
   d d …d |…f   fS )Nr–   r"   rÃ   r7  rß   rB   )rT   Úi8)rS   Úf8rì   rT   rS   )Úorder)rG   Úaranger±   r—   Úunravel_indexrÑ   rF   rF  ÚappendrH  Úemptyr¡  rG  )rE   rI   rX   r4   r3   rS   rT   rD   Únnr]   Úimager:  r;  r­  s                 r   r8  r8  D  su  € Ø	€BØ	€BÜ
�	‰	�!�t—z‘z !‘}Ñ$Ó%€AÜ	�‰”"×"Ñ" 1 q c¨D¯J©J°q©MÑ&9Ó:Ó	;×	=Ñ	=€BØ	ˆc‰€BØò ˆØ�q˜3‘w Ñ(Ñ(ˆØ—<‘<  q¨A�<Ó.‰ˆˆSØ�k‰k˜"˜aÓ ˆØ�k‰k˜"˜aÓ ˆØ
�	‰	�#ŒØ
�	‰	�#�ðô 
�‰˜ Ô	$€BÜ	�‰˜ Ô	$€Bä�X‰X”s˜4“y¤# b£'¨A¡+Ð.ØØð7ô €Fð €Fˆ4�L‘€OØ€Fˆ4�L‘€OØ
‡K�K�d€KÔØ�$‰<š˜2˜A˜2˜Ñ  t¡ªQ°°°¨UÑ 3Ð3Ð3r   c                  ó   — 	 dd l } d\  }}t        j                  t	        dd|z   |«      t	        dd|z   |«      f   \  }}t        j
                  |«      dz  t        j                  d||z  z   «      t        j                  |«      z  z   }t        j                  |«      }||d d  d}t        j                  j                  d|j                  t        j                  j                  d«      dz   «      }||j                  |<   t        j                  t        j                  ||k7  «      «      j                  }	t        j                  t        j                  ||k(  «      «      j                  }
| j                  | j                   «      j"                  }t%        d«      D ]  }t'        |	«      }Œ d}t%        d«      D ]y  }| j                  | j                   «      j"                  }t'        |	«      }|j)                  |
d	d
¬«      \  }}| j                  | j                   «      j"                  }||kD  sŒu|dz  }Œ{ t+        |dk  «       y # t        $ r Y y w xY w)Nr   )çš™™™™™©?rP  r"   r-  r{   g     ÀX@r^  ru   rv   r@   )rX   r3   )ÚresourceÚImportErrorrG   r  ÚsliceÚsinÚcosÚ
empty_liker|   r  rÿ   ÚflatÚvstackÚnonzerorÑ   Ú	getrusageÚRUSAGE_SELFÚ	ru_maxrssr9  r   rF   r   )rQ  ÚdxÚdyrš  rD   ÚzÚz_copyÚFILLVALÚmaskÚigoodÚibadÚmem_userL   r*   Ú	num_leaksrè   ÚiqueryÚnew_mem_uses                     r   Útest_ckdtree_memuseri  ]  sù  € ðÛð
 �F€BˆÜ�8‰8”E˜!˜Q ™V RÓ(Ü˜!˜Q ™V RÓ(ð)ñ *�D€A€qä
�‰ˆq‹	�2‰œŸ™˜r A a¡C™xÓ(¬2¯6©6°!«9Ñ4Ñ4€AÜ�]‰]˜1Ó€FØ€F‰1€Ià€GÜ�9‰9×Ñ˜Q §¡¬¯	©	×(9Ñ(9¸"Ó(=ÀÑ(AÓB€DØ€F‡K�K�ÑÜ�I‰I”b—j‘j  g¡Ó.Ó/×1Ñ1€EÜ�9‰9”R—Z‘Z  W¡Ó-Ó.×0Ñ0€DØ× Ñ  ×!5Ñ!5Ó6×@Ñ@€Gä�2‹Yò ˆÜ�u‹~‰ðð €IÜ�3‹Zò ˆØ×$Ñ$ X×%9Ñ%9Ó:×DÑDˆÜ�u‹~ˆØ—z‘z $¨!¨q�zÓ1‰ˆˆfØ×(Ñ(¨×)=Ñ)=Ó>×HÑHˆØ˜Ó Ø˜‰N‰Iðô ˆI˜‰NÕøô? ò áðús   ‚I É	IÉIc                 óÈ  — t        j                  ddd«      j                  dd«      } | |d¬«      }t        j                  t	        |«      d¬«      }|j                  |«      }t        |g d¢«       t        t        |j
                  |d d «       t        d	«      D ]÷  }|j                  |t        j                  dd	|«      «      }|j                  |t        j                  dd	|«      ||f¬
«      }|j                  |t        j                  dd	|«      |d f¬
«      }|j                  |t        j                  dd	|«      d |f¬
«      }	|j                  |t        j                  dd	|«      |¬
«       t        ||«       t        ||«       t        ||	«       Œù t        t	        |«      «      D ]¸  }|j                  «       }
d|
|<   ||
dk7     } | |«      }|j                  |t        j                  dd	d«      |
|
f¬
«      }|j                  |t        j                  dd	d«      «      }t        ||«       t        t        |j                  |t        j                  dd	d«      |
¬
«       Œº y )Nr   r"   rv   rß   rx   Úf4rì   )rv   r@   r"   r"   r@   r"   r"   r{   )Úweightsru   )rG   rª  rF  rî   r¡  Ú_build_weightsr   rC  rÇ   r9  r   r  )r   rI   Útree1rl  ÚnwrL   Úc1Úc2Úc3Úc4Úw1rW  Útree2s                r   Útest_kdtree_weightsrv  ˆ  s:  € ä�;‰;�q˜!˜QÓ×'Ñ'¨¨AÓ.€DÙ˜ qÔ)€EÜ�g‰g”c˜$“i tÔ,€Gà	×	Ñ	˜gÓ	&€BÜ�rÒ0Ô1ä”*˜e×2Ñ2°G¸C¸R°LÔAä�2‹Yò #ˆà×"Ñ" 5¬"¯+©+°a¸¸QÓ*?Ó@ˆØ×"Ñ" 5¬"¯+©+°a¸¸QÓ*?Ø  'Ð*ð #ó ,ˆà×"Ñ" 5¬"¯+©+°a¸¸QÓ*?Ø  $˜ð #ó )ˆà×"Ñ" 5¬"¯+©+°a¸¸QÓ*?Ø˜w˜ð #ó )ˆà×Ñ˜e¤R§[¡[°°B¸Ó%:Øð 	ô 	!ô 	˜2˜rÔ"Ü˜2˜rÔ"Ü˜2˜rÕ"ð#ô  ”3�t“9Óò 8ˆà�\‰\‹^ˆØˆˆ1‰Ø�R˜1‘W‘ˆÙ˜EÓ"ˆà×"Ñ" 5¬"¯+©+°a¸¸SÓ*AØ˜R˜ð #ó "ˆð ×"Ñ" 5¬"¯+©+°a¸¸SÓ*AÓBˆä˜2˜rÔ"ô 	”j %×"7Ñ"7Ø”2—;‘;˜q " cÓ*°Bö	8ñ!8r   c                 ó.  — d}d}t         j                  j                  d«       t         j                  j                  ||f¬«      } | |d¬«      }g d¢}t        j                  t        |«      «      }|j                  ||«      }|j                  ||d¬	«      }t        ||j                  «       «       t        t        j                  |«      t        j                  |«      «      D ]/  \  }	}
|j                  ||
«      }t        ||t        |	«         «       Œ1 y )
Nr6  r@   rw   rþ   r"   rx   )r   r¨  r¨  g{®Gáz”?rP  F©Ú
cumulative)rG   r|   r}   ÚnormalrI  r¡  r   r   Úcumsumr^   Ú	itertoolsÚpermutationsr   r0  )r   r]   rP   rI   rE   Úr0Úi0Ún0ÚnncrL   r1  s              r   Ú&test_kdtree_count_neighbous_multiple_rr‚  ¶  sì   € à€AØ	€AÜ‡I�I‡N�N�4ÔÜ�9‰9×Ñ ! Q ÐÓ(€DÙ˜¨Ô*€FÚ	$€BÜ	�‰”3�r“7Ó	€BØ	×	Ñ	 ¨Ó	+€BØ
×
 Ñ
  ¨¸Ð
 Ó
>€CÜ��S—Z‘Z“\Ô"ä”I×*Ñ*¨2Ó.Ü×*Ñ*¨2Ó.ó0ò +‰ˆˆ1ð ×"Ñ" 6¨1Ó-ˆÜ˜1˜b¤ a£™kÕ*ñ	+r   c                 ó  — t         j                  j                  d«      }|j                  dd«      }|j                  dd«      } | |«      }|j	                  ddgd¬«      \  }}|j                  ddgd|z  «      }t        |g «       |j	                  |d¬«      \  }}|j                  «       }|j                  |d|z  «      }t        j                  dt        ¬	«      }	|	j                  g «       t        |	|«        | |«      }
|j                  |
d|z  «      }	t        dg gz  |	«       |j                  |
d|z  «      }	t        |	d
k(  «       |j                  |
d|z  d¬«      }	t        |	t        j                  d«      k(  d«       |j                  |
d|z  d¬«      }	t        |	t        j                  d«      k(  d«       |j                  |
d|z  d¬«      }	t!        |	i «       |j                  |
d|z  d¬«      }	dt         j"                  fdt         j"                  fdt         j$                  fg}t        j&                  |d¬«      }t        j                  d|¬	«      }t        |	|«       |j	                  |d¬«      \  }}|d d …df   j                  «       }|j)                  d|z  d¬«      }	t!        |	t+        «       «       |j)                  d|z  d¬«      }	t        j                  dt         j"                  ¬	«      }t        |	|«       y )Nrw   r{   r@   r/   r"   r·   rk   )r{   )r±   rí   r   r   r¶  )r{   r{   Tr   rÎ  rÏ  rL   rX  rÐ  )Úalign)r   rß   râ  )r   r@   )rG   r|   rE  ÚrandrF   rã   r   r+  rL  ÚobjectÚfillrT  r   r   r»  r°   r   ÚintpÚfloat64rí   rä  râ  )r   rI  ÚXÚYr*   r6   rL   r_  Úmindrš  ÚotherÚ_dtypeÚ	res_dtypes                r   Útest_len0_arraysr�  É  s£  € ô �)‰)×
Ñ
 Ó
%€CØ�‰��Q‹€AØ�‰��Q‹€AÙ�q‹>€Dà�:‰:�r˜2�h !ˆ:Ó$�D€A€qØ×Ñ˜r 2˜h¨¨A©Ó.€AÜ�q˜"Ôà�:‰:�a˜1ˆ:Ó�D€A€qØ�5‰5‹7€DØ×Ñ˜a  T¡Ó*€AÜ
�‰�v¤VÔ,€AØ‡F�Fˆ2„JÜ�q˜!Ôá˜‹N€EØ×Ñ˜U C¨¡HÓ-€AÜ�r˜2˜$‘w Ô"à×Ñ˜U C¨¡HÓ-€AÜˆA�‰F„Oà×#Ñ# E¨3¨t©8ÀÐ#ÓM€AÜ�qœBŸH™H XÓ.Ñ.°Ô5Ø×#Ñ# E¨3¨t©8ÀÐ#ÓM€AÜ�qœBŸH™H XÓ.Ñ.°Ô5Ø×#Ñ# E¨3¨t©8ÀÐ#ÓH€AÜ��BÔØ×#Ñ# E¨3¨t©8ÀÐ#ÓK€AØ”B—G‘Gˆn˜s¤B§G¡G˜n¨s´B·J±JÐ.?Ð@€FÜ—‘˜ tÔ,€IÜ
�‰�u IÔ.€AÜ�q˜!Ôà�:‰:�a˜1ˆ:Ó�D€A€qØŠQ�ˆU‰8�<‰<‹>€DØ×Ñ˜˜T™¨uÐÓ5€AÜ�”C“EÔØ×Ñ˜˜T™¨yÐÓ9€AÜ
�‰�v¤R§W¡WÔ-€AÜ�q˜!Õr   c           
      ó`  — d}t        dd«      D �]  }t        j                  ||f«      }d||dz  d  t        j                  dd¬«      D ]à  \  }} | |||d¬«      }|j
                  dk(  sJ ‚| t        u r|j                  n|j                  j                  }t        t        j                  |j                  j                  «      t        j                  d	|dz  «      «       t        t        j                  |j                  j                  «      t        j                  |dz  |«      «       Œâ �Œ y )
Ni   r"   rþ  r@   ©FT)Úrepeat)rÉ  rÊ  ry   r–   r   )r9  rG   rî   r|  Úproductrÿ   r   r*   Ú_noder   rG  r'  r(  rI  r�  )r   r]   rP   rI   ÚbalancedÚcompactrE   r*   s           r   Útest_kdtree_duplicated_inputsr˜  ÷  s  € à€AÜ�1�a‹[ó &ˆÜ�w‰w˜˜1�v‹ˆØˆˆQ�‰TˆUˆä!*×!2Ñ!2°=ÈÔ!Kò 	&ÑˆH�gÙ  °XØ/6ÀôDˆFà—;‘; !Ò#Ð#Ð#à#.´'Ñ#9�F—K’KØ—K‘K×%Ñ%ð ô Ü—‘˜Ÿ™×+Ñ+Ó,Ü—	‘	˜!˜Q !™VÓ$ô&ô Ü—‘˜Ÿ™×,Ñ,Ó-Ü—	‘	˜!˜q™& !Ó$õ&ò	&ñ	&r   c                 ó\   —  | dggd¬«      }t        t        |j                  |ddgd¬«       y )Nr   r"   rx   rk   Frx  )rC  rÇ   r   )r   rE   s     r   Ú'test_kdtree_noncumulative_nondecreasingrš    s1   € ñ
 ˜1˜#˜¨Ô+€Fä”*˜f×4Ñ4Ø��a� Uö,r   c                 óp  — t        j                  g d¢g d¢g d¢g d¢g d¢g d¢gd¬«      } | |«      }|j                  |d	d
¬«      \  }}t        |dt         j                  t         j                  t         j                  gddt         j                  t         j                  gddt         j                  t         j                  gddt         j                  t         j                  gddt         j                  t         j                  gdt         j                  t         j                  t         j                  gg«       y )N)rÛ   rÛ   rÛ   )rò  rÛ   rÛ   )rÛ   rÃ   rÛ   )rÛ   rò  rÛ   )rÃ   rÛ   rÛ   )rÃ   rÃ   rÛ   r‰  rì   rv   rz   rW   rÛ   r¨  )rG   r—   rF   r   r_   )r   ÚxyzÚckdtÚdeqÚieqs        r   Útest_short_knnr     sá   € ô �(‰(ÚÚÚÚÚÚðð ô€Cñ �sÓ€Dà�z‰z˜# ¸ˆzÓ=�H€Cˆä˜cØ”"—&‘&œ"Ÿ&™&¤"§&¡&Ð)Ø�”r—v‘vœrŸv™vÐ&Ø�”r—v‘vœrŸv™vÐ&Ø�”r—v‘vœrŸv™vÐ&Ø�”r—v‘vœrŸv™vÐ&Ø”—‘œŸ™¤§¡Ð(ð*õ+r   c                 ó  — t         j                  j                  d«       t         j                  j                  d¬«      }t         j                  j                  d¬«      } | |«      }t         j                  j	                  ddt        |«      ¬«      }|j                  ||«      }t        ||«      D ��cg c]  \  }}|j                  ||«      ‘Œ }}}t        ||«      D ]#  \  }	}
t        t        |	«      t        |
«      «       Œ% y c c}}w )Nrw   ©ru   r–   rþ   r   r@  )
rG   r|   r}   rz  r  r¡  rã   r^   r   rë  )r   rI   rF   r*   r6   ÚrvectorÚqiÚdiÚrscalarr1   r2   s              r   Útest_query_ball_point_vector_rr§  1  s×   € ä‡I�I‡N�N�4ÔÜ�9‰9×Ñ ÐÓ*€DÜ�I‰I×Ñ (ÐÓ+€EÙ�tÓ€DÜ
�	‰	×Ñ˜!˜S¤s¨5£zÐÓ2€Aà×#Ñ# E¨1Ó-€GÜ;>¸uÀa»=×I±°°Rˆt×$Ñ$ R¨Õ,ÐI€GÑIÜ�G˜WÓ%ò 1‰ˆˆ1Üœ6 !›9¤f¨Q£iÕ0ñ1ùó Js   Â4Dc           	      óJ  — t         j                  j                  d«       t         j                  j                  d¬«      }t         j                  j                  d¬«      } | |«      }d}|j	                  ||d¬«      }|j	                  ||d¬«      D �cg c]  }t        |«      ‘Œ }}|D �cg c]  }t        |j	                  ||«      «      ‘Œ }	}|D �cg c]  }|j	                  ||d¬«      ‘Œ }
}t        ||«       t        ||	«       t        ||
«       y c c}w c c}w c c}w )Nrw   r¢  rþ   r@  T©Úreturn_lengthF)rG   r|   r}   rz  rã   r¡  r   )r   rI   rF   r*   r6   Úlengthrç   Úlength2r¤  Úlength3Úlength4s              r   Útest_query_ball_point_lengthr¯  >  s  € ä‡I�I‡N�N�4ÔÜ�9‰9×Ñ ÐÓ*€DÜ�I‰I×Ñ (ÐÓ+€EÙ�tÓ€DØ€Aà×"Ñ" 5¨!¸4Ð"Ó@€FØ#'×#8Ñ#8¸ÀÐQVÐ#8Ó#WÖX˜CŒs�3�xÐX€GÐXØ;@ÖA°RŒs�4×(Ñ(¨¨QÓ/Õ0ÐA€GÐAØJOÖPÀBˆt×$Ñ$ R¨¸$Ð$Õ?ÐP€GÐPÜ�v˜wÔ'Ü�v˜wÔ'Ü�v˜wÕ'ùò YùÚAùÚPs   ÂDÂ,"DÃD c                 ó2  — t         j                  j                  d«       t         j                  j                  d¬«      }t        j                  d«      dz  }t        j
                  t        j                  d«      d d d…   dz  «      d d d…   }t         j                  j                  d¬«      }t        j
                  |j                  «      j                  }|j                  d   |j                  d   k7  sJ ‚|j                  d   |j                  d   k7  sJ ‚ | |«      }|j                  ||d¬«      }|j                  ||d¬«      }t        ||«       |j                  |d	«      \  }	}
|j                  |d	«      \  }}t        |	|«       t        |
|«       y )
Nrw   r¢  rþ   ru   g{®Gáz¤?rß   Tr©  r"   )rG   r|   r}   rz  rI  ÚascontiguousarrayrÑ   Ústridesrã   r   rF   )r   rI   Úd_contiguousÚd_discontiguousÚquery_contiguousÚquery_discontiguousr*   Úlength1r¬  Úd1Úi1Úd2Úi2s                r   Útest_discontiguousr¼  N  s  € ä‡I�I‡N�N�4ÔÜ�9‰9×Ñ ÐÓ*€DÜ—9‘9˜S“> DÑ(€LÜ×*Ñ*ÜŸ)™) C›.©¨2¨Ñ.°Ñ5ó7Ù7;¸°tñ=€Oä—y‘y×'Ñ'¨XÐ'Ó6ÐÜ×.Ñ.Ð/?×/AÑ/AÓB×DÑDÐØ×&Ñ& rÑ*Ð.>×.FÑ.FÀrÑ.JÒJÐJÐJØ×"Ñ" 2Ñ&¨,×*>Ñ*>¸rÑ*BÒBÐBÐBá�tÓ€Dà×#Ñ#Ð$4Ø$0Àð $ó F€Gà×#Ñ#Ð$7Ø$3À4ð $ó I€Gô �w Ô(à�Z‰ZÐ(¨!Ó,�F€BˆØ�Z‰ZÐ+¨QÓ/�F€Bˆä�r˜2ÔÜ�r˜2Õr   zbalanced_tree, compact_nodes))TF)TT)FFr’  c                 óX  — t         j                  j                  d«       t        j                  d¬«      }t        j                  d¬«      }t        j                  d¬«      } | |||¬«      }|j                  |dd¬	«      }|d
k(  sJ ‚|j                  |d«      \  }}	|	j                  dk(  sJ ‚|j                  dk(  sJ ‚t        j                  |«      j                  «       sJ ‚|j                  |d
dg«      }
t        |
d
d
g«       |j                  |dd¬«      }|j                  dk(  sJ ‚y )Nrw   )r   r–   )r±   )r"   r–   r.  rÈ  r@  Tr©  r   r@   )r@   r@   r"   r   r¶  r/  )rG   r|   r}   rL  rî   rã   rF   r±   ÚisinfrJ   r   r   r»  )r   rÉ  rÊ  Úempty_v3Úquery_v3Úquery_v2r*   r«  rS   rT   ÚNr½  s               r   Útest_kdtree_empty_inputrÃ  j  s  € ô ‡I�I‡N�N�4ÔÜ�x‰x˜fÔ%€HÜ�w‰w˜VÔ$€HÜ�w‰w˜VÔ$€Há�x¨}Ø%2ô4€Dà×"Ñ" 8¨SÀÐ"ÓE€FØ�QŠ;Ðˆ;à�Z‰Z˜ !Ó$�F€BˆØ�8‰8�vÒÐÐØ�8‰8�vÒÐÐÜ�8‰8�B‹<×ÑÔÐÐà×Ñ˜T A q 6Ó*€AÜ�q˜1˜a˜&Ô!à×#Ñ# D¨#¸;Ð#ÓG€AØ�7‰7�fÒÐÑr   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)Ú_Test_sorted_query_ball_pointc                 óÌ   — t         j                  j                  d«       t         j                  j                  dd«      | _        | j                  | j                  «      | _        y )Nrw   ru   r"   )rG   r|   r}   r~   rD   r   r�  r   s    r   r€   z*_Test_sorted_query_ball_point.setup_methodˆ  s>   € Ü
�	‰	�‰�tÔÜ—‘—‘  aÓ(ˆŒØ×$Ñ$ T§V¡VÓ,ˆ�	r   c                 ó  — | j                   j                  | j                  dd¬«      }|D ]  }t        |t	        |«      «       Œ | j                  D ]5  }| j                   j                  |dd¬«      }t        |t	        |«      «       Œ7 y )NrÃ   T©Úreturn_sorted)r�  rã   rD   r   rë  )r<   Ú	idxs_listÚidxsr÷  s       r   Útest_return_sorted_Truez5_Test_sorted_query_ball_point.test_return_sorted_True�  s|   € Ø—I‘I×.Ñ.¨t¯v©v°rÈÐ.ÓNˆ	Øò 	3ˆDÜ˜t¤V¨D£\Õ2ð	3ð —&‘&ò 	3ˆBØ—9‘9×-Ñ-¨b°"ÀDÐ-ÓIˆDÜ˜t¤V¨D£\Õ2ñ	3r   c                 óˆ  — | j                   j                  | j                  d«      }|D ]  }t        |t	        |«      «       Œ | j                  D �cg c]  }| j                   j                  |d«      ‘Œ  }}| j                   j                  | j                  dd¬«      }t        ||«      D ]  \  }}t        ||«       Œ yc c}w )z£Previous behavior was to sort the returned indices if there were
        multiple points per query but not sort them if there was a single point
        per query.rÃ   FrÈ  N)r�  rã   rD   r   rë  r^   )r<   rÊ  rË  r÷  Úidxs_list_singleÚidxs_list_FalseÚidxs0Úidxs1s           r   Útest_return_sorted_Nonez5_Test_sorted_query_ball_point.test_return_sorted_None–  s²   € ð —I‘I×.Ñ.¨t¯v©v°rÓ:ˆ	Øò 	3ˆDÜ˜t¤V¨D£\Õ2ð	3ð JNÏÉÖPÀ2˜DŸI™I×6Ñ6°r¸2Õ>ÐPÐÐPØŸ)™)×4Ñ4°T·V±V¸RÈuÐ4ÓUˆÜ Ð1AÓBò 	-‰LˆE�5Ü˜u eÕ,ñ	-ùò Qs   Á#B?N)r$   ro   rp   r€   rÌ  rÒ  rq   r   r   rÅ  rÅ  †  s   „ ò-ò
3ó-r   rÅ  c                  ó  — t         j                  j                  dd«      j                  t        «      } t        j                  t        d¬«      5  t        | «      }d d d «       t        | j                  «      }t        j                  t        d¬«      5  |j                  | «       d d d «       t        j                  t        d¬«      5  |j                  | d¬«       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{   r@   zcomplex datarÄ   r"   ró  )rG   r|   r…  ÚviewÚcomplexrÆ   r	   Ú	TypeErrorr   ÚrealrF   rã   ©r:  Úts     r   Útest_kdtree_complex_datarÚ  ¤  sÈ   € ä�Y‰Y�^‰^˜B Ó"×'Ñ'¬Ó0€Fä	�‰”y¨Ô	7ñ Ü�6‹Nˆ÷ô 	ˆv�{‰{Ó€Aä	�‰”y¨Ô	7ñ Ø	�‰�Œ÷ô 
�‰”y¨Ô	7ñ (Ø	×Ñ˜6 QÐÔ'÷(ð (÷ð ú÷
ð ú÷(ð (ús$   ÁC%ÂC1ÃC=Ã%C.Ã1C:Ã=Dc                 óæ  — |j                   }t        |t        j                  «      sJ ‚|j                  |j
                  d   k(  sJ ‚|g}|�r¥|j                  d«      }t        |t        j                  «      rot        |j                  t        «      sJ ‚|j                  t        |j                  «      k(  sJ ‚t        ||j                     |j                  j                  «       �nt        |t        j                  «      sJ ‚t        |j                  t        «      sJ ‚d|j                  cxk  r|j                  k  sJ ‚ J ‚t        |j                   t"        «      sJ ‚t        |j                  t        «      sJ ‚|j                  |j$                  j                  |j&                  j                  z   k(  sJ ‚|j)                  |j&                  «       |j)                  |j$                  «       |r�Œ¤y y )Nr   rß   )r*   r¦   r   Ú	innernodeÚchildrenr±   ÚpopÚleafnoderÍ   r¡  Úidxr   r•  r)  r&  rP   r‰  r§   rŒ  r�  rK  )rL   rÙ  r:  Úrootr  r]   s         r   Ú
visit_treerâ  ´  sm  € Ø�6‰6€Dä�dœF×,Ñ,Ô-Ð-Ð-Ø�=‰=˜FŸL™L¨™OÒ+Ð+Ð+ð ˆF€Eâ
Ø�I‰I�b‹Mˆä�aœŸ™Ô)Ü˜aŸj™j¬#Ô.Ð.Ð.Ø—:‘:¤ Q§U¡U£Ò+Ð+Ð+Ü˜v a§e¡e™}¨a¯g©g×.AÑ.AÖBä˜a¤×!1Ñ!1Ô2Ð2Ð2Ü˜aŸk™k¬3Ô/Ð/Ð/Ø˜Ÿ™Ô) a§c¡cÒ)Ð)Ñ)Ð)Ð)Ü˜aŸg™g¤uÔ-Ð-Ð-Ü˜aŸj™j¬#Ô.Ð.Ð.Ø—:‘: §¡§¡°1·9±9×3EÑ3EÑ!EÒEÐEÐEØ�L‰L˜Ÿ™Ô#Ø�L‰L˜Ÿ™Ô õ r   c                  ó²   — t         j                  j                  d«       t         j                  j                  dd«      } t	        | «      }t        d|| «       y )Nrw   ru   rv   r   )rG   r|   r}   r…  r   râ  rØ  s     r   Útest_kdtree_tree_accessrä  Ð  s;   € ä‡I�I‡N�N�4ÔÜ�Y‰Y�^‰^˜C Ó#€FÜˆv‹€AÜˆq�!�VÕr   zSpawns worker threadsc                  ó    — t         j                  j                  d«      } | j                  dd«      }t	        |«      }t        dt        ||«       y )Nl   ]Q’s ru   rv   r{   )rG   r|   rE  r…  r   r
   râ  )rI  r:  rÙ  s      r   Útest_multithreaded_tree_accessræ  Ø  s?   € ô �)‰)×
Ñ
 
Ó
+€CØ�X‰X�c˜1Ó€FÜˆv‹€AÜ˜B¤
¨A¨vÕ6r   c                  óº  — t         j                  j                  d«       t         j                  j                  dd«      } t	        | «      }t        |j                  t        «      sJ ‚|j                  | j                  d   k(  sJ ‚t        |j                  t        «      sJ ‚|j                  | j                  d   k(  sJ ‚t        |j                  t        «      sJ ‚|j                  dk(  sJ ‚t        |j                  t        j                  | d¬«      «       t        |j                  t        j                  | d¬«      «       |j                   j"                  | u sJ ‚y )Nrw   ru   rv   r   r"   r{   rB   )rG   r|   r}   r…  r   r¦   rP   rÍ   r]   r±   ry   r   rŠ  rQ   r‹  ÚaminrI   ÚbaserØ  s     r   Útest_kdtree_attributesrê  â  sù   € ä‡I�I‡N�N�4ÔÜ�Y‰Y�^‰^˜C Ó#€FÜˆv‹€Aä�a—c‘cœ3ÔÐÐØ�3‰3�&—,‘,˜q‘/Ò!Ð!Ð!ä�a—c‘cœ3ÔÐÐØ�3‰3�&—,‘,˜q‘/Ò!Ð!Ð!ä�a—j‘j¤#Ô&Ð&Ð&Ø�:‰:˜ÒÐÐä�q—w‘w¤§¡¨°QÔ 7Ô8Ü�q—v‘vœrŸw™w v°AÔ6Ô7Ø�6‰6�;‰;˜&Ñ Ð Ñ r   Úkdtree_classc           
      óæ  — t         j                  j                  d«      }t        j                  ddd«      }|j                  d«      j	                  d«      }|j                  d«      j	                  d«      }|j                  d«      }|j                  d	«      } | |«      } | |«      }|j                  ||d
||f¬«      }	|d d d …f   |d d …d f   z  }
t         j                  j                  |d d d …d d …f   |d d …d d d …f   z
  d¬«      }t        t        j                  dg|d d «      |«      D ��cg c]&  \  }}t        j                  |
||k  ||k  z     «      ‘Œ( }}}t        |	|«       y c c}}w )Nrw   rP  r"   é   )r™  r–   é-   )é   r–   r™  rï  F)ry  rl  rß   rB   r   )rG   r|   rE  rI  rF  r   Úlinalgré   r^   r|  ÚchainrH   r   )rë  rI  r1  ÚAÚBÚwAÚwBÚkdAÚkdBÚnABrl  rè   Úprev_radiusrC  Úexpects                  r   Ú$test_kdtree_count_neighbors_weightedrû  ö  sV  € ä
�)‰)×
Ñ
 Ó
%€CÜ
�	‰	�$˜˜4Ó €Aà�
‰
�2‹×Ñ˜uÓ%€AØ�
‰
�2‹×Ñ˜vÓ&€Aà	�‰�A‹€BØ	�‰�B‹€Bá
�q‹/€CÙ
�q‹/€Cà
×
Ñ
˜c 1°ÀÀBÀÐ
Ó
H€Cð �’q�‰k˜Bšq $˜w™KÑ'€GÜ�9‰9�>‰>˜!˜D¢!¢Q˜J™-¨!ªA¨t²Q¨J©-Ñ7¸bˆ>ÓA€Dä),¬Y¯_©_¸a¸SÀ!ÀCÀRÀ&Ó-IÈ1Ó)M÷OÙ%�+˜vô �f‰f�W˜k¨DÑ0°T¸V±^ÑDÑEÕFð O€Fñ Oä�C˜Õ ùóOs   Ä2+E-c                  ó  — g d¢} t        | «      }t        j                  | t        j                  |t        j                  «      g«      d d …d f   }t        j                  t        d¬«      5  t        |«       d d d «       y # 1 sw Y   y xY w)N)
r"   r-  iöÿÿÿr™  éüÿÿÿiðÿÿÿiúÿÿÿé   r–   iõÿÿÿúmust be finiterÄ   )	r¡  rG   rH  r  ÚnanrÆ   r	   rÇ   r   )Úvalsr]   rI   s      r   Útest_kdtree_nanr    sf   € Ú1€DÜˆD‹	€AÜ�>‰>˜4¤§¡¨¬B¯F©FÓ!3Ð4Ó5²a¸°gÑ>€DÜ	�‰”zÐ)9Ô	:ñ ÜˆtŒ÷÷ ñ ús   Á+B Â B	c                  ó  — t         j                  j                  d«      } | j                  ddd¬«      }t	        |dd¬«      }t        d«      D �cg c]  }t         j                  ‘Œ }}t        j                  t        d	¬
«      5  |j                  |«       d d d «       t        j                  t        d	¬
«      5  |j                  |d«       d d d «       t         j                  |dd d …f<   t        j                  t        d	¬
«      5  t	        |dd¬«       d d d «       t        j                  t        d	¬
«      5  t	        |dd¬«       d d d «       t        j                  t        d	¬
«      5  t	        |dd¬«       d d d «       t        j                  t        d	¬
«      5  t	        |dd¬«       d d d «       y c c}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   ŒrxY w# 1 sw Y   y xY w)Ni90  r¢  rÛ   rk   )rÿ   ÚlowÚhighFrÈ  r–   rÿ  rÄ   r"   r   T)rG   r|   Údefault_rngr  r   r9  r   rÆ   r	   rÇ   rF   rã   )rI  ÚcoordsrÙ  r#   Ú	bad_coords        r   Útest_nonfinite_inputs_gh_18223r	    s¡  € Ü
�)‰)×
Ñ
 Ó
&€CØ�[‰[˜h¨C°cˆ[Ó:€FÜˆv U¸%Ô@€AÜ!& q£Ö*˜A”—“Ð*€IÐ*ä	�‰”zÐ)9Ô	:ñ Ø	�‰�	Ô÷ä	�‰”zÐ)9Ô	:ñ )Ø	×Ñ˜9 aÔ(÷)ô —6‘6€Fˆ1Šaˆ4�LÜ	�‰”zÐ)9Ô	:ñ @Üˆv T¸Õ?÷@ä	�‰”zÐ)9Ô	:ñ @Üˆv U¸$Õ?÷@ä	�‰”zÐ)9Ô	:ñ ?Üˆv T¸Õ>÷?ä	�‰”zÐ)9Ô	:ñ AÜˆv U¸%Õ@÷Að Aùò +÷ñ ú÷)ð )ú÷@ð @ú÷@ð @ú÷?ð ?ú÷Að AúsN   ÁF3ÂF8Â8GÄGÄ7GÅ)G)ÆG5Æ8GÇGÇGÇG&Ç)G2Ç5G>Úincantationc                 óà   —  G d„ dt         j                  «      }ddgddgddgg}t        j                  |«      } ||«      } | |d	«      }|j                  |d
«       |j	                  |d«       y )Nc                   ó   — e Zd Zd„ Zd„ Zy)útest_gh_18800.<locals>.ArrLikec                 ó\   — t        j                  |«      j                  | «      }d |_        |S r   )rG   r  rÔ  rJ   )ÚclsÚinput_arrayÚobjs      r   Ú__new__z&test_gh_18800.<locals>.ArrLike.__new__3  s)   € Ü—*‘*˜[Ó)×.Ñ.¨sÓ3ˆCð ˆCŒGØˆJr   c                 ó.   — |€y t        |dd «      | _        y )NrJ   )ÚgetattrrJ   )r<   r  s     r   Ú__array_finalize__z1test_gh_18800.<locals>.ArrLike.__array_finalize__:  s   € Øˆ{ØÜ˜s E¨4Ó0ˆD�Hr   N)r$   ro   rp   r  r  rq   r   r   ÚArrLiker  2  s   „ ò	ó	1r   r  g®GázŽP@g…ëQ¸E@@g…ëQ¸…6@g¤p=
×c6@gÃõ(\�?@g=
×£pMT@r{   r"   r/  )rG   rÏ  r—   rF   rã   )r
  r  r:  rï  Úarr_liker*   s         r   Útest_gh_18800r  ,  ss   € ô1”"—*‘*ô 1ð 
�ˆØ	�ˆØ	�ˆð
€Fô
 �(‰(�6Ó
€CÙ�s‹|€HÙ�v˜rÓ"€DØ‡J�Jˆx˜ÔØ×Ñ˜( CÕ(r   c                 óD  — t         j                  j                  d«      }d}d}|j                  ||«      } | |d¬«      }ddddd d	œ}|j	                  «       D ]6  \  }}t        j                  t        d
¬«      5  t        |||«       d d d «       Œ8 t        j                  ddgt         j                  ¬«      dddddœ}	|	j	                  «       D ]8  \  }}t        j                  t        d¬«      5  |t        ||«      d d  d d d «       Œ: y # 1 sw Y   Œ»xY w# 1 sw Y   ŒQxY w)Nl   ¿X rÐ   r@   r"   r  r–   ru   r   )rP   r]   rÿ   ry   r*   z(is not writable|has no setter)rÄ   r   rì   r™  rv   rz  )rI   r(  r4   rŠ  r‹  zdestination is read-only)rG   r|   rE  r…  r¼  rÆ   r	   ÚAttributeErrorr  r—   r‰  rÇ   r  )
r   rI  r]   rX   r:  rÑ   Úobject_attrsÚattrÚattr_valÚarray_attrss
             r   Útest_immutabler  K  s'  € Ü
�)‰)×
Ñ
 
Ó
+€CØ€AØ	€AØ�X‰X�a˜‹^€FÙ�F AÔ&€AàØØØØñ€Lð '×,Ñ,Ó.ò '‰ˆˆhÜ�]‰]œ>Ð1RÔSñ 	'Ü�A�t˜XÔ&÷	'ð 	'ð'ô —‘˜!˜Q˜¤r§z¡zÔ2ØØØØñ€Kð &×+Ñ+Ó-ò +‰ˆˆhÜ�]‰]œ:Ð-GÔHñ 	+Ø"*ŒG�A�tÓ™QÐ÷	+ð 	+ñ+÷	'ð 	'ú÷	+ð 	+ús   Á9D
Ã/DÄ
D	ÄD	)yr|  r   Únumpy.testingr   r   r   r   r   r   rÆ   r	   rC  ÚnumpyrG   Úscipy._lib._testutilsr
   Úscipy.spatialr   r   r   r   Úscipy.spatial._ckdtreer   r   r   Úscipy.spatial.distancer   r   Úscipy.sparser   r   r   r   Úfixturer   r-   r7   r9   rs   rƒ   rŒ   rž   r¡   rÊ   rÚ   ró   rø   r  r  r  r  r  r!  r&  r2  ÚmarkÚthread_unsafeÚ	fail_slowr>  rN  rP  r\  r`  rd  rh  rk  rn  rq  r“  r•  r—  r›  r�  r°  r³  rÖ  rÜ  rà  rå  rç  ré  rð  rü  r  r  r  r  r  r  r#  r-  r4  r<  r>  rA  rD  r8  Ú	fail_asanri  rv  r‚  r�  r˜  rš  r   r§  r¯  r¼  ÚparametrizerÃ  rÅ  rÚ  râ  rä  ræ  rê  rû  r  r	  r  r  rq   r   r   ú<module>r-     s‰  ðó Û 	÷,÷ ,õ +Û Û Ý 9ß EÓ EÝ .ß Bß 3ß EÓ Eð €‡�˜ Ð(Ô)ñó *ðòò(÷H-ñ H-ðV ô	Ð#ó 	ó ð	ð ô,�|ó ,ó ð,ð ô&Ð"ó &ó ð&ð: ô>˜+ó >ó ð>÷+)ñ +)÷Z-7ñ -7÷^>ñ >ð4 ô
Ð(ó 
ó ð
ð ô#
Ð!1ó #
ó ð#
ðL ôÐ)9ó ó ðð" ôÐ0ó ó ðð ôÐ(9ó ó ðð ôÐ-ó ó ðð ôÐ%?ó ó ðð ôÐ,ó ó ðð ôÐ.ó ó ðò'ð ‡�×ÑÐ">ÐÓ?Ø‡�×Ñ�qÓñ-ó ó @ð-ð& ‡�×ÑÐ">ÐÓ?Ø‡�×Ñ�qÓñRó ó @ðR÷23ñ 3ð* ôÐ2ó ó ðð ôÐ&;ó ó ðð" ôÐ!7ó ó ðð ôÐ*Ió ó ðð ôÐ"8ó ó ðð ôÐ+Jó ó ð÷3ñ 3ò@HòFò
Kò
>÷Fñ Fð$ ôFÐ7ó Fó ðF÷U)ñ U)ðp ôÐ#Eó ó ðò"Pò ò#ò!ò$/ò
òB#ò
;ò5òòòòò'ò$AòD $ðD ‡�×Ñ�rÓñó ðò6ò&6òJò4ð2 ‡�×Ññ(ó ð(òT,8ð\ ‡�×Ñ�rÓñ+ó ð+ò$,ò\&ò.,ò+ò21ò(ò ð8 ‡�×ÑÐ7òóñ
óð
ð. ÷-ð -ó ð-ò:(ò !ò8ð ‡�×ÑÐ"9ÐÓ:ñ7ó ;ð7ò!ð( ‡�×Ñ˜¨&°'Ð):Ó;ñ!ó <ð!ò.òAð, ‡�×Ñ˜¨°&Ð(9Ó:ñ)ó ;ð)ó<+r   