+
    0i                        ^ 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Ht ^ RIt^ RIHtHtHtHt ^ RIHt ^ RIHt ^ RIt]P0                  ! ]].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       t'] ! R$ R%]$4      4       t(] ! R& R']$4      4       t)] ! R( R)]%4      4       t*] ! R* R+]$4      4       t+] ! R, R-]$4      4       t,R. t-]P\                  P_                  ^4      R/ 4       t0 ! R0 R14      t1] ! R2 R3]14      4       t2] ! R4 R5]14      4       t3] ! R6 R7]24      4       t4] ! R8 R9]34      4       t5] ! R: R;]24      4       t6] ! R< R=]34      4       t7 ! R> R?4      t8R@ t9RA t:RB t;RC t< ! RD RE4      t=] ! RF RG]=4      4       t> ! RH RI4      t?] ! RJ RK]?4      4       t@RL tARM tBRN tCRO tDRP tERQ tFRR tGRS tHRT tIRU tJRV tKRW tLRX tMRY tNRZ tOR[ tP]P\                  P_                  ^
4      R\ 4       tQR] tRR^ tSR_ tTR` tU]P\                  P                  ]! 4       Ra8H  RbRc7      Rd 4       tWRe tX]P\                  P_                  ^
4      Rf 4       tYRg tZRh t[Ri t\Rj t]Rk t^Rl t_Rm t`]P\                  P                  Rn. R{O4      Ro 4       tb] ! Rp Rq4      4       tcRr tdRs teRt tf]P\                  P                  Ru]].4      Rv 4       tgRw thRx ti]P\                  P                  Ry]].4      Rz 4       tjR# )|    N)assert_equalassert_array_equalassert_assert_almost_equalassert_array_almost_equalassert_allclose)raises)python_implementation)KDTree	Rectangledistance_matrixcKDTree)cKDTreeNodeminkowski_distance)paramsc                     V P                   # N)param)requests   &]/var/www/html/photoedit/myenv/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_boxr0   +   sJ    5Dg	')w	7*4A&AHr   c                   J   a  ] tR t^2t 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   r   selfr*   r+   r,   s   &&&&r   distanceConsistencyTests.distance3       !!**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)r5   r>   r/   iepss   &    r   test_nearestConsistencyTests.test_nearest6   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# )   r:   r;   r<   N)r>   mr?   r@   rA   amaxargmaxr   rB   rC   r   rE   )r5   r>   rL   ddiir/   rF   rG   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_boundr:   near_d=g should be less than N)r>   r/   r?   r@   nziprA   infr   rB   rC   r   r   r6   	r5   r>   r/   rO   rP   rG   hitsnear_dnear_is	   &        r   test_points_near!ConsistencyTests.test_points_nearJ   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   rU   r,   rV   r:   rW   rX   rY   N)r>   r/   r?   r@   rZ   r[   rA   r\   r   r6   rC   r   r   rB   r]   s	   &        r   test_points_near_l1$ConsistencyTests.test_points_near_l1X   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# )rd   r:   rW   rX   rY   N)r>   r/   r?   r@   rZ   rA   r\   r[   r   r6   rC   r   r   rB   r]   s	   &        r   test_points_near_linf&ConsistencyTests.test_points_near_linff   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# )皙?rG   N)r>   rU   r?   r@   r   rA   rD   )r5   r>   rU   rG   d_reali_realr/   rF   s   &       r   test_approxConsistencyTests.test_approxt   sf    FFFF**10{{  3 /qAcEN*+,r    N)r   
__module____qualname____firstlineno__r6   rH   rQ   ra   re   rh   ro   __static_attributes____classdictcell____classdict__s   @r   r2   r2   2   s1     +T
NKP- -r   r2   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)rZ   rL   rA   randomseedrandnrC   r   r?   r>   r/   rU   r5   s   &r   setup_method_Test_random.setup_method   s    
		tIIOODFFDFF3	&&tyy1&=(r   r/   rC   rU   r?   rL   rZ   r>   Nr   rr   rs   rt   r   ru   rv   rw   s   @r   rz   rz   }   s      r   rz   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   rA   r   r   rL   r>   r5   	__class__s   &r   r   _Test_random_far.setup_method   s+    (+r   )r>   r   rr   rs   rt   r   ru   rv   __classcell__r   rx   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   )rA   arrayrC   r   r?   rZ   rL   r   r   r   r>   r/   rU   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   rk   )rk   r   r   r?   r@   r   s   &r   rH   _Test_small.test_nearest   s!    !!+q1	r   c                ^    \        V P                  P                  R^4      RR.^ ^.34       R# )r   rk   g?Nr   r   r   s   &r   test_nearest_two_Test_small.test_nearest_two   s.    !!+q1saV$	&r   r   N)	r   rr   rs   rt   r   rH   r   ru   rv   rw   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   rC   r?   r   s   &r   r    _Test_small_nonleaf.setup_method   s)    &&tyy1&=r   )r?   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   )rA   r   rC   r   r?   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   )	r?   r@   rA   r   r   
