
    -i                     6   S SK rS SKrS SKJr  S SKJrJr  S r\R                  R                  SSS/5      S 5       rS	 r\R                  R                  SSS/5      \R                  R                  S
\R                  \R                  /5      S 5       5       rg)    N)mutual_reachability_graph)_convert_containerassert_allclosec                  J   [         R                  R                  S5      n U R                  SS5      nUR                  U-  n[         R
                  " US5        [        US5      nSn[        R                  " [        US9   [        U5        SSS5        g! , (       d  f       g= f)z=Check that we raise an error if the sparse format is not CSR.r   
           
sparse_cscz&Only sparse CSR matrices are supported)matchN)nprandomRandomStaterandnTfill_diagonalr   pytestraises
ValueErrorr   )rngXerr_msgs      c/var/www/html/venv/lib/python3.13/site-packages/sklearn/cluster/_hdbscan/tests/test_reachibility.py2test_mutual_reachability_graph_error_sparse_formatr      sv    
))


"C		"bA	aAQ1l+A6G	z	1!!$ 
2	1	1s   ?B
B"
array_typearray
sparse_csrc                    [         R                  R                  S5      nUR                  SS5      nUR                  U-  n[         R
                  " US5        [        X 5      n[        U5      n[        U5      [        U5      :X  d   eg)z.Check that the operation is happening inplace.r   r   r   N)	r   r   r   r   r   r   r   r   id)r   r   r   mr_graphs       r   &test_mutual_reachability_graph_inplacer      so     ))


"C		"bA	aAQ1)A(+Hh<2a5       c                      [         R                  R                  S5      n U R                  SS5      nUR                  U-  n[        US5      n[        USS9n[        USS9n[        XER                  5       5        g)zGCheck that we get the same results for dense and sparse implementation.r      r      )min_samplesN)	r   r   r   r   r   r   r   r   toarray)r   r   X_denseX_sparsemr_graph_densemr_graph_sparses         r   7test_mutual_reachability_graph_equivalence_dense_sparser*   &   sg    
))


"C		!QAccAgG!'<8H.wAFN/aHON$;$;$=>r    dtypec                 D   [         R                  R                  S5      nUR                  SS5      nUR                  U-  R                  U5      n[         R                  " US5        [        X05      nUR                  U:X  d   e[        U5      nUR                  U:X  d   eg)z@Check that the computation preserve dtype thanks to fused types.r   r   r   N)
r   r   r   r   r   astyper   r   r+   r   )r   r+   r   r   r   s        r   .test_mutual_reachability_graph_preserves_dtyper.   3   s     ))


"C		"bA	
qAQ1)A77e(+H>>U"""r    )numpyr   r   &sklearn.cluster._hdbscan._reachabilityr   sklearn.utils._testingr   r   r   markparametrizer   r*   float32float64r.    r    r   <module>r7      s      L
% '>?
! @
!
? '>?2::rzz":;
# < @
#r    