
    e!h҂                        d Z ddlZddlmZ ddlZddl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mZmZmZmZ dd	lmZmZ dd
lmZmZmZm Z  ddl!m"Z"m#Z# ddl$m%Z%m&Z&m'Z'm(Z( ddl)m*Z*m+Z+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z; ddl<m=Z= ddl>m?Z?m@Z@mAZA ddlBmCZCmDZDmEZE  e       ZFeFj                  eFj                  cZIZJ e       ZKeKj                  eKj                  cZLZM edd      \  ZNZO edd      \  ZPZQej                  j                  dd e+ddd      g      ej                  j                  dd ed      g      ej                  j                  dd dg      d!                      ZTd" ZUd# ZVd$ ZWej                  j                  dd e*ddd      g      ej                  j                  d%di f ed      i f e       d&difg      ej                  j                  dd dg      d'                      ZXej                  j                  d(eCeDz   eEz         d)        ZYej                  j                  d(eCeDz   eEz         d*        ZZd+ Z[ G d, d-ee      Z\ G d. d/ee      Z]ej                  j                  d0eMd1g ie^d2feMd3 e&       fd4 e4d56      fgd7d8e^d9feMd1d3 e&       fd: e]       fgie_d;feMd3 e&       fd: e5d56      fg e]       d<e_d;fg      d=        Z`ej                  j                  d0eJd1g ie^d2feJd1d3 e%       fd: e\       fgie_d;feJd3 e%       fd: e6       fg e\       d<e_d;fg      d>        Zaej                  j                  d? ed3 e&d      fd4 e5d      fg@      eLddA eMddA f e d3 e%       fd4 e6d      fg@      eIeJfgdBdCgD      dE        ZbdF Zcej                  j                  dG ed3 e&       fd4 e5d      fg e&        e*ddH      I      g edJ       e d3 e%       fd4 e6d      fg e%        e*ddH      I      eIeJfgdBdCgD      dK        ZddL Zeej                  j                  dM      ej                  j                  dG ed3 e&       fd4 e5d      fg e&       <      g edJ       e d3 e%       fd4 e6d      fg e%       <      eIeJfgdBdCgD      dN               Zgej                  j                  dOeed7 e&d      eLeMfe edP e%       eIeJfg      dQ        Zhej                  j                  dG ed3 e&       fd4 e4       fgdRS      eLeMf e d3 e%       fd4 e6       fgdRS      eIeJfg      dT        Ziej                  j                  dUeee&fee e%fg      dV        Zjej                  j                  dW e0d       ed      gdXdYgD      dZ        Zkd[ Zlej                  j                  d\d]dPg      ej                  j                  dd dg      d^               Zmej                  j                  d_ ed3 e&d      fd4 e5d      fg@      eKj                  eLeMg d`f ed3 e&d      fdad4 e5d      fg@      eKj                  eLddA eMddA dbdcgf e d3 e%       fd4 e6d      fg@      eFj                  eIeJdddegfgg dfD      ej                  j                  ddd g      dg               Zodh Zpdi Zqej                  j                  djee8fe e9fg      dk        Zrej                  j                  djee8fe e9fg       edl      dm               Zsej                  j                  djee8fe e9fg      ej                  j                  dndo ej                  eLj                  d         fdpg       edl      dq                      Zvej                  j                  djee8fe e9fg       edl      dr               Zwy)sz+Test the stacking classifier and regressor.    N)Mock)assert_array_equal)sparse)config_context)BaseEstimatorClassifierMixinRegressorMixinclone)load_breast_cancerload_diabetes	load_irismake_classificationmake_multilabel_classificationmake_regression)DummyClassifierDummyRegressor)RandomForestClassifierRandomForestRegressorStackingClassifierStackingRegressor)ConvergenceWarningNotFittedError)LinearRegressionLogisticRegressionRidgeRidgeClassifier)KFoldStratifiedKFoldtrain_test_split)KNeighborsClassifier)MLPClassifier)scale)SVC	LinearSVC	LinearSVR)ConsumingClassifierConsumingRegressor	_Registrycheck_recorded_metadata)CheckingClassifier)assert_allcloseassert_allclose_dense_sparseignore_warnings)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERS   *   )	n_classesrandom_state   cvT)n_splitsshuffler4   final_estimatorr4   passthroughFc                    t        t        t              t        t        d      \  }}}}dt	               fdt               fg}t        ||| |      }|j                  ||       |j                  |       |j                  |       |j                  ||      dkD  sJ |j                  |      }	|rdnd}
|	j                  d	   |
k(  sJ |rt        ||	d d d
d f          |j                  d       |j                  ||       |j                  |       |j                  |       ||j                  |       |j                  |      }	|rdnd}|	j                  d	   |k(  sJ |rt        ||	d d d
d f          y y )Nr2   stratifyr4   lrsvc
estimatorsr9   r6   r;   皙?
         dropr?      r1   )r   r"   X_irisy_irisr   r$   r   fitpredictpredict_probascore	transformshaper+   
