
    sg:                        d dl Zd dlZd dlmZmZ d dlmZmZm	Z	 d dl
mZ d dlmZmZ dZi i i  ed      dZe	egZd	 Zej(                  j+                  d
e      d        Zej(                  j+                  d
e      d        Zej(                  j+                  de      d        Zej(                  j+                  de      d        Zy)    N)assert_allcloseassert_equal)KDTreeKDTree32KDTree64)get_dataset_for_binary_tree)Paralleldelayed   )p)	euclidean	manhattan	chebyshev	minkowskic                  0    t        t        t              sJ y N)
issubclassr   r        W/var/www/html/venv/lib/python3.12/site-packages/sklearn/neighbors/tests/test_kd_tree.py test_KDTree_is_KDTree64_subclassr      s    fh'''r   BinarySearchTreec                     t        j                  g dt              }t        j                  t
        d      5   | |       ddd       y# 1 sw Y   yxY w)z/Check that we do not accept object dtype array.))      r   )r      )r   r   r   r   )dtypez(setting an array element with a sequence)matchN)nparrayobjectpytestraises
ValueError)r   Xs     r   test_array_object_typer&      sA     	2&AA	z)S	T   s   	AAc                     t         j                  j                  d      }|j                  d      } | |d       t	        dd      fdd|gz  D               y)	zgMake sure that KDTree queries work when joblib memmaps.

    Non-regression test for #21685 and #21228.r   )
   r   r   )	leaf_sizer   )n_jobs
max_nbytesc              3   T   K   | ]  } t        j                        |       ! y wr   )r
   query).0datatrees     r   	<genexpr>z4test_kdtree_picklable_with_joblib.<locals>.<genexpr>+   s"     $S4%8WTZZ%8%>$Ss   %(N)r   randomRandomStaterandom_sampler	   )r   rngr%   r0   s      @r   !test_kdtree_picklable_with_joblibr6      sU    
 ))


"C'"AA+D
 %HA!$$S1PQs7$SSr   metricc                 h   t        | d      \  }}}}t        j                  |i       }t        |fd|d|}t	        |fd|d|}d}	|j                  ||	      \  }
}|j                  ||	      \  }}t        |
|d       t        ||       |
j                  t        j                  k(  sJ |j                  t        j                  k(  sJ d	}|j                  ||
      }|j                  ||
      }t        ||      D ]  \  }}t        ||        |j                  ||d      \  }}
|j                  ||d      \  }}t        |||
|      D ]_  \  }}}}t        ||       t        ||d       |j                  t        j                  k(  sJ |j                  t        j                  k(  r_J  y )N2   )random_seedfeaturesr   r)   r7      )kh㈵>rtolg
ףp=
@)rT)rB   return_distance)r   METRICSgetr   r   r-   r   r   r   r   float64float32query_radiuszip)global_random_seedr7   X_64X_32Y_64Y_32metric_paramskd_64kd_32r>   dist_64ind_64dist_32ind_32rB   _ind64_ind32_dist_64_dist_32s                      r   "test_kd_tree_numerical_consistencyrZ   .   s    9&D$d KK+MTGQvGGETGQvGGE 	
Akk$!k,OGVkk$!k,OGVGW40 ==BJJ&&&==BJJ&&& 	A*F*Fff- %VV$%
 ((D(IOFG((D(IOFG.1&&'7.S ,*(VV$(6~~+++~~+++	,r   c                    t        |       \  }}}}t        j                  |i       }t        |fd|d|}t	        |fd|d|}d}	d}
|j                  ||
|	d      }|j                  ||
|	d      }t        ||d	       |j                  t        j                  k(  sJ |j                  t        j                  k(  sJ y )
N)r:   r   r<   gaussiang?T)hkernelbreadth_firstr?   r@   )r   rD   rE   r   r   kernel_densityr   r   r   rF   rG   )rJ   r7   rK   rL   rM   rN   rO   rP   rQ   r^   r]   	density64	density32s                r   )test_kernel_density_numerical_consistencyrc   U   s     9EWXD$dKK+MTGQvGGETGQvGGEFA$$TQvT$RI$$TQvT$RIIyt4??bjj(((??bjj(((r   )numpyr   r"   numpy.testingr   r   sklearn.neighbors._kd_treer   r   r   &sklearn.neighbors.tests.test_ball_treer   sklearn.utils.parallelr	   r
   	DIMENSIONdictrD   KD_TREE_CLASSESr   markparametrizer&   r6   rZ   rc   r   r   r   <module>rn      s      7 A A N 4	"4RS9
U ( +_= > +_=T >T 7+#, ,#,L 7+) ,)r   