isinstancefloat
issubdtypesignedintegerr5   r/   rF   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# rK   NrK         )rK   r   r?   r@   rA   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#    rU   Nr   )
r?   rZ   r@   rA   r   r   r   r   rD   isfiniter5   skkr/   rF   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   r;   Nr   
r?   rZ   r@   rA   r   r   r   r   rD   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	   
ValueErrorr?   r@   )r5   r>   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 	rC   r?   N)r   rr   rs   rt   r   r   r   r   r   r   ru   rv   rw   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   )rA   r   rC   r   r?   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   )r?   r@   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)	rA   r   r   r   Tr?   r@   r[   r   )r5   qsdsi_sqr/   rF   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   )	r?   rZ   r@   r   rA   r   r   rD   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   rr   rs   rt   r   r   r   r   r   r   ru   rv   rw   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   r   r4   s   &&&&r   r6   ball_consistency.distance  s    !!c'1s7A66r   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r,   rG   r   T)rA   
atleast_2dr>   broadcast_tor/   r   r   query_ball_pointr,   rG   	enumerater6   rC   r   tol)r5   r>   r/   lrF   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   )rA   r   r>   r   r/   r   r   r   r,   rG   r   onesrZ   boolr6   rC   r   r  )	r5   r>   r/   r  rF   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   rq   N)
r   rr   rs   rt   r  r6   r  r  ru   rv   rw   s   @r   r   r     s     
C7=	> 	>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)rA   r   r   r   rC   r   r   r>   r,   rG   r/   r5   rZ   rL   s   &  r   r   _Test_random_ball.setup_method.  st    
		tIIOOA)	!!$))a!8#r   r   r/   rC   rG   r,   r>   Nr   rw   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   r0   r4   s   &&&&r   r6   #_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# )i'  r}   sizer   r-   rk   r  r   N)rA   r   r   uniformrC   r   r   fullr>   r,   rG   r/   r  s   &  r   r   '_Test_random_ball_periodic.setup_method?  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   r>   r/   r,   rG   r   r6   rC   )r5   r  rF   s   &  r   test_in_ball_outside/_Test_random_ball_periodic.test_in_ball_outsideJ  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)rA   r  r   rZ   r  r   r>   r/   r,   rG   rD   r6   rC   )r5   r  r  s   &  r   test_found_all_outside1_Test_random_ball_periodic.test_found_all_outsideR  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   rr   rs   rt   r6   r   r%  r(  ru   rv   rw   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_issue9890ia  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)rA   r   r   randintrC   r   r   r>   r,   rG   r/   r  s   &  r   r   /_Test_random_ball_largep_issue9890.setup_methodg  sq    
		sII%%c4qf%=	!!$)),r   r  N)r   rr   rs   rt   r  r   ru   rv   rw   s   @r   r+  r+  a  s      C	 	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_approxis  c                2   < \         SV `  4        R V n        R# rk   Nr   r   rG   r   s   &r   r   %_Test_random_ball_approx.setup_methodv      r   rl   r   r   s   @@r   r0  r0  s        r   r0  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# r2  r3  r   s   &r   r   ._Test_random_ball_approx_periodic.setup_method~  r5  r   rl   r   r   s   @@r   r8  r8  {  r6  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_fari  c                2   < \         SV `  4        R V n        R# r  Nr   r   r/   r   s   &r   r   "_Test_random_ball_far.setup_method      r   r/   r   r   s   @@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_far_periodici  c                2   < \         SV `  4        R V n        R# r>  r?  r   s   &r   r   +_Test_random_ball_far_periodic.setup_method  rA  r   rB  r   r   s   @@r   rE  rE    rC  r   rE  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   r,   r   s   &r   r   !_Test_random_ball_l1.setup_method      r   r,   r   r   s   @@r   rI  rI          r   rI  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   rA   r\   r,   r   s   &r   r   #_Test_random_ball_linf.setup_method      r   rM  r   r   s   @@r   rP  rP          r   rP  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rK   r   r   r   )