set_paramsdecision_function)r6   r9   r;   X_trainX_testy_trainy_testrB   clfX_transexpected_column_countexpected_column_count_drops               l/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/sklearn/ensemble/tests/test_stacking.pytest_stacking_classifier_irisr^   C   sv    (8fvR($GVWf +-.	0DEJ
'	C GGGWKKf99VV$s***mmF#G"-B1==4444230NNfNGGGWKKff%mmF#G&1q==9999230     c                     t        d      \  } }t        t        |       ||d      \  }}}}dt               fdt	        d      fg}t        |d	      }|j                  ||       |j                  |      }|j                  d
   dk(  sJ dt               fdt               fg}|j                  |       |j                  ||       |j                  |      }|j                  d
   dk(  sJ y )NT
return_X_yr2   r=   r?   rfr:   r1   rB   r6   rF   r5   r@   rB   )r   r   r"   r   r   r   rM   rQ   rR   r$   rS   )	XyrU   rV   rW   _rB   rY   rZ   s	            r]   :test_stacking_classifier_drop_column_binary_classificationri   q   s    .DAq"2a!ab#GVWa 
!#$	%267J 
q
9CGGGWmmF#G==q    +-.	0DEJNNjN)GGGWmmF#G==q   r_   c                  &   t        t        t              t        t        d      \  } }}}ddt	        d      fg}t        dd      }t        dt	        d      fg|d	
      }t        ||d	
      }|j                  | |       |j                  | |       t        |j                  |      |j                  |             t        |j                  |      |j                  |             t        |j                  |      |j                  |             y )Nr2   r=   r?   rH   r@   r   r:   rD   n_estimatorsr4      rB   r9   r6   )r   r"   rK   rL   r$   r   r   rM   r+   rN   rO   rQ   )rU   rV   rW   rh   rB   rc   rY   clf_drops           r]   'test_stacking_classifier_drop_estimatorrq      s     #3fvR#GVWa !5)*C"DEJ	Rb	AB
I1567C
 "ZPQRHGGGWLL'"CKK')9)9&)ABC%%f-x/E/Ef/MNCMM&)8+=+=f+EFr_   c                     t        t        t              t        d      \  } }}}ddt	        d      fg}t        dd      }t        dt	        d      fg|d	      }t        ||d	      }|j                  | |       |j                  | |       t        |j                  |      |j                  |             t        |j                  |      |j                  |             y )
Nr2   r:   rk   svrr   rD   rl   rn   ro   )r   r"   
X_diabetes
y_diabetesr%   r   r   rM   r+   rN   rQ   )rU   rV   rW   rh   rB   rc   regreg_drops           r]   &test_stacking_regressor_drop_estimatorrx      s     #3j:B#GVWa !5)*C"DEJ	BR	@B
I1567C
 !JqQHGGGWLL'"CKK')9)9&)ABCMM&)8+=+=f+EFr_   zfinal_estimator, predict_params
