o
    i:                     @   s   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dZe	egZd	d
 Zejdedd Zejdedd Zejdedd Zejdedd ZdS )    N)assert_allcloseassert_equal)KDTreeKDTree32KDTree64)get_dataset_for_binary_tree)Paralleldelayed   )p)Z	euclideanZ	manhattanZ	chebyshevZ	minkowskic                   C   s   t ttsJ d S N)
issubclassr   r    r   r   ^/home/kim/smarthome/.venv/lib/python3.10/site-packages/sklearn/neighbors/tests/test_kd_tree.py test_KDTree_is_KDTree64_subclass   s   r   BinarySearchTreec                 C   sN   t jg dtd}tjtdd | | W d   dS 1 s w   Y  dS )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pytestZraises
ValueError)r   Xr   r   r   test_array_object_type   s   
"r   c                    sJ   t jd}|d}| |dd tddd fddd|g D  d	S )
zgMake sure that KDTree queries work when joblib memmaps.

    Non-regression test for #21685 and #21228.r   )
   r
   r   )	leaf_sizer   )Zn_jobsZ
max_nbytesc                 3   s    | ]
}t  j|V  qd S r   )r	   query).0datatreer   r   	<genexpr>+   s    z4test_kdtree_picklable_with_joblib.<locals>.<genexpr>N)r   randomZRandomStateZrandom_sampler   )r   rngr   r   r#   r   !test_kdtree_picklable_with_joblib   s   
(r(   metricc                 C   sj  t | dd\}}}}t|i }t|fd|d|}t|fd|d|}d}	|j||	d\}
}|j||	d\}}t|
|dd t|| |
jt	j
ksNJ |jt	jksVJ d	}|j||d
}|j||d
}t||D ]	\}}t|| qk|j||dd\}}
|j||dd\}}t|||
|D ]"\}}}}t|| t||dd |jt	j
ksJ |jt	jksJ qd S )N2   )random_seedfeaturesr   r   r)      )kh㈵>Zrtolg
ףp=
@)rT)r2   Zreturn_distance)r   METRICSgetr   r   r    r   r   r   r   float64float32Zquery_radiuszip)global_random_seedr)   X_64X_32Y_64Y_32metric_paramskd_64kd_32r/   Zdist_64Zind_64Zdist_32Zind_32r2   Z_ind64Z_ind32Z_dist_64Z_dist_32r   r   r   "test_kd_tree_numerical_consistency.   s4   

r@   c                 C   s   t | d\}}}}t|i }t|fd|d|}t|fd|d|}d}	d}
|j||
|	dd}|j||
|	dd}t||dd	 |jtj	ksJJ |jtj
ksRJ d S )
N)r+   r   r-   Zgaussiang?T)hkernelZbreadth_firstr0   r1   )r   r3   r4   r   r   Zkernel_densityr   r   r   r5   r6   )r8   r)   r9   r:   r;   r<   r=   r>   r?   rB   rA   Z	density64Z	density32r   r   r   )test_kernel_density_numerical_consistencyU   s   rC   )numpyr   r   Znumpy.testingr   r   Zsklearn.neighbors._kd_treer   r   r   Z&sklearn.neighbors.tests.test_ball_treer   Zsklearn.utils.parallelr   r	   Z	DIMENSIONdictr3   ZKD_TREE_CLASSESr   markZparametrizer   r(   r@   rC   r   r   r   r   <module>   s(    


&