
    rhkk                     6   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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l0m1Z1m2Z2m3Z3  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       gidfdd e       f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* ZLd+ ZMd, ZNd- ZOd. ZPd/ ZQd0 ZRe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        ZSe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=        ZTe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        ZUdB ZVej~                  j                  dCdDddEg dFfdGdHidIdJgfg      dK        ZWdL ZXej~                  j                  dMee)fee*fg      dN        ZYej~                  j                  dMee)fee*fg       edO      dP               ZZej~                  j                  dMee)fee*fg      ej~                  j                  dQdRdSg       edO      dT                      Z[ej~                  j                  dMee)fee*fg       edO      dU               Z\y)Vz4Testing for the VotingClassifier and VotingRegressor    N)config_contextdatasets)BaseEstimatorClassifierMixinclone)make_multilabel_classification)DummyRegressor)RandomForestClassifierRandomForestRegressorVotingClassifierVotingRegressor)NotFittedError)LinearRegressionLogisticRegression)GridSearchCVcross_val_scoretrain_test_split)OneVsRestClassifier)
GaussianNB)KNeighborsClassifier)StandardScaler)SVC)ConsumingClassifierConsumingRegressor	_Registrycheck_recorded_metadata)DecisionTreeClassifierDecisionTreeRegressor)assert_almost_equalassert_array_almost_equalassert_array_equal      T)
return_X_yzparams, err_msg
estimatorszGInvalid 'estimators' attribute, 'estimators' should be a non-empty list   lr   )r%   weightsz0Number of `estimators` and weights must be equalc                     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      u/var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/sklearn/ensemble/tests/test_voting.py%test_voting_classifier_estimator_initr8   0   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.   r/   AttributeErrorrA   
isinstancevalue	__cause__strhasattrr1   X_scaledr3   )eclf	inner_msg	outer_msg	exec_infos       r7   test_predictproba_hardvotingrM   K   s    .01E;M;O3PQD
 DIEI	~Y	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.   r/   r   predictr2   rA   	transformX_r)rI   eregmsgs      r7   test_notfittedrV   ]   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_estimatorsrY   r'   rfgnbr<   r=   accuracyscoring?N)r   r
   r   r   r   r2   r3   meanglobal_random_seedclf1clf2clf3rI   scoress         r7   test_majority_label_irisrj   s   si    +=>D!r@RSD<D4L4,>vD T1a<F;;=C    c                     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.{   rX   r'   r]   r<   r=   4   r(   r"   N)r   r
   r   r1   r2   r3   rQ   )rf   rg   rI   s      r7   test_tie_situationro      s    3/D!s3DttTl'CFSD88Aq>!!!$R(A---88Aq>!!!$R(A---88Aq>!!!$R(A---rk   c                     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.rX   rZ   r[   r'   r]   r^   rO   r"   r(   rZ   r%   r>   r)   r_   r`   rb   N)r   r
   r   r   r   rH   r3   rc   rd   s         r7   test_weights_irisrs      sm    +=>D!r@RSD<D4L4,>D
 T8Q