return_stdc                    t        t        t              t        d      \  }}}}dt	               fdt               fg}t        ||| |      }	|	j                  ||        |	j                  |fi |}
|rdnd}|rt        |
      |k(  sJ |	j                  |      }|rdnd}|j                  d   |k(  sJ |rt        ||d d d	d f          |	j                  d
       |	j                  ||       |	j                  |       |	j                  |      }|rdnd}|j                  d   |k(  sJ |rt        ||d d d	d f          y y )Nr2   r:   r?   rs   rA   r5   rF      rH   rI      )r   r"   rt   ru   r   r%   r   rM   rN   lenrQ   rR   r+   rS   )r6   r9   predict_paramsr;   rU   rV   rW   rh   rB   rv   resultexpected_result_lengthrZ   r[   r\   s                  r]    test_stacking_regressor_diabetesr      sW    #3j:B#GVWa )+,uik.BCJ
'	C GGGWS[[2>2F"0Qa6{4444mmF#G"-B1==444434 01NNfNGGGWKKmmF#G'2==999934 01 r_   sparse_containerc                    t         | t        t                    t        d      \  }}}}dt	               fdt               fg}t        dd      }t        ||dd	      }|j                  ||       |j                  |      }t        ||d d d
d f          t        j                  |      sJ |j                  |j                  k(  sJ y )Nr2   r:   r?   rs   rD   rl   rn   TrA   r|   )r   r"   rt   ru   r   r%   r   r   rM   rQ   r,   r   issparseformat	r   rU   rV   rW   rh   rB   rc   rY   rZ   s	            r]   *test_stacking_regressor_sparse_passthroughr      s    
 #3z*+Zb#GVWa )+,uik.BCJ	BR	@B
raTC GGGWmmF#G CD)9:??7###==GNN***r_   c                    t         | t        t                    t        d      \  }}}}dt	               fdt               fg}t        dd      }t        ||dd	      }|j                  ||       |j                  |      }t        ||d d d
d f          t        j                  |      sJ |j                  |j                  k(  sJ y )Nr2   r:   r?   r@   rD   rl   rn   TrA   rG   )r   r"   rK   rL   r   r$   r   r   rM   rQ   r,   r   r   r   r   s	            r]   +test_stacking_classifier_sparse_passthroughr      s    
 #3v'b#GVWa +-.	0DEJ	Rb	AB
raTC GGGWmmF#G BC9??7###==GNN***r_   c                      t        t        d d       t        d d }} dt               fdt	               fg}t        |      }|j                  | |       |j                  |       }|j                  d   dk(  sJ y )Nd   r?   rc   re   rF   r5   )	r"   rK   rL   r   r   r   rM   rQ   rR   )X_y_rB   rY   X_metas        r]   )test_stacking_classifier_drop_binary_probr     su    
 6$3< &#,B+-.7M7O0PQJ


3CGGBO]]2F<<?ar_   c                       e Zd Zd Zd Zy)NoWeightRegressorc                 X    t               | _        | j                  j                  ||      S N)r   rv   rM   selfrf   rg   s      r]   rM   zNoWeightRegressor.fit  s!    !#xx||Aq!!r_   c                 F    t        j                  |j                  d         S )Nr   )nponesrR   )r   rf   s     r]   rN   zNoWeightRegressor.predict   s    wwqwwqz""r_   N)__name__
__module____qualname__rM   rN    r_   r]   r   r     s    "#r_   r   c                       e Zd Zd Zy)NoWeightClassifierc                 \    t        d      | _        | j                  j                  ||      S )N
stratified)strategy)r   rY   rM   r   s      r]   rM   zNoWeightClassifier.fit%  s#    "L9xx||Aq!!r_   N)r   r   r   rM   r   r_   r]   r   r   $  s    "r_   r   zy, params, type_err, msg_errrB   zInvalid 'estimators' attribute,r?   svmiP  max_iterrO   )rB   stack_methodz+does not implement the method predict_probacorzdoes not support sample weightrB   r9   c           	         t        j                  ||      5  t        di |ddi}|j                  t	        t
              | t        j                  t
        j                  d                d d d        y # 1 sw Y   y xY wNmatchr6   r1   r   sample_weightr   )	pytestraisesr   rM   r"   rK   r   r   rR   )rg   paramstype_errmsg_errrY   s        r]   test_stacking_classifier_errorr   *  se    T 
xw	/ J 060a0fqQ0HIJ J J   AA66A?c           	         t        j                  ||      5  t        di |ddi}|j                  t	        t
              | t        j                  t
        j                  d                d d d        y # 1 sw Y   y xY wr   )	r   r   r   rM   r"   rt   r   r   rR   )rg   r   r   r   rv   s        r]   test_stacking_regressor_errorr   Y  sh    2 