rA   r   r   r   r   r   r   r   r   list)r   rZ   rL   r   rs   &    r   test_random_ball_vectorizedr\    sw    
A	AIINN4BIIOOA)*A	299??1a3Q7A&!Jqw%&r   c                 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   )rA   r   r   r   r   ranger   )	r   rZ   rU   pointsr   l1l2l3rF   s	   &        r   $test_query_ball_point_multithreadingrf    s    IINN1A	AYY__Q"FFA	
		FE1		5B	
		FE2		6B	
		FE2		6B1X55BEErube,  1X55BEErube, r   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   r   r4   s   &&&&r   r6   two_trees_consistency.distance  r8   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T2r/   r,   rG   r   r6   data1data2)r5   r[  rF   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)rl  rm  rn  r/   r,   rG   r   rA   r  rZ   r  rD   r6   rp  ro  )r5   r[  rF   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   rq   N)	r   rr   rs   rt   r6   rr  r  ru   rv   rw   s   @r   rh  rh    s     +13 3r   rh  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)rA   r   r   r   ro  r   rl  rp  rn  r,   rG   r/   r  s   &  r   r   #_Test_two_random_trees.setup_method  s    
		tYY__Q*
""4::":YY__Q*
""4::":r   rl  rn  r/   ro  rp  rG   r,   Nr   rw   s   @r   rw  rw    s     
 
