+
    nDjL                     "   ^ RI t ^ RIt^ RIHtHtHtHtHtHt ^ RI	H
t ^ RI	t	^ RIt^ RIHt ^ RIHtHtHtHt ^ RIHt ^ RIHtHt ^ RIHtHt ^ R	IHtHtHtH t  ]	PB                  ! ]].R
7      R 4       t"R t#R t$ ! R R4      t%]# ! R R]%4      4       t&]# ! R R]&4      4       t']# ! R R]%4      4       t(]# ! R R](4      4       t) ! R R4      t* ! R R4      t+ ! R R4      t,]# ! R R],4      4       t-]# ! R  R!],4      4       t.]# ! R" R#],4      4       t/]# ! R$ R%]-4      4       t0]# ! R& R']-4      4       t1]# ! R( R)]-4      4       t2]# ! R* R+].4      4       t3]# ! R, R-]-4      4       t4]# ! R. R/]-4      4       t5R0 t6]	Pn                  Pq                  R1R27      ]	Pn                  Ps                  ^4      R3 4       4       t:]	Pn                  Pq                  R1R27      ]	Pn                  Ps                  ^4      R4 4       4       t; ! R5 R64      t<]# ! R7 R8]<4      4       t=]# ! R9 R:]<4      4       t>]# ! R; R<]=4      4       t?]# ! R= R>]>4      4       t@]# ! R? R@]=4      4       tA]# ! RA RB]>4      4       tB ! RC RD4      tCRE tDRF tERG tFRH tG ! RI RJ4      tH]# ! RK RL]H4      4       tI ! RM RN4      tJ]# ! RO RP]J4      4       tKRQ tLRR tMRS tNRT tORU tPRV tQRW tRRX tSRY tTRZ tUR[ tVR\ tWR] tXR^ tYR_ tZR` t[]	Pn                  Ps                  ^
4      Ra 4       t\Rb t]Rc t^Rd t_Re t`]	Pn                  P                  Rf 4       tbRg tc]	Pn                  Ps                  ^
4      Rh 4       tdRi teRj tfRk tgRl thRm tiRn tjRo tk]	Pn                  P                  Rp. RO4      Rq 4       tm]# ! Rr Rs4      4       tnRt toRu tpRv tq]	Pn                  Pq                  RwR27      Rx 4       trRy ts]	Pn                  P                  Rz]].4      R{ 4       ttR| tuR} tv]	Pn                  P                  R~]].4      R 4       twR txR# )    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                     V P                   # N)param)requests   &Y/data/cameron/venvs/s3viz/lib/python3.14/site-packages/scipy/spatial/tests/test_kdtree.pykdtree_typer      s    ==    c                T   V P                   P                  R4      '       g   \        R4      h\        \        3 Fk  pV P                   R,          R,           VP                   ,           pV\        4       9   d   \        RV,           4      h\        W 3RV/4      pV\        4       V&   Km  	  V # )zClass 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:   NN_zDuplicated test name: r   )__name__
startswithRuntimeErrorr   r   globalstype)klstree	test_name	test_cases   &   r   
KDTreeTestr-      s    
 <<""7++FGG!LL$s*T]]:		!7)CDD F]D,AB	(	) " Jr   c                     W,
          pWDR V,          8  ;;,          V,          uu&   WDRV,          8  ;;,          V,          uu&   \        V^ V4      pV# )      ?g      ࿩r   )abpboxsizediffds   &&&&  r   distance_boxr7   .   sJ    5Dg	')w	7*$1AHr   c                   J   a  ] tR t^5t o R tR tR tR tR tR t	R t
RtV tR	# )
ConsistencyTestsc                    \        WV4      # r   r0   selfr1   r2   r3   s   &&&&r   distanceConsistencyTests.distance6       q!!r   c           
        V P                   pV P                  P                  V^4      w  r#\        V^,          \        P
                  ! WP                  V,          ,
          ^,          4      4       Rp\        \        P                  ! \        P
                  ! V P                  V\        P                  R3,          ,
          ^,          ^R7      V^,          V,
          8  4      4       R# )r"   :0yE>NNNaxisN)
xkdtreequeryr   npsumdatar   allnewaxis)r<   rE   r6   iepss   &    r   test_nearestConsistencyTests.test_nearest9   s    FF{{  A&AqD"&&!IIaL.1)<"=>rvvtyy2::q=)99A=AFAcQRSr   c           
     P   V P                   pV P                  pV P                  P                  W4      w  r4\        P
                  ! V4      pV\        P                  ! V4      ,          p\        V^,          \        P                  ! WP                  V,          ,
          ^,          4      4       Rp\        \        P                  ! \        P                  ! V P                  V\        P                  R3,          ,
          ^,          ^R7      V^,          V,           8  4      V4       R# )   rA   rB   rC   N)rE   mrF   rG   rH   amaxargmaxr   rI   rJ   r   rL   )r<   rE   rS   ddiir6   rM   rN   s   &       r   test_m_nearestConsistencyTests.test_m_nearest@   s    FFFF""1(GGBKryy}AqD"&&!IIaL.1)<"=>FF266499Qrzz1}%559BQT#XMN	
r   c           	     h   V P                   pV P                  pV P                  P                  WP                  P                  VR 7      w  r4Rp^ p\        W44       F  w  rxV\        P                  8X  d   K  V^,          p\        V^,          \        P                  ! WP                  V,          ,
          ^,          4      4       \        WrV,           8  RVR RVR 24       K  	  \        \        P                  ! V P                  V P                  V^4      V^,          V,           8  4      V4       R# )kdistance_upper_boundrA   near_d=g should be less than N)rE   r6   rF   rG   nziprH   infr   rI   rJ   r   r   r=   	r<   rE   r6   rV   rW   rN   hitsnear_dnear_is	   &        r   test_points_near!ConsistencyTests.test_points_nearM   s    FFFF""1A"N!"kNFAID	2661YYv5F3F2J+KLFsUNgfQZ7LQqE$RS * 	RVVDMM$))Q:QT#XEFMr   c           	     (   V P                   pV P                  pV P                  P                  WP                  P                  ^VR7      w  r4Rp^ p\        W44       Fn  w  rxV\        P                  8X  d   K  V^,          p\        WpP                  WP                  V,          ^4      4       \        WrV,           8  RVR RVR 24       Kp  	  \        \        P                  ! V P                  V P                  V^4      W%,           8  4      V4       R# )r"   r\   r3   r]   rA   r^   r_   r`   N)rE   r6   rF   rG   ra   rb   rH   rc   r   r=   rJ   r   r   rI   rd   s	   &        r   test_points_near_l1$ConsistencyTests.test_points_near_l1[   s    FFFF""1QR"S!"kNFAIDa69JA(NOFsUNgfQZ7LQqE$RS * 	RVVDMM$))Q:QUBCTJr   c           	     |   V P                   pV P                  pV P                  P                  WP                  P                  \
        P                  VR 7      w  r4Rp^ p\        W44       F|  w  rxV\
        P                  8X  d   K  V^,          p\        WpP                  WP                  V,          \
        P                  4      4       \        WrV,           8  RVR RVR 24       K~  	  \        \
        P                  ! V P                  V P                  V\
        P                  4      W%,           8  4      V4       R# )rk   rA   r^   r_   r`   N)rE   r6   rF   rG   ra   rH   rc   rb   r   r=   rJ   r   r   rI   rd   s	   &        r   test_points_near_linf&ConsistencyTests.test_points_near_linfi   s    FFFF""1VW"X!"kNFAIDa69JBFF(STFsUNgfQZ7LQqE$RS * 	RVVDMM$))Q?!%GH$Or   c                   V P                   pV P                  pR pV P                  P                  W4      w  rEV P                  P                  WVR7      w  rg\	        \
        P                  ! Wd^V,           ,          8*  4      4       R# )皙?rN   N)rE   r\   rF   rG   r   rH   rK   )r<   rE   r\   rN   d_reali_realr6   rM   s   &       r   test_approxConsistencyTests.test_approxw   sf    FFFF**10{{  3 /qAcEN*+,r    N)r$   
__module____qualname____firstlineno__r=   rO   rX   rh   rl   ro   rv   __static_attributes____classdictcell____classdict__s   @r   r9   r9   5   s1     "T
NKP- -r   r9   c                   &   a  ] tR t^t o R tRtV tR# )_Test_randomc                   ^dV n         ^V n        \        P                  P	                  R4       \        P                  P                  V P                   V P                  4      V n        V P                  V P                  ^R7      V n        \        P                  P                  V P                  4      V n	        RV n
        ^
V n        R# )d     leafsize皙?N)ra   rS   rH   randomseedrandnrJ   r   rF   rE   r6   r\   r<   s   &r   setup_method_Test_random.setup_method   s    
		tIIOODFFDFF3	&&tyy1&=(r   r6   rJ   r\   rF   rS   ra   rE   Nr$   ry   rz   r{   r   r|   r}   r~   s   @r   r   r      s      r   r   c                   2   a a ] tR t^t oV 3R ltRtVtV ;t# )_Test_random_farc                   < \         SV `  4        \        P                  P	                  V P
                  4      ^
,           V n        R# )
   N)superr   rH   r   r   rS   rE   r<   	__class__s   &r   r   _Test_random_far.setup_method   s+    (+r   )rE   r$   ry   rz   r{   r   r|   r}   __classcell__r   r   s   @@r   r   r      s     , ,r   r   c                   2   a  ] tR t^t o R tR tR tRtV tR# )_Test_smallc                   \         P                  ! . RO. RO. RO. RO. RO. R	O. R
O. RO.4      V n        V P                  V P                  4      V n        V P                  P
                  V n        V P                  P                  V n        \         P                  P                  R4       \         P                  P                  ^4      V n
        RV n        ^V n        R# )r   r   r/   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"   )rH   arrayrJ   r   rF   ra   rS   r   r   r   rE   r6   r\   r   s   &r   r   _Test_small.setup_method   s    HHi''''''') *	 &&tyy1
		t#r   c                R    \        V P                  P                  R^4      R4       R# )r   Nr   r   rr   )rr   r   r   rF   rG   r   s   &r   rO   _Test_small.test_nearest   s!    !!+q1	r   c                ^    \        V P                  P                  R^4      RR.^ ^.34       R# )r   rr   g?Nr   r   r   s   &r   test_nearest_two_Test_small.test_nearest_two   s.    !!+q1saV$	&r   r   N)	r$   ry   rz   r{   r   rO   r   r|   r}   r~   s   @r   r   r      s     "
