
    /iik                        d Z ddlZddlZddl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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/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5  ej6                    Z7e7j8        ddddf         e7j9        cZ:Z; e'            <                    e:          Z= ej>        d          \  Z?Z@ejA        B                    ddg idfd e            gidfdd e            fgidfd e            fgddgddfg          d              ZCd! ZDd" ZEd# ZFd$ ZGd% ZHd& ZId' ZJd( ZKd) ZLd* ZMd+ ZNd, ZOd- ZPd. ZQd/ ZRd0 ZSd1 ZTejA        B                    d2e:e; ed e            fd3 ed45          fg          fe?e@ ed e            fd3 ed45          fg          fg          d6             ZUejA        B                    d7 ed e            fd8 e1d9          fg:           ed ed9          fd8 e0d9          fg:          gd;d<g=          d>             ZVejA        B                    d? ed e            fd3 ed@9          fgdA           ed ed@9          fd3 ed@9          fgdA          g          dB             ZWdC ZXejA        B                    dDdEddFg dGfdHdIidJdKgfg          dL             ZYdM ZZejA        B                    dNee+fee,fg          dO             Z[ejA        B                    dNee+fee,fg           edP          dQ                         Z\ejA        B                    dNee+fee,fg          ejA        B                    dRdSdTg           edP          dU                                     Z]ejA        B                    dNee+fee,fg           edP          dV                         Z^dS )Wz4Testing for the VotingClassifier and VotingRegressor    N)config_contextdatasets)BaseEstimatorClassifierMixinclone)CalibratedClassifierCV)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                     t          di | }t          j        t          |          5  |                    t
          t                     d d d            d S # 1 swxY w Y   d S )Nmatch )r   pytestraises
ValueErrorfitXy)paramserr_msgensembles      h/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/sklearn/ensemble/tests/test_voting.py%test_voting_classifier_estimator_initr9   1   s    ,  ))&))H	z	1	1	1  Q                 s   !AAAc                     t          dt                      fdt                      fgd          } d}d}t          j        t          |          5 }| j         d d d            n# 1 swxY w Y   t          |j        j        t                    sJ |t          |j        j                  v sJ t          | d          rJ |                     t          t                     t          | d          rJ d S )	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/   r0   AttributeErrorrB   
isinstancevalue	__cause__strhasattrr2   X_scaledr4   )eclf	inner_msg	outer_msg	exec_infos       r8   test_predictproba_hardvotingrN   L   s5   .001E;M;O;O3PQ  D
 DIEI	~Y	7	7	7 9              io/@@@@@IO5666666t_-----HHXqt_-------s   A##A'*A'c                     t          dt                      fdt                      fgd          } t          dt                      fg          }d}t	          j        t          |dz            5  |                     t                     d d d            n# 1 swxY w Y   t	          j        t          |dz            5  | 	                    t                     d d d            n# 1 swxY w Y   t	          j        t          |dz            5  | 
                    t                     d d d            n# 1 swxY w Y   t	          j        t          |d	z            5  |                    t                     d d d            n# 1 swxY w Y   t	          j        t          |d	z            5  |
                    t                     d d d            d S # 1 swxY w Y   d S )
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/   r0   r   predictr3   rB   	transformX_r)rJ   eregmsgs      r8   test_notfittedrW   ^   s   .001E;M;O;O3PQ  D T>#3#34566D	C  
~S3E-E	F	F	F  Q              	~S3E-E	F	F	F  1              	~S3E-E	F	F	F  q              	~S3D-D	E	E	E  S              	~S3D-D	E	E	E  s                 sZ   .BBB>C%%C),C)D55D9<D9FF	F	.GGGc                    t          |           }t          d|           }t                      }t          d|fd|fd|fgd          }t	          |t
          t          d	
          }|                                dk    sJ dS )z7Check classification by majority label on dataset iris.random_state
   n_estimatorsrZ   r(   rfgnbr=   r>   accuracyscoring?N)r   r   r   r   r   r3   r4   meanglobal_random_seedclf1clf2clf3rJ   scoress         r8   test_majority_label_irisrk   t   s    +=>>>D!r@RSSSD<<D4L4,>v  D T1a<<<F;;==C    c                     t          d          } t          d          }t          d| fd|fgd          }|                     t          t
                                        t                    d         dk    sJ |                    t          t
                                        t                    d         d	k    sJ |                    t          t
                                        t                    d         d	k    sJ d
