
    {KgAj                        d Z ddlZddlZddlZddlmZ ddlmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZmZmZmZ ddlmZ dd	lmZmZ dd
lmZmZ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(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3  ejh                         Z5e5jl                  ddddf   e5jn                  cZ8Z9 e$       ju                  e8      Z; ejx                  d      \  Z=Z>ej~                  j                  ddg idfd e       fgddgddfg      d        ZAd ZBd  ZCd! ZDd" ZEd# ZFd$ ZGd% ZHd& ZId' ZJd( ZKd) ZL e3eM*      d+        ZNd, ZOd- ZPd. ZQd/ ZRd0 ZSej~                  j                  d1e8e9 ed e       fd2 ed34      fg      fe=e> ed e       fd2 ed34      fg      fg      d5        ZTej~                  j                  d6 ed e       fd7 e.d8      fg9       ed ed8      fd7 e-d8      fg9      gd:d;g<      d=        ZUej~                  j                  d> ed e       fd2 ed?8      fgd@       ed ed?8      fd2 ed?8      fgd@      g      dA        ZVdB ZWej~                  j                  dCdDddEg dFfdGdHidIdJgfg      dK        ZXdL ZYej~                  j                  dMee(fee)fg      dN        ZZej~                  j                  dO      ej~                  j                  dMee(fee)fg      dP               Z\ej~                  j                  dO      ej~                  j                  dMee(fee)fg      ej~                  j                  dQdRdSg      dT                      Z]ej~                  j                  dO      ej~                  j                  dMee(fee)fg      dU               Z^y)Vz4Testing for the VotingClassifier and VotingRegressor    N)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ignore_warnings      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                     t        di | }t        j                  t        |      5  |j	                  t
        t               d d d        y # 1 sw Y   y xY w)Nmatch )r   pytestraises
ValueErrorfitXy)paramserr_msgensembles      f/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/sklearn/ensemble/tests/test_voting.py%test_voting_classifier_estimator_initr7   1   s9      )&)H	z	1Q 
2	1	1s   AAc                     t        dt               fdt               fgd      } d}d}t        j                  t        |      5 }| j
                   d d d        t        j                  j                  t              sJ |t        |j                  j                        v sJ t        | d      rJ | j                  t        t               t        | d      rJ y # 1 sw Y   xY w)	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.   AttributeErrorr@   
isinstancevalue	__cause__strhasattrr0   X_scaledr2   )eclf	inner_msg	outer_msg	exec_infos       r6   test_predictproba_hardvotingrL   D   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C!c                  J   t        dt               fdt               fgd      } t        dt               fg      }d}t	        j
                  t        |dz        5  | j                  t               d d d        t	        j
                  t        |dz        5  | j                  t               d d d        t	        j
                  t        |dz        5  | j                  t               d d d        t	        j
                  t        |d	z        5  |j                  t               d d d        t	        j
                  t        |d	z        5  |j                  t               d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   y xY w)
Nr9   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   predictr1   r@   	transformX_r)rH   eregmsgs      r6   test_notfittedrU   V   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)E5FF
F)E25E>F
FF"c                     t        d|       }t        d|       }t               }t        d|fd|fd|fgd	      }t	        |t
        t        d
      }|j                         dk\  sJ y)z7Check classification by majority label on dataset iris.	liblinear)solverrandom_state
   n_estimatorsrY   r&   rfgnbr;   r<   accuracyscoring?N)r   r	   r   r   r   r1   r2   meanglobal_random_seedclf1clf2clf3rH   scoress         r6   test_majority_label_irisrj   l   sk    [?QRD!r@RSD<D4L4,>vD T1a<F;;=C    c                     t        dd      } t        d      }t        d| fd|fgd      }| j                  t        t
              j                  t              d	   d