& &r   r   c                   2   a a ] tR t^t oV 3R ltRtVtV ;t# )_Test_small_nonleafc                h   < \         SV `  4        V P                  V P                  ^R7      V n        R# )r"   r   N)r   r   r   rJ   rF   r   s   &r   r    _Test_small_nonleaf.setup_method   s)    &&tyy1&=r   )rF   r   r   s   @@r   r   r      s     > >r   r   c                   D   a  ] tR t^t o R tR tR tR tR tR t	Rt
V tR# )	Test_vectorization_KDTreec                    \         P                  ! . RO. RO. RO. RO. RO. RO. RO. R	O.4      V n        \        V P                  4      V n        R# 
r   Nr   r   r   r   r   r   r   r   )rH   r   rJ   r   rF   r   s   &r   r   &Test_vectorization_KDTree.setup_method   s@    HHi''''''') *	 TYY'r   c                    V P                   P                  \        P                  ! . RO4      4      w  r\	        \        V\        4      4       \	        \        P                  ! V\        P                  4      4       R# r   Nr   )	rF   rG   rH   r   r   
isinstancefloat
issubdtypesignedintegerr<   r6   rM   s   &  r   test_single_query+Test_vectorization_KDTree.test_single_query   sI    {{  )!45
1e$%a!1!123r   c                    V P                   P                  \        P                  ! R4      4      w  r\	        \        P
                  ! V4      R4       \	        \        P
                  ! V4      R4       R# rR   NrR         )rR   r   rF   rG   rH   zerosr   shaper   s   &  r   test_vectorized_query/Test_vectorization_KDTree.test_vectorized_query   E    {{  )!45RXXa[&)RXXa[&)r   c           	        ^pV P                   P                  V,           pV P                   P                  \        P                  ! . RO4      VR7      w  r4\        \        P                  ! V4      V34       \        \        P                  ! V4      V34       \        \        P                  ! \        P                  ! W1) R 4      ( 4      4       \        \        P                  ! WA) R V P                   P                  8H  4      4       R#    r\   Nr   )
rF   ra   rG   rH   r   r   r   r   rK   isfiniter<   skkr6   rM   s   &    r   $test_single_query_multiple_neighbors>Test_vectorization_KDTree.test_single_query_multiple_neighbors   s    [[]]1_{{  )!4 ;RXXa[2%(RXXa[2%(AbcF++,-qv./0r   c                >   ^pV P                   P                  V,           pV P                   P                  \        P                  ! R4      VR7      w  r4\        \        P                  ! V4      ^^V34       \        \        P                  ! V4      ^^V34       \        \        P                  ! \        P                  ! VRRV) R13,          4      ( 4      4       \        \        P                  ! VRRV) R13,          V P                   P                  8H  4      4       R# r   r   rB   Nr   
rF   ra   rG   rH   r   r   r   r   rK   r   r   s   &    r   (test_vectorized_query_multiple_neighborsBTest_vectorization_KDTree.test_vectorized_query_multiple_neighbors       [[]]1_{{  )!4 ;RXXa[1a*-RXXa[1a*-AaQBCiL1123qArs|t{{}}456r   c                    R p\         P                  ! \        RR7      ;_uu_ 4        V P                  P	                  VRR7       RRR4       R#   + '       g   i     R# ; i)      ?zk must be an integer or*matchNr   )pytestr	   
ValueErrorrF   rG   )r<   rE   s   & r   test_query_raises_for_k_none6Test_vectorization_KDTree.test_query_raises_for_k_none   s@    ]]:-GHHKKa4( IHHHs   AA 	rJ   rF   N)r$   ry   rz   r{   r   r   r   r   r   r   r|   r}   r~   s   @r   r   r      s(     	(4
*
17) )r   r   c                   D   a  ] tR t^t o R tR tR tR tR tR t	Rt
V tR# )	Test_vectorization_cKDTreec                    \         P                  ! . RO. RO. RO. RO. RO. RO. RO. R	O.4      V n        \        V P                  4      V n        R# r   )rH   r   rJ   r   rF   r   s   &r   r   'Test_vectorization_cKDTree.setup_method   s@    HHi''''''') *	 dii(r   c                    V P                   P                  . RO4      w  r\        \        V\        4      4       \        \        V\
        4      4       R# r   )rF   rG   r   r   r   intr   s   &  r   r   ,Test_vectorization_cKDTree.test_single_query   s6    {{  +
1e$%
1c"#r   c                    V P                   P                  \        P                  ! R4      4      w  r\	        \        P
                  ! V4      R4       \	        \        P
                  ! V4      R4       R# r   r   r   s   &  r   r   0Test_vectorization_cKDTree.test_vectorized_query   r   r   c                J   \         P                  P                  R 4       \         P                  P                  ^R4      P                  pV P
                  P                  V4      w  r#\        WV4       F,  w  rEp\        V P
                  P                  V4      WV34       K.  	  R# )r     N)	rH   r   r   r   TrF   rG   rb   r   )r<   qsdsi_sqr6   rM   s   &      r   *test_vectorized_query_noncontiguous_valuesETest_vectorization_cKDTree.test_vectorized_query_noncontiguous_values   sr    
		tYY__Q%''++##B'23'GA!**1-v6 (r   c           	        ^pV P                   P                  V,           pV P                   P                  . ROVR7      w  r4\        \        P
                  ! V4      V34       \        \        P
                  ! V4      V34       \        \        P                  ! \        P                  ! W1) R 4      ( 4      4       \        \        P                  ! WA) R V P                   P                  8H  4      4       R# r   )	rF   ra   rG   r   rH   r   r   rK   r   r   s   &    r   r   ?Test_vectorization_cKDTree.test_single_query_multiple_neighbors  s    [[]]1_{{  b 1RXXa[2%(RXXa[2%(AbcF++,-qv./0r   c                >   ^pV P                   P                  V,           pV P                   P                  \        P                  ! R4      VR7      w  r4\        \        P                  ! V4      ^^V34       \        \        P                  ! V4      ^^V34       \        \        P                  ! \        P                  ! VRRV) R13,          4      ( 4      4       \        \        P                  ! VRRV) R13,          V P                   P                  8H  4      4       R# r   r   r   s   &    r   r   CTest_vectorization_cKDTree.test_vectorized_query_multiple_neighbors  r   r   r   N)r$   ry   rz   r{   r   r   r   r   r   r   r|   r}   r~   s   @r   r   r      s(     	)$
*
717 7r   r   c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )ball_consistencyi          c                8    \        VR ,          VR ,          V4      # r   r0   r;   s   &&&&r   r=   ball_consistency.distance  s    S!c'1--r   c                   \         P                  ! V P                  4      p\         P                  ! V P                  VP
                  R R 4      pV P                  P                  WP                  V P                  V P                  R7      p\        V4       F  w  rEV P                  V P                  V,          W,          V P                  4      W$,          RV P                  ,           ,          ,
          pV P                  V P                  V,          W,          V P                  4      W$,          RV P                  ,           ,          ,           p\        W`P                  V,          8  R4       K  	  R # )Nr3   rN   r   T)rH   
atleast_2drE   broadcast_tor6   r   r   query_ball_pointr3   rN   	enumerater=   rJ   r   tol)r<   rE   r6   lrM   inddistnorms   &       r   test_in_ballball_consistency.test_in_ball  s    MM$&&!OODFFAGGCRL1FF##AvvTXX#FlFA==3tvv>r$(({ASSD==3tvv>r$(({ASSDthho5t< #r   c                R   \         P                  ! V P                  4      p\         P                  ! V P                  VP
                  R R 4      pV P                  P                  WP                  V P                  V P                  R7      p\        V4       EF  w  rE\         P                  ! V P                  P                  \        R7      pRWe&   V P                  V P                  V,          W,          V P                  4      W$,          RV P                  ,           ,          ,
          pV P                  V P                  V,          W,          V P                  4      W$,          RV P                  ,           ,          ,           p\!        WpP"                  ) V,          8  R4       EK  	  R # )Nr  dtypeFr   Tr  )rH   r  rE   r  r6   r   r   r  r3   rN   r  onesra   boolr=   rJ   r   r  )	r<   rE   r6   r	  rM   r
  cr  r  s	   &        r   test_found_allball_consistency.test_found_all$  s   MM$&&!OODFFAGGCRL1FF##AvvTXX#FlFA-AAF==1qtTVV<qtR[?QQD==1qtTVV<qtR[?QQDtxxi$&66= #r   rx   N)
r$   ry   rz   r{   r  r=   r  r  r|   r}   r~   s   @r   r   r     s     
C.=	> 	>r   r   c                   &   a  ] tR tRt o R tRtV tR# )_Test_random_balli/  c                J   ^dp^p\         P                  P                  R4       \         P                  P                  W4      V n        V P                  V P                  ^R7      V n        \         P                  P                  V4      V n        RV n        ^ V n	        RV n
        R# )r   r   r          @r   N)rH   r   r   r   rJ   r   r   rE   r3   rN   r6   r<   ra   rS   s   &  r   r   _Test_random_ball.setup_method1  st    
		tIIOOA)	!!$))a!8#r   r   r6   rJ   rN   r3   rE   Nr   r~   s   @r   r  r  /  s     	 	r   r  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )_Test_random_ball_periodici=  c                    \        WVR 4      # r   r7   r;   s   &&&&r   r=   #_Test_random_ball_periodic.distance?      A!S))r   c                @   R p^p\         P                  P                  R4       \         P                  P                  W3R7      V n        V P                  V P                  ^^R7      V n        \         P                  ! VR4      V n        RV n	        ^ V n
        RV n        R# )'  r   sizer   r4   rr   r  r   N)rH   r   r   uniformrJ   r   r   fullrE   r3   rN   r6   r  s   &  r   r   '_Test_random_ball_periodic.setup_methodB  sz    
		tII%%A6%2	!!$))a!CCr   c                   V P                   P                  V P                  R ,           V P                  V P                  V P
                  R7      pV Fi  p\        V P                  V P                  V,          V P                  V P                  4      V P                  R V P
                  ,           ,          8*  4       Kk  	  V P                   P                  V P                  R ,
          V P                  V P                  V P
                  R7      pV Fi  p\        V P                  V P                  V,          V P                  V P                  4      V P                  R V P
                  ,           ,          8*  4       Kk  	  R# )r   r  N)	r   r  rE   r6   r3   rN   r   r=   rJ   )r<   r	  rM   s   &  r   test_in_ball_outside/_Test_random_ball_periodic.test_in_ball_outsideM  s    FF##DFFSL$&&DFF#QADMM$))A,?4662dhh;CWWX FF##DFFSL$&&DFF#QADMM$))A,?4662dhh;CWWX r   c                   \         P                  ! V P                  P                  \        R 7      pV P                  P                  V P                  R,           V P                  V P                  V P                  R7      pRW&   \         P                  ! V P                  V P                  V,          V P                  V P                  4      V P                  RV P                  ,           ,          8  4      '       g   Q hV P                  P                  V P                  R,
          V P                  V P                  V P                  R7      pRW&   \         P                  ! V P                  V P                  V,          V P                  V P                  4      V P                  RV P                  ,           ,          8  4      '       g   Q hR# )r  r   r  FN)rH   r  r   ra   r  r  rE   r6   r3   rN   rK   r=   rJ   )r<   r  r	  s   &  r   test_found_all_outside1_Test_random_ball_periodic.test_found_all_outsideU  s.   GGDFFHHD)FF##DFFSL$&&DFF#QvvMM$))A,74662dhh;;OO
 
 	
 
 FF##DFFSL$&&DFF#QvvMM$))A,74662dhh;;OO
 
 	
 
r   r  N)
r$   ry   rz   r{   r=   r   r-  r0  r|   r}   r~   s   @r   r  r  =  s     *	Y
 
r   r  c                   *   a  ] tR tRt o RtR tRtV tR# )"_Test_random_ball_largep_issue9890id  gvIh%<=c                (   R p^p\         P                  P                  ^{4       \         P                  P                  ^dR W3R7      V n        V P                  V P                  4      V n        V P                  V n        ^dV n        ^ V n	        ^
V n
        R# )r   r&  N)rH   r   r   randintrJ   r   r   rE   r3   rN   r6   r  s   &  r   r   /_Test_random_ball_largep_issue9890.setup_methodj  sq    
		sII%%c4qf%=	!!$)),r   r  N)r$   ry   rz   r{   r  r   r|   r}   r~   s   @r   r3  r3  d  s      C	 	r   r3  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )_Test_random_ball_approxiv  c                2   < \         SV `  4        R V n        R# rr   Nr   r   rN   r   s   &r   r   %_Test_random_ball_approx.setup_methody      r   rs   r   r   s   @@r   r8  r8  v        r   r8  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )!_Test_random_ball_approx_periodici~  c                2   < \         SV `  4        R V n        R# r:  r;  r   s   &r   r   ._Test_random_ball_approx_periodic.setup_method  r=  r   rs   r   r   s   @@r   r@  r@  ~  r>  r   r@  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )_Test_random_ball_fari  c                2   < \         SV `  4        R V n        R# r  Nr   r   r6   r   s   &r   r   "_Test_random_ball_far.setup_method      r   r6   r   r   s   @@r   rD  rD          r   rD  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )_Test_random_ball_far_periodici  c                2   < \         SV `  4        R V n        R# rF  rG  r   s   &r   r   +_Test_random_ball_far_periodic.setup_method  rI  r   rJ  r   r   s   @@r   rM  rM    rK  r   rM  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )_Test_random_ball_l1i  c                2   < \         SV `  4        ^V n        R# )r"   N)r   r   r3   r   s   &r   r   !_Test_random_ball_l1.setup_method      r   r3   r   r   s   @@r   rQ  rQ          r   rQ  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )_Test_random_ball_linfi  c                N   < \         SV `  4        \        P                  V n        R # r   r   r   rH   rc   r3   r   s   &r   r   #_Test_random_ball_linf.setup_method      r   rU  r   r   s   @@r   rX  rX          r   rX  c                 d   ^p^p\         P                  P                  R4       V ! \         P                  P                  W4      4      pVP	                  \         P                  P                  ^^V4      ^4      p\        VP                  R4       \        \        VR,          \        4      4       R# )   r   NrR   r   r   r   )
rH   r   r   r   r  r   r   r   r   list)r   ra   rS   r   rs   &    r   test_random_ball_vectorizedrd    sw    
A	AIINN4BIIOOA)*A	299??1a3Q7A&!Jqw%&r   zTest spawns worker threads)reasonc                 2   \         P                  P                  ^ 4       Rp^p\         P                  P                  W4      pV ! V4      pVP	                  VR^R7      pVP	                  VR^@R7      pVP	                  VRRR7      p\        V4       F9  pWX,          '       g   Wh,          '       g   K!  \        WX,          Wh,          4       K;  	  \        V4       F9  pWX,          '       g   Wx,          '       g   K!  \        WX,          Wx,          4       K;  	  R# )r     g~jth?workersNr  )rH   r   r   r   r  ranger   )	r   ra   r\   pointsr   l1l2l3rM   s	   &        r   +test_query_ball_point_multithreaded_workersro    s     IINN1A	AYY__Q"FFA	
		FE1		5B	
		FE2		6B	
		FE2		6B1X55BEErube,  1X55BEErube, r   c                   a \         P                  P                  R 4      pRp^pVP                  W#4      pV ! V4      p^
