
    -ikk                        S r SSKrSSKrSSKrSSKJrJr  SSKJ	r	J
r
Jr  SSKJr  SSKJr  SSKJrJrJrJr  SSKJr  SS	KJrJr  SS
KJrJrJr  SSKJr  SSK J!r!  SSK"J#r#  SSK$J%r%  SSK&J'r'  SSK(J)r)J*r*J+r+J,r,  SSK-J.r.J/r/  SSK0J1r1J2r2J3r3  \Rh                  " 5       r5\5Rl                  SS2SS24   \5Rn                  sr8r9\%" 5       Ru                  \85      r;\Rx                  " SS9u  r=r>\R~                  R                  SS/ 0S4S\" 5       /0S4SS\" 5       4/0S4S\" 5       4/SS/S.S4/5      S 5       rAS  rBS! rCS" rDS# rES$ rFS% rGS& rHS' rIS( rJS) rKS* rLS+ rMS, rNS- rOS. rPS/ rQS0 rR\R~                  R                  S1\8\9\" S\" 5       4S2\" S3S494/5      4\=\>\" S\" 5       4S2\" S3S494/5      4/5      S5 5       rS\R~                  R                  S6\" S\" 5       4S7\/" SS894/S99\" S\" SS894S7\." SS894/S99/S:S;/S<9S= 5       rT\R~                  R                  S>\" S\" 5       4S2\" S?S894/SS@9\" S\" S?S894S2\" S?S894/SS@9/5      SA 5       rUSB rV\R~                  R                  SCSDSSE./ SFQ4SGSH0SISJ/4/5      SK 5       rWSL rX\R~                  R                  SM\\)4\\*4/5      SN 5       rY\R~                  R                  SM\\)4\\*4/5      \" SSO9SP 5       5       rZ\R~                  R                  SM\\)4\\*4/5      \R~                  R                  SQSRSS/5      \" SSO9ST 5       5       5       r[\R~                  R                  SM\\)4\\*4/5      \" SSO9SU 5       5       r\g)Vz4Testing for the VotingClassifier and VotingRegressor    N)config_contextdatasets)BaseEstimatorClassifierMixinclone)make_multilabel_classification)DummyRegressor)RandomForestClassifierRandomForestRegressorVotingClassifierVotingRegressor)NotFittedError)LinearRegressionLogisticRegression)GridSearchCVcross_val_scoretrain_test_split)OneVsRestClassifier)
GaussianNB)KNeighborsClassifier)StandardScaler)SVC)ConsumingClassifierConsumingRegressor	_Registrycheck_recorded_metadata)DecisionTreeClassifierDecisionTreeRegressor)assert_almost_equalassert_array_almost_equalassert_array_equal      T)
return_X_yzparams, err_msg
estimatorszGInvalid 'estimators' attribute, 'estimators' should be a non-empty list   lr   )r%   weightsz0Number of `estimators` and weights must be equalc                     [        S0 U D6n[        R                  " [        US9   UR	                  [
        [        5        S S S 5        g ! , (       d  f       g = f)Nmatch )r   pytestraises
ValueErrorfitXy)paramserr_msgensembles      U/var/www/html/venv/lib/python3.13/site-packages/sklearn/ensemble/tests/test_voting.py%test_voting_classifier_estimator_initr8   0   s9    ,  )&)H	z	1Q 
2	1	1s   A		
Ac                     [        S[        5       4S[        5       4/SS9n SnSn[        R                  " [        US9 nU R
                    S S S 5        [        WR                  R                  [        5      (       d   eU[        UR                  R                  5      ;   d   e[        U S5      (       a   eU R                  [        [        5        [        U S5      (       a   eg ! , (       d  f       N= f)	Nlr1lr2hardr%   voting1predict_proba is not available when voting='hard'3'VotingClassifier' has no attribute 'predict_proba'r+   predict_proba)r   r   r.   r/   AttributeErrorrA   
isinstancevalue	__cause__strhasattrr1   X_scaledr3   )eclf	inner_msg	outer_msg	exec_infos       r7   test_predictproba_hardvotingrM   K   s    .01E;M;O3PQD
 DIEI	~Y	79 
8ioo//@@@@IOO556666t_----HHXqt_----- 
8	7s   C$$
C2c                  b   [        S[        5       4S[        5       4/SS9n [        S[        5       4/5      nSn[        R
                  " [        US-  S9   U R                  [        5        S S S 5        [        R
                  " [        US-  S9   U R                  [        5        S S S 5        [        R
                  " [        US-  S9   U R                  [        5        S S S 5        [        R
                  " [        US	-  S9   UR                  [        5        S S S 5        [        R
                  " [        US	-  S9   UR                  [        5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N|= f! , (       d  f       g = f)
Nr:   r;   softr=   drzfThis %s instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.r   r+   r   )r   r   r   r	   r.   r/   r   predictr2   rA   	transformX_r)rI   eregmsgs      r7   test_notfittedrV   ]   s5   .01E;M;O3PQD T>#3456D	C  
~S3E-E	FQ 
G	~S3E-E	F1 
G	~S3E-E	Fq 
G	~S3D-D	ES 
F	~S3D-D	Es 
F	E 
G	F	F	F	F	F	E	E	E	Es<   EE-	E>F=F 
E*-
E;>
F
F 
F.c                     [        U S9n[        SU S9n[        5       n[        SU4SU4SU4/SS9n[	        U[
        [        S	S
9nUR                  5       S:  d   eg)z7Check classification by majority label on dataset iris.random_state
   n_estimatorsrY   r'   rfgnbr<   r=   accuracyscoring?N)r   r
   r   r   r   r2   r3   meanglobal_random_seedclf1clf2clf3rI   scoress         r7   test_majority_label_irisrj   s   si    +=>D!r@RSD<D4L4,>vD T1a<F;;=C    c                     [        SS9n [        SS9n[        SU 4SU4/SS9nU R                  [        [
        5      R                  [        5      S   S:X  d   eUR                  [        [
        5      R                  [        5      S   S	:X  d   eUR                  [        [
        5      R                  [        5      S   S	:X  d   eg
)zECheck voting classifier selects smaller class label in tie situation.{   rX   r'   r]   r<   r=   4   r(   r"   N)r   r
   r   r1   r2   r3   rQ   )rf   rg   rI   s      r7   test_tie_situationro      s    3/D!s3DttTl'CFSD88Aq>!!!$R(A---88Aq>!!!$R(A---88Aq>!!!$R(A---rk   c                     [        U S9n[        SU S9n[        5       n[        SU4SU4SU4/S/ SQS	9n[	        U[
        [        S
S9nUR                  5       S:  d   eg)z>Check classification by average probabilities on dataset iris.rX   rZ   r[   r'   r]   r^   rO   r"   r(   rZ   r%   r>   r)   r_   r`   rb   N)r   r
   r   r   r   rH   r3   rc   rd   s         r7   test_weights_irisrs      sm    +=>D!r@RSD<D4L4,>D
 T8Q
CF;;=Crk   c                     [        SS9n [        SS9n[        SSS9n[        SU 4SU4SU4// SQS9n[        [        [        S	S
9u  pEpgU R                  XF5      R                  U5      nUR                  XF5      R                  U5      n	UR                  XF5      R                  U5      n
UR                  XF5      R                  U5      n[        R                  " [        R                  " XU
/5      S/ SQS9n[        XSS9  [        SU 4SU4SU4/SS9n[        SU 4SU4SU4// SQS9nUR                  XF5        UR                  XF5        UR                  U5      nUR                  U5      n[        UUSS9  g)zACheck weighted average regression prediction on diabetes dataset.rc   )strategymedianquantile皙?)ru   rw   rq   )r)   g      ?)	test_sizer   )axisr)   r(   decimalNr"   r"   r"   )r	   r   r   rS   y_rr1   rQ   npaverageasarrayr   )reg1reg2reg3rT   	X_r_trainX_r_test	y_r_trainy_r_test	reg1_pred	reg2_pred	reg3_pred	ereg_predavgereg_weights_noneereg_weights_equalereg_none_predereg_equal_preds                    r7   test_weights_regressorr      s   6*D8,D:<D
$(D)J+=>
D 0@SD0,I .66x@I.66x@I.66x@I.66x@I
**


I)45AzC 	2'
$(D)J+=> )
$(D)J+=>	 )/90&..x8N(00:OCrk   c           	         [        U S9n[        SU S9n[        5       n[        R                  " SS/SS/SS	/S
S/SS/SS//5      n[        R                  " / SQ5      n[        UR                  XE5      R                  U5      / SQ5        [        UR                  XE5      R                  U5      / SQ5        [        UR                  XE5      R                  U5      / SQ5        [        SU4SU4SU4/S/ SQS9n[        UR                  XE5      R                  U5      / SQ5        [        SU4SU4SU4/S/ SQS9n[        UR                  XE5      R                  U5      / SQ5        g)z6Manually check predicted class labels for toy dataset.rX   rZ   r[   皙      333333ffffff333333皙皙?333333?g @gffffff?g@gffffff@)r"   r"   r"   r(   r(   r(   r'   r]   r^   r<   r}   rr   rO   N)	r   r
   r   r   arrayr!   r1   rQ   r   )re   rf   rg   rh   r2   r3   rI   s          r7   test_predict_on_toy_problemr      sO   +=>D!r@RSD<D

d|dD\C:SzCQT:V	A 	#$Atxx~--a02DEtxx~--a02DEtxx~--a02DE4L4,>D
 txx~--a02DE4L4,>D
 txx~--a02DErk   c                     [        SS9n [        SS9n[        5       n[        R                  " SS/SS/SS/S	S
//5      n[        R                  " / SQ5      n[        R                  " SS/SS/SS/SS//5      n[        R                  " SS/SS/SS/SS//5      n[        R                  " SS/SS/SS/SS//5      nSUS   S   -  US   S   -   US   S   -   S -  nSUS!   S!   -  US!   S!   -   US!   S!   -   S -  n	SUS   S!   -  US   S!   -   US   S!   -   S -  n
SUS"   S!   -  US"   S!   -   US"   S!   -   S -  n[        S#U 4S$U4S%U4/S&/ S'QS(9nUR                  X45      R                  U5      n[        XS   S   S!S)9  [        XS!   S!   S!S)9  [        XS   S!   S!S)9  [        XS"   S!   S!S)9  S*nS+n[        R                  " [        US,9 n[        S#U 4S$U4S%U4/S-S.9nUR                  X45      R                  U5        S/S/S/5        [        WR                  R                  [        5      (       d   eU[        UR                  R                  5      ;   d   eg/! , (       d  f       N_= f)0z1Calculate predicted probabilities on toy dataset.rm   rX   r   r   r   r   r   r   r   r   r"   r"   r(   r(   g7sa"?g=?gRhp?gℶZ/?gl^Ԭ;?g(1BW?gU(V6?g&d?g?rx   333333?ffffff?g5w?g9=qX?g_?g$/AY?              ?r(   r      r"   r#   r'   r]   r^   rO   )r(   r"   r"   rr   r{   r?   r@   r+   r<   r=   N)r   r
   r   r   r   r   r1   rA   r   r.   r/   rB   rC   rD   rE   rF   )rf   rg   rh   r2   r3   clf1_resclf2_resclf3_rest00t11t21t31rI   eclf_resrJ   rK   rL   s                    r7   !test_predict_proba_on_toy_problemr      s   3/D!s3D<D
4,ttTlS#JGHA
Axx$$$$		
H xx#sc3Z#sc3ZHIHxx
Y	*j!9C:SzRH x{1~A.!Q?1
DCx{1~A.!Q?1
DCx{1~A.!Q?1
DCx{1~A.!Q?1
DC4L4,>D
 xx~++A.Ha[^Q7a[^Q7a[^Q7a[^Q7CIEI	~Y	79ttTlUDMB6
 	$$Q'	 
8 ioo//@@@@IOO556666 
8	7s   4I
I+c                      [        SSSSS9u  p[        [        SS95      n[        SU4/S	S
9n UR	                  X5        g! [
         a     gf = f)z7Check if error is raised for multilabel classification.r(   r"   Frm   )	n_classesn_labelsallow_unlabeledrY   linear)kernelovrr<   r=   N)r   r   r   r   r1   NotImplementedError)r2   r3   clfrI   s       r7   test_multilabelr     s\    )aSDA c2
3C~fED s   A 
AAc                      [        SS9n [        SSS9n[        5       n[        SU 4SU4SU4/SS	9nS
S/SS// SQ/ SQ/S.n[	        X4SS9nUR                  [        [        5        g)zCheck GridSearch support.r"   rX   r#   )rY   r\   r'   r]   r^   rO   r=   r   g      Y@r<   )      ?r   r   )r   r   r   )lr__Cr>   r)   r(   )	estimator
param_gridcvN)r   r
   r   r   r   r1   rH   r3   )rf   rg   rh   rI   r4   grids         r7   test_gridsearchr     s}    1-D!qqAD<D4L4,>vD
 u6"#_5F $a@DHHXqrk   c                    [        U S9n[        SU S9n[        5       n[        R                  " SS/SS/SS	/S
S//5      n[        R                  " / SQ5      n[        SU4SU4SU4/SSS9R                  XE5      n[        SU4SU4SU4/SSS9R                  XE5      n[        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        g)z:Check parallel backend of VotingClassifier on toy dataset.rX   rZ   r[   r   r   r   r   r   r   r   r   r   r'   r]   r^   rO   r"   )r%   r>   n_jobsr(   N)r   r
   r   r   r   r   r1   r!   rQ   r    rA   )re   rf   rg   rh   r2   r3   eclf1eclf2s           r7   test_parallel_fitr   1  s    +=>D!r@RSD<D
4,ttTlS#JGHA
A4L4,>vVW	c!i 
 4L4,>vVW	c!i 
 u}}Q'q)9:e11!4e6I6I!6LMrk   c           	      V   [        U S9n[        SU S9n[        SU S9n[        SU4SU4SU4/S	S
9R	                  [
        [        [        R                  " [        [        5      45      S9n[        SU4SU4SU4/S	S
9R	                  [
        [        5      n[        UR                  [
        5      UR                  [
        5      5        [        UR                  [
        5      UR                  [
        5      5        [        R                  R                  U 5      R!                  [        [        5      4S9n[        SU4/S	S
9nUR	                  [
        [        US9  UR	                  [
        [        U5        [        UR                  [
        5      UR                  [
        5      5        [        UR                  [
        5      UR                  [
        5      5        [#        5       n[        SU4SU4SU4/S	S
9nSn	[$        R&                  " [(        U	S9   UR	                  [
        [        US9  SSS5         " S S[*        [,        5      n
U
" 5       n[$        R&                  " [(        SS9   UR	                  [
        [        US9  SSS5        g! , (       d  f       Ne= f! , (       d  f       g= f)z1Tests sample_weight parameter of VotingClassifierrX   rZ   r[   T)probabilityrY   r'   r]   svcrO   r=   sample_weight)sizeknnzJUnderlying estimator KNeighborsClassifier does not support sample weights.r+   Nc                       \ rS rSrS rSrg).test_sample_weight.<locals>.ClassifierErrorFitih  c                     [        S5      e)Nz!Error unrelated to sample_weight.)	TypeError)selfrH   r3   r   s       r7   r1   2test_sample_weight.<locals>.ClassifierErrorFit.fiti  s    ?@@rk   r-   N)__name__
__module____qualname____firstlineno__r1   __static_attributes__r-   rk   r7   ClassifierErrorFitr   h  s    	Ark   r   z Error unrelated to sample_weight)r   r
   r   r   r1   rH   r3   r   oneslenr!   rQ   r    rA   randomRandomStateuniformr   r.   r/   r   r   r   )re   rf   rg   rh   r   r   r   eclf3clf4rU   r   r   s               r7   test_sample_weightr   D  s.   +=>D!r@RSD4.@AD4L4,>v	c(ARWWc!fY%7c8 
 4L4,>v	c(A 
 u}}X.h0GHH%u':':8'D II))*<=EECPQF9EUM$vFE	IIhI7HHXq-(u}}X.X0FGH%t'9'9('C  !D4L5$-%?E WC	y	,		(A]	; 
-
A_m A 
C	y(J	K!=9 
L	K 
-	, 
L	Ks   J	&J	
J
J(c            	           " S S[         [        5      n U " 5       n[        SU4/SS9nUR                  [        [
        [        R                  " [        [
        5      45      S9  g)z:Check that VotingClassifier passes sample_weight as kwargsc                       \ rS rSrSrS rSrg)1test_sample_weight_kwargs.<locals>.MockClassifierit  zAMock Classifier to check that sample_weight is received as kwargsc                     SU;   d   eg )Nr   r-   )r   r2   r3   argsr   s        r7   r1   5test_sample_weight_kwargs.<locals>.MockClassifier.fitw  s    "m333rk   r-   N)r   r   r   r   __doc__r1   r   r-   rk   r7   MockClassifierr   t  s
    O	4rk   r   mockrO   r=   r   N)	r   r   r   r1   r2   r3   r   r   r   )r   r   rI   s      r7   test_sample_weight_kwargsr   q  sO    4- 4 
CvFD 	HHQ#a&!3H4rk   c                    [        U S9n[        SU S S9n[        5       n[        SU4SU4/SSS/S	9R	                  [
        [        5      n[        SU4S
U4/SSS/S	9nUR                  US9R	                  [
        [        5        [        UR                  [
        5      UR                  [
        5      5        [        UR                  [
        5      UR                  [
        5      5        UR                  S   S   R                  5       UR                  5       :X  d   eUR                  S   S   R                  5       UR                  5       :X  d   eg )NrX   rZ   )r\   rY   	max_depthr'   r]   rO   r"   r(   )r>   r)   nb)r   r   )r   r
   r   r   r1   rH   r3   
set_paramsr!   rQ   r    rA   r%   
get_params)re   rf   rg   rh   r   r   s         r7   !test_voting_classifier_set_paramsr     s:   +=>D!&8DD <D
d|$VaV	c(A 
 
d|$VaVE 
!!(A.u}}X.h0GHH%u':':8'D Aq!,,.$//2CCCCAq!,,.$//2CCCCrk   c            	         [        SS9n [        SSS9n[        5       n[        SU 4SU4SU4/S/ S	QS
9R	                  [
        [        5      n[        SU 4SU4SU4/S/ SQS
9nUR                  SS9R	                  [
        [        5        [        UR                  [
        5      UR                  [
        5      5        [        UR                  5      S   S:X  d   e[        UR                  5      S:X  d   e[        S UR                   5       5      (       d   eUR                  5       S   S:X  d   eUR                  SS9R	                  [
        [        5        UR                  SS9R	                  [
        [        5        [        UR                  [
        5      UR                  [
        5      5        [!        UR#                  [
        5      UR#                  [
        5      5        Sn[$        R&                  " [(        US9   UR                  SSSS9R	                  [
        [        5        S S S 5        [*        R,                  " S/S//5      n[*        R,                  " SS/5      n[        SU4SU4/SSS/SS9R	                  Xg5      n[        SU4SU4/SSS/SS9nUR                  SS9R	                  Xg5        [!        UR/                  U5      [*        R,                  " SS/SS//SS/SS///5      5        [!        UR/                  U5      [*        R,                  " SS/SS///5      5        UR                  SS9  UR                  SS9  [        UR/                  U5      [*        R,                  " SS/SS//5      5        [        UR/                  U5      [*        R,                  " S/S//5      5        g ! , (       d  f       GN= f)Nrm   rX   rZ   r[   r'   r]   r   r<   )r"   r   r   rr   )r"   r"   r   drop)r]   r(   c              3   N   #    U  H  n[        U[        [        45      v   M     g 7f)N)rC   r   r   ).0ests     r7   	<genexpr>*test_set_estimator_drop.<locals>.<genexpr>  s$      EVc
3+Z899EVs   #%rO   )r>   z4All estimators are dropped. At least one is requiredr+   )r'   r]   r   r"   r   r   F)r%   r>   r)   flatten_transformr   r   r   r   )r   r
   r   r   r1   r2   r3   r   r!   rQ   dictr%   r   estimators_allr   r    rA   r.   r/   r0   r   r   rR   )rf   rg   rh   r   r   rU   X1y1s           r7   test_set_estimator_dropr     sx    3/D!rDD<D4L4,t= 
c!Qi	 
 4L4,t=E
 
##Aq)u}}Q'q)9:  !$'6111u  !Q&&& EJEVEV     d#v---	F#''1-	F#''1-u}}Q'q)9:e11!4e6I6I!6LM
@C	z	-Fv&9==aC 
. 
A3*	B	1a&	B4L4,/C	
 
c"k 
 4L4,/C	E 
##B+
C:Sz*c3Z#s,DEF eoob1288sCj3PS*=U<V3WX	F#	F#ur*BHHq!fq!f5E,FGur*BHHqcA3Z,@A9 
.	-s   =*N00
N?c                 f   [        U S9n[        SU S9n[        SU4SU4/SS/SS	9n[        SU4SU4/[        R                  " S
5      SS	9nUR                  [        [        5        UR                  [        [        5        [        UR                  [        5      UR                  [        5      5        g )NrX   rZ   r[   r'   r]   r"   r(   rO   )r%   r)   r>   )r"   r(   )
r   r
   r   r   r   r1   rH   r3   r    rA   )re   rf   rg   r   r   s        r7   test_estimator_weights_formatr     s    +=>D!r@RSD4L4,/!QE 4L4,/&9IRXE 
IIh	IIhH%u':':8'Drk   c                 F   [        U S9n[        SU S9n[        5       n[        R                  " SS/SS/SS	/S
S//5      n[        R                  " / SQ5      n[        SU4SU4SU4/SS9R                  XE5      n[        SU4SU4SU4/SSS9R                  XE5      n[        SU4SU4SU4/SSS9R                  XE5      n[        UR                  U5      R                  S5        [        UR                  U5      R                  S5        [        UR                  U5      R                  S5        [        UR                  U5      UR                  U5      5        [        UR                  U5      R                  SS5      R                  S5      UR                  U5      5        g)z:Check transform method of VotingClassifier on toy dataset.rX   rZ   r[   r   r   r   r   r   r   r   r   r   r'   r]   r^   rO   r=   Tr%   r>   r   F)r      )r#   r   r(   r   r"   N)r   r
   r   r   r   r   r1   r!   rR   shaper    swapaxesreshape)	re   rf   rg   rh   r2   r3   r   r   r   s	            r7   test_transformr    s   +=>D!r@RSD<D
4,ttTlS#JGHA
A4L4,>v	c!i 
 4L4,> 
c!i	 

 4L4,> 
c!i	 
 uq)//8uq)//8uq)//;eooa0%//!2DE##Aq)11&95??1;Mrk   zX, y, voterr]      )r\   c                 |   [        U5      n[        5       R                  U 5      nUR                  X1[        R
                  " UR                  5      S9  UR                  SS9  UR                  X1[        R
                  " UR                  5      S9  UR                  U5      nUR                  UR                  :X  d   eg )Nr   r   )r'   )	r   r   fit_transformr1   r   r   r  r   rQ   )r2   r3   voterrH   y_preds        r7    test_none_estimator_with_weightsr  
  s    : %LE--a0H	IIh)9I:		IIh)9I:]]8$F<<177"""rk   r   treerX   r%   r   r   )idsc                     SS/SS/SS//n/ SQn[        U S5      (       a   eU R                  X5        U R                  S:X  d   eg )	Nr"   r(   r#   r   r  r  r   r"   r(   n_features_in_)rG   r1   r  )r   r2   r3   s      r7   test_n_features_inr  1  sT    & Q!Q!Q AAs,----GGAM"""rk   r   rm   )r%   verbosec                    [         R                  " SS/SS/SS/SS//5      n[         R                  " / S	Q5      nS
n[        U 5      R                  X#5        [        R
                  " XAR                  5       S   5      (       d   eg )Nr   r   r   r   r   r   r   r   r   za\[Voting\].*\(1 of 2\) Processing lr, total=.*\n\[Voting\].*\(2 of 2\) Processing rf, total=.*\n$r   )r   r   r   r1   rer,   
readouterr)r   capsysr2   r3   patterns        r7   test_voting_verboser  L  s{    ( 	4,ttTlS#JGHA
A	=  
)88G..034444rk   c                      SS/SS/SS//n / SQn[        S[        5       4S	[        S
S94S/S9nUR                  X5        UR	                  5       nSS/n[        X45        g)z1Check get_feature_names_out output for regressor.r"   r(   r#   r   r  r  r  r'   r  r   rX   )ignorer   r  votingregressor_lrvotingregressor_treeN)r   r   r   r1   get_feature_names_outr!   )r2   r3   r>   	names_outexpected_namess        r7   %test_get_features_names_out_regressorr"  k  s|     Q!Q!Q AA#%&*:;
F JJq,,.I*,BCNy1rk   zkwargs, expected_namesrO   )r>   r   )votingclassifier_lr0votingclassifier_lr1votingclassifier_lr2votingclassifier_tree0votingclassifier_tree1votingclassifier_tree2r>   r<   votingclassifier_lrvotingclassifier_treec           
          SS/SS/SS/SS//n/ SQn[        SS	S
[        SS94S[        SS94/0U D6nUR                  X#5        UR	                  U5      nUR                  5       nUR                  S   [        U5      :X  d   e[        Xa5        g)zBCheck get_feature_names_out for classifier for different settings.r"   r(   r#   r   r  r  r   )r   r"   r(   r   r%   r'   r   rX   r  Nr-   )	r   r   r   r1   rR   r  r  r   r!   )kwargsr!  r2   r3   r>   X_transr   s          r7   &test_get_features_names_out_classifierr.    s    & Q!Q!Q!S*AA %156+;<

 F JJqq!G,,.I==s>2222y1rk   c                     SS/SS/SS//n / SQn[        S[        S	S
94S[        S	S
94/SSS9nUR                  X5        Sn[        R
                  " [        US9   UR                  5         SSS5        g! , (       d  f       g= f)zJCheck that error is raised when voting="soft" and flatten_transform=False.r"   r(   r#   r   r  r  r  r'   r   rX   r  rO   Fr  zYget_feature_names_out is not supported when `voting='soft'` and `flatten_transform=False`r+   N)r   r   r   r1   r.   r/   r0   r  )r2   r3   r>   rU   s       r7   ,test_get_features_names_out_classifier_errorr0    s    
Q!Q!Q AA%156+;<
 F JJq	$  
z	-$$& 
.	-	-s   A55
BzEstimator, Childc                     [         R                  " SS/SS/SS//5      n/ SQn[        R                  " [        SS9   U " S	U" 5       /5      R                  X#/ S
QSS9  SSS5        g! , (       d  f       g= f)z}Test that the right error message is raised when metadata is passed while
not supported when `enable_metadata_routing=False`.r   r"   r(   r   r  r"   r(   r#   z1is only supported if enable_metadata_routing=Truer+   r   r}   ar   metadataN)r   r   r.   r/   r0   r1   )	EstimatorChildr2   r3   s       r7   *test_routing_passed_metadata_not_supportedr8    sp     	1a&1a&1a&)*AA	M
 	5%'"#''IPS'T
 
 
s   !A''
A5)enable_metadata_routingc                 D    U " SU" 5       4/5      nUR                  5         g )Nsub_est)get_metadata_routing)r6  r7  r   s      r7   %test_get_metadata_routing_without_fitr=    s$     i)*
+Crk   propr   r5  c           
         [         R                  " SS/SS/SS//5      n/ SQn/ SQSpeU " S	U" [        5       S
9R                  " S0 US0D64SU" [        5       S
9R                  " S0 US0D64/5      nUR                  " X440 X"S:X  a  UOU0D6  UR
                   HI  nUS:X  a  X%0n	OX&0n	US   R                  n
[        U
5      (       d   eU
 H  n[        SUSSS.U	D6  M     MK     g)z3Test that metadata is routed correctly for Voting*.r   r"   r(   r   r  r2  r}   r3  sub_est1)registryTsub_est2r   r1   )objmethodparentNr-   )	r   r   r   set_fit_requestr1   r%   rA  r   r   )r6  r7  r>  r2   r3   r   r5  r   r   r,  rA  r;  s               r7   +test_metadata_routing_for_voting_estimatorsrG    s    	1a&1a&1a&)*AA'8
 y{+;;KtTlK
 y{+;;KtTlK		
C GGASTO,C=RS^^	?"*F%FQ<((8}}}G#VeVvV   $rk   c                 B   [         R                  " SS/SS/SS//5      n/ SQn/ SQSpTU " S	U" 5       4/5      nS
UR                   S3n[        R                  " [
        [        R                  " U5      S9   UR                  X#XES9  SSS5        g! , (       d  f       g= f)zCTest that the right error is raised when metadata is not requested.r   r"   r(   r   r  r2  r}   r3  r;  zb[sample_weight, metadata] are passed but are not explicitly set as requested or not requested for z.fitr+   r4  N)	r   r   r   r.   r/   r0   r  escaper1   )r6  r7  r2   r3   r   r5  r   error_messages           r7   1test_metadata_routing_error_for_voting_estimatorsrK    s     	1a&1a&1a&)*AA'8
i)*
+C	!!& 0	6 
 
z=)A	BME 
C	B	Bs   6B
B)]r   r  numpyr   r.   sklearnr   r   sklearn.baser   r   r   sklearn.datasetsr   sklearn.dummyr	   sklearn.ensembler
   r   r   r   sklearn.exceptionsr   sklearn.linear_modelr   r   sklearn.model_selectionr   r   r   sklearn.multiclassr   sklearn.naive_bayesr   sklearn.neighborsr   sklearn.preprocessingr   sklearn.svmr   %sklearn.tests.metadata_routing_commonr   r   r   r   sklearn.treer   r   sklearn.utils._testingr   r    r!   	load_irisirisdatatargetr2   r3   r	  rH   load_diabetesrS   r~   markparametrizer8   rM   rV   rj   ro   rs   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r"  r.  r0  r8  r=  rG  rK  r-   rk   r7   <module>rd     s   : 	   , > > ; (  . E S S 2 * 2 0   G  yyAaC$++1))!,!!T2S  2U	

 .012U	

 S"4"6789U	

 "#5#789q!fM>	
*+*.$,
 . !DHF>17h&N&*:Z5 D0>BB">  -/01qAB		
 +-.0a@A		
2#32# 	')*.A>?	
 	)q9:/Q?@	
 
./!  $#%$# ')*,#>? 	
 	)s;<-3?@ 	
&	5'&	52(  D9
	
 F	35LMN"2#"2('6 +,@R.ST
U	
U +,@R.ST - .	
 +,@R.ST /:!>?-W . @	WB +,@R.ST -F .	
Frk   