a
    h                     @   sz   d dl Zd dlZd dlmZ d dlmZmZ d dlm	Z	 d dl
mZ dd Zdd	 Zd
d Zejdeegdd ZdS )    N)euclidean_distances)KNeighborsTransformerRadiusNeighborsTransformer)_is_sorted_by_data)assert_array_equalc                  C   s  d} d}d}d}t jd}|||}|||}t t|d}dD ]}|dk}	t| |d}
|
|}|j||fks|J |j	j|| |	  fksJ |j
d	ksJ t|sJ |
|}|j||fksJ |j	j|| |	  fksJ |j
d	ksJ t|sHJ qHdD ]}|dk}	t||d
}
|
|}|j||fks<J |j	j|| |	  fkrXJ |j
d	kshJ t|svJ |
|}|j||fksJ |j	j|| |	  fkrJ |j
d	ksJ t|sJ qd S )N         
   *   )distanceZconnectivityr   )n_neighborsmodeZcsr)radiusr   )nprandomRandomStaterandnZ
percentiler   r   fit_transformshapedataformatr   	transformr   )r   n_samples_fitZ	n_queries
n_featuresrngXX2r   r   Zadd_onenntXtX2t r!   ^/var/www/html/assistant/venv/lib/python3.9/site-packages/sklearn/neighbors/tests/test_graph.pytest_transformer_result
   sD    



r#   c                 C   s,   |   } | j| j| jk }t|| jd kS )z0Return True if the diagonal is explicitly storedr   )Ztocoorowcollenr   )r   explicitr!   r!   r"   _has_explicit_diagonal7   s    r(   c            
      C   s   d} d\}}}t jd}|||}|||}t| d}||}t|sRJ t |j	|| d d d df dks~J |
|}t|sJ t |j	|| d d d df dksJ |
|}	t|	rJ d S )Nr   )r   r	   r
   r   )r      r   )r   r   r   r   r   r   r(   allr   Zreshaper   )
r   r   Zn_samples_transformr   r   r   r   r   r   r    r!   r!   r"   test_explicit_diagonal>   s    


,
,
r+   Klassc                    sn   d}d}t jd}|||}|  |}| }| j  t j fddt	|j
D td}t|| dS )zFCheck `get_feature_names_out` for transformers defined in `_graph.py`.r   r
   r   c                    s   g | ]}  | qS r!   r!   ).0iZclass_name_lowerr!   r"   
<listcomp>b       z0test_graph_feature_names_out.<locals>.<listcomp>)ZdtypeN)r   r   r   r   fitZget_feature_names_out__name__lowerarrayrangeZn_samples_fit_objectr   )r,   r   r   r   r   ZestZ	names_outZexpected_names_outr!   r/   r"   test_graph_feature_names_outT   s    
r8   )numpyr   ZpytestZsklearn.metricsr   Zsklearn.neighborsr   r   Zsklearn.neighbors._baser   Zsklearn.utils._testingr   r#   r(   r+   markZparametrizer8   r!   r!   r!   r"   <module>   s   -