r   rw  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  r4   s   &&&&r   r6   (_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# )ry  r}   r  r   r   r  r   N)rA   r   r   r!  ro  r   rl  rp  rn  r,   rG   r/   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   rr   rs   rt   r6   r   ru   rv   rw   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# rK   Nr?  r   s   &r   r   '_Test_two_random_trees_far.setup_method  rL  r   rB  r   r   s   @@r   r  r    rN  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  r?  r   s   &r   r   0_Test_two_random_trees_far_periodic.setup_method  rL  r   rB  r   r   s   @@r   r  r     rN  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   rR  r   s   &r   r   (_Test_two_random_trees_linf.setup_method  rT  r   rM  r   r   s   @@r   r  r    rU  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   rR  r   s   &r   r   1_Test_two_random_trees_linf_periodic.setup_method  rT  r   rM  r   r   s   @@r   r  r    rU  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_rectanglei  c                0    \        ^ ^ .^^.4      V n        R# r   N)r   rectr   s   &r   r   Test_rectangle.setup_method  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)   g      ?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  rA   sqrtr   s   &r   test_min_two_sides!Test_rectangle.test_min_two_sides#  s'    DII88!Q@"''!*Mr   c                    \        V P                  P                  R R .4      ^\        P                  ! ^4      ,          4       R# r  r   r  max_distance_pointrA   r  r   s   &r   test_max_insideTest_rectangle.test_max_inside&  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  rA   hypotr   s   &r   test_max_one_side Test_rectangle.test_max_one_side)  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_sides-  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   rk   N)r  splitr   maxesmins)r5   lessgreaters   &  r   
test_splitTest_rectangle.test_split0  s`    		3/4::Qx0499q!f-7==1a&17<<#q2r   )r  N)r   rr   rs   rt   r   r  r  r  r  r  r  r  ru   rv   rw   s   @r   r  r    s7     .IKNT0P3 3r   r  c                  d    \        \        ^ ^ .^^.^4      \        P                  ! ^4      4       R# r  )r   r   rA   r  rq   r   r   test_distance_l2r  8  s&    *Aq6Aq61=rwwqzJr   c                  <    \        \        ^ ^ .^^.^4      ^4       R# r  )r   r   rq   r   r   test_distance_l1r  <  s    *Aq6Aq61=qAr   c                  X    \        \        ^ ^ .^^.\        P                  4      ^4       R# r  )r   r   rA   r\   rq   r   r   test_distance_linfr  @  s"    *Aq6Aq6266BAFr   c                     \         P                  P                  R 4       \         P                  P                  ^
^^4      p \         P                  P                  ^^^4      p\	        \        W4      P                  R4       R# )r}   N)r      )rA   r   r   r   r   r   r   )r>   ys     r   test_distance_vectorizationr  D  sT    IINN4
		Aq!A
		1a A#A)//9r   c                   2   a  ] tR tRt o R tR tR tRtV tR# )count_neighbors_consistencyiK  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   rl  count_neighborsrn  rA   rB   rm  lenr5   r[  r  s   &  r   test_one_radius+count_neighbors_consistency.test_one_radiusL  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_radiusQ  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)rA   explinspacelogrl  r  rn  r   rD   r.   r[   r   )r5   rsresultsr[  results   &    r   test_multiple_radius0count_neighbors_consistency.test_multiple_radiusV  s    VVBKKtbffRj!<=''))$''26rwww'1,-.R)IA00!<fE *r   rq   N)	r   rr   rs   rt   r  r  r  ru   rv   rw   s   @r   r  r  K  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# )ry  r}   r~   N)rA   r   r   r   r   rl  rn  r  s   &  r   r   "_Test_count_neighbors.setup_method_  sd    
		t""299??1#81"E""299??1#81"Er   )rl  rn  Nr   rw   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_consistencyig  c                    \        WV4      # r   r   r4   s   &&&&r   r6   +sparse_distance_matrix_consistency.distancei  r8   r   c           
     .   V P                   P                  V P                  V P                  4      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# )   decimalN)rl  sparse_distance_matrixrn  r[  rm  r   r   r6   rC   r,   itemsr   )r5   Mr[  rF   r  rq  r/   s   &      r   test_consistency_with_neighborsBsparse_distance_matrix_consistency.test_consistency_with_neighborsl  s    GG**477DFF;GG##DGGTVV4aLDA#dGMM$'',,q/477<<?DFFK  ! 779KVaQA1I %r   c                f    V P                   P                  V P                   V P                  4       R # r   )rl  r  r[  r   s   &r   test_zero_distance5sparse_distance_matrix_consistency.test_zero_distancey  s    &&tww7r   c                (   V P                   P                  V P                  V P                  4      p\	        V P                   P
                  V P                  P
                  4      p^ W"V P                  8  &   \        VP                  4       V^R7       R# )r   r  N)rl  r  rn  r[  r   rC   r   toarray)r5   M1expecteds   &  r   test_consistency3sparse_distance_matrix_consistency.test_consistency}  s_    WW++DGGTVV<"477<<>&'DFF"#!"**,"Er   c                N   \         P                  P                  ^ 4       \         P                  ! \         P                  P	                  ^^4      \
        R7      pV P                  VRRR7      pVP                  V^4      P                  4       p\        W3P                  ^R7       R# )r   r	  Fbalanced_treecompact_nodesr  N)rA   r   r   r   r   r   r   r  r  r   r   )r5   too_manyr$   r/   s   &   r   #test_against_logic_error_regressionFsparse_distance_matrix_consistency.test_against_logic_error_regression  sw    
		q88BIIOOB2#>E   @''a088:!!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 P                  P                  V P                  V P                  R
R7      p\        WP                  4       ^R7       R# )r;   r   dictoutput_typer  ndarrayrF   rq  v
dok_matrix
coo_matrixN)rA   r   rZ   ra  ro  rp  dotr  r[  rl  r  rn  keysr   r   r  )r5   refrF   rq  r  r  r[  rU   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?GG**477DFF$ + &!#yy{B?r   rq   N)r   rr   rs   rt   r6   r  r  r  r  r  ru   rv   rw   s   @r   r  r  g  s+     +8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# )ry  r}   r~   r)   N)rA   r   r   r   r   rl  rn  r[  r,   ro  rp  rZ   rL   )r5   rZ   rL   ro  rp  s   &    r   r   )_Test_sparse_distance_matrix.setup_method  s    
		t		%		%""51"5""51"5

r   )rl  rn  ro  rp  rL   rZ   r,   r[  Nr   rw   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\	        W44      p\        VP                  W34       \        V 4       F?  p\        V4       F-  p\        \        W6,          WG,          4      WVV3,          4       K/  	  KA  	  R# )r   r}   N)
rA   r   r   r   r   r   r   ra  r   r   )rL   rZ   rU   xsysr   rF   rq  s           r   test_distance_matrixr    s    
A
A	AIINN4		B		B		 BA6"1XqA 225"% @"T(K  r   c                     ^
p ^p^p\         P                  P                  R4       \         P                  P                  W4      p\         P                  P                  W4      p\	        W44      p\	        W4^R7      p\        WV4       R# )r   r}   )	thresholdN)rA   r   r   r   r   r   )rL   rZ   rU   r  r  r   dsls          r   test_distance_matrix_loopingr    sc    
A
A	AIINN4		B		B		 B
"A
.Cr   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   )rm  setr   addr   query_pairs)r   r/   r[  r   rF   r  rq  s   &&     r   check_onetree_queryr    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   rk   NgMbP?gh㈵>gư>)rA   r   r   r   r  )r   rZ   rU   rb  r   s   &    r   test_onetree_queryr    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   r  r  )r   r$   s   & r   test_query_pairs_single_noder    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   rk   r;   r  r  r  N)rA   r   r   r   r  ra  r  r  sortedr  r   r   r   )r   rZ   rU   r[  r2rb  r   bruterF   rq  r  l0r   rc  arrrd  s   &               r   test_kdtree_query_pairsr%    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 )rK   rk   )r[  rG   )\(?r[  N)rA   r  r  r  r   )
r   spacingx_rangey_rangexiyixy_arrayr$   	pairs_epspairss
   &         r   test_query_pairs_epsr1    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)r3  r3  )r      	      )rK   r   )
rA   mgridrZ  r[   ravelr   r   r   asarrayr   )r   r>   r  rb  r$   s   &    r   test_ball_point_intsr:  ,  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   )ra  r   noder   r   )r   nodess     r   test_kdtree_comparisonsr>  9  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   r^  r   F)r  )r  )r  r  Nr   )rA   r   r   r   r@   r   )r   rZ   rU   rb  rl  rn  T3T4s   &       r   test_kdtree_build_modesrB  ?  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   )	picklerA   r   r   r   dumpsloadsr@   r   r   rD  rZ   rU   rb  rl  tmprn  s   &       r   test_kdtree_picklerI  N  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   )r-   r   r   )	rD  rA   r   r   r!  rE  rF  r@   r   rG  s   &       r   test_kdtree_pickle_boxsizerK  \  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   r^  T)	copy_datar   .Nr   )rA   r   r   r   copyr@   r   )r   rZ   rU   rb  r   r   rl  rn  s   &       r   test_kdtree_copy_datarO  j  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   r^  )rU   r`  r   	cpu_countc                      R # r   rq   rq   r   r   <lambda>'test_ckdtree_parallel.<locals>.<lambda>  s    r   zCannot determine ther   r_  Nr   )rA   r   r   r   r@   r   setattrosr   r	   NotImplementedError)	r   monkeypatchrZ   rU   rb  r   rl  rn  r@  s	   &&       r   test_ckdtree_parallelrY  y  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   Nr;   r   )r   r   r   	split_dimlesserr  indicesr   r   data_pointsmaxmin)rZ   r>   r  r?   recurse_trees   &  r   rb  'test_ckdtree_view.<locals>.recurse_tree  s    
1k*+;;"AHH$%AII%&AIIOOA&&//9:"#$$Q^4A		%%an5AAEEGaeeg%&r   r;   N)rA   r   r   r   r   r$   r   sortr^  ra  rC   r_  )rZ   rU   rb  r?   rb  s      @@r   test_ckdtree_viewre    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   rK   r   )
rA   r   r   r!  r@   r   r   r  r   r8  )r   rZ   rL   klistkintrC   r?   rO   rP   dd1ii1s   &          r   test_kdtree_list_krl    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      @rM  )r-   r,   N)	rA   r   r   r!  r\   r@   r   r   simulate_periodic_box)r   rZ   rL   rU   rC   r?   kdtree2r,   rO   rP   rj  rk  dd2ii2s   &             r   test_kdtree_boxrs    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# )rn  r}   r  r   r   r~   rM  N)rA   r   r   r!  r\   r@   r   r   )r   rZ   rL   rU   rC   r?   rp  r,   rO   rP   rj  rk  s   &           r   test_kdtree_box_0boxsizeru    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   )r;   r   )r   r  )r  r   )rA   r  reshaper   r	   r   r   rC   s   & r   test_kdtree_box_upper_boundsry    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   )rA   r  assert_raisesr   rx  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   rM  r<   rP   rO   r	  r;   )orderNr   )rP   i8)rO   f8)rA   aranger   r   unravel_indexr   r@   rw  appendconcatenateemptyr  rd  )r?   rC   rU   r-   r,   rO   rP   r>   nnrZ   imagerq  rr  r  s   &&&&&         r   ro  ro    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   PyPyz Fails on PyPy CI runs. See #9507)reasonc                      ^ 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皙?r;   g     X@)rU   r,   )resourceImportErrorrA   r7  slicesincos
empty_liker   r-  r  flatvstacknonzeror   	getrusageRUSAGE_SELF	ru_maxrssra  r   r@   r   )r  dxdyr  r>   zz_copyFILLVALmaskigoodibadmem_userF   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   rK   r   r   rK   r   r   )rA   r  rw  r  r  _build_weightsr   r{  r   ra  r  rN  )r   rC   tree1r  nwrF   c1c2c3c4w1rp  tree2s   &            r   test_kdtree_weightsr  P  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# )rn  r}   r  r~   F
cumulativeN)r   r  r  g{Gz?r  )rA   r   r   normalr  r  r  r   cumsumr[   	itertoolspermutationsr   rZ  )r   rZ   rL   rC   r?   r0i0n0nncrF   r[  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   rk   )r   r
  r  r  Tr  r  r  rF   rq  r  )alignr  N)r   )r   r   )r   )r;   r   )r   rK   )rA   r   RandomStaterandr@   r   r   ra  r  objectfillrm  r  r   r  r   r   intpfloat64r
  r  r  )r   rngXYr$   r/   rF   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#NAqBHHX..5##E3t8#NA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)ra  rA   r  r  productr  r   r$   _noder   rd  r]  r^  r  r  )r   rZ   rL   rC   balancedcompactr?   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~   rk   Fr  N)r{  r   r  )r   r?   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   rT   r  N)r   r   r   )r'  r   r   )r   r   r   )r   r'  r   )r   r   r   )r   r   r   )rA   r   r@   r   r\   )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  333333?Nr|   r   )
