
    h$,f              
       x   d dl Zd dlZd dlmZ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	        Zd
 Zd Zej0                  j3                  di deideieedg      d        Zej0                  j3                  ddeideieedeedeedg      d        Zej0                  j3                  dg d      d        Zej0                  j3                  dg d      d        Zej0                  j3                  dg d      d        Zej0                  j3                  de      d        Zd Z d Z!ej0                  j3                  ddgddgg      ej0                  j3                  d g d      d!               Z"ej0                  j3                  d"dgddgdd#gg d$g      d%        Z#y)&    N)assert_allcloseassert_array_equal)sparse	load_iris)_safe_indexingcheck_array)CheckingClassifier_MockEstimatorOnOffPrediction)_convert_container)CSR_CONTAINERSc                      t        d      S )NT)
return_X_yr        @lib/python3.12/site-packages/sklearn/utils/tests/test_mocking.pyirisr      s    %%r   c                      y)NTr   xs    r   _successr      s    r   c                      y)NFr   r   s    r   _failr      s    r   kwargscheck_Xcheck_y)r   r   c                 D    | \  }}t        di |j                  ||       y Nr   )r
   fit)r   r   Xys       r   test_check_on_fit_successr"      s%     DAq  $$Q*r   c                     | \  }}t        di |}t        j                  t              5  |j	                  ||       d d d        y # 1 sw Y   y xY wr   r
   pytestraisesAssertionErrorr   )r   r   r    r!   clfs        r   test_check_on_fit_failr)   +   sH     DAq

&v
&C	~	& 1  s   AA	pred_func)predictpredict_probadecision_functionscorec                 r    | \  }}t        t              j                  ||      } t        ||      |       y Nr   )r
   r   r   getattrr   r*   r    r!   r(   s        r   test_check_X_on_predict_successr4   <   s5     DAq
X
.
2
21a
8CGCAr   c                     | \  }}t        t              j                  ||      }|j                  t               t        j                  t              5   t        ||      |       d d d        y # 1 sw Y   y xY wr0   )	r
   r   r   
set_paramsr   r%   r&   r'   r2   r3   s        r   test_check_X_on_predict_failr7   E   sd     DAq
X
.
2
21a
8CNN5N!	~	& #Y"# # #s   A11A:
input_type)listarrayr   	dataframec                    | \  }}t        ||      }t               }|j                  ||       t        |j                  t        j                  |             t        |j                        dk(  sJ |j                  dk(  sJ |j                  |      }t        |t        j                  |j                  t                     |j                  |      t        j                  d      k(  sJ |j!                  d       |j                  ||      j                  |      t        j                  d      k(  sJ |j#                  |      }|j$                  dk(  sJ t'        |d d df   d       t'        |d d dd f   d       |j)                  |      }|j$                  dk(  sJ t'        |d d df   d       t'        |d d dd f   d       t        j*                  |dk(  |dk(        }t-        ||      }t-        ||      }|j                  ||       |j#                  |      }|j$                  d	k(  sJ t'        |d d df   d       t'        |d d df   d       |j)                  |      }|j$                  d
k(  sJ t'        |d       y )N      )dtyper   
   )	foo_param   )   r=   )d      )rD   )r   r
   r   r   classes_npuniquelenn_features_in_r+   zerossizeintr.   r%   approxr6   r,   shaper   r-   
logical_orr   )	r   r8   r    r!   r(   y_predy_proba
y_decisionfirst_2_classess	            r   test_checking_classifierrU   P   s5    DAq1j)A

CGGAqMs||RYYq\2s||!!!"""[[^Fvrxx3?@99Q<6==++++NNRN 771a=q!V]]1%5555"G==H$$$GAqDM1%GAqrENA&&&q)Jx'''Jq!t$a(Jq!"u%q) mmAFAF3Oq/*Aq/*AGGAqM"G==H$$$GAqDM1%GAqDM1%&&q)Jv%%%J"r   csr_containerc                    | \  }} ||      }t        t        j                        }t        j                  t
              5  |j                  ||       d d d        |j                  ||       t        t        ddi      }|j                  ||       t        j                  t        d      5  |j                  ||       d d d        y # 1 sw Y   wxY w# 1 sw Y   y xY w)Nr1   accept_sparseF)r   check_X_paramszSparse data was passedmatch)	r
   r   issparser%   r&   r'   r   r	   	TypeError)r   rV   r    r!   X_sparser(   s         r   $test_checking_classifier_with_paramsr_   }   s    DAqQH
V__
5C	~	& 1GGHa
_e,DC GGAqM	y(@	A !   s   C
.C
CCc                 d   | \  }}t        d      }t        j                  t        |      dz        }dt        |      dz   dt        |       d}t	        j
                  t              5 }|j                  |||       d d d        j                  j                  d   |k(  sJ y # 1 sw Y   (xY w)	NTexpected_sample_weightrE   zsample_weight.shape == (z,), expected (z,)!)sample_weightr   )
r
   rG   onesrI   r%   r&   
ValueErrorr   valueargs)r   r    r!   r(   rc   msgexcs          r   #test_checking_classifier_fit_paramsrj      s    DAq
D
9CGGCFaK(M$SVq[MAxs
KC	z	" 3c1M2399>>!###3 3s   *B&&B/c                     | \  }}t        d      }d}t        j                  t        |      5  |j	                  ||       d d d        y # 1 sw Y   y xY w)NTra   z#Expected sample_weight to be passedrZ   r$   )r   r    r!   r(   err_msgs        r   +test_checking_classifier_missing_fit_paramsrm      sJ    DAq
D
9C3G	~W	5 1  s   AAmethods_to_checkr+   r,   predict_methodc                    | \  }}t        t        j                  |      }|j                  ||       ||v r5t	        j
                  t              5   t        ||      |       d d d        y  t        ||      |       y # 1 sw Y   y xY w)N)r   rn   )r
   r   r\   r   r%   r&   r'   r2   )r   rn   ro   r    r!   r(   s         r   )test_checking_classifier_methods_to_checkrq      s     DAq
)C
 GGAqM))]]>* 	,(GC(+	, 	, 	%^$Q'	, 	,s   A??Bresponse_methodsr-   r+   r,   r-   c                 >   | \  }}t        |      }|j                  ||       t        |d      sJ t        |j                  t        j                  |             g d}|D ]:  }||v r&t        ||      sJ  t        ||      |      |k(  r+J t        ||      s:J  y )N)rr   rF   rs   )r   r   hasattrr   rF   rG   rH   r2   )r   rr   r    r!   	estimatorpossible_responsesresponses          r   %test_mock_estimator_on_off_predictionry      s     DAq-?OPIMM!Q9j)))y))299Q<8J& 4''9h////79h/2h>>>y(3334r   )$numpyrG   r%   numpy.testingr   r   scipyr   sklearn.datasetsr   sklearn.utilsr   r	   sklearn.utils._mockingr
   r   sklearn.utils._testingr   sklearn.utils.fixesr   fixturer   r   r   markparametrizer"   r)   r4   r7   rU   r_   rj   rm   rq   ry   r   r   r   <module>r      s      =  & 5 6 . & & 
	H	H2	++
 	E	E/h/e,		 K K## 'OP)# Q)#X .9 :"	$ [9o./ P(	(" 		O$	'(9	44r   