pW&,          V,          V8X  g   Q hVP                  WbV,          V4      p\         P                  ! WrV34      pRoV3R lp	\        WiWW4      p
VP                  VS4      p\        \         P                  ! \         P                  ! V
4      4      \         P                  ! V4      4       R# )l   e]IG r%  333333?c                 4   < VP                  W ,          S4      # r   )r  )rM   r*   search_pointsradiuss   &&&r   worker_funcAtest_query_ball_point_multithreaded_explicit.<locals>.worker_func  s    $$]%5v>>r   N)
rH   r   RandomStater   reshaper
   r  r   sortconcatenate)r   rngra   r\   rk  r*   max_workersrs  all_search_pointsru  resultsserial_resultsrt  s   &           @r   ,test_query_ball_point_multithreaded_explicitr    s     ))



+CA	AYYq_FvDK>K'1,-,IIkk>1=M

=a&9F? &$7G **+<fEN rwwr~~g679PQr   c                   2   a  ] tR tRt o R tR tR tRtV tR# )two_trees_consistencyi  c                    \        WV4      # r   r0   r;   s   &&&&r   r=   two_trees_consistency.distance  r?   r   c                   V P                   P                  V P                  V P                  V P                  V P
                  R 7      p\        V4       Fv  w  r#V Fk  pV P                  V P                  V,          V P                  V,          V P                  4      V P                  RV P
                  ,           ,          8:  d   Kk  Q h	  Kx  	  R# )r  r   N)
T1query_ball_treeT2r6   r3   rN   r  r=   data1data2)r<   rc  rM   r	  js   &    r   test_all_in_ball&two_trees_consistency.test_all_in_ball  s    GG##DGGTVVtvv488#LaLDAdjjmTZZ]DFFK662dhh;/0 1 0  !r   c                $   V P                   P                  V P                  V P                  V P                  V P
                  R 7      p\        V4       F  w  r#\        P                  ! V P                  P                  \        R7      pRWC&   \        P                  ! V P                  V P                  V,          V P                  V,          V P                  4      V P                  RV P
                  ,           ,          8  4      '       d   K  Q h	  R# )r  r  Fr   N)r  r  r  r6   r3   rN   r  rH   r  ra   r  rK   r=   r  r  )r<   rc  rM   r	  r  s   &    r   r  $two_trees_consistency.test_found_all  s    GG##DGGTVVtvv488#LaLDA		.AAD66$--

1tzz!}dffM!VVR[12 3 3 3 3 !r   rx   N)	r$   ry   rz   r{   r=   r  r  r|   r}   r~   s   @r   r  r    s     "13 3r   r  c                   &   a  ] tR tRt o R tRtV tR# )_Test_two_random_treesi  c                   ^2p^p\         P                  P                  R4       \         P                  P                  W4      V n        V P                  V P                  ^R7      V n        \         P                  P                  W4      V n        V P                  V P                  ^R7      V n        RV n	        ^ V n
        RV n        R# )2   r   r   r  r   N)rH   r   r   r   r  r   r  r  r  r3   rN   r6   r  s   &  r   r   #_Test_two_random_trees.setup_method  s    
		tYY__Q*
""4::":YY__Q*
""4::":r   r  r  r6   r  r  rN   r3   Nr   r~   s   @r   r  r    s     
 
r   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )_Test_two_random_trees_periodici  c                    \        WVR 4      # r   r!  r;   s   &&&&r   r=   (_Test_two_random_trees_periodic.distance  r#  r   c                   ^2p^p\         P                  P                  R4       \         P                  P                  W3R7      V n        V P                  V P                  ^RR7      V n        \         P                  P                  W3R7      V n        V P                  V P                  ^RR7      V n        RV n	        ^ V n
        RV n        R# )r  r   r&  r   r(  r  r   N)rH   r   r   r)  r  r   r  r  r  r3   rN   r6   r  s   &  r   r   ,_Test_two_random_trees_periodic.setup_method
  s    
		tYY&&QF&3
""4::3"GYY&&QF&3
""4::3"Gr   r  N)r$   ry   rz   r{   r=   r   r|   r}   r~   s   @r   r  r    s     *
 