k(  sJ |j                  t        t
              j                  t              d	   dk(  sJ |j                  t        t
              j                  t              d	   dk(  sJ y)zECheck voting classifier selects smaller class label in tie situation.{   rW   )rY   rX   rY   r&   r]   r;   r<   I   r'   r"   N)r   r	   r   r0   r1   r2   rP   )rf   rg   rH   s      r6   test_tie_situationrp   y   s    3{CD!s3DttTl'CFSD88Aq>!!!$R(A---88Aq>!!!$R(A---88Aq>!!!$R(A---rk   c                     t        |       }t        d|       }t               }t        d|fd|fd|fgdg d	      }t	        |t
        t        d
      }|j                         dk\  sJ y)z>Check classification by average probabilities on dataset iris.rn   rZ   r[   r&   r]   r^   rN   r"   r'   rZ   r%   r=   r(   r_   r`   rb   N)r   r	   r   r   r   rG   r2   rc   rd   s         r6   test_weights_irisrt      sm    +=>D!r@RSD<D4L4,>D
 T8Q
CF;;=Crk   c                  <   t        d      } t        d      }t        dd      }t        d| fd|fd|fgg d      }t        t        t        d	
      \  }}}}| j                  ||      j                  |      }|j                  ||      j                  |      }	|j                  ||      j                  |      }
|j                  ||      j                  |      }t        j                  t        j                  ||	|
g      dg d      }t        ||d       t        d| fd|fd|fgd      }t        d| fd|fd|fgg d      }|j                  ||       |j                  ||       |j                  |      }|j                  |      }t        ||d       y)zACheck weighted average regression prediction on diabetes dataset.rc   )strategymedianquantile皙?)rv   rx   rr   )r(   g      ?)	test_sizer   )axisr(   r'   decimalNr"   r"   r"   )r   r   r   rR   y_rr0   rP   npaverageasarrayr   )reg1reg2reg3rS   	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                    r6   test_weights_regressorr      s   6*D8,D:<D
$(D)J+=>
D 0@SD0,IxH I.66x@II.66x@II.66x@II.66x@I
**


Iy)45AzC 	32'
$(D)J+=> )
$(D)J+=>	 )Y/9i0&..x8N(00:OCrk   c           	         t        |       }t        d|       }t               }t        j                  ddgddgdd	gd
dgddgddgg      }t        j                  g d      }t        |j                  ||      j                  |      g d       t        |j                  ||      j                  |      g d       t        |j                  ||      j                  |      g d       t        d|fd|fd|fgdg d      }t        |j                  ||      j                  |      g d       t        d|fd|fd|fgdg d      }t        |j                  ||      j                  |      g d       y)z6Manually check predicted class labels for toy dataset.rn   rZ   r[   皙      333333ffffff333333皙皙?333333?g @gffffff?g@gffffff@)r"   r"   r"   r'   r'   r'   r&   r]   r^   r;   r~   rs   rN   N)	r   r	   r   r   arrayr    r0   rP   r   )re   rf   rg   rh   r1   r2   rH   s          r6   test_predict_on_toy_problemr      sY   +=>D!r@RSD<D

d|dD\C:SzCQT:V	A 	#$Atxx1~--a02DEtxx1~--a02DEtxx1~--a02DE4L4,>D
 txx1~--a02DE4L4,>D
 txx1~--a02DErk   c                     t        d      } t        d      }t               }t        j                  ddgddgddgd	d
gg      }t        j                  g d      }t        j                  ddgddgddgddgg      }t        j                  ddgddgddgddgg      }t        j                  ddgddgddgddgg      }d|d   d   z  |d   d   z   |d   d   z   d z  }d|d!   d!   z  |d!   d!   z   |d!   d!   z   d z  }	d|d   d!   z  |d   d!   z   |d   d!   z   d z  }
d|d"   d!   z  |d"   d!   z   |d"   d!   z   d z  }t        d#| fd$|fd%|fgd&g d'(      }|j                  ||      j                  |      }t        ||d   d   d!)       t        |	|d!   d!   d!)       t        |
|d   d!   d!)       t        ||d"   d!   d!)       d*}d+}t        j                  t        |,      5 }t        d#| fd$|fd%|fgd-.      }|j                  ||      j                  |       d/d/d/       t        j                  j                  t              sJ |t        |j                  j                        v sJ y/# 1 sw Y   SxY w)0z1Calculate predicted probabilities on toy dataset.rm   rn   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?ry   333333?ffffff?g5w?g9=qX?g_?g$/AY?              ?r'   r      r"   r#   r&   r]   r^   rN   )r'   r"   r"   rs   r|   r>   r?   r*   r;   r<   N)r   r	   r   r   r   r   r0   r@   r   r-   r.   rA   rB   rC   rD   rE   )rf   rg   rh   r1   r2   clf1_resclf2_resclf3_rest00t11t21t31rH   eclf_resrI   rJ   rK   s                    r6   !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1~++A.HXa[^Q7Xa[^Q7Xa[^Q7Xa[^Q7CIEI	~Y	79ttTlUDMB6
 	A$$Q'	 