xw	/ R/&/Q/j!1BGGJ<L<LQ<O4PQR R Rr   zestimator, X, yre   r   r   r   )idsc                    t        |       }|j                  t        dt        j                  j                  d                   t        |       }|j                  d       |j                  t        dt        j                  j                  d                   t        |j                  ||      j                  |      d d dd f   |j                  ||      j                  |             y )NTr   r8   r4   r6   rH   rI   rF   )	r
   rS   r   r   randomRandomStater+   rM   rQ   )	estimatorrf   rg   estimator_fullestimator_drops        r]   test_stacking_randomnessr   w  s    : 9%NBII,A,A!,DE   9%N(BII,A,A!,DE   1a **1-ae41a **1-r_   c                      t        dt        d      fdt        d      fg      } | j                  t        t
               y )Nr?   i'  r   r   re   )r   r   r$   rM   rK   rL   )rY   s    r]   )test_stacking_classifier_stratify_defaultr     s<    
%v67Iv./
C GGFFr_   zstacker, X, yr   ro   ra   c                    t        |      dz  }t        j                  dg|z  dgt        |      |z
  z  z         }t        |||d      \  }}}}}	}t	        t
              5  | j                  ||       d d d        | j                  |      }
t	        t
              5  | j                  ||t        j                  |j                               d d d        | j                  |      }t        |
|       t	        t
              5  | j                  |||	       d d d        | j                  |      }t        j                  |
|z
        j                         dkD  sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ^xY w)	Nr5   g?g?r2   r:   )categoryr   r   )r~   r   arrayr   r-   r   rM   rN   r   rR   r+   abssum)stackerrf   rg   n_half_samplestotal_sample_weightrU   rV   rW   rh   sample_weight_trainy_pred_no_weighty_pred_unit_weighty_pred_biaseds                r]    test_stacking_with_sample_weightr     sg   B Vq[N((	##a&>*A!BB ;K	1!;7GVWa!4a 
"4	5 &GW%&v.	"4	5 LGWBGGGMM4JKL 0$&89	"4	5 IGW4GHIOOF+M66"]23779A===& &L LI Is$   !E2E*E6E'*E36E?c                      t        dt        d      fgt        d            } | j                  t        t        t        j                  t        j                  d                y )Nr?   T)expected_sample_weightr   r   r   )r   r*   rM   rK   rL   r   r   rR   )r   s    r]   0test_stacking_classifier_sample_weight_fit_paramr     sJ     -TJKL*$GG KKbggfll1o.FKGr_   z-ignore::sklearn.exceptions.ConvergenceWarningc                    t        |       }t        |       }|j                  d       |j                  d       |j                  ||       |j                  ||       t        |j                  |j                        D ]%  \  }}t        |j                  |j                         ' t        j                  t        d      5  t        |j                  j                  |j                  j                         d d d        y # 1 sw Y   y xY w)Nr1   r   rn   z	Not equalr   )r
   rS   rM   zipestimators_r+   coef_r   r   AssertionErrorfinal_estimator_)r   rf   rg   stacker_cv_3stacker_cv_5est_cv_3est_cv_5s          r]   test_stacking_cv_influencer     s    B >L>Lq!q!QQ ",":":L<T<TU 8(78 
~[	9 
))//1N1N1T1T	

 
 
s   5D  D	z7Stacker, Estimator, stack_method, final_estimator, X, yrN   c                 D   t        ||dd      \  }}}}	d |       j                  ||      fd |       j                  ||      fg}
|
D ]B  \  }}t        d      |_        t        ||      }t        |      }||_        t        |||       D  | |
d	|
      }|j                  ||	       |j                  |