r   r  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )_Test_two_random_trees_fari  c                2   < \         SV `  4        ^V n        R# rR   NrG  r   s   &r   r   '_Test_two_random_trees_far.setup_method  rT  r   rJ  r   r   s   @@r   r  r    rV  r   r  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )#_Test_two_random_trees_far_periodici  c                2   < \         SV `  4        ^V n        R# r  rG  r   s   &r   r   0_Test_two_random_trees_far_periodic.setup_method"  rT  r   rJ  r   r   s   @@r   r  r    rV  r   r  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )_Test_two_random_trees_linfi'  c                N   < \         SV `  4        \        P                  V n        R # r   rZ  r   s   &r   r   (_Test_two_random_trees_linf.setup_method*  r\  r   rU  r   r   s   @@r   r  r  '  r]  r   r  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )$_Test_two_random_trees_linf_periodici/  c                N   < \         SV `  4        \        P                  V n        R # r   rZ  r   s   &r   r   1_Test_two_random_trees_linf_periodic.setup_method2  r\  r   rU  r   r   s   @@r   r  r  /  r]  r   r  c                   P   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
tV tR# )Test_rectanglei7  c                0    \        ^ ^ .^^.4      V n        R# )r   N)r   rectr   s   &r   r   Test_rectangle.setup_method9  s    q!fq!f-	r   c                T    \        V P                  P                  R R .4      ^ 4       R# r/   Nr   r  min_distance_pointr   s   &r   test_min_insideTest_rectangle.test_min_inside<  s    DII88#sDaHr   c                T    \        V P                  P                  R R.4      R 4       R# r/         ?Nr  r   s   &r   test_min_one_side Test_rectangle.test_min_one_side?  s    DII88#sDcJr   c                |    \        V P                  P                  ^^.4      \        P                  ! ^4      4       R# r  )r   r  r  rH   sqrtr   s   &r   test_min_two_sides!Test_rectangle.test_min_two_sidesB  s'    DII88!Q@"''!*Mr   c                    \        V P                  P                  R R .4      ^\        P                  ! ^4      ,          4       R# r  r   r  max_distance_pointrH   r  r   s   &r   test_max_insideTest_rectangle.test_max_insideE  s,    DII88#sDaPQ
lSr   c                ~    \        V P                  P                  R R.4      \        P                  ! R R4      4       R# r  )r   r  r  rH   hypotr   s   &r   test_max_one_side Test_rectangle.test_max_one_sideH  s-    DII88#sDHHS#.	0r   c                    \        V P                  P                  ^^.4      ^\        P                  ! ^4      ,          4       R# r  r  r   s   &r   test_max_two_sides!Test_rectangle.test_max_two_sidesL  s+    DII88!Q@!BGGAJ,Or   c                   V P                   P                  ^ R4      w  r\        VP                  R^.4       \        VP                  ^ ^ .4       \        VP                  ^^.4       \        VP                  R^ .4       R# )r   rr   N)r  splitr   maxesmins)r<   lessgreaters   &  r   
test_splitTest_rectangle.test_splitO  s`    		3/4::Qx0499q!f-7==1a&17<<#q2r   )r  N)r$   ry   rz   r{   r   r  r  r  r  r  r  r  r|   r}   r~   s   @r   r  r  7  s7     .IKNT0P3 3r   r  c            	         \         P                  ! R R7      ;_uu_ 4        \        \        ^ ^ .^^.^4      \        P
                  ! ^4      4       RRR4       \         P                  ! R R7      ;_uu_ 4        \        \        ^ ^ .^^.^4      ^4       RRR4       R#   + '       g   i     LU; i  + '       g   i     R# ; i1.20.0r   N)r   deprecated_callr   r   rH   r  r   rx   r   r   test_distance_l2r  W  s    			h	/	/.1v1vqA2771:N 
0			h	/	/0!Q!QCQG 
0	/ 
0	/	/	/	/s   0B7B0B-	0C	c            	          \         P                  ! R R7      ;_uu_ 4        \        \        ^ ^ .^^.^4      ^4       RRR4       R#   + '       g   i     R# ; ir  )r   r  r   r   rx   r   r   test_distance_l1r  ^  s>    			h	/	/.1v1vqA1E 
0	/	/	/s   AA	c            	          \         P                  ! R R7      ;_uu_ 4        \        \        ^ ^ .^^.\        P
                  4      ^4       RRR4       R#   + '       g   i     R# ; ir  )r   r  r   r   rH   rc   rx   r   r   test_distance_linfr  c  sB    			h	/	/.1v1vrvvFJ 
0	/	/	/s   *AA%	c                  ~   \         P                  P                  R 4       \         P                  P                  ^
^^4      p \         P                  P                  ^^^4      p\        P
                  ! RR7      ;_uu_ 4        \        \        W4      P                  R4       RRR4       R#   + '       g   i     R# ; i)r   r  r   N)r      )	rH   r   r   r   r   r  r   r   r   )rE   ys     r   test_distance_vectorizationr  h  st    IINN4
		Aq!A
		1a A			h	/	/'-33W= 
0	/	/	/s    B++B<	c                   2   a  ] tR tRt o R tR tR tRtV tR# )count_neighbors_consistencyip  c                   R p\        V P                  P                  V P                  V4      \        P
                  ! V P                  P                  V P                  V4       Uu. uF  p\        V4      NK  	  up4      4       R# u upi )r   Nr   r  count_neighborsr  rH   rI   r  lenr<   rc  r	  s   &  r   test_one_radius+count_neighbors_consistency.test_one_radiusq  s`    TWW,,TWWa8(?(?(KL(K1A(KLM	OL   %Bc                   R p\        V P                  P                  V P                  V4      \        P
                  ! V P                  P                  V P                  V4       Uu. uF  p\        V4      NK  	  up4      4       R# u upi )r   Nr  r  s   &  r   test_large_radius-count_neighbors_consistency.test_large_radiusv  s`    TWW,,TWWa8(?(?(KL(K1A(KLM	OLr  c                   \         P                  ! \         P                  ! \         P                  ! R 4      \         P                  ! ^
4      ^4      4      pV P                  P                  V P                  V4      p\        \         P                  ! \         P                  ! V4      ^ 8  4      4       \        W4       F5  w  r4\        V P                  P                  V P                  V4      V4       K7  	  R# ){Gz?N)rH   explinspacelogr  r  r  r   rK   r5   rb   r   )r<   rsr~  rc  results   &    r   test_multiple_radius0count_neighbors_consistency.test_multiple_radius{  s    VVBKKtbffRj!<=''))$''26rwww'1,-.R)IA00!<fE *r   rx   N)	r$   ry   rz   r{   r  r  r  r|   r}   r~   s   @r   r  r  p  s     O
O
F Fr   r  c                   &   a  ] tR tRt o R tRtV tR# )_Test_count_neighborsi  c                    ^2p^p\         P                  P                  R4       V P                  \         P                  P	                  W4      ^R7      V n        V P                  \         P                  P	                  W4      ^R7      V n        R# )r  r   r   N)rH   r   r   r   r   r  r  r  s   &  r   r   "_Test_count_neighbors.setup_method  sd    
		t""299??1#81"E""299??1#81"Er   )r  r  Nr   r~   s   @r   r  r    s     F Fr   r  c                   D   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
"sparse_distance_matrix_consistencyi  c                    \        WV4      # r   r0   r;   s   &&&&r   r=   +sparse_distance_matrix_consistency.distance  r?   r   c           
     2   V P                   P                  V P                  V P                  R R7      pV P                   P	                  V P                  V P                  4      p\        V4       Fu  w  r4V Fj  p\        WV3,          V P                  V P                   P                  V,          V P                  P                  V,          V P                  4      ^R7       Kl  	  Kw  	  VP                  4        F  w  w  r5p\        WRV,          9   4       K  	  R# r   output_typedecimalN)r  sparse_distance_matrixr  rc  r  r  r   r=   rJ   r3   itemsr   )r<   Mrc  rM   r	  r  r6   s   &      r   test_consistency_with_neighborsBsparse_distance_matrix_consistency.test_consistency_with_neighbors  s    GG**477DFF*TGG##DGGTVV4aLDA#dGMM$'',,q/477<<?DFFK  ! 779KVaQA1I %r   c                j    V P                   P                  V P                   V P                  R R7       R# )r   r  N)r  r  rc  r   s   &r   test_zero_distance5sparse_distance_matrix_consistency.test_zero_distance  s#    &&twwK&Pr   c                ,   V P                   P                  V P                  V P                  R R7      p\	        V P                   P
                  V P                  P
                  4      p^ W"V P                  8  &   \        VP                  4       V^R7       R# r  )r  r  r  rc  r   rJ   r   toarray)r<   M1expecteds   &  r   test_consistency3sparse_distance_matrix_consistency.test_consistency  sd    WW++DGGTVV+Utww||4&'DFF"#!"**,"Er   c                R   \         P                  P                  ^ 4       \         P                  ! \         P                  P	                  ^^4      \
        R7      pV P                  VRRR7      pVP                  V^RR7      P                  4       p\        W3P                  ^R7       R# )r   r  Fbalanced_treecompact_nodesr   r  r  N)rH   r   r   r   r   r   r   r  r  r   r   )r<   too_manyr*   r6   s   &   r   #test_against_logic_error_regressionFsparse_distance_matrix_consistency.test_against_logic_error_regression  s|    
		q88BIIOOB2#>E   @''a['IQQS!!SS"5r   c                   \         P                  ! V P                  V P                  34      p\        V P                  4       Fh  p\        V P                  4       FL  pV P                  VR 3,          V P
                  VR 3,          ,
          p\         P                  ! WD4      WV3&   KN  	  Kj  	  \         P                  ! V4      pRWV P                  8  &   \         P                  ! V P                  V P                  34      pV P                  P                  V P                  V P                  RR7      pVP                  4        F  w  r#WbV3,          WRV3&   K  	  \        W^R7       \         P                  ! V P                  V P                  34      pV P                  P                  V P                  V P                  RR7      p\        VP                  ^ ,          4       F8  pVR,          V,          pVR,          V,          pVR,          V,          pWEW#3&   K:  	  \        W^R7       V P                  P                  V P                  V P                  R	R7      p\        WP                  4       ^R7       \!        V\"        4      '       g   Q hV P                  P                  V P                  V P                  R
R7      p\        WP                  4       ^R7       \!        V\$        4      '       g   Q hV P                  P                  V P                  V P                  RR7      p\        WP                  4       ^R7       \!        V\&        4      '       g   Q hV P                  P                  V P                  V P                  RR7      p\        WP                  4       ^R7       \!        V\(        4      '       g   Q hV P                  P                  V P                  V P                  4      p\!        V\$        4      '       g   Q hR# )rB   r   dictr  r  ndarrayrM   r  vr   r   r   r   N)rH   r   ra   rj  r  r  dotr  rc  r  r  r  keysr   r   r  r   r   r   r   r   )r<   refrM   r  r  r  rc  r\   s   &       r   test_ckdtree_return_types<sparse_distance_matrix_consistency.test_ckdtree_return_types  s   hh'(tvvA466]JJq!t$tzz!Q$'77FF1LqD	 #  ggcl$&&Lxx()GG**477DFF*OFFHDAq6DAJ !#R8xx()GG**477DFF! + #qwwqz"A#q	A#q	A#q	AJ	 #
 	"#R8GG**477DFF# + %!#yy{B?!Y''''GG**477DFF$ + &!#yy{B?!Z((((GG**477DFF# + %!#yy{B?!Y''''GG**477DFF$ + &!#yy{B?!Z((((GG**477DFF;!Z((((r   rx   N)r$   ry   rz   r{   r=   r	  r  r  r  r"  r|   r}   r~   s   @r   r  r    s*     "QF6/) /)r   r  c                   &   a  ] tR tRt o R tRtV tR# )_Test_sparse_distance_matrixi  c                t   ^2p^p\         P                  P                  R4       \         P                  P                  W4      p\         P                  P                  W4      pV P	                  V^R7      V n        V P	                  V^R7      V n        RV n        ^V n        W0n	        W@n
        Wn        W n        R# )r  r   r   r/   N)rH   r   r   r   r   r  r  rc  r3   r  r  ra   rS   )r<   ra   rS   r  r  s   &    r   r   )_Test_sparse_distance_matrix.setup_method  s    
		t		%		%""51"5""51"5

r   )r  r  r  r  rS   ra   r3   rc  Nr   r~   s   @r   r%  r%    s      r   r%  c                     ^
p ^p^p\         P                  P                  R4       \         P                  P                  W4      p\         P                  P                  W4      p\        P
                  ! RR7      ;_uu_ 4        \        W44      pRRR4       \        XP                  W34       \        V 4       Fg  p\        V4       FU  p\        P
                  ! RR7      ;_uu_ 4        \        \        W6,          WG,          4      WVV3,          4       RRR4       KW  	  Ki  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)r   r   r  r   N)rH   r   r   r   r   r  r   r   r   rj  r   r   )rS   ra   r\   xsysr   rM   r  s           r   test_distance_matrixr+    s    
