a
    h
                  
   @   s  d dl Zd dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
mZ d dlmZmZ d dlmZ d dlmZ ejd	d
 Zdd Zdd Zejdi deideieedgdd Zejddeideieedeedeedgdd Zejdg ddd Zejdg ddd Zejdg ddd  Zejd!ed"d# Zd$d% Zd&d' Z ejd(d)gd)d*ggejd+g dd,d- Z!ejd.d)gd)d*gd)d/gg d0gd1d2 Z"dS )3    N)assert_array_equal)sparse	load_iris)_safe_indexingcheck_array)CheckingClassifier_MockEstimatorOnOffPrediction)_convert_container)CSR_CONTAINERSc                   C   s
   t ddS )NT)Z
return_X_yr    r   r   \/var/www/html/assistant/venv/lib/python3.9/site-packages/sklearn/utils/tests/test_mocking.pyiris   s    r   c                 C   s   dS )NTr   xr   r   r   _success   s    r   c                 C   s   dS )NFr   r   r   r   r   _fail   s    r   kwargscheck_Xcheck_y)r   r   c                 C   s"   | \}}t f i ||| d S N)r   fit)r   r   Xyr   r   r   test_check_on_fit_success   s    
r   c                 C   sP   | \}}t f i |}tt ||| W d    n1 sB0    Y  d S r   r   pytestraisesAssertionErrorr   )r   r   r   r   clfr   r   r   test_check_on_fit_fail+   s    r    	pred_func)predictpredict_probadecision_functionscorec                 C   s,   | \}}t td||}t||| d S Nr   )r   r   r   getattrr   r!   r   r   r   r   r   r   test_check_X_on_predict_success<   s    r*   c                 C   sb   | \}}t td||}|jtd tt t||| W d    n1 sT0    Y  d S r&   )	r   r   r   
set_paramsr   r   r   r   r(   r)   r   r   r   test_check_X_on_predict_failE   s
    r,   
input_type)listarrayr   Z	dataframec                    s  | \}}t ||}t   || t jt| t jdksHJ  jdksVJ  	|}t
 fdd|D szJ  |tdksJ  jdd  |||tdksJ  |}|jd	ksJ t|dk|dk
 sJ  |}|jd	ksJ t|dk|dk}t||}t||} ||  |}|jd
ksZJ t|dk|dk
 sxJ  |}|jdksJ d S )N      c                 3   s   | ]}| j v V  qd S r   )classes_).0predr   r   r   	<genexpr>]       z+test_checking_classifier.<locals>.<genexpr>r   
   )Z	foo_param   )   r0   )d      )r;   )r
   r   r   r   r2   npuniquelenZn_features_in_r"   allr%   r   Zapproxr+   r#   shapelogical_andr$   
logical_orr   )r   r-   r   r   Zy_predZy_probaZ
y_decisionZfirst_2_classesr   r5   r   test_checking_classifierP   s4    

 





rD   csr_containerc                 C   s   | \}}||}t tjd}tt ||| W d    n1 sH0    Y  ||| t tddid}||| tjtdd ||| W d    n1 s0    Y  d S )Nr'   Zaccept_sparseF)r   Zcheck_X_paramszSparse data was passedmatch)	r   r   issparser   r   r   r   r   	TypeError)r   rE   r   r   ZX_sparser   r   r   r   $test_checking_classifier_with_paramsx   s    *rJ   c                 C   s   | \}}t dd}tt|d }dt|d  dt| d}tt }|j|||d W d    n1 sr0    Y  |jj	d |ksJ d S )	NTZexpected_sample_weightr<   zsample_weight.shape == (z,), expected (z,)!)sample_weightr   )
r   r=   Zonesr?   r   r   
ValueErrorr   valueargs)r   r   r   r   rL   msgexcr   r   r   #test_checking_classifier_fit_params   s    
.rR   c                 C   sT   | \}}t dd}d}tjt|d ||| W d    n1 sF0    Y  d S )NTrK   z#Expected sample_weight to be passedrF   r   )r   r   r   r   err_msgr   r   r   +test_checking_classifier_missing_fit_params   s
    
rT   methods_to_checkr"   r#   predict_methodc                 C   sv   | \}}t tj|d}||| ||v rdtt t||| W d    qr1 sX0    Y  nt||| d S )N)r   rU   )r   r   rH   r   r   r   r   r(   )r   rU   rV   r   r   r   r   r   r   )test_checking_classifier_methods_to_check   s    	.rW   response_methodsr$   r"   r#   r$   c                 C   s   | \}}t |d}||| t|ds,J t|jt| g d}|D ]@}||v r|t||sdJ t||||ksJ qJt||rJJ qJd S )N)rX   r2   rY   )r	   r   hasattrr   r2   r=   r>   r(   )r   rX   r   r   Z	estimatorZpossible_responsesresponser   r   r   %test_mock_estimator_on_off_prediction   s    

r\   )#numpyr=   r   Znumpy.testingr   Zscipyr   Zsklearn.datasetsr   Zsklearn.utilsr   r   Zsklearn.utils._mockingr   r	   Zsklearn.utils._testingr
   Zsklearn.utils.fixesr   Zfixturer   r   r   markZparametrizer   r    r*   r,   rD   rJ   rR   rT   rW   r\   r   r   r   r   <module>   s|   
	





'
	