D cg c]  \  }}|	 c}}k(  sJ t        d |j                  D              sJ |j                  D ]  }t        ||      }|j                  |       ! yc c}}w )z2Check the behaviour of stacking when `cv='prefit'`r2   g      ?)r4   	test_sized0d1rM   )name)side_effectprefit)rB   r6   r9   c              3   N   K   | ]  }|j                   j                  d k(    yw)r   N)rM   
call_count).0r   s     r]   	<genexpr>z'test_stacking_prefit.<locals>.<genexpr>Z  s     Ry}}''1,Rs   #%N)	r   rM   r   getattrr   setattrr   allassert_called_with)Stacker	Estimatorr   r9   rf   rg   X_train1X_train2y_train1y_train2rB   rh   r   
stack_funcpredict_method_mockedr   stack_func_mocks                    r]   test_stacking_prefitr   *  s<   . .>	12.*Hh( 
y{x23	y{x23J # @9%(	Y5
 $ < *6&	<)>?@ (OG KK(#"LI9"LLLLRg>Q>QRRRR (( 5	!)\:**845 #Ms   ;Dr   rd   c                     t        j                  t              5  | j                  ||       d d d        y # 1 sw Y   y xY wr   )r   r   r   rM   )r   rf   rg   s      r]   test_stacking_prefit_errorr   b  s3    6 
~	& Aq  s   6?z!make_dataset, Stacking, Estimatorc                     G d d|      } | dd      \  }} |d |       fg      }|j                    d}t        j                  t        |	      5  |j                   d d d        |j                  ||       d
}t        j                  t        |	      5  |j                   d d d        y # 1 sw Y   NxY w# 1 sw Y   y xY w)Nc                   "     e Zd ZdZ fdZ xZS )8test_stacking_without_n_features_in.<locals>.MyEstimatorz Estimator without n_features_in_c                 *    t         |   ||       | `y r   )superrM   n_features_in_)r   rf   rg   	__class__s      r]   rM   z<test_stacking_without_n_features_in.<locals>.MyEstimator.fit  s    GK1#r_   )r   r   r   __doc__rM   __classcell__)r   s   @r]   MyEstimatorr     s    .	$ 	$r_   r  r   r   )r4   	n_samplesr?   re   z' object has no attribute n_features_in_r   z6'MyEstimator' object has no attribute 'n_features_in_')r   r   r   AttributeErrorr   rM   )make_datasetStackingr   r  rf   rg   r   msgs           r]   #test_stacking_without_n_features_inr	    s    $i $ Q#6DAqD+-#8"9:GF
GC	~S	1  KK1
BC	~S	1    s   B.B:.B7:Cr   r!   r   c                    t        t        t        t        d      \  }}}}d}d| fg}t        |t	               d      j                  ||      }|j                  |      }|j                  |j                  d   |fk(  sJ t        t        j                  |j                  d	      d
            rJ |j                  |      }	|	j                  |j                  k(  sJ y)zCheck the behaviour for the multilabel classification case and the
    `predict_proba` stacking method.

    Estimators are not consistent with the output arrays and we need to ensure that
    we handle all cases.
    r2   r=   r1   estrO   rB   r9   r   r   rF   )axisg      ?N)r   X_multilabely_multilabelr   r    rM   rQ   rR   anyr   iscloser   rN   )