A
A	AIINN4		B		B			h	/	/R$ 
0A6"1XqA''h77#$6rube$DbAhO 87   
0	/
 877s   D&)+D9	&D6	9E
c                      ^
p ^p^p\         P                  P                  R4       \         P                  P                  W4      p\         P                  P                  W4      p\        P
                  ! RR7      ;_uu_ 4        \        W44      pRRR4       \        P
                  ! RR7      ;_uu_ 4        \        W4^R7      pRRR4       \        XX4       R#   + '       g   i     LS; i  + '       g   i     L1; i)r   r   r  r   N)	threshold)rH   r   r   r   r   r  r   r   )rS   ra   r\   r)  r*  r   dsls          r   test_distance_matrix_loopingr/    s    
A
A	AIINN4		B		B			h	/	/R$ 
0			h	/	/b2 
0S	 
0	/	/	/s   C6C-C*	-C=	c                     V P                  W4      p\        4       p\        V4       F(  w  rEV F  pWF8  g   K  VP                  WF34       K  	  K*  	  \	        W0P                  V4      8H  4       R # r   )r  setr  addr   query_pairs)r   r6   rc  r   rM   r	  r  s   &&     r   check_onetree_queryr4    s[    	!AA!Auqf  
 Aq!!"r   c                    \         P                  P                  ^ 4       ^2p^p\         P                  P                  W4      pV ! V4      p\	        VR4       \         P                  P                  ^V,          V4      pVRV;;; R,          uuu% W1^V,          ;;; ^,          uuu% V ! V4      p\	        VR4       \	        VR4       \	        VR4       \	        VR4       R# )r   rr   NgMbP?gh㈵>gư>)rH   r   r   r   r4  )r   ra   r\   rk  r   s   &    r   test_onetree_queryr6    s    IINN1
A	AYY__Q"FFA3YY__QqS!$F
2AJ%J
QqSMQMFA35!7#4 r   c                 b    V ! ^ ^..4      p\        VP                  R4      \        4       4       R# )r   r/   N)r   r3  r1  )r   r*   s   & r   test_query_pairs_single_noder8  0  s)    Ax D!!#&.r   c           	      x   \         P                  P                  ^ 4       ^2p^pRpV^,          p\         P                  P                  W4      pV ! V4      p\	        4       p\        V4       Fe  p\        V^,           V4       FK  p	WXR3,          WYR3,          ,
          p
\         P                  ! W4      V8:  g   K9  VP                  W34       KM  	  Kg  	  \        V4      pVP                  V4      p\        V4      p\        W4       VP                  VRR7      p\        V4      p\        W4       \	        4       pVP                  VRR7      p\        VP                  ^ ,          4       F8  pVP                  \        W^ 3,          4      \        W^3,          4      34       K:  	  \        V4      p\        W4       R# )r   rr   rB   r1  r  r  N)rH   r   r   r   r1  rj  r  r2  sortedr3  r   r   r   )r   ra   r\   rc  r2rk  r   bruterM   r  r  l0r   rl  arrrm  s   &               r   test_kdtree_query_pairsr?  5  sV   IINN1
A	AA	
ABYY__Q"FFAEE1XqsAA!tvd|+Avva|r!		1&!  
 
B	aA	Br	aU+A	BrA
--y-
1C399Q< 	s3!t9~s3!t9~./ !	Brr   c                 p   \         P                  ! ^4      p\         P                  ! ^ ^V,          ^4      p\         P                  ! ^ ^V,          ^4      pV UUu. uF  qC F  qTV3NK  	  K  	  pppV ! V4      pVP                  VRR7      pVP                  VR,          R7      p	\	        W4       R# u uppi )rR   rr   )rc  rN   )\(?rc  N)rH   r  r  r3  r   )
r   spacingx_rangey_rangexiyixy_arrayr*   	pairs_epspairss
   &         r   test_query_pairs_epsrK  V  s    ggajGkk!Q[!,Gkk!Q[!,G#*=7RWrRW7H=x D  7 3Iw~.E" >s   B2c           	         \         P                  R,          w  r\        \        VP	                  4       VP	                  4       4      4      pV ! V4      p\        \        . RO4      \        VP                  R^4      4      4       \         P                  ! V\        R7      pV ! V4      p\        \        . RO4      \        VP                  R^4      4      4       R# )r   r   Nr  N)rM  rM  )r      	      )rR   r   )
rH   mgridrb  rb   ravelr   r:  r  asarrayr   )r   rE   r  rk  r*   s   &    r   test_ball_point_intsrT  d  s    88HDA#aggi+,FvD&--fa89;ZZe,FvD&--fa89;r   c            	          \        ^4       U u. uF  p \        P                  ! 4       NK  	  pp \        \	        V4      \	        VRRR1,          4      4       R# u up i )r   Nr  )rj  r   noder   r:  )r#   nodess     r   test_kdtree_comparisonsrX  q  s@    $)!H-HqV[[]HE-uTrT{ 34 .s   Ac                    \         P                  P                  ^ 4       Rp^p\         P                  P                  W4      pV ! V4      P	                  V^R7      R,          pV ! VRR7      P	                  V^R7      R,          pV ! VRR7      P	                  V^R7      R,          pV ! VRRR7      P	                  V^R7      R,          p\        WE4       \        WF4       \        WG4       R# )	r   rg  r   F)r  )r  )r  r  Nr  )rH   r   r   r   rG   r   )r   ra   r\   rk  r  r  T3T4s   &       r   test_kdtree_build_modesr\  w  s    IINN1A	AYY__Q"F	V		"	"6Q	"	/	3B	V5	1	7	7!	7	DR	HB	V5	1	7	7!	7	DR	HB	V5#(
**/%!%*<R
ABrrrr   c                 d   ^ RI p\        P                  P                  ^ 4       ^2p^p\        P                  P	                  W#4      pV ! V4      pVP                  V4      pVP                  V4      pVP                  V^R7      R,          pVP                  V^R7      R,          p\        WW4       R# )r   Nr   r  )	picklerH   r   r   r   dumpsloadsrG   r   r   r^  ra   r\   rk  r  tmpr  s   &       r   test_kdtree_picklerc    s    IINN1
A	AYY__Q"F	V	B
,,r
C	c	B	&A	r	"B	&A	r	"Brr   c                 l   ^ RI p\        P                  P                  ^ 4       ^2p^p\        P                  P	                  W#3R7      pV ! VRR7      pVP                  V4      pVP                  V4      pVP                  V^R7      R,          pVP                  V^R7      R,          p\        WW4       R# )r   Nr&  r   r4   r   r  )	r^  rH   r   r   r)  r_  r`  rG   r   ra  s   &       r   test_kdtree_pickle_boxsizerf    s    IINN1
A	AYYQF+F	VS	)B
,,r
C	c	B	&A	r	"B	&A	r	"Brr   c                    \         P                  P                  ^ 4       Rp^p\         P                  P                  W4      pV ! VRR7      pVP	                  4       pVP                  V^R7      R,          p\         P                  P                  W4      VR&   VP                  V^R7      R,          p\        Wg4       R# )r   rg  T)	copy_datar   .Nr  )rH   r   r   r   copyrG   r   )r   ra   r\   rk  r   r   r  r  s   &       r   test_kdtree_copy_datarj    s     IINN1A	AYY__Q"FFd+AA	
a	B))//!'F3K	
a	Brr   c                 @   \         P                  P                  ^ 4       Rp^p\         P                  P                  W#4      pV ! V4      pVP	                  V^^@R7      R
,          pVP	                  V^R
R7      R
,          pVP	                  V^R7      R
,          p\        Wg4       \        Wh4       VP                  \        RR 4       \        P                  ! \        RR7      ;_uu_ 4        VP	                  V^R
R7       R	R	R	4       R	#   + '       g   i     R	# ; i)r   rg  )r\   ri  r   	cpu_countc                      R # r   rx   rx   r   r   <lambda>'test_ckdtree_parallel.<locals>.<lambda>  s    r   zCannot determine ther   rh  Nr  )rH   r   r   r   rG   r   setattrosr   r	   NotImplementedError)	r   monkeypatchra   r\   rk  r   r  r  rZ  s	   &&       r   test_ckdtree_parallelrt    s    IINN1A	AYY__Q"FFA	
1b	)"	-B	
1b	)"	-B	
1	b	!BrrK6	*2H	I	I	2& 
J	I	I	Is   -DD	c                    aa \         P                  P                  ^ 4       ^dp ^p\         P                  P                  W4      p\	        V4      oVV3R loS! SP
                  4       SP
                  p \        \         P                  ! V P                  4      \        ^d4      4       \        SP                  V P                  R3,          V P                  4       R# )r   c                 b  < \        \        V \        4      4       V P                  R8X  dd   \        V P                  RJ 4       \        V P
                  RJ 4       \        V P                  P                  ^ ,          SP                  8*  4       R# S! V P                  4       S! V P
                  4       V P                  P                  RV P                  3,          pV P
                  P                  RV P                  3,          p\        VP                  4       VP                  4       8  4       R# )r"   NrB   r  )r   r   r   	split_dimlesserr  indicesr   r   data_pointsmaxmin)ra   rE   r  rF   recurse_trees   &  r   r}  'test_ckdtree_view.<locals>.recurse_tree  s    
