Ë
    ÷Q(h:  ã                   ó’  — 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   © ó    úb/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/neighbors/tests/test_kd_tree.pyÚ test_KDTree_is_KDTree64_subclassr      s   € Ü”fœhÔ'Ð'Ñ'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¼&ÔA€AÜ	�‰”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"   øè ø€ Ò$SÀ4Ð%8¤W¨T¯Z©ZÓ%8¸×%>Ñ$Sùs   ƒ%(N)r   ÚrandomÚRandomStateÚrandom_sampler	   )r   Úrngr%   r0   s      @r   Ú!test_kdtree_picklable_with_joblibr6      sU   ø€ ô
 �)‰)×
Ñ
 Ó
"€CØ×Ñ˜'Ó"€AÙ˜A¨Ô+€Dð
 %„H�A !Ô$Ó$SÈ1ÐPQÈsÉ7Ô$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 )Né2   )Úrandom_seedÚfeaturesr   ©r)   r7   é   )Úkçñhãˆµøä>©Ú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ô —K‘K ¨Ó+€MÜ�TÐG Q¨vÑG¸ÑG€EÜ�TÐG Q¨vÑG¸ÑG€Eð 	
€AØ—k‘k $¨!�kÓ,�O€GˆVØ—k‘k $¨!�kÓ,�O€GˆVÜ�G˜W¨4Õ0Ü�˜Ô Ø�=‰=œBŸJ™JÒ&Ð&Ð&Ø�=‰=œBŸJ™JÒ&Ð&Ð&ð 	€AØ×Ñ ¨ÐÓ*€FØ×Ñ ¨ÐÓ*€FÜ˜f fÓ-ò %‰ˆ�Ü�V˜VÕ$ð%ð
 ×(Ñ(¨°ÀDÐ(ÓI�O€FˆGØ×(Ñ(¨°ÀDÐ(ÓI�O€FˆGÜ.1°&¸&À'È7Ó.Sò ,Ñ*ˆ�˜ (Ü�V˜VÔ$Ü˜ (°Õ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È   € ô 9ÐEWÔXÑ€Dˆ$��dä—K‘K ¨Ó+€MÜ�TÐG Q¨vÑG¸ÑG€EÜ�TÐG Q¨vÑG¸ÑG€Eà€FØ€AØ×$Ñ$ T¨Q°vÈTÐ$ÓR€IØ×$Ñ$ T¨Q°vÈTÐ$ÓR€IÜ�I˜y¨tÕ4Ø�?‰?œbŸj™jÒ(Ð(Ð(Ø�?‰?œbŸj™jÒ(Ð(Ñ(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à€	à¨¸"É4ÐRSÌ9Ñ
U€ð Øð€ò(ð ‡�×ÑÐ+¨_Ó=ñó >ðð ‡�×ÑÐ+¨_Ó=ñTó >ðTð ‡�×Ñ˜ 7Ó+ñ#,ó ,ð#,ðL ‡�×Ñ˜ 7Ó+ñ)ó ,ñ)r   