r   rU   rV   rW   rX   	n_outputsrB   r   rZ   y_preds
             r]   1test_stacking_classifier_multilabel_predict_probar    s    $ (8l\($GVWf I)$%J ,.$ 
c'7	  'G==V\\!_i88882::gkkqk137888__V$F<<6<<'''r_   c                  h   t        t        t        t        d      \  } }}}d}dt               fg}t	        |t               d      j                  | |      }|j                  |      }|j                  |j                  d   |fk(  sJ |j                  |      }|j                  |j                  k(  sJ y)	zCheck the behaviour for the multilabel classification case and the
    `decision_function` stacking method. Only `RidgeClassifier` supports this
    case.
    r2   r=   r1   r  rT   r  r   N)
r   r  r  r   r   r    rM   rQ   rR   rN   )	rU   rV   rW   rX   r  rB   r   rZ   r  s	            r]   5test_stacking_classifier_multilabel_decision_functionr    s    
 (8l\($GVWf I/+,-J ,.( 
c'7	  'G==V\\!_i8888__V$F<<6<<'''r_   r   autoc                    t        t        t        t        d      \  }}}}|j                         }d}dt	        d      fdt        d      fdt               fg}t               }	t        ||	||       j                  ||      }
t        ||       |
j                  |      }|j                  |j                  k(  sJ | d	k(  rg d
}ndgt        |      z  }|
j                  |k(  sJ |t        |      z  }|r||j                  d   z  }|
j                  |      }|j                  |j                  d   |fk(  sJ t        |
j                   t#        j$                  ddg      g|z         y)zCheck the behaviour for the multilabel classification case for stack methods
    supported for all estimators or automatically picked up.
    r2   r=   r1   mlpr:   rc   ridge)rB   r9   r;   r   r  )rO   rO   rT   rN   rF   r   N)r   r  r  copyr!   r   r   r    r   rM   r   rN   rR   r~   stack_method_rQ   classes_r   r   )r   r;   rU   rV   rW   rX   y_train_before_fitr  rB   r9   rY   r  expected_stack_methodsn_features_X_transrZ   s                  r]   0test_stacking_classifier_multilabel_auto_predictr!    so    (8l\($GVWf !I 
2./	%267	/#$J
 +,O
'!	
 
c'7  )73[[ F<<6<<'''v!X"+s:!> 6666"S_4gmmA..mmF#G==V\\!_.@AAAAs||bhh1v&6%7)%CDr_   z,stacker, feature_names, X, y, expected_names)stackingclassifier_lr0stackingclassifier_lr1stackingclassifier_lr2stackingclassifier_svm0stackingclassifier_svm1stackingclassifier_svm2)otherrH   stackingclassifier_lrstackingclassifier_svmstackingregressor_lrstackingregressor_svm)StackingClassifier_multiclassStackingClassifier_binaryr   c                     | j                  |       | j                  t        |      |       |rt        j                  ||f      }| j                  |      }t        ||       y)z/Check get_feature_names_out works for stacking.)r;   N)rS   rM   r"   r   concatenateget_feature_names_outr   )r   feature_namesrf   rg   expected_namesr;   	names_outs          r]   test_get_feature_names_outr5    sX    D ;/KKa!(GH--m<Iy.1r_   c                     t        t        t              t        t        d      \  } }}}t	        dt               fg      }|j                  | |       |j                  |       |j                  |       |j                  ||      dkD  sJ y)zNCheck that a regressor can be used as the first layer in `StackingClassifier`.r2   r=   r  re   rC   N)
r   r"   rK   rL   r   r   rM   rN   rO   rP   )rU   rV   rW   rX   rY   s        r]   'test_stacking_classifier_base_regressorr7  \  sy    '7fvR($GVWf '57);(<
=CGGGWKKf99VV$s***r_   c                     t        d      \  } }dt               fdt        dd      fg}t        dd      }t        ||d      }d	}d
}t	        j
                  t        |      5 }|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)a
  Check that we raise the proper AttributeError when the final estimator
    does not implement the `decision_function` method, which is decorated with
    `available_if`.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/28108
    r2   r:   r?   rc   r5   rl   r1   ro   z>This 'StackingClassifier' has no attribute 'decision_function'zD'RandomForestClassifier' object has no attribute 'decision_function'r   N)r   r   r   r   r   r   r  rM   rT   