CF;;=Crk   c                  <   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皙?)ru   rw   rq   )r)   g      ?)	test_sizer   )axisr)   r(   decimalNr"   r"   r"   )r	   r   r   rS   y_rr1   rQ   npaverageasarrayr   )reg1reg2reg3rT   	X_r_trainX_r_test	y_r_trainy_r_test	reg1_pred	reg2_pred	reg3_pred	ereg_predavgereg_weights_noneereg_weights_equalereg_none_predereg_equal_preds                    r7   test_weights_regressorr      s   6*D8,D:<D
$(D)J+=>
D 0@SD0,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.rX   rZ   r[   皙      333333ffffff333333皙皙?333333?g @gffffff?g@gffffff@)r"   r"   r"   r(   r(   r(   r'   r]   r^   r<   r}   rr   rO   N)	r   r
   r   r   arrayr!   r1   rQ   r   )re   rf   rg   rh   r2   r3   rI   s          r7   test_predict_on_toy_problemr      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   rX   r   r   r   r   r   r   r   r   r"   r"   r(   r(   g7sa"?g=?gRhp?gℶZ/?gl^Ԭ;?g(1BW?gU(V6?g&d?g?rx   333333?ffffff?g5w?g9=qX?g_?g$/AY?              ?r(   r      r"   r#   r'   r]   r^   rO   )r(   r"   r"   rr   r{   r?   r@   r+   r<   r=   N)r   r
   r   r   r   r   r1   rA   r   r.   r/   rB   rC   rD   rE   rF   )rf   rg   rh   r2   r3   clf1_resclf2_resclf3_rest00t11t21t31rI   eclf_resrJ   rK   rL   s                    r7   !test_predict_proba_on_toy_problemr      s   3/D!s3D<D
4,ttTlS#JGHA
Axx$$$$		
H xx#sc3Z#sc3ZHIHxx
Y	*j!9C:SzRH x{1~A.!Q?1
DCx{1~A.!Q?1
DCx{1~A.!Q?1
DCx{1~A.!Q?1
DC4L4,>D
 xx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"   Frm   )	n_classesn_labelsallow_unlabeledrY   linear)kernelovrr<   r=   N)r   r   r   r   r1   NotImplementedError)r2   r3   clfrI   s       r7   test_multilabelr     s`    )aS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"   rX   r#   )rY   r\   r'   r]   r^   rO   r=   r   g      Y@r<   )      ?r   r   )r   r   r   )lr__Cr>   r)   r(   )	estimator
param_gridcvN)r   r
   r   r   r   r1   rH   r3   )rf   rg   rh   rI   r4   grids         r7   test_gridsearchr     s    1-D!qqAD<D4L4,>vD
 u6"#_5F $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.rX   rZ   r[   r   r   r   r   r   r   r   r   r   r'   r]   r^   rO   r"   )r%   r>   n_jobsr(   N)r   r
   r   r   r   r   r1   r!   rQ   r    rA   )re   rf   rg   rh   r2   r3   eclf1eclf2s           r7   test_parallel_fitr   1  s    +=>D!r@RSD<D
4,ttTlS#JGHA
A4L4,>vVW	c!Qi 
 4L4,>vVW	c!Qi 
 u}}Q'q)9:e11!4e6I6I!6LMrk   c           	         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 VotingClassifierrX   rZ   r[   T)probabilityrY   r'   r]   svcrO   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)selfrH   r3   r   s       r7   r1   z2test_sample_weight.<locals>.ClassifierErrorFit.fiti  s    ?@@rk   N)__name__
__module____qualname__r1   r-   rk   r7   ClassifierErrorFitr   h  s    	Ark   r   z Error unrelated to sample_weight)r   r
   r   r   r1   rH   r3   r   oneslenr!   rQ   r    rA   randomRandomStateuniformr   r.   r/   r   r   r   )re   rf   rg   rh   r   r   r   eclf3clf4rU   r   r   s               r7   test_sample_weightr   D  s<   +=>D!r@RSD4.@AD4L4,>v	c(ARWWc!fY%7c8 
 4L4,>v	c(A 
 u}}X.h0GHH%u':':8'D II))*<=EECPQF9EUM$vFE	IIhI7HHXq-(u}}X.X0FGH%t'9'9('C  !D4L5$-%?E WC	y	, <		(A]	;<
A_m A 
C	y(J	K :!=9: :< <: :s   /J0
J<0J9<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   r2   r3   argsr   s        r7   r1   z5test_sample_weight_kwargs.<locals>.MockClassifier.fitw  s    "m333rk   N)r   r   r   __doc__r1   r-   rk   r7   MockClassifierr   t  s
    O	4rk   r   mockrO   r=   r   N)	r   r   r   r1   r2   r3   r   r   r   )r   r   rI   s      r7   test_sample_weight_kwargsr   q  sO    4- 4 
CvFD 	HHQ#a&!3H4rk   c                    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 )NrX   rZ   )r\   rY   	max_depthr'   r]   rO   r"   r(   )r>   r)   nb)r   r   )r   r
   r   r   r1   rH   r3   