8 ioo//@@@IOO556666 
8	7s   '8I11I:c                      t        dddd      \  } }t        t        d            }t        d|fgd	
      }	 |j	                  | |       y# t
        $ r Y yw xY w)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   r0   NotImplementedError)r1   r2   clfrH   s       r6   test_multilabelr     s`    )aSDAq c2
3C~fEDA s   A 	AAc                      t        d      } t        dd      }t               }t        d| fd|fd|fgd	      }d
dgddgg dg dgd}t	        ||d      }|j                  t        t               y)zCheck GridSearch support.r"   rn   r#   )rY   r\   r&   r]   r^   rN   r<   r   g      Y@r;   )      ?r   r   )r   r   r   )lr__Cr=   r(   r'   )	estimator
param_gridcvN)r   r	   r   r   r   r0   rG   r2   )rf   rg   rh   rH   r3   grids         r6   test_gridsearchr     s    1-D!qqAD<D4L4,>vD
 u6"#_5F $6a@DHHXqrk   c                    t        |       }t        d|       }t               }t        j                  ddgddgdd	gd
dgg      }t        j                  g d      }t        d|fd|fd|fgdd      j                  ||      }t        d|fd|fd|fgdd      j                  ||      }t        |j                  |      |j                  |             t        |j                  |      |j                  |             y)z:Check parallel backend of VotingClassifier on toy dataset.rn   rZ   r[   r   r   r   r   r   r   r   r   r   r&   r]   r^   rN   r"   )r%   r=   n_jobsr'   N)r   r	   r   r   r   r   r0   r    rP   r   r@   )re   rf   rg   rh   r1   r2   eclf1eclf2s           r6   test_parallel_fitr   *  s    +=>D!r@RSD<D
4,ttTlS#JGHA
A4L4,>vVW	c!Qi 
 4L4,>vVW	c!Qi 
 u}}Q'q)9:e11!4e6I6I!6LMrk   )categoryc           	         t        |       }t        d|       }t        d|       }t        d|fd|fd|fgd	
      j	                  t
        t        t        j                  t        t              f            }t        d|fd|fd|fgd	
      j	                  t
        t              }t        |j                  t
              |j                  t
                     t        |j                  t
              |j                  t
                     t        j                  j                  |       j!                  t        t              f      }t        d|fgd	
      }|j	                  t
        t        |       |j	                  t
        t        |       t        |j                  t
              |j                  t
                     t        |j                  t
              |j                  t
                     t#               }t        d|fd|fd|fgd	
      }d}	t%        j&                  t(        |	      5  |j	                  t
        t        |       ddd        G d dt*        t,              }
 |
       }t%        j&                  t(        d      5  |j	                  t
        t        |       ddd       y# 1 sw Y   exY w# 1 sw Y   yxY w)z1Tests sample_weight parameter of VotingClassifierrn   rZ   r[   T)probabilityrY   r&   r]   svcrN   r<   sample_weight)sizeknnzJUnderlying estimator KNeighborsClassifier does not support sample weights.r*   Nc                       e Zd Zd Zy).test_sample_weight.<locals>.ClassifierErrorFitc                     t        d      )Nz!Error unrelated to sample_weight.)	TypeError)selfrG   r2   r   s       r6   r0   z2test_sample_weight.<locals>.ClassifierErrorFit.fitc  s    ?@@rk   N)__name__
__module____qualname__r0   r,   rk   r6   ClassifierErrorFitr   b  s    	Ark   r   z Error unrelated to sample_weight)r   r	   r   r   r0   rG   r2   r   oneslenr    rP   r   r@   randomRandomStateuniformr   r-   r.   r   r   r   )re   rf   rg   rh   r   r   r   eclf3clf4rT   r   r   s               r6   test_sample_weightr   =  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=)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:.J7:Kc            	           G d dt         t              }  |        }t        d|fgd      }|j                  t        t
        t        j                  t        t
              f             y)z:Check that VotingClassifier passes sample_weight as kwargsc                       e Zd ZdZd Zy)1test_sample_weight_kwargs.<locals>.MockClassifierzAMock Classifier to check that sample_weight is received as kwargsc                     d|v sJ y )Nr   r,   )r   r1   r2   argsr   s        r6   r0   z5test_sample_weight_kwargs.<locals>.MockClassifier.fitq  s    "m333rk   N)r   r   r   __doc__r0   r,   rk   r6   MockClassifierr   n  s
    O	4rk   r   mockrN   r<   r   N)	r   r   r   r0   r1   r2   r   r   r   )r   r   rH   s      r6   test_sample_weight_kwargsr   k  sO    4- 4 
CvFD 	HHQ#a&!3H4rk   c                    t        |       }t        d| d       }t               }t        d|fd|fgdddg	      j	                  t
        t              }t        d|fd
|fgdddg	      }|j                  |      j	                  t
        t               t        |j                  t
              |j                  t
                     t        |j                  t
              |j                  t
                     |j                  d   d   j                         |j                         k(  sJ |j                  d   d   j                         |j                         k(  sJ y )Nrn   rZ   )r\   rY   	max_depthr&   r]   rN   r"   r'   )r=   r(   nb)r   r   )r   r	   r   r   r0   rG   r2   
set_paramsr    rP   r   r@   r%   
get_params)re   rf   rg   rh   r   r   s         r6   !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            	         t        d      } t        dd      }t               }t        d| fd|fd|fgdg d	
      j	                  t
        t              }t        d| fd|fd|fgdg d
      }|j                  d      j	                  t
        t               t        |j                  t
              |j                  t
                     t        |j                        d   dk(  sJ t        |j                        dk(  sJ t        d |j                  D              sJ |j                         d   dk(  sJ |j                  d      j	                  t
        t               |j                  d      j	                  t
        t               t        |j                  t
              |j                  t
                     t!        |j#                  t
              |j#                  t
                     d}t%        j&                  t(        |      5  |j                  ddd      j	                  t
        t               d d d        t+        j,                  dgdgg      }t+        j,                  ddg      }t        d|fd|fgdddgd      j	                  ||      }t        d|fd|fgdddgd      }|j                  d      j	                  ||       t!        |j/                  |      t+        j,                  ddgddggddgddggg             t!        |j/                  |      t+        j,                  ddgddggg             |j                  d       |j                  d       t        |j/                  |      t+        j,                  ddgddgg             t        |j/                  |      t+        j,                  dgdgg             y # 1 sw Y   xY w)Nrm   rn   rZ   r[   r&   r]   r   r;   )r"   r   r   rs   )r"   r"   r   drop)r]   r'   c              3   H   K   | ]  }t        |t        t        f        y w)N)rB   r   r   ).0ests     r6   	<genexpr>z*test_set_estimator_drop.<locals>.<genexpr>  s"      EVc
3+Z89EVs    "rN   )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   r0   r1   r2   r   r    rP   dictr%   r   estimators_allr   r   r@   r-   r.   r/   r   r   rQ   )rf   rg   rh   r   r   rT   X1y1s           r6   test_set_estimator_dropr     sw    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"bk 
 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   -OOc                 |   t        |       }t        d|       }t        d|fd|fgddgd	      }t        d|fd|fgt        j                  d
      d	      }|j                  t        t               |j                  t        t               t        |j                  t              |j                  t                     y )Nrn   rZ   r[   r&   r]   r"   r'   rN   )r%   r(   r=   )r"   r'   )
r   r	   r   r   r   r0   rG   r2   r   r@   )re   rf   rg   r   r   s        r6   test_estimator_weights_formatr     s    +=>D!r@RSD4L4,/!QE 4L4,/&9IRXE 
IIh	IIhH%u':':8'Drk   c                 f   t        |       }t        d|       }t               }t        j                  ddgddgdd	gd
dgg      }t        j                  g d      }t        d|fd|fd|fgd      j                  ||      }t        d|fd|fd|fgdd      j                  ||      }t        d|fd|fd|fgdd      j                  ||      }t        |j                  |      j                  d       t        |j                  |      j                  d       t        |j                  |      j                  d       t        |j                  |      |j                  |             t        |j                  |      j                  dd      j                  d      |j                  |             y)z:Check transform method of VotingClassifier on toy dataset.rn   rZ   r[   r   r   r   r   r   r   r   r   r   r&   r]   r^   rN   r<   Tr%   r=   r   F)r      )r#   r   r'   r   r"   N)r   r	   r   r   r   r   r0   r    rQ   shaper   swapaxesreshape)	re   rf   rg   rh   r1   r2   r   r   r   s	            r6   test_transformr    s   +=>D!r@RSD<D
4,ttTlS#JGHA
A4L4,>v	c!Qi 
 4L4,> 
c!Qi	 

 4L4,> 
c!Qi	 
 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                    t        |      }t               j                  |       }|j                  ||t	        j
                  |j                               |j                  d       |j                  ||t	        j
                  |j                               |j                  |      }|j                  |j                  k(  sJ y )Nr   r   )r&   )	r   r   fit_transformr0   r   r   r   r   rP   )r1   r2   voterrG   y_preds        r6    test_none_estimator_with_weightsr	    s    : %LE--a0H	IIh)9I:		IIh)9I:]]8$F<<177"""rk   r   treern   r%   r   r   )idsc                     ddgddgddgg}g d}t        | d      rJ | j                  ||       | j                  dk(  sJ y )	Nr"   r'   r#   r   r  r   r   r"   r'   n_features_in_)rF   r0   r  )r   r1   r2   s      r6   test_n_features_inr  +  sS    & Q!Q!Q AAs,---GGAqM"""rk   r   rm   )r%   verbosec                     t        j                  ddgddgddgddgg      }t        j                  g d	      }d
}| j                  ||       t        j                  ||j                         d         sJ y )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   r0   rer+   
readouterr)r   capsysr1   r2   patterns        r6   test_voting_verboser  F  su    ( 	4,ttTlS#JGHA
A	= 
 MM!Q88GV..03444rk   c                      ddgddgddgg} g d}t        dt               fd	t        d
      fdg      }|j                  | |       |j	                         }ddg}t        ||       y)z1Check get_feature_names_out output for regressor.r"   r'   r#   r   r  r   r  r&   r
  r   rn   )ignorer   r  votingregressor_lrvotingregressor_treeN)r   r   r   r0   get_feature_names_outr    )r1   r2   r=   	names_outexpected_namess        r6   %test_get_features_names_out_regressorr  f  s     Q!Q!Q AA#%&*:;
F JJq!,,.I*,BCNy.1rk   zkwargs, expected_namesrN   )r=   r   )votingclassifier_lr0votingclassifier_lr1votingclassifier_lr2votingclassifier_tree0votingclassifier_tree1votingclassifier_tree2r=   r;   votingclassifier_lrvotingclassifier_treec           	      .   ddgddgddgddgg}g d}t        dd	d
t        d      fdt        d      fgi| }|j                  ||       |j	                  |      }|j                         }|j                  d   t        |      k(  sJ t        ||       y)zBCheck get_feature_names_out for classifier for different settings.r"   r'   r#   r   r  r   r   )r   r"   r'   r   r%   r&   r   rn   r
  Nr,   )	r   r   r   r0   rQ   r  r   r   r    )kwargsr  r1   r2   r=   X_transr  s          r6   &test_get_features_names_out_classifierr+  z  s    & Q!Q!Q!S*AA %156+;<

 F JJq!q!G,,.I==s>2222y.1rk   c                     ddgddgddgg} g d}t        dt        d	
      fdt        d	
      fgdd      }|j                  | |       d}t	        j
                  t        |      5  |j                          ddd       y# 1 sw Y   yxY w)zJCheck that error is raised when voting="soft" and flatten_transform=False.r"   r'   r#   r   r  r   r  r&   r   rn   r
  rN   Fr   zYget_feature_names_out is not supported when `voting='soft'` and `flatten_transform=False`r*   N)r   r   r   r0   r-   r.   r/   r  )r1   r2   r=   rT   s       r6   ,test_get_features_names_out_classifier_errorr-    s    
Q!Q!Q AA%156+;<
 F JJq!	$  
z	-$$& 
.	-	-s   'BB
zEstimator, Childc                     t        j                  ddgddgddgg      }g d}t        j                  t        d      5   | d	 |       g      j                  ||g d
d       ddd       y# 1 sw Y   yxY w)zTest 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.   r/   r0   )	EstimatorChildr1   r2   s       r6   *test_routing_passed_metadata_not_supportedr5    sr     	1a&1a&1a&)*AA	M
 	5%'"#''1IPS'T
 
 
s   %A,,A5enable_slep006c                 D     | d |       fg      }|j                          y )Nsub_est)get_metadata_routing)r3  r4  r   s      r6   %test_get_metadata_routing_without_fitr:    s$     i)*
+Crk   propr   r2  c           
         t        j                  ddgddgddgg      }g d}g dd}} | d	  |t               
      j                  di |difd  |t               
      j                  di |difg      } |j                  ||fi ||dk(  r|n|i |j
                  D ]A  }|dk(  r||i}	n||i}	|d   j                  }
t        |
      sJ |
D ]  }t        d|dd|	  C y)z3Test that metadata is routed correctly for Voting*.r   r"   r'   r   r   r/  r~   r0  sub_est1)registryTsub_est2r   r0   )objmethodNr,   )	r   r   r   set_fit_requestr0   r%   r>  r   r   )r3  r4  r;  r1   r2   r   r2  r   r   r)  r>  r8  s               r6   +test_metadata_routing_for_voting_estimatorsrC    s    	1a&1a&1a&)*AA'8M
 ;y{+;;KtTlK
 ;y{+;;KtTlK		
C CGGAqSTDO,C=RS^^	?"M*FH%FQ<((8}}G#HHH   $rk   c                 D   t        j                  ddgddgddgg      }g d}g dd}} | d	 |       fg      }d
|j                   d}t        j                  t
        t        j                  |            5  |j                  ||||       ddd       y# 1 sw Y   yxY w)zCTest that the right error is raised when metadata is not requested.r   r"   r'   r   r   r/  r~   r0  r8  zb[sample_weight, metadata] are passed but are not explicitly set as requested or not requested for z.fitr*   r1  N)	r   r   r   r-   r.   r/   r  escaper0   )r3  r4  r1   r2   r   r2  r   error_messages           r6   1test_metadata_routing_error_for_voting_estimatorsrG    s     	1a&1a&1a&)*AA'8M
i)*
+C	!!& 0	6 
 
z=)A	B1MHE 
C	B	Bs   7BB)_r   r  numpyr   r-   sklearnr   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    r!   	load_irisirisdatatargetr1   r2   r  rG   load_diabetesrR   r   markparametrizer7   rL   rU   rj   rp   rt   r   r   r   r   r   r   FutureWarningr   r   r   r   r   r  r	  r  r  r  r+  r-  r5  usefixturesr:  rC  rG  r,   rk   r6   <module>rb     s   : 	    > > ; (  . E S S 2 * 2 0   G  xyyAaC$++1))!,!8!!T2S  2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 /:!>?I @	 +IB )*+,@R.STF	 +
Frk   