isinstancevalue	__cause__str)rf   rg   rB   r9   rY   	outer_msg	inner_msg	exec_infos           r]   -test_stacking_final_estimator_attribute_errorr@  h  s     B/DAq 
!#$	%12FGJ -!"MO
1C QIVI	~Y	7 +91''*+ioo//@@@IOO556666+ +s   %"CC"zEstimator, Childc                     t        j                  t        d      5   | d |       g      j                  t        t
        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`.z1is only supported if enable_metadata_routing=Truer   rY   )rF   rF   rF   rF   rF   ar   metadataN)r   r   
ValueErrorrM   rK   rL   )r   Childs     r]   *test_routing_passed_metadata_not_supportedrG    sU     
M
 
 	5%'"#''F/C 	( 	

 
 
s   -AA)enable_metadata_routingc                 D     | d |       fg      }|j                          y )Nsub_est)get_metadata_routing)r   rF  r  s      r]   %test_get_metadata_routing_without_fitrL    s$     i)*
+Cr_   zprop, prop_valuer   )rD  rB  c           
          | d  |t                     j                  di |difd  |t                     j                  di |difg  |t                     j                  di |di      } |j                  t        t
        fi ||i  |j                  t        t
        fi ||i  |j                  t        fi ||i |j                  D ]7  }|d   j                  }t        |      sJ |D ]  }t        d|dd|d||i  9 |j                  j                  }t        |      sJ t        d|d	   d
d
|d||i y)z5Test that metadata is routed correctly for Stacking*.sub_est1)registryTsub_est2)r9   rF   rM   )objmethodparentsplit_paramsrN   Nr   )r(   set_fit_requestset_predict_requestrM   rK   rL   fit_transformrN   rB   rO  r~   r)   r   )r   rF  prop
prop_valuer  r   rO  rJ  s           r]   -test_metadata_routing_for_stacking_estimatorsr[    s     ;y{+;;KtTlK
 ;y{+;;KtTlK		
 Hy{3GGW4QU,WC CGGFF1tZ01Cff;z(:;CKK-4,-^^ 	Q<((8}} 	G# "	
 $		 ##,,Hx== RL	
 
r_   c                 T   t        j                  t        j                  d         d}} | d |       fg      }d|j                   d}t        j                  t        t        j                  |            5  |j                  t        t        ||       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   rB  rJ  zb[sample_weight, metadata] are passed but are not explicitly set as requested or not requested for z.fitr   rC  N)r   r   rK   rR   r   r   r   rE  reescaperM   rL   )r   rF  r   rD  r  error_messages         r]   3test_metadata_routing_error_for_stacking_estimatorsr`    s     !ggfll1o68M
i)*
+C	!!& 0	6 
 
z=)A	B PmhOP P Ps   7BB')xr  r]  unittest.mockr   numpyr   r   numpy.testingr   scipyr   sklearnr   sklearn.baser   r   r	   r
   sklearn.datasetsr   r   r   r   r   r   sklearn.dummyr   r   sklearn.ensembler   r   r   r   sklearn.exceptionsr   r   sklearn.linear_modelr   r   r   r   sklearn.model_selectionr   r   r   sklearn.neighborsr    sklearn.neural_networkr!   sklearn.preprocessingr"   sklearn.svmr#   r$   r%   %sklearn.tests.metadata_routing_commonr&   r'   r(   r)   sklearn.utils._mockingr*   sklearn.utils._testingr+   r,   r-   sklearn.utils.fixesr.   r/   r0   diabetesdatatargetrt   ru   irisrK   rL   r  r  X_binaryy_binarymarkparametrizer^   ri   rq   rx   r   r   r   r   r   r   rE  	TypeErrorr   r   r   r   r   r   filterwarningsr   r   r   r	  r  r  r!  r2  r5  r7  r@  rG  rL  r   rR   r[  r`  r   r_   r]   <module>r     s   1
 
    ,  " N N  :  B  M L 2 0 ' 1 1  6 
 O N?! 
J{DKK;b l )12F ( 1oq$RH
I 4"EF 6$1 7$1N!6G,G* 5!TPR#STU%	r
	B	/4		L$/0 6!2 7 V!2H 7.H++" 7.H++" # #"- " "	,#Z1RS -/0C01 !0 9	
 -/0.01 ,
	
  -/0Iv67 $6#7 ,	
3%(RJS(RJ "	lB'5VWT#3#56@Q@S8TUV,		
  +-.IK( $5#6 ,	
0R10R  -1=>I156 4CL4CL		
 +-.I156 		
, 
231  454(
  -/0I267 !3 4B7
	
  40
	
 +-.I267 !1 2B7 	
2 
237  :>;:>:H KL -/0I267 !3 4		
  40		
 +-.I267 !1 2 
	
. 
233  6
7 M8
2 = B/	
 	
* 5+* 5F  !#5#785#%.I 	
 +-.IK(  
	
010 '	02DE	+-=>4  	2& 	B/ 
23  
(
(8(0 &))<=6*E 7 >*EZ 2 -1=>I156 	
( -1=>%I156 4CL4CL'(	
" +-.I156 ""&'	
I3h	m  ;x u62 7y;z2	+7B 	01	./	
	
 	01	./ - . 	01	./ /72776<<?+CDFWX -+ .+\ 	01	./ -P .Pr_   