rA   r   r   r  r!  r  r   r[   r   r   )r   rC   r@   r$   r/   rvectorqidirscalarr*   r+   s   &          r   test_query_ball_point_vector_rr    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  r  Treturn_lengthFNr  )rA   r   r   r  r   r  r   )r   rC   r@   r$   r/   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   )rA   r   r   r  r  ascontiguousarrayr   stridesr   r   r@   )r   rC   d_contiguousd_discontiguousquery_contiguousquery_discontiguousr$   length1r  d1i1d2i2s   &            r   test_discontiguousr    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                 v   \         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4      pVP                  R8X  g   Q hR# )r}   )r   r  r  Tr  N)r   r   )r   r   rX  )rK   rK   rY  )rA   r   r   r  r  r   r@   r   isinfrD   r  r   r  )r   r  r  empty_v3query_v3query_v2r$   r  rO   rP   Nr  s   &&&         r   test_kdtree_empty_inputr  2  s    IINN4xxf%HwwV$HwwV$Hx%24D""8S"EFQ;;ZZ!$FB88v88v88B<TAq6*Aq1a&!##D#.A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_pointiN  c                    \         P                  P                  R 4       \         P                  P                  ^d^4      V n        V P                  V P                  4      V n        R# )r}   N)rA   r   r   r   r>   r   r  r   s   &r   r   *_Test_sorted_query_ball_point.setup_methodP  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   r>   r   r   )r5   	idxs_listidxsr,  s   &   r   test_return_sorted_True5_Test_sorted_query_ball_point.test_return_sorted_TrueU  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   r>   r   r   r[   )r5   r	  r
  r,  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  r>   N)	r   rr   rs   rt   r   r  r  ru   rv   rw   s   @r   r  r  N  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   Nr(  )rA   r   r  viewcomplexr   r	   	TypeErrorr   realr@   r   rb  ts     r   test_kdtree_complex_datar  l  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                     \         P                  P                  R 4       \         P                  P                  ^d^4      p \	        V 4      p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P1                  VP.                  4       VP1                  VP,                  4       EK  R# )r}   Nr   )rA   r   r   r  r   r$   r   	innernodechildrenr   popleafnoder   r  idxr   r  r_  r\  rL   r  r   r  r  r  )rb  r  rootr=  rZ   s        r   test_kdtree_tree_accessr#  |  s   IINN4YY^^C#FvA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\        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                   V J g   Q hR# )r}   r<   N)rA   r   r   r  r   r   rL   r   rZ   r   r   r   r  rM   r  aminrC   r  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66V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  Nr<   )r  r   )   r   )Nr;   r;   N)Nr;   r;   )r;   Nr;   r   )rA   r   r  r  rw  r  linalgr  r[   r  chainrB   r   )r'  r  r[  ABwAwBkdAkdBnABr  r  prev_radiusradiusexpects   &              r   $test_kdtree_count_neighbors_weightedr7    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   ir*  )	r  rA   r  r"  nanr   r	   r   r   )valsrZ   rC   s      r   test_kdtree_nanr?    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   rk   )r  lowhighFr  r9  r   NTr  )r   r;   )rA   r   default_rngr!  r   ra  r=  r   r	   r   r@   r   )r  coordsr  r   	bad_coords        r   test_nonfinite_inputs_gh_18223rF    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>.ArrLikei  c                ^    \         P                  ! V4      P                  V 4      pR Vn        V# r   )rA   r9  r  rD   )clsinput_arrayobjs   && r   __new__&test_gh_18800.<locals>.ArrLike.__new__  s)    **[)..s3C CGJr   c                6    Vf   R # \        VRR 4      V n        R # )NrD   )getattrrD   )r5   rN  s   &&r   __array_finalize__1test_gh_18800.<locals>.ArrLike.__array_finalize__  s    {sE40DHr   )rD   N)r   rr   rs   rt   rO  rS  ru   rv   rw   s   @r   ArrLikerJ    s     		1 	1r   rU  gGzP@gQE@@gQ6@gp=