S )zECheck voting classifier selects smaller class label in tie situation.{   rY   r(   r^   r=   r>   4   r)   r#   N)r   r   r   r2   r3   r4   rR   )rg   rh   rJ   s      r8   test_tie_situationrp      s    3///D!s333DttTl'CFSSSD88Aq>>!!!$$R(A----88Aq>>!!!$$R(A----88Aq>>!!!$$R(A------rl   c                    t          |           }t          d|           }t                      }t          d|fd|fd|fgdg d	          }t	          |t
          t          d
          }|                                dk    sJ dS )z>Check classification by average probabilities on dataset iris.rY   r[   r\   r(   r^   r_   rP   r#   r)   r[   r&   r?   r*   r`   ra   rc   N)r   r   r   r   r   rI   r4   rd   re   s         r8   test_weights_irisrt      s    +=>>>D!r@RSSSD<<D4L4,>

  D
 T8Q
CCCF;;==Crl   c                     t          d          } t          d          }t          dd          }t          d| fd|fd|fgg d          }t          t          t          d	
          \  }}}}|                     ||                              |          }|                    ||                              |          }	|                    ||                              |          }
|                    ||                              |          }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          }|                    ||           |                    ||           |                    |          }|                    |          }t          ||d           dS )zACheck weighted average regression prediction on diabetes dataset.rd   )strategymedianquantile皙?)rv   rx   rr   )r*   g      ?)	test_sizer   )axisr*   r)   decimalNr#   r#   r#   )r
   r   r   rT   y_rr2   rR   npaverageasarrayr    )reg1reg2reg3rU   	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                    r8   test_weights_regressorr      s/   6***D8,,,D:<<<D
$(D)J+=>


  D 0@SD0 0 0,IxH I..66x@@II..66x@@II..66x@@II..66x@@I
*

Iy)455Azzz  C 	32222'
$(D)J+=>   )
$(D)J+=>			   )Y///9i000&..x88N(00::OCCCCCCrl   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          |                    ||                              |          g d           t          |                    ||                              |          g d           t          |                    ||                              |          g d           t          d|fd|fd|fgdg d          }t          |                    ||                              |          g d           t          d|fd|fd|fgdg d          }t          |                    ||                              |          g d           dS )z6Manually check predicted class labels for toy dataset.rY   r[   r\   皙      333333ffffff333333皙皙?333333?g @gffffff?g@gffffff@)r#   r#   r#   r)   r)   r)   r(   r^   r_   r=   r~   rs   rP   N)	r   r   r   r   arrayr"   r2   rR   r   )rf   rg   rh   ri   r3   r4   rJ   s          r8   test_predict_on_toy_problemr      s   +=>>>D!r@RSSSD<<D

d|dD\C:SzCQT:V	 	A 	###$$Atxx1~~--a002D2D2DEEEtxx1~~--a002D2D2DEEEtxx1~~--a002D2D2DEEE4L4,>		  D
 txx1~~--a002D2D2DEEE4L4,>		  D
 txx1~~--a002D2D2DEEEEErl   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'(          }|                    ||                              |          }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-.          }|                    ||                              |           d/d/d/           n# 1 swxY w Y   t          |j        j        t                    sJ |t          |j        j                  v sJ d/S )0z1Calculate predicted probabilities on toy dataset.rn   rY   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_   rP   )r)   r#   r#   rs   r|   r@   rA   r,   r=   r>   N)r   r   r   r   r   r   r2   rB   r    r/   r0   rC   rD   rE   rF   rG   )rg   rh   ri   r3   r4   clf1_resclf2_resclf3_rest00t11t21t31rJ   eclf_resrK   rL   rM   s                    r8   !test_predict_proba_on_toy_problemr      s   3///D!s333D<<D
