U
    3d                  
   @   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	 d dl
mZ d dl
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ddddgdd Zejdddddgdd  Zejd!d"d#d$d%gd&d' Zd(d) Zd*d+ Zd,d- Zejd.dgddggejd/ddddgd0d1 ZdS )2    N)sparse)assert_array_equal)assert_allclose	load_iris)check_array)_safe_indexing)_convert_container)CheckingClassifierc                   C   s
   t ddS )NT)Z
return_X_yr    r   r   D/tmp/pip-unpacked-wheel-zrfo1fqw/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 ||| d S N)r
   fit)r   r   Xyr   r   r   test_check_on_fit_success   s    
r   c              	   C   s8   | \}}t f |}tt ||| W 5 Q R X 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   sN   | \}}t td||}|jtd tt t||| W 5 Q R X 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           	      C   s  | \}}t ||}t }||| t|jt| t|jdksHt|j	dksVt|
|}t|tj|jtd ||tdkst|jdd ||||tdkst||}|jdkstt|d d df d t|d d dd f d ||}|jdkstt|d d df d t|d d dd f d t|dk|dk}t||}t||}||| ||}|jd	kstt|d d df d t|d d df d ||}|jd
kstt|d d S )N      )Zdtyper   
   )Z	foo_param   )   r/   )d      )r4   )r	   r
   r   r   Zclasses_npuniquelenr   Zn_features_in_r!   zerossizeintr$   r   Zapproxr*   r"   shaper   r#   
logical_orr   )	r   r,   r   r   r   Zy_predZy_probaZ
y_decisionZfirst_2_classesr   r   r   test_checking_classifierP   s>    

 





r>   c              	   C   s   | \}}t |}tt jd}tt ||| W 5 Q R X ||| ttddid}||| tjt	dd ||| W 5 Q R X d S )Nr&   Zaccept_sparseF)r   Zcheck_X_paramszA sparse matrix was passedmatch)
r   Z
csr_matrixr
   issparser   r   r   r   r   	TypeError)r   r   r   ZX_sparser   r   r   r   $test_checking_classifier_with_params}   s    
 rC   c              	   C   s   | \}}t dd}tt|d }dt|d  dt| d}tt}|j|||d W 5 Q R X |jj	d |ks|t
d S )	NTZexpected_sample_weightr5   zsample_weight.shape == (z,), expected (z,)!)sample_weightr   )r
   r6   Zonesr8   r   r   
ValueErrorr   valueargsr   )r   r   r   r   rE   msgexcr   r   r   #test_checking_classifier_fit_params   s    
rK   c              	   C   s@   | \}}t dd}d}tjt|d ||| W 5 Q R X d S )NTrD   z#Expected sample_weight to be passedr?   r   )r   r   r   r   err_msgr   r   r   +test_checking_classifier_missing_fit_params   s
    
rM   methods_to_checkpredict_methodc              	   C   sb   | \}}t tj|d}||| ||krPtt t||| W 5 Q R X nt||| d S )N)r   rN   )r
   r   rA   r   r   r   r   r'   )r   rN   rO   r   r   r   r   r   r   )test_checking_classifier_methods_to_check   s    	rP   ) Znumpyr6   r   Zscipyr   Znumpy.testingr   r   Zsklearn.datasetsr   Zsklearn.utilsr   r   Zsklearn.utils._testingr	   Zsklearn.utils._mockingr
   Zfixturer   r   r   markZparametrizer   r   r)   r+   r>   rC   rK   rM   rP   r   r   r   r   <module>   sp   
	


 

 


, 