1k*+;;"AHH$%AII%&AIIOOA&&//9:"#$$Q^4A		%%an5AAEEGaeeg%&r   rB   N)rH   r   r   r   r   r*   r   ry  ry  rj  rJ   rz  )ra   r\   rk  rF   r}  s      @@r   test_ckdtree_viewr    s     IINN1A	AYY__Q"FV_F' Arwwqyy)5:6v{{199a<0!--@r   c                 `   ^p^p. ROp^p\         P                  P                  R4       \         P                  P                  W3R7      pV ! V^R7      pVP	                  WS4      w  rxVP	                  WT4      w  r\        Wy4       \        W4       \         P                  ! ^^.4      p^pVP	                  WT4      w  rxVP	                  WS4      w  r\        WRV^,
          3,          4       \        WRV^,
          3,          4       VP	                  V^4      w  rxVP	                  V^.4      w  r\        \        VP                  4      ^4       \        \        V	P                  4      ^4       \        V\         P                  ! V	4      4       \        V\         P                  ! V
4      4       R# )   r   r&  r   .N)r"   rR   r   )
rH   r   r   r)  rG   r   r   r  r   rR  )r   ra   rS   klistkintrJ   rF   rV   rW   dd1ii1s   &          r   test_kdtree_list_kr    sP   A	AEDIINN4991&)D*F \\$&FB||D'HC HHaVED\\$%FB||D(HCeai()eai() \\$"FB||D1#&HCRXX"SYY#RXXc]#RXXc]#r   c           	      2   R p^p^p\         P                  P                  R4       \         P                  P                  W3R7      pV ! V^RR7      pV ! V^R7      p^^R\         P                  3 F  pVP                  WCVR7      w  rVP                  VR,           W7R7      w  r\        W4       \        W4       VP                  VR,
          W7R7      w  r\        W4       \        W4       \        WdVRVR7      w  r\        W4       \        W4       K  	  R	# )
  r   r&  r   r(  r   g      @rU  )r4   r3   N)	rH   r   r   r)  rc   rG   r   r   simulate_periodic_box)r   ra   rS   r\   rJ   rF   kdtree2r3   rV   rW   r  r  dd2ii2s   &             r   test_kdtree_boxr    s     	A	A	AIINN4991&)D37F $+GC d+<<s
A<3B$R<<s
A<3B$R(3!LB$R !r   c                 p   R p^p^p\         P                  P                  R4       \         P                  P                  W3R7      pV ! V^RR7      pV ! V^R7      p^^\         P                  3 FC  pVP                  WCVR7      w  rVP                  WCVR7      w  r\        W4       \        W4       KE  	  R# )r  r   r&  r   r(  r   rU  N)rH   r   r   r)  rc   rG   r   r   )r   ra   rS   r\   rJ   rF   r  r3   rV   rW   r  r  s   &           r   test_kdtree_box_0boxsizer  #  s    A	A	AIINN4991&)D37F $+GBFF^d+==A=.B$R r   c                    \         P                  ! ^ ^^
4      P                  R^4      pVR;;,          ^
,          uu&   \        P                  ! \
        4      ;_uu_ 4        V ! V^RR7       RRR4       \        P                  ! \
        4      ;_uu_ 4        V ! V^RR7       RRR4       V ! V^RR7       R#   + '       g   i     LS; i  + '       g   i     L0; i)r   r   r(  Nr  )rB   r"   )r   r  )r  r   )rH   r  rx  r   r	   r   r   rJ   s   & r   test_kdtree_box_upper_boundsr  6  s    ;;q!R ((Q/DJ"J	z	"	"D1c2 
#	z	"	"D1j9 
# q*5 
#	"	"	"s    B7C
7C	
C	c                 \    \         P                  ! R^^
4      p\        \        W^RR7       R# )r"   r   r(  Nr  )rH   r  assert_raisesr   r  s   & r   test_kdtree_box_lower_boundsr  @  s"    ;;r1b!D*k!SIr   c                 r   . p. p\         P                  ! ^VP                  ^,          ,          4      p\         P                  ! \         P                  ! V^.VP                  ^,          ,          4      4      P
                  pVR,
          pV Ft  p	WR,          V,          ,           p
V P                  WVR7      w  rVP                  R
V4      pVP                  R
V4      pVP                  V4       VP                  V4       Kv  	  \         P                  ! VR
R7      p\         P                  ! VR
R7      p\         P                  ! \        V4      \        V4      V,          .RR.R7      pWmR,          R&   W]R,          R&   VP                  RR7       VR,          RR	V13,          VR,          RR	V13,          3# )r   r   rU  rC   rW   rV   r  rB   )orderNr  )rW   i8)rV   f8)rH   aranger   r   unravel_indexr   rG   rx  appendrz  emptyr  ry  )rF   rJ   r\   r4   r3   rV   rW   rE   nnra   imager  r  r  s   &&&&&         r   r  r  D  sf   	B	B
		!tzz!}$%A	"""1qcDJJqM&9:	;	=	=B	cB3w((<<A<.kk"a kk"a 
		#
		#  
	$B		$BXXs4y#b'A+.7 F 4LO4LO
KKdK$<2A2tQU 333r   c                      ^ RI p RRr!\        P                  \	        ^^T,           T4      \	        ^^T,           T4      3,          w  r4\        P
                  ! T4      ^
,          \        P                  ! ^
Y4,          ,           4      \        P                  ! T4      ,          ,           p\        P                  ! T4      pYVR&   Rp\        P                  P                  ^ TP                  \        P                  P                  ^24      ^,           4      pYvP                  T&   \        P                  ! \        P                  ! YG8g  4      4      P                  p	\        P                  ! \        P                  ! YG8H  4      4      P                  p
T P                  T P                   4      P"                  p\%        ^
4       F  p\'        T	4      pK  	  ^ p\%        ^d4       F  pT P                  T P                   4      P"                  p\'        T	4      pTP)                  T
^^R7      w  ppT P                  T P                   4      P"                  pTT8  g   Kx  T^,          pK  	  \+        T^
8  4       R#   \         d     R# i ; i)r   N皙?rB   g     X@)r\   r3   )resourceImportErrorrH   rQ  slicesincos
empty_liker   r5  r'  flatvstacknonzeror   	getrusageRUSAGE_SELF	ru_maxrssrj  r   rG   r   )r  dxdyr  rE   zz_copyFILLVALmaskigoodibadmem_userM   r*   	num_leaksr  iquerynew_mem_uses                     r   test_ckdtree_memuser  ]  s   
 488E!QVR(!QVR() *DA
q	2rACx(266!944A]]1F1IG99Q		(9(9"(=(ABDKKIIbjj./11E99RZZ-.00D  !5!56@@G2Yu~  I3Z$$X%9%9:DDu~zz$!qz1f(()=)=>HH NI  IN?  s   I1 1J ?J c                    \         P                  ! ^ ^^4      P                  R^4      pV ! V^R7      p\         P                  ! \	        V4      RR7      pVP                  V4      p\        V. RO4       \        \        VP
                  VRR 4       \        ^
4       F  pVP                  V\         P                  ! ^ ^
V4      4      pVP                  V\         P                  ! ^ ^
V4      W33R7      pVP                  V\         P                  ! ^ ^
V4      VR3R7      pVP                  V\         P                  ! ^ ^
V4      RV3R7      p	VP                  V\         P                  ! ^ ^
V4      VR7       \        Wg4       \        Wh4       \        Wi4       K  	  \        \	        V4      4       F  pVP                  4       p
^ W&   W^ 8g  ,          pV ! V4      pVP                  V\         P                  ! ^ ^
^d4      W3R7      pVP                  V\         P                  ! ^ ^
^d4      4      p\        Wg4       \        \        VP                  V\         P                  ! ^ ^
^d4      V
R7       K  	  R# )r   r   f4r  N)weightsr  )r   rR   r"   r"   rR   r"   r"   )rH   r  rx  r  r  _build_weightsr   r  r   rj  r  ri  )r   rJ   tree1r  nwrM   c1c2c3c4w1r  tree2s   &            r   test_kdtree_weightsr    s    ;;q!Q''A.Dq)Eggc$it,G			g	&Br01*e22GCRLA2Y""5"++aQ*?@""5"++aQ*? * # ,""5"++aQ*? $ # )""5"++aQ*?w # )eR[[B%: 	 	! 	2"2"2"   3t9\\^1WE"""5"++aS*A # " ""5"++aS*AB2" 	j%"7"72;;q"c*B	8! r   c                 4   R p^p\         P                  P                  R4       \         P                  P                  W3R7      pV ! V^R7      p. ROp\         P                  ! \        V4      4      pVP                  WE4      pVP                  WERR7      p\        WxP                  4       4       \        \        P                  ! V4      \        P                  ! V4      4       F1  w  rVP                  WJ4      p\        W\        V	4      ,          4       K3  	  R# )r  r   r&  r   F
cumulativeN)r   r  r  g{Gz?r  )rH   r   r   normalr  r  r  r   cumsumrb   	itertoolspermutationsr   rb  )r   ra   rS   rJ   rF   r0i0n0nncrM   rc  s   &          r   &test_kdtree_count_neighbous_multiple_rr    s    A	AIINN499!(D*F	$B	3r7	B				+B

 
 
 
>CZZ\"I**2.**2.0 ""6-1ak*	0r   c                 b   \         P                  P                  R 4      pVP                  ^
^4      pVP                  ^
^4      pV ! V4      pVP	                  RR.^R7      w  rVVP                  RR.RV,          4      p\        V. 4       VP	                  V^R7      w  rVVP                  4       pVP                  VRV,          4      p\         P                  ! R\        R7      p	V	P                  . 4       \        W4       V ! V4      p
VP                  V
RV,          4      p	\        ^
. .,          V	4       VP                  V
RV,          4      p	\        V	^ 8H  4       VP                  V
RV,          RR7      p	\        V	\         P                  ! R4      8H  R4       VP                  V
RV,          RR7      p	\        V	\         P                  ! R4      8H  R4       VP                  V
RV,          R	R7      p	\!        V	/ 4       VP                  V
RV,          R
R7      p	R\         P"                  3R\         P"                  3R\         P$                  3.p\         P&                  ! VRR7      p\         P                  ! RVR7      p\        W4       VP	                  V^R7      w  rVVR,          P                  4       pVP)                  RV,          RR7      p	\!        V	\+        4       4       VP)                  RV,          R
R7      p	\         P                  ! R\         P"                  R7      p\        W4       R# )r   r/   r   rr   )r   r  r   r  Tr   r  r  rM   r  r  )alignr1  N)r   )r   r   )r   )rB   r  )r   rR   )rH   r   rw  randrG   r  r   r|  r  objectfillr  r  r   r  r   r   intpfloat64r  r3  r1  )r   r{  XYr*   r6   rM   r  mindr  other_dtype	res_dtypes   &            r   test_len0_arraysr    s    ))


