
    rik                     B   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jl                         Z7e7jp                  ddddf   e7jr                  cZ:Z; e'       jy                  e:      Z= ej|                  d      \  Z?Z@ej                  j                  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j                  j                  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j                  j                  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j                  j                  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j                  j                  dDdEddFg dGfdHdIidJdKgfg      dL        ZYdM ZZej                  j                  dNee+fee,fg      dO        Z[ej                  j                  dNee+fee,fg       edP      dQ               Z\ej                  j                  dNee+fee,fg      ej                  j                  dRdSdTg       edP      dU                      Z]ej                  j                  dNee+fee,fg       edP      dV               Z^y)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  |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      `/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/sklearn/ensemble/tests/test_voting.py%test_voting_classifier_estimator_initr9   1   sB    ,  )&)H	z	1 Q  s   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/   r0   AttributeErrorrB   
isinstancevalue	__cause__strhasattrr2   X_scaledr4   )eclf	inner_msg	outer_msg	exec_infos       r8   test_predictproba_hardvotingrN   L   s    .01E;M;O3PQD
 DIEI	~Y	7 9ioo//@@@IOO556666t_---HHXqt_---- s   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)
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1E;M;O3PQD T>#3456D	C  
~S3E-E	F Q	~S3E-E	F 1	~S3E-E	F q	~S3D-D	E S	~S3D-D	E s      s<   E)E5FF
F)E25E>F
FF"c                     t        |       }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.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   si    +=>D!r@RSD<D4L4,>vD T1a<F;;=C    c                     t        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.{   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3DttTl'CF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
      }|j                         dk\  sJ y)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      sm    +=>D!r@RSD<D4L4,>D
 T8Q
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	
      \  }}}}| 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.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,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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        |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.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      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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'(      }|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.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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	7 (9ttTlUDMB6
 	A$$Q'	( ioo//@@@IOO556666( (s   '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#   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
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#   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AD<D4L4,>vD
 u6"#_5F $6a@DHHXq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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.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  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Mrl   c           	         t        |       }t        d|       }t        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 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y).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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  sB   +=>D!r@RSD!#3E"FQVWD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: :< <: :s   9J:K:K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   r3   r4   argsr   s        r8   r2   z5test_sample_weight_kwargs.<locals>.MockClassifier.fitx  s    "m333rl   N)r   r   r   __doc__r2   r.   rl   r8   MockClassifierr   u  s
    O	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  sO    4- 4 
CvFD 	HHQ#a&!3H4rl   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 )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.h0GHH%u':':8'D Aq!,,.$//2CCCCAq!,,.$//2CCCCrl   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)Nrn   rY   r[   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)rD   r   r   ).0ests     r8   	<genexpr>z*test_set_estimator_drop.<locals>.<genexpr>  s"      >A
3+Z89s    "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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	- DFv&9==aCD 
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D D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 )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SD4L4,/!QE 4L4,/&9IRXE 
IIh	IIhH%u':':8'Drl   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.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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rl   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_transformr2   r   r   r   r   rR   )r3   r4   voterrI   y_preds        r8    test_none_estimator_with_weightsr    s    : %LE--a0H	IIh)9I:		IIh)9I:]]8$F<<177"""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                  ||       | j                  dk(  sJ y )	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  s\    & *C
Q!Q!Q AAs,---GGAqM"""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        |       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   r   r2   rer-   
readouterr)r   capsysr3   r4   patterns        r8   test_voting_verboser  N  s|    ( 	4,ttTlS#JGHA
A	=  
)A88GV..03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      }|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   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.1rl   zkwargs, expected_namesrP   )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   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6+;<

 F JJq!q!G,,.I==s>2222y.1rl   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   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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/   r0   r1   r2   )	EstimatorChildr3   r4   s       r8   *test_routing_passed_metadata_not_supportedr3    s{     	1a&1a&1a&)*AA	M
 U 	5%'"#''1IPS'TU U Us   %A,,A5)enable_metadata_routingc                 D     | d |       fg      }|j                          y )Nsub_est)get_metadata_routing)r1  r2  r   s      r8   %test_get_metadata_routing_without_fitr8    s$     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 ]B  }|dk(  r||i}	n||i}	|d   j                  }
t        |
      sJ |
D ]  }t        d|ddd|	  D y)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'8M
 ;y{+;;KtTlK
 ;y{+;;KtTlK		
C CGGAqSTDO,C=RS^^ 	W	?"M*FH%FQ<((8}} 	WG#VeVvV	W	Wrl   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~   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'8M
i)*
+C	!!& 0	6 
 
z=)A	B F1MHEF F Fs   7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 ; (  . E S S 2 * 2 0   G  xyyAaC$++1))!,!8!!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rl   