c6@g(\?@g=
ףpMT@N)rA   r  r   r@   r   )rG  rU  rb  r$  arr_liker$   s   &     r   test_gh_18800rW    ss    1"** 1 
		
F
 ((6
Cs|Hvr"DJJx(C(r   ))TF)TT)FFr  )krV  numpy.testingr   r   r   r   r   r   r   r	   r{  platformr
   numpyrA   scipy.spatialr   r   r   r   scipy.spatial._ckdtreer   r   r  fixturer   r'   r0   r2   rz   r   r   r   r   r   r   r  r  r+  r0  r8  r<  rE  rI  rP  r\  mark	fail_slowrf  rh  rw  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r1  r:  r>  rB  rI  rK  rO  rY  re  rl  rs  ru  ry  r|  ro  skipifr  r  r  r  r  r  r  r  r  r  parametrizer  r  r  r#  r&  r7  r?  rF  rW  rq   r   r   <module>rb     s   
, , +  *  E E . , () *(H- H-V 	# 	 	 ,| , , &" & &: >+ > >+) +)Z-7 -7^> >4 
( 
 
 #
!1 #
 #
L )9  " 0   (9   -   %?   ,   .  ' q- -&3 3* 2   &;  " !7   *I   "8   +J  3 3@KBG:F F$ F7 F FF@ F@R #E  "L	#!$/
B#
;5'$AD $D r 6&6J42 )+v5=  ?'?'R,8\ r+ +$,\&.,+21( 8 7

. - - -:( !<( &'):;! <!.A, &(9:) ;)r   