o
    ?Hh
                  
   @   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)
return_X_yr    r   r   `/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/sklearn/utils/tests/test_mocking.pyiris   s   
r   c                 C      dS )NTr   xr   r   r   _success      r   c                 C   r   )NFr   r   r   r   r   _fail   r   r   kwargscheck_Xcheck_y)r   r   c                 C   s"   | \}}t di ||| d S Nr   )r   fit)r   r   Xyr   r   r   test_check_on_fit_success   s   
r   c                 C   sR   | \}}t di |}tt ||| W d    d S 1 s"w   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   sd   | \}}t td||}|jtd tt t||| W d    d S 1 s+w   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   	dataframec                    s  | \}}t ||}t   || t jt| t jdks$J  jdks+J  	|}t
 fdd|D s=J  |tdksIJ  jdd  |||tdks_J  |}|jd	kskJ t|dk|dk
 syJ  |}|jd	ksJ t|dk|dk}t||}t||} ||  |}|jd
ksJ t|dk|dk
 sJ  |}|jdksJ d S )N      c                 3   s    | ]}| j v V  qd S )N)classes_).0predr"   r   r   	<genexpr>]   s    z+test_checking_classifier.<locals>.<genexpr>r   
   )	foo_param   )   r4   )d      )r?   )r
   r   r   r   r6   npuniquelenn_features_in_r%   allr(   r   approxr.   r&   shapelogical_andr'   
logical_orr   )r   r0   r   r   y_predy_proba
y_decisionfirst_2_classesr   r9   r   test_checking_classifierP   s4   

 





rN   csr_containerc                 C   s   | \}}||}t tjd}tt ||| W d    n1 s$w   Y  ||| t tddid}||| tjtdd ||| W d    d S 1 sVw   Y  d S )Nr*   accept_sparseF)r   check_X_paramszSparse data was passedmatch)	r   r   issparser   r    r!   r   r   	TypeError)r   rO   r   r   X_sparser"   r   r   r   $test_checking_classifier_with_paramsx   s   "rW   c                 C   s   | \}}t dd}tt|d }dt|d  dt| d}tt}|j|||d W d    n1 s9w   Y  |jj	d |ksHJ d S )	NTexpected_sample_weightr@   zsample_weight.shape == (z,), expected (z,)!)sample_weightr   )
r   rA   onesrC   r   r    
ValueErrorr   valueargs)r   r   r   r"   rZ   msgexcr   r   r   #test_checking_classifier_fit_params   s   
ra   c                 C   sV   | \}}t dd}d}tjt|d ||| W d    d S 1 s$w   Y  d S )NTrX   z#Expected sample_weight to be passedrR   r   )r   r   r   r"   err_msgr   r   r   +test_checking_classifier_missing_fit_params   s   
"rc   methods_to_checkr%   r&   predict_methodc                 C   sz   | \}}t tj|d}||| ||v r4tt t||| W d    d S 1 s-w   Y  d S t||| d S )N)r   rd   )r   r   rT   r   r   r    r!   r+   )r   rd   re   r   r   r"   r   r   r   )test_checking_classifier_methods_to_check   s   	"rf   response_methodsr'   r%   r&   r'   c                 C   s   | \}}t |d}||| t|dsJ t|jt| g d}|D ] }||v r>t||s2J t||||ks=J q%t||rEJ q%d S )N)rg   r6   rh   )r	   r   hasattrr   r6   rA   rB   r+   )r   rg   r   r   	estimatorpossible_responsesresponser   r   r   %test_mock_estimator_on_off_prediction   s   

rm   )#numpyrA   r   numpy.testingr   scipyr   sklearn.datasetsr   sklearn.utilsr   r   sklearn.utils._mockingr   r	   sklearn.utils._testingr
   sklearn.utils.fixesr   fixturer   r   r   markparametrizer   r#   r-   r/   rN   rW   ra   rc   rf   rm   r   r   r   r   <module>   s~    

	

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