4,ttTlS#JGHHA
Ax$$$$		
 H x#sc3Z#sc3ZHIIHx
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777Xa[^Q7777Xa[^Q7777Xa[^Q7777CIEI	~Y	7	7	7 (9ttTlUDMB6
 
 
 	A$$Q'''	( ( ( ( ( ( ( ( ( ( ( ( ( ( ( io/@@@@@IO566666666s   *AJ::J>J>c                      t          dddd          \  } }t          t          d                    }t          d|fgd	
          }	 |                    | |           dS # t
          $ r Y dS w xY w)z7Check if error is raised for multilabel classification.r)   r#   Frn   )	n_classesn_labelsallow_unlabeledrZ   linear)kernelovrr=   r>   N)r	   r   r   r   r2   NotImplementedError)r3   r4   clfrJ   s       r8   test_multilabelr     s    )aS  DAq c222
3
3C~fEE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          }|                    t          t                     dS )zCheck GridSearch support.r#   rY   r$   )rZ   r]   r(   r^   r_   rP   r>   r   g      Y@r=   )      ?r   r   )r   r   r   )lr__Cr?   r*   r)   )	estimator
param_gridcvN)r   r   r   r   r   r2   rI   r4   )rg   rh   ri   rJ   r5   grids         r8   test_gridsearchr     s    1---D!qqAAAD<<D4L4,>v  D
 u6"#OO___5 F $6a@@@DHHXqrl   c                 d   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                              ||          }t          d|fd|fd|fgdd                              ||          }t          |                    |          |                    |                     t          |
                    |          |
                    |                     dS )z:Check parallel backend of VotingClassifier on toy dataset.rY   r[   r\   r   r   r   r   r   r   r   r   r   r(   r^   r_   rP   r#   )r&   r?   n_jobsr)   N)r   r   r   r   r   r   r2   r"   rR   r!   rB   )rf   rg   rh   ri   r3   r4   eclf1eclf2s           r8   test_parallel_fitr   2  sF   +=>>>D!r@RSSSD<<D
4,ttTlS#JGHHA
A4L4,>vVW  	c!Qii 
 4L4,>vVW  	c!Qii 
 u}}Q''q)9)9:::e11!44e6I6I!6L6LMMMMMrl   c           	         t          |           }t          d|           }t          t          |           d          }t	          d|fd|fd|fgd	
                              t          t          t          j	        t          t                    f                    }t	          d|fd|fd|fgd	
                              t          t                    }t          |                    t                    |                    t                               t          |                    t                    |                    t                               t          j                            |                               t          t                    f          }t	          d|fgd	
          }|                    t          t          |           |                    t          t          |           t          |                    t                    |                    t                               t          |                    t                    |                    t                               t%                      }t	          d|fd|fd|fgd	
          }d}	t'          j        t*          |	          5  |                    t          t          |           ddd           n# 1 swxY w Y    G d dt,          t.                    }
 |
            }t'          j        t*          d          5  |                    t          t          |           ddd           dS # 1 swxY w Y   dS )z1Tests sample_weight parameter of VotingClassifierrY   r[   r\   F)r7   r(   r^   svcrP   r>   sample_weight)sizeknnzJUnderlying estimator KNeighborsClassifier does not support sample weights.r,   Nc                       e Zd Zd ZdS ).test_sample_weight.<locals>.ClassifierErrorFitc                      t          d          )Nz!Error unrelated to sample_weight.)	TypeError)selfrI   r4   r   s       r8   r2   z2test_sample_weight.<locals>.ClassifierErrorFit.fitj  s    ?@@@rl   N)__name__
__module____qualname__r2   r.   rl   r8   ClassifierErrorFitr   i  s(        	A 	A 	A 	A 	Arl   r   z Error unrelated to sample_weight)r   r   r   r   r   r2   rI   r4   r   oneslenr"   rR   r!   rB   randomRandomStateuniformr   r/   r0   r   r   r   )rf   rg   rh   ri   r   r   r   eclf3clf4rV   r   r   s               r8   test_sample_weightr   E  s   +=>>>D!r@RSSSD!#3E"F"F"FQVWWWD4L4,>v  	c(ARWc!ffY%7%7c88 
 4L4,>v  	c(A 
 u}}X..h0G0GHHHH%%u':':8'D'D   I))*<==EECPQFF9EUUM$vFFFE	IIhI777HHXq-(((u}}X..X0F0FGGGH%%t'9'9('C'C    !!D4L5$-%?  E WC	y	,	,	, < <		(A]	;;;< < < < < < < < < < < < < < <
A A A A A_m A A A 


C	y(J	K	K	K : :!=999: : : : : : : : : : : : : : : : : :s$   :#K))K-0K-2#M""M&)M&c            	          G d dt           t                    }  |             }t          d|fgd          }|                    t          t
          t          j        t          t
                    f                     dS )z:Check that VotingClassifier passes sample_weight as kwargsc                       e Zd ZdZd ZdS )1test_sample_weight_kwargs.<locals>.MockClassifierzAMock Classifier to check that sample_weight is received as kwargsc                     d|v sJ d S )Nr   r.   )r   r3   r4   argsr   s        r8   r2   z5test_sample_weight_kwargs.<locals>.MockClassifier.fitx  s    "m333333rl   N)r   r   r   __doc__r2   r.   rl   r8   MockClassifierr   u  s)        OO	4 	4 	4 	4 	4rl   r   mockrP   r>   r   N)	r   r   r   r2   r3   r4   r   r   r   )r   r   rJ   s      r8   test_sample_weight_kwargsr   r  s    4 4 4 4 4- 4 4 4 .

CvFFFD 	HHQ#a&&!3!3H44444rl   c                 f   t          |           }t          d| d           }t                      }t          d|fd|fgdddg	                              t
          t                    }t          d|fd
|fgdddg	          }|                    |                              t
          t                     t          |	                    t
                    |	                    t
                               t          |                    t
                    |                    t
                               |j        d         d                                         |                                k    sJ |j        d         d                                         |                                k    sJ d S )NrY   r[   )r]   rZ   	max_depthr(   r^   rP   r#   r)   )r?   r*   nb)r   r   )r   r   r   r   r2   rI   r4   
set_paramsr"   rR   r!   rB   r&   
get_params)rf   rg   rh   ri   r   r   s         r8   !test_voting_classifier_set_paramsr     s   +=>>>D!&8D  D <<D
d|$VaV  	c(A 
 
d|$VaV  E 
!!(A...u}}X..h0G0GHHHH%%u':':8'D'D   Aq!,,..$//2C2CCCCCAq!,,..$//2C2CCCCCCCrl   c            	      	   t          d          } t          dd          }t                      }t          d| fd|fd|fgdg d	
                              t
          t                    }t          d| fd|fd|fgdg d
          }|                    d                              t
          t                     t          |	                    t
                    |	                    t
                               t          |j                  d         dk    sJ t          |j                  dk    sJ t          d |j        D                       sJ |                                d         dk    sJ |                    d                              t
          t                     |                    d                              t
          t                     t          |	                    t
                    |	                    t
                               t!          |                    t
                    |                    t
                               d}t%          j        t(          |          5  |                    ddd                              t
          t                     d d d            n# 1 swxY w Y   t+          j        dgdgg          }t+          j        ddg          }t          d|fd|fgdddgd                              ||          }t          d|fd|fgdddgd          }|                    d                              ||           t!          |                    |          t+          j        ddgddggddgddggg                     t!          |                    |          t+          j        ddgddggg                     |                    d           |                    d           t          |                    |          t+          j        ddgddgg                     t          |                    |          t+          j        dgdgg                     d S )Nrn   rY   r[   r\   r(   r^   r   r=   )r#   r   r   rs   )r#   r#   r   drop)r^   r)   c              3   N   K   | ] }t          |t          t          f          V  !d S )N)rD   r   r   ).0ests     r8   	<genexpr>z*test_set_estimator_drop.<locals>.<genexpr>  sC        >A
3+Z899     rl   rP   )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   r2   r3   r4   r   r"   rR   dictr&   r   estimators_allr   r!   rB   r/   r0   r1   r   r   rS   )rg   rh   ri   r   r   rV   X1y1s           r8   test_set_estimator_dropr     s    3///D!rDDDD<<D4L4,t=   
c!Qii	 
 4L4,t=  E
 
##Aq)))u}}Q''q)9)9::: !!$'61111u !!Q&&&&  EJEV        d#v----	F##''1---	F##''1---u}}Q''q)9)9:::e11!44e6I6I!6L6LMMM
@C	z	-	-	- D DFv&99==aCCCD D D D D D D D D D D D D D D 
A3*		B	1a&		B4L4,/C	  
 
c"bkk 
 4L4,/C	  E 
##B+++
C:Sz*c3Z#s,DEFF   eoob1128sCj3PS*=U<V3W3WXXX	F###	F###ur**BHq!fq!f5E,F,FGGGur**BHqcA3Z,@,@AAAAAs   ;7J>>KKc                    t          |           }t          d|           }t          d|fd|fgddgd	          }t          d|fd|fgt          j        d
          d	          }|                    t          t                     |                    t          t                     t          |	                    t                    |	                    t                               d S )NrY   r[   r\   r(   r^   r#   r)   rP   )r&   r*   r?   )r#   r)   )
r   r   r   r   r   r2   rI   r4   r!   rB   )rf   rg   rh   r   r   s        r8   test_estimator_weights_formatr     s    +=>>>D!r@RSSSD4L4,/!Q  E 4L4,/&9I9IRX  E 
IIh	IIhH%%u':':8'D'D    rl   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                              ||          }t          d|fd|fd|fgdd                              ||          }t          d|fd|fd|fgdd                              ||          }t          |                    |          j	        d           t          |                    |          j	        d           t          |                    |          j	        d           t          |                    |          |                    |                     t          |                    |                              dd                              d          |                    |                     dS )z:Check transform method of VotingClassifier on toy dataset.rY   r[   r\   r   r   r   r   r   r   r   r   r   r(   r^   r_   rP   r>   Tr&   r?   r   F)r      )r$   r   r)   r   r#   N)r   r   r   r   r   r   r2   r"   rS   shaper!   swapaxesreshape)	rf   rg   rh   ri   r3   r4   r   r   r   s	            r8   test_transformr    s   +=>>>D!r@RSSSD<<D
4,ttTlS#JGHHA
A4L4,>v  	c!Qii 
 4L4,>   
c!Qii	 

 4L4,>   
c!Qii	 
 uq))/888uq))/888uq))/;;;eooa00%//!2D2DEEE##Aq))11&995??1;M;M    rl   zX, y, voterr^      )r]   c                    t          |          }t                                          |           }|                    ||t	          j        |j                             |                    d           |                    ||t	          j        |j                             |                    |          }|j        |j        k    sJ d S )Nr   r   )r(   )	r   r   fit_transformr2   r   r   r   r   rR   )r3   r4   voterrI   y_preds        r8    test_none_estimator_with_weightsr    s    : %LLE--a00H	IIh)9)9I:::		IIh)9)9I:::]]8$$F<17""""""rl   r   treerY   r&   r   r   )idsc                     t          |           } ddgddgddgg}g d}t          | d          rJ |                     ||           | j        dk    sJ d S )	Nr#   r)   r$   r   r  r   r   r#   r)   n_features_in_)r   rH   r2   r  )r   r3   r4   s      r8   test_n_features_inr  2  sr    & **C
Q!Q!Q A		As,-----GGAqMMM""""""rl   r   rn   )r&   verbosec                    t          j        ddgddgddgddgg          }t          j        g d	          }d
}t          |                               ||           t	          j        ||                                d                   sJ d S )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   r2   rer-   
readouterr)r   capsysr3   r4   patterns        r8   test_voting_verboser  N  s    ( 	4,ttTlS#JGHHA
A	=  
)A8GV..0034444444rl   c                     ddgddgddgg} g d}t          dt                      fd	t          d
          fdg          }|                    | |           |                                }ddg}t          ||           dS )z1Check get_feature_names_out output for regressor.r#   r)   r$   r   r  r   r  r(   r  r   rY   )ignorer   r	  votingregressor_lrvotingregressor_treeN)r   r   r   r2   get_feature_names_outr"   )r3   r4   r?   	names_outexpected_namess        r8   %test_get_features_names_out_regressorr  m  s     Q!Q!Q A		A#%%&*:::;
  F JJq!,,..I*,BCNy.11111rl   zkwargs, expected_namesrP   )r?   r   )votingclassifier_lr0votingclassifier_lr1votingclassifier_lr2votingclassifier_tree0votingclassifier_tree1votingclassifier_tree2r?   r=   votingclassifier_lrvotingclassifier_treec           	      h   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        d         t          |          k    sJ t          ||           dS )zBCheck get_feature_names_out for classifier for different settings.r#   r)   r$   r   r  r   r   )r   r#   r)   r   r&   r(   r   rY   r  Nr.   )	r   r   r   r2   rS   r  r   r   r"   )kwargsr  r3   r4   r?   X_transr  s          r8   &test_get_features_names_out_classifierr)    s    & Q!Q!Q!S*AA  %15556+;;;<

  F JJq!q!!G,,..I=s>222222y.11111rl   c                  L   ddgddgddgg} g d}t          dt          d	
          fdt          d	
          fgdd          }|                    | |           d}t	          j        t          |          5  |                                 ddd           dS # 1 swxY w Y   dS )zJCheck that error is raised when voting="soft" and flatten_transform=False.r#   r)   r$   r   r  r   r  r(   r   rY   r  rP   Fr   zYget_feature_names_out is not supported when `voting='soft'` and `flatten_transform=False`r,   N)r   r   r   r2   r/   r0   r1   r  )r3   r4   r?   rV   s       r8   ,test_get_features_names_out_classifier_errorr+    s   
Q!Q!Q A		A%15556+;;;<
   F JJq!	$  
z	-	-	- ' '$$&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   7B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                              ||g d
d           ddd           dS # 1 swxY w Y   dS )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/   r0   r1   r2   )	EstimatorChildr3   r4   s       r8   *test_routing_passed_metadata_not_supportedr3    s     	1a&1a&1a&)**A		A	M
 
 
 U U 		5%%''"##''1IIIPS'TTTU U U U U U U U U U U U U U U U U Us   /A99A= A=)enable_metadata_routingc                 Z     | d |            fg          }|                                  d S )Nsub_est)get_metadata_routing)r1  r2  r   s      r8   %test_get_metadata_routing_without_fitr8    s9     )i)*
+
+Crl   propr   r0  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 ]D}|dk    r||i}	n||i}	|d         j        }
t          |
          sJ |
D ]}t          d|ddd|	 EdS )z3Test that metadata is routed correctly for Voting*.r   r#   r)   r   r   r-  r~   r.  sub_est1)registryTsub_est2r   r2   )objmethodparentNr.   )	r   r   r   set_fit_requestr2   r&   r<  r   r   )r1  r2  r9  r3   r4   r   r0  r   r   r'  r<  r6  s               r8   +test_metadata_routing_for_voting_estimatorsrB    s    	1a&1a&1a&)**A		A'ii8M
) ;y{{+++;KKtTlKK
 ;y{{+++;KKtTlKK		
 C CGAqSSTDO,C,C==RSSS^ 	W 	W	?""M*FFH%FQ<(8}} 	W 	WG#VeVVvVVVV	W	W 	Wrl   c                 T   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  |                    ||||           ddd           dS # 1 swxY w Y   dS )zCTest that the right error is raised when metadata is not requested.r   r#   r)   r   r   r-  r~   r.  r6  zb[sample_weight, metadata] are passed but are not explicitly set as requested or not requested for z.fitr,   r/  N)	r   r   r   r/   r0   r1   r  escaper2   )r1  r2  r3   r4   r   r0  r   error_messages           r8   1test_metadata_routing_error_for_voting_estimatorsrF    s*    	1a&1a&1a&)**A		A'ii8M
)i)*
+
+C	6!&	6 	6 	6 
 
z=)A)A	B	B	B F F1MHEEEF F F F F F F F F F F F F F F F F Fs   6BB!$B!)_r   r  numpyr   r/   sklearnr   r   sklearn.baser   r   r   sklearn.calibrationr   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targetr3   r4   r  rI   load_diabetesrT   r   markparametrizer9   rN   rW   rk   rp   rt   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r)  r+  r3  r8  rB  rF  r.   rl   r8   <module>r`     s   : : 				      , , , , , , , , > > > > > > > > > > 6 6 6 6 6 6 ; ; ; ; ; ; ( ( ( ( ( (            . - - - - - E E E E E E E E S S S S S S S S S S 2 2 2 2 2 2 * * * * * * 2 2 2 2 2 2 0 0 0 0 0 0                  G F F F F F F F          xyAaC$+1>))!,,!8!T222S  2U	

 ..0012U	

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

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