set_paramsr!   rQ   r    rA   r%   
get_params)re   rf   rg   rh   r   r   s         r7   !test_voting_classifier_set_paramsr     s:   +=>D!&8DD <D
d|$VaV	c(A 
 
d|$VaVE 
!!(A.u}}X.h0GHH%u':':8'D Aq!,,.$//2CCCCAq!,,.$//2CCCCrk   c            	         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   rX   rZ   r[   r'   r]   r   r<   )r"   r   r   rr   )r"   r"   r   drop)r]   r(   c              3   H   K   | ]  }t        |t        t        f        y w)N)rC   r   r   ).0ests     r7   	<genexpr>z*test_set_estimator_drop.<locals>.<genexpr>  s"      >A
3+Z89s    "rO   )r>   z4All estimators are dropped. At least one is requiredr+   )r'   r]   r   r"   r   r   F)r%   r>   r)   flatten_transformr   r   r   r   )r   r
   r   r   r1   r2   r3   r   r!   rQ   dictr%   r   estimators_allr   r    rA   r.   r/   r0   r   r   rR   )rf   rg   rh   r   r   rU   X1y1s           r7   test_set_estimator_dropr     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 )NrX   rZ   r[   r'   r]   r"   r(   rO   )r%   r)   r>   )r"   r(   )
r   r
   r   r   r   r1   rH   r3   r    rA   )re   rf   rg   r   r   s        r7   test_estimator_weights_formatr     s    +=>D!r@RSD4L4,/!QE 4L4,/&9IRXE 
IIh	IIhH%u':':8'Drk   c                 f   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.rX   rZ   r[   r   r   r   r   r   r   r   r   r   r'   r]   r^   rO   r=   Tr%   r>   r   F)r      )r#   r   r(   r   r"   N)r   r
   r   r   r   r   r1   r!   rR   shaper    swapaxesreshape)	re   rf   rg   rh   r2   r3   r   r   r   s	            r7   test_transformr    s   +=>D!r@RSD<D
4,ttTlS#JGHA
A4L4,>v	c!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_transformr1   r   r   r   r   rQ   )r2   r3   voterrH   y_preds        r7    test_none_estimator_with_weightsr  
  s    : %LE--a0H	IIh)9I:		IIh)9I:]]8$F<<177"""rk   r   treerX   r%   r   r   )idsc                     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_)rG   r1   r  )r   r2   r3   s      r7   test_n_features_inr  1  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
}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   r1   rer,   
readouterr)r   capsysr2   r3   patterns        r7   test_voting_verboser  L  s|    ( 	4,ttTlS#JGHA
A	=  
)A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   rX   )ignorer   r	  votingregressor_lrvotingregressor_treeN)r   r   r   r1   get_feature_names_outr!   )r2   r3   r>   	names_outexpected_namess        r7   %test_get_features_names_out_regressorr  k  s     Q!Q!Q AA#%&*:;
F JJq!,,.I*,BCNy.1rk   zkwargs, expected_namesrO   )r>   r   )votingclassifier_lr0votingclassifier_lr1votingclassifier_lr2votingclassifier_tree0votingclassifier_tree1votingclassifier_tree2r>   r<   votingclassifier_lrvotingclassifier_treec           	      .   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   rX   r  Nr-   )	r   r   r   r1   rR   r  r   r   r!   )kwargsr  r2   r3   r>   X_transr  s          r7   &test_get_features_names_out_classifierr)    s    & Q!Q!Q!S*AA %156+;<

 F JJq!q!G,,.I==s>2222y.1rk   c                     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   rX   r  rO   Fr   zYget_feature_names_out is not supported when `voting='soft'` and `flatten_transform=False`r+   N)r   r   r   r1   r.   r/   r0   r  )r2   r3   r>   rU   s       r7   ,test_get_features_names_out_classifier_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/   r0   r1   )	EstimatorChildr2   r3   s       r7   *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      r7   %test_get_metadata_routing_without_fitr8    s$     i)*
+Crk   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   r1   )objmethodparentNr-   )	r   r   r   set_fit_requestr1   r%   r<  r   r   )r1  r2  r9  r2   r3   r   r0  r   r   r'  r<  r6  s               r7   +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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}   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.   r/   r0   r  escaper1   )r1  r2  r2   r3   r   r0  r   error_messages           r7   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.datasetsr   sklearn.dummyr	   sklearn.ensembler
   r   r   r   sklearn.exceptionsr   sklearn.linear_modelr   r   sklearn.model_selectionr   r   r   sklearn.multiclassr   sklearn.naive_bayesr   sklearn.neighborsr   sklearn.preprocessingr   sklearn.svmr   %sklearn.tests.metadata_routing_commonr   r   r   r   sklearn.treer   r   sklearn.utils._testingr   r    r!   	load_irisirisdatatargetr2   r3   r  rH   load_diabetesrS   r~   markparametrizer8   rM   rV   rj   ro   rs   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r)  r+  r3  r8  rB  rF  r-   rk   r7   <module>r_     s   : 	   , > > ; (  . 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rk   