%CQAQAq>D::r2h!:$DAr2hA.Aq"::a1:DA557DaT*A
vV,AFF2JqNEUCH-Ar2$w"UCH-AAFO##E3t8#MAqBHHX..5##E3t8#MAqBHHX..5##E3t8#HAB##E3t8#KABGGnsBGGnsBJJ.?@Ft,I
uI.Aq::a1:DAU8<<>DTu5ACETy9A
vRWW-Aqr   c           
         R p\        ^^4       EF1  p\        P                  ! W34      p^W1^,          R% \        P                  ! R^R7       F  w  rEV ! W4V^R7      pVP
                  ^8X  g   Q hV \        J d   VP                  MVP                  P                  p\        \        P                  ! VP                  P                  4      \        P                  ! ^ V^,          4      4       \        \        P                  ! VP                  P                  4      \        P                  ! V^,          V4      4       K  	  EK4  	  R# )i   N)repeat)r  r  r   FT)rj  rH   r  r  productr'  r   r*   _noder   ry  rx  ry  r  r  )r   ra   rS   rJ   balancedcompactrF   r*   s   &       r   test_kdtree_duplicated_inputsr    s    A1a[wwvTU!*!2!2=!KH /6DF;;!####.'#9FKKKK%%  ++,		!Q!V$& ,,-		!q&!$& "L	 r   c                 ^    V ! ^ ..^R7      p\        \        VP                  VR^ .RR7       R# )r   r   rr   Fr  N)r  r   r  )r   rF   s   & r   'test_kdtree_noncumulative_nondecreasingr    s1    
 1#+F*f44aU,r   c                 r   \         P                  ! . RO. RO. R	O. R
O. RO. RO.RR7      pV ! V4      pVP                  V^RR7      w  r4\        VR \         P                  \         P                  \         P                  .R R\         P                  \         P                  .R R\         P                  \         P                  .R R\         P                  \         P                  .R R\         P                  \         P                  .R \         P                  \         P                  \         P                  ..4       R# )r   r  r  r   r[   r  N)r   r   r   )rA  r   r   )r   r   r   )r   rA  r   )r   r   r   )r   r   r   )rH   r   rG   r   rc   )r   xyzckdtdeqieqs   &    r   test_short_knnr    s     (( C sDzz#z=HCc"&&"&&"&&)rvvrvv&rvvrvv&rvvrvv&rvvrvv&(*+r   c                    \         P                  P                  R 4       \         P                  P                  RR7      p\         P                  P                  RR7      pV ! V4      p\         P                  P	                  ^ R\        V4      R7      pVP                  W$4      p\        W$4       UUu. uF  w  rgVP                  Wg4      NK  	  ppp\        WX4       F#  w  r\        \        V	4      \        V
4      4       K%  	  R# u uppi )r   r&  rq  Nr   r   )
rH   r   r   r  r)  r  r  rb   r   r:  )r   rJ   rG   r*   r6   rvectorqidirscalarr1   r2   s   &          r   test_query_ball_point_vector_rr  1  s    IINN499*DII(+EtD
		!Ss5z2A##E-G;>u=I=t$$R,=GIG%6!9fQi0 & Js   2Dc           	      H   \         P                  P                  R 4       \         P                  P                  RR7      p\         P                  P                  RR7      pV ! V4      pRpVP	                  W$RR7      pVP	                  W$RR7       Uu. uF  p\        V4      NK  	  ppV Uu. uF  p\        VP	                  W4      4      NK  	  p	pV Uu. uF  qP	                  WRR7      NK  	  p
p\        WW4       \        WY4       \        WZ4       R# u upi u upi u upi )r   r&  rq  Treturn_lengthFNr  )rH   r   r   r  r  r  r   )r   rJ   rG   r*   r6   lengthr
  length2r  length3length4s   &          r   test_query_ball_point_lengthr   >  s    IINN499*DII(+EtDA""54"@F#'#8#8QV#8#WX#WCs3x#WGX;@A5Rs4((/05GAJOP%B$$R$$?%GPv'v'v' YAPs   D,#DDc                 z   \         P                  P                  R 4       \         P                  P                  RR7      p\         P                  ! ^d4      R,          p\         P
                  ! \         P                  ! ^d4      RRR1,          R,          4      RRR1,          p\         P                  P                  RR7      p\         P
                  ! VP                  4      P                  pVP                  R,          VP                  R,          8w  g   Q hVP                  R,          VP                  R,          8w  g   Q hV ! V4      pVP                  VVRR7      pVP                  VVRR7      p\        Wx4       VP                  V^4      w  rVP                  V^4      w  r\        W4       \        W4       R# )r   r&  g{Gz?NTr  r  r  )rH   r   r   r  r  ascontiguousarrayr   stridesr  r   rG   )r   rJ   d_contiguousd_discontiguousquery_contiguousquery_discontiguousr*   length1r  d1i1d2i2s   &            r   test_discontiguousr  N  su   IINN499*D99S>D(L**))C.2.577;t=Oyy''X'6../?/A/ABDD&&r*.>.F.Fr.JJJJ""2&,*>*>r*BBBBtD##$4$0 $ FG##$7$34 $ IG w(ZZ(!,FBZZ+Q/FBrrr   zbalanced_tree, compact_nodesc                 z   \         P                  P                  R 4       \         P                  ! R	R7      p\         P                  ! R
R7      p\         P                  ! RR7      pV ! W1VR7      pVP                  VRRR7      pV^ 8X  g   Q hVP                  V^4      w  rV	P                  R8X  g   Q hVP                  R8X  g   Q h\         P                  ! V4      P                  4       '       g   Q hVP                  V^ ^.4      p
\        V
^ ^ .4       VP                  VRRR7      pVP                  R8X  g   Q hR# )r   )r   r  rq  Tr  r   r  N)r   r   )r"   r   r`  )rR   rR   ra  )rH   r   r   r  r  r  rG   r   isinfrK   r  r   r  )r   r  r  empty_v3query_v3query_v2r*   r  rV   rW   Nr  s   &&&         r   test_kdtree_empty_inputr  j  s    IINN4xxf%HwwV$HwwV$Hx%24D""8S"EFQ;;ZZ!$FB88v88v88B<TAq6*Aq1a&!##D#;#GA77fr   c                   2   a  ] tR tRt o R tR tR tRtV tR# )_Test_sorted_query_ball_pointi  c                    \         P                  P                  R 4       \         P                  P                  ^d^4      V n        V P                  V P                  4      V n        R# r   N)rH   r   r   r   rE   r   r  r   s   &r   r   *_Test_sorted_query_ball_point.setup_method  s>    
		ta($$TVV,	r   c                   V P                   P                  V P                  R RR7      pV F  p\        V\	        V4      4       K  	  V P                   F6  pV P                   P                  VR RR7      p\        V\	        V4      4       K8  	  R# )r   Treturn_sortedN)r  r  rE   r   r:  )r<   	idxs_listidxsrF  s   &   r   test_return_sorted_True5_Test_sorted_query_ball_point.test_return_sorted_True  sr    II..tvvr.N	DtVD\2  &&B99--b"D-IDtVD\2 r   c                   V P                   P                  V P                  R4      pV F  p\        V\	        V4      4       K  	  V P                   Uu. uF  q0P                   P                  VR4      NK   	  ppV P                   P                  V P                  RRR7      p\        WT4       F  w  rg\        Wg4       K  	  R# u upi )zPrevious 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  rE   r   r:  rb   )r<   r  r  rF  idxs_list_singleidxs_list_Falseidxs0idxs1s   &       r   test_return_sorted_None5_Test_sorted_query_ball_point.test_return_sorted_None  s     II..tvvr:	DtVD\2  JNP2II66r2>P))44TVVRu4UBLEu, C Qs   $C)r  rE   N)	r$   ry   rz   r{   r   r  r&  r|   r}   r~   s   @r   r  r    s     -
3- -r   r  c                  v   \         P                  P                  ^
^4      P                  \        4      p \
        P                  ! \        RR7      ;_uu_ 4        \        V 4      pRRR4       \        V P                  4      p\
        P                  ! \        RR7      ;_uu_ 4        VP                  V 4       RRR4       \
        P                  ! \        RR7      ;_uu_ 4        VP                  V ^R7       RRR4       R#   + '       g   i     L; i  + '       g   i     Le; i  + '       g   i     R# ; i)r   zcomplex datar   NrB  )rH   r   r  viewcomplexr   r	   	TypeErrorr   realrG   r  rk  ts     r   test_kdtree_complex_datar/    s    YY^^B"''0F	y	7	76N 
8 	v{{A	y	7	7	 
8 
y	7	7	6Q' 
8	7 
8	7
 
8	7 
8	7	7s$   D%D#D'D	D$	'D8	c                 n   VP                   p\        V\        P                  4      '       g   Q hVP                  VP
                  ^ ,          8X  g   Q hV.pV'       Ed   VP                  R4      p\        V\        P                  4      '       d{   \        VP                  \        4      '       g   Q hVP                  \        VP                  4      8X  g   Q h\        W%P                  ,          VP                  P                  4       K  \        V\        P                  4      '       g   Q h\        VP                  \        4      '       g   Q h^ VP                  u;8:  d   VP                  8  g   Q h Q h\        VP                   \"        4      '       g   Q h\        VP                  \        4      '       g   Q hVP                  VP$                  P                  VP&                  P                  ,           8X  g   Q hVP)                  VP&                  4       VP)                  VP$                  4       EK  R# )r   Nr  )r*   r   r   	innernodechildrenr   popleafnoder   r  idxr   r  rz  rw  rS   r  r   r  r  r  )rM   r.  rk  rootrW  ra   s   &&&   r   
visit_treer7    s   66DdF,,----==FLLO+++ FE
%IIbMa))ajj#....::QUU+++vee}agg.A.ABa!1!12222akk3////)acc)))))aggu----ajj#....::1993E3E!EEEELL#LL  r   c                      \         P                  P                  R 4       \         P                  P                  ^d^4      p \	        V 4      p\        ^ W4       R# r  )rH   r   r   r  r   r7  r-  s     r   test_kdtree_tree_accessr9    s9    IINN4YY^^C#FvAq!r   zSpawns worker threadsc                      \         P                  P                  R 4      p V P                  ^d^4      p\	        V4      p\        ^
\        W!4       R# )l   ]Qs N)rH   r   rw  r  r   r
   r7  )r{  rk  r.  s      r   test_multithreaded_tree_accessr;    s=     ))



+CXXc1FvAB
A6r   c                     \         P                  P                  R 4       \         P                  P                  ^d^4      p \	        V 4      p\        VP                  \        4      '       g   Q hVP                  V P                  ^ ,          8X  g   Q h\        VP                  \        4      '       g   Q hVP                  V P                  ^,          8X  g   Q h\        VP                  \        4      '       g   Q hVP                  ^
8X  g   Q h\        VP                  \         P                  ! V ^ R7      4       \        VP                  \         P                  ! V ^ R7      4       VP                   P"                  V J g   Q hR# )r   rC   N)rH   r   r   r  r   r   rS   r   ra   r   r   r   r  rT   r  aminrJ   baser-  s     r   test_kdtree_attributesr?    s   IINN4YY^^C#FvAacc333&,,q/!!!acc333&,,q/!!!ajj#&&&&::qwwQ 78qvvrwwvA6766;;&   r   kdtree_classc           
         \         P                  P                  R 4      p\         P                  ! R^R4      pVP                  ^4      P	                  R4      pVP                  ^-4      P	                  R4      pVP                  ^4      pVP                  ^4      pV ! V4      pV ! V4      pVP                  WRWV3R7      p	VR,          VR	,          ,          p
\         P                  P                  VR
,          VR,          ,
          RR7      p\        \        P                  ! ^ .VRR 4      V4       UUu. uF-  w  r\         P                  ! WV8  W8*  ,          ,          4      NK/  	  ppp\        W4       R# u uppi )r   r  F)r  r  NrC   )r  r   )   r   )NrB   rB   N)NrB   rB   )rB   NrB   r  )rH   r   rw  r  rx  r  linalgr  rb   r  chainrI   r   )r@  r{  rc  ABwAwBkdAkdBnABr  r  prev_radiusrt  expects   &              r   $test_kdtree_count_neighbors_weightedrO    s9   
))


%C
		$4 A

2u%A

2v&A	AB	BB
q/C
q/C


c

HC kBwK'G99>>!J-!J-7b>AD),Y__aS!CR&-I1)MO)M%+ ffWD0T^DEF)M  OC Os   43E7c                  @   . ROp \        V 4      p\        P                  ! V \        P                  ! V\        P                  4      .4      R,          p\
        P                  ! \        RR7      ;_uu_ 4        \        V4       RRR4       R#   + '       g   i     R# ; i)r"   Nmust be finiter   )
r"      ir  ii   r   irC  )	r  rH   rz  r*  nanr   r	   r   r   )valsra   rJ   s      r   test_kdtree_nanrW    s_    1DD	A>>4BFF!345g>D	z)9	:	:t 
;	:	:	:s   6BB	c                     \         P                  P                  R 4      p V P                  R
RRR7      p\	        VRRR7      p\        ^4       Uu. uF  p\         P                  NK  	  pp\        P                  ! \        RR7      ;_uu_ 4        VP                  V4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        VP                  V^4       RRR4       \         P                  VR&   \        P                  ! \        RR7      ;_uu_ 4        \	        VR	RR7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        VRR	R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        VR	R	R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        VRRR7       RRR4       R# u upi   + '       g   i     ELV; i  + '       g   i     EL+; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)i90  r   rr   )r'  lowhighFr  rQ  r   NTr  )r   rB   )rH   r   default_rngr)  r   rj  rU  r   r	   r   rG   r  )r{  coordsr.  r#   	bad_coords        r   test_nonfinite_inputs_gh_18223r^    sv   
))


&C[[hCc[:FvU%@A!&q*AI*	z)9	:	:		 
;	z)9	:	:	9a( 
; 66F4L	z)9	:	:vT? 
;	z)9	:	:vU$? 
;	z)9	:	:vT> 
;	z)9	:	:vU%@ 
;	: +	:	:	:	:	:	: 
;	:	:	:	:	:	:	:	:sN   G(G-HHH(H;I-G>	H	H%	(H8	;I	I	incantationc                      ! R  R\         P                  4      pRR.RR.RR..p\         P                  ! V4      pV! V4      pV ! V^
4      pVP                  V^4       VP	                  V^4       R# )	c                   ,   a  ] tR tRt o R tR tRtV tR# )test_gh_18800.<locals>.ArrLikei2  c                ^    \         P                  ! V4      P                  V 4      pR Vn        V# r   )rH   rS  r)  rK   )clsinput_arrayobjs   && r   __new__&test_gh_18800.<locals>.ArrLike.__new__3  s)    **[)..s3C CGJr   c                6    Vf   R # \        VRR 4      V n        R # )NrK   )getattrrK   )r<   rf  s   &&r   __array_finalize__1test_gh_18800.<locals>.ArrLike.__array_finalize__:  s    {sE40DHr   )rK   N)r$   ry   rz   r{   rg  rk  r|   r}   r~   s   @r   ArrLikerb  2  s     		1 	1r   rm  gGzP@gQE@@gQ6@gp=
c6@g(\?@g=
ףpMT@N)rH   r  r   rG   r  )r_  rm  rk  r>  arr_liker*   s   &     r   test_gh_18800ro  ,  ss    1"** 1 
		
F
 ((6
Cs|Hvr"DJJx(C(r   c           
         \         P                  P                  R 4      pRp^pVP                  W#4      pV ! V^R7      pR^R^R^dR^RR/pVP	                  4        F>  w  rx\
        P                  ! \        R	R
7      ;_uu_ 4        \        WWV4       RRR4       K@  	  R\         P                  ! ^ ^ .\         P                  R7      R^R^RRRR/p	V	P	                  4        F@  w  rx\
        P                  ! \        RR
7      ;_uu_ 4        V\        WW4      R&   RRR4       KB  	  R#   + '       g   i     K  ; i  + '       g   i     Kk  ; i)l   X r   re  rS   ra   r'  r   r*   Nz(is not writable|has no setter)r   rJ   r  ry  r4   r  r  r  zdestination is read-onlyrB   )rH   r   rw  r  r  r   r	   AttributeErrorrp  r   r  r   rj  )
r   r{  ra   r\   rk  r   object_attrsattrattr_valarray_attrss
   &         r   test_immutablerv  K  s%   
))



+CA	AXXa^FFA&AQQBL ',,.]]>1RSSAX& TS / 	!Qrzz211K &++-]]:-GHH"*GAQ IH . TSS IHHs   D%D9%D69E
))TF)TT)FFr  )yr  rq  numpy.testingr   r   r   r   r   r   r   r	   r  numpyrH   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   r   r   r   r   r   r   r   r  r  r3  r8  r@  rD  rM  rQ  rX  rd  markthread_unsafe	fail_slowro  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r+  r/  r4  r6  r8  r?  rK  rT  rX  r\  rc  rf  rj  rt  r  r  r  r  r  r  r  	fail_asanr  r  r  r  r  r  r  r  r   r  parametrizer  r  r/  r7  r9  r;  r?  rO  rW  r^  ro  rv  rx   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42 ( (T,8\ r+ +$,\&.,+21( 8 7

. - - -:( !8 "9:7 ;7!( &'):;! <!.A, &(9:) ;)<+r   