
    -i	}                     .   % S SK r S SKrS SKrS SKrS SKJr  S SKJrJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJrJrJrJr  S SKJr  S S	KJrJr  S S
KJrJrJrJr  S SKJ r   S SK!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,  S SK-J.r.  S SK/J0r0  S SK1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9  S SK:J;r;J<r<J=r=  S SK>J?r?J@r@JArAJBrB  S SKCJDrD  S SKEJFrFJGrGJHrHJIrIJJrJJKrKJLrLJMrMJNrN  S SKOJPrP  \R                  R                  S5      rSSu  rTrU\SR                  \T\U5      rW\SR                  S S\TS9rY\YS:  R                  \[5      r\\R                  " \Y5      r^\SR                  S S\TS4S9r_\`" \_R                  S   5       V s/ s H  n \R                  \_SS2U 4   5      PM     sn rb\SR                  S S\TS9rc\SR                  \T5      rd\SR                  S S\e" \Y5      S9rf/ \ASS\W\_SS/S.P\@SS \W\_SS/SS!\b00S".P\SS \W\YS/S#S$.P\?SS \W\_S/S.P\BSS\W\_S/S.P\&\W\YS%SS&/S'S/S(.P\3SS S)S*S+S,/00\W\YS/S#S%SS&/S'S/S-.P\7SS S.S*S+S,/00\W\YS/S#S%SS&/S'S/S-.P\5SS S)S*S+S,/00\W\YS/S#S%SS&/S'S/S-.P\6SS S.S*S+S,/00\W\YS/S#S%SS&/S'S/S-.P\2SS \W\\S/S#S$.P\8SS \W\\S/S#S$.P\<SS \W\YSS/SS!\^00S".P\;SS \W\YSS/S#SS!\^00S/.P\=SS S0S0\W\YS/S1.P\SS \W\YSS/SS!\^00S".P\)\W\YS'S/S2.P\"\W\YS'S/S2.P\$\W\YS'S/S2.P\'\W\_S'S/S2.P\(\W\_S'S/S2.P\#\W\YS'S/S2.P\%\W\YS'S/S2.P\*SSS3S40\W\YS#/ S5QSSS&/0S6.	P\ SSS7S80\W\YS/S1.P\SS \W\YS8/ S9QS:S;/S:S;// S<QS<.S=.P\SS\W\YS8SS:/S>.P\,\W\YS%S/S?.P\+\W\YS%S/S?.P\,\W\YS%S/S'S/S(.P\+\W\YS%S/S'S/S(.P\\W\YS'S/S2.P\SS\W\YSS:/S@.P\DSS \W\YSA/ SBQSSS&/0S=.P\SS \W\YS/S%S/S'S/SC.
P\S S\W\Y/ S5QS@.P\S SS/S'S/S%SS&/\W\YSD.
Prg\h\iSE'    \g Vs/ s H  n\j" USF   R                  5      PM     snrl\" 5       \" 5       /rmSG rnSASH.SI jro\R                  R                  S\m5      \" SASJ9SK 5       5       rr\R                  R                  S\m5      \" SASJ9SL 5       5       rs\" SASJ9SM 5       rt\R                  R                  SF\g\lSN9\" SASJ9SO 5       5       ru\R                  R                  SF\g\lSN9\" SASJ9SP 5       5       rv\R                  R                  SF\g\lSN9\" SASJ9SQ 5       5       rw\R                  R                  SF\g\lSN9\" SASJ9SR 5       5       rx\R                  R                  SF\g\lSN9\" SASJ9SS 5       5       ry\R                  R                  SF\g\lSN9\" SASJ9ST 5       5       rz\R                  R                  SF\g\lSN9\" SASJ9SU 5       5       r{gs  sn f s  snf )V    N)config_context)BaseEstimatoris_classifier)CalibratedClassifierCV)TransformedTargetRegressor)GraphicalLassoCV)AdaBoostClassifierAdaBoostRegressorBaggingClassifierBaggingRegressor)UnsetMetadataPassedError)enable_halving_search_cvenable_iterative_imputer)RFERFECVSelectFromModelSequentialFeatureSelector)IterativeImputer)ElasticNetCVLarsCVLassoCVLassoLarsCVLogisticRegressionCVMultiTaskElasticNetCVMultiTaskLassoCVOrthogonalMatchingPursuitCVRANSACRegressorRidgeClassifierCVRidgeCV)mean_squared_error)make_scorer)FixedThresholdClassifierGridSearchCV
GroupKFoldHalvingGridSearchCVHalvingRandomSearchCVRandomizedSearchCVTunedThresholdClassifierCVcross_validate)OneVsOneClassifierOneVsRestClassifierOutputCodeClassifier)ClassifierChainMultiOutputClassifierMultiOutputRegressorRegressorChain)SelfTrainingClassifier)	ConsumingClassifierConsumingRegressorConsumingScorerConsumingSplitterNonConsumingClassifierNonConsumingRegressor	_Registryassert_request_is_emptycheck_recorded_metadata)MetadataRouter*   )d         )size   
   	estimator	regressorfitpartial_fit)metaestimatorestimator_namerC   Xyestimator_routing_methods
classifierclasses)rG   rH   rC   rI   rJ   rK   method_argssubset)rG   rH   rC   rI   rJ   rK   preserves_metadatascoringscorecv)rG   rI   rJ   scorer_namescorer_routing_methodscv_namecv_routing_methods
param_gridalphag?g?)rG   rH   rC   	init_argsrI   rJ   rK   rP   rT   rU   rV   rW   param_distributions)rG   rH   rC   rI   rJ   rK   rP   rN   random_state)rG   rH   rC   rZ   rI   rJ   rK   )rG   rI   rJ   rV   rW   min_samplesg      ?)rE   predictrR   )	rG   rH   rC   rZ   rI   rJ   rP   rK   method_mappingskip_completeF)rE   r^   predict_probapredict_log_probadecision_functionr^   ra   )r^   ra   rb   )rG   rH   rC   rI   rJ   rP   rK   r_   )rG   rH   rC   rI   rJ   rP   rK   )rG   rI   rJ   rT   rU   )rG   rC   rH   rI   rJ   rK   T)rE   r^   ra   rb   rc   rR   )
rG   rH   rC   rI   rJ   rK   rT   rU   rV   rW   )
rG   rC   rH   rK   rV   rW   rT   rU   rI   rJ   METAESTIMATORSrG   c                    U R                  S0 5      nSu  p4Su  pVSu  pxSU ;   a{  U S   n	[        5       nU S   n
U(       a/  U
S:X  a  [        U5      nOJU
S:X  a  [        U5      nO8[	        S5      eU
S:X  a  [        5       nOU
S:X  a  [        5       nO[	        S5      eX2U	'   SU ;   a  U S   n[        5       n[        US	9nXRU'   S
U ;   a  U S
   n[        5       n[        US	9nXrU'   UX44XV4Xx44$ )a  Get the init args for a metaestimator

This is a helper function to get the init args for a metaestimator from
the METAESTIMATORS list. It returns an empty dict if no init args are
required.

Parameters
----------
metaestimator_info : dict
    The metaestimator info from METAESTIMATORS

sub_estimator_consumes : bool
    Whether the sub-estimator consumes metadata or not.

Returns
-------
kwargs : dict
    The init args for the metaestimator.

(estimator, estimator_registry) : (estimator, registry)
    The sub-estimator and the corresponding registry.

(scorer, scorer_registry) : (scorer, registry)
    The scorer and the corresponding registry.

(cv, cv_registry) : (CV splitter, registry)
    The CV splitter and the corresponding registry.
rZ   )NNrC   rH   rD   rL   z!Unpermitted `sub_estimator_type`.rT   )registryrV   )	getr8   r3   r2   
ValueErrorr7   r6   r4   r5   )metaestimator_infosub_estimator_consumeskwargsrC   estimator_registryscorerscorer_registryrS   cv_registryrH   sub_estimator_typerT   rV   s                e/var/www/html/venv/lib/python3.13/site-packages/sklearn/tests/test_metaestimators_metadata_routing.pyget_init_argsrr     s5   :  ##K4F$.!I(F OB((+,<=&[/<!![0./AB	#|3/0BC	 !DEE![013	#|324	 !DEE!*~**(7#+ /:${&&$Y/k4w 		'	!		     )valuec                    U Hl  nUR                  XU/5       HS  n[        U SU S35      nU" S0 X40D6  [        U [        5      (       d  M3  [	        U 5      (       d  ME  US:X  d  MM  U" SS9  MU     Mn     g)a  Call `set_{method}_request` on a list of methods from the sub-estimator.

Parameters
----------
obj : BaseEstimator
    The object for which `set_{method}_request` methods are called.

method_mapping : dict
    The method mapping in the form of `{caller: [callee, ...]}`.
    If a "caller" is not present in the method mapping, a one-to-one mapping is
    assumed.

methods : list of str
    The list of methods as "caller"s for which the request for the child should
    be set.

metadata_name : str
    The name of the metadata to be routed, usually either `"metadata"` or
    `"sample_weight"` in our tests.

value : None, bool, or str
    The request value to be set, by default it's `True`
set__requestrF   TrM   N )rg   getattr
isinstancer   r   )objr_   methodsmetadata_namert   callercalleeset_request_for_methods           rq   set_requestsr   5  sq    0 $((:F%,SD2I%J""<m%;<3..!#&&m+&t4 ; rs   )enable_metadata_routingc                     [         R                  " [        5         U R                  5         SSS5        g! , (       d  f       g= f)zrTest that get_metadata_routing is not implemented on meta-estimators for
which we haven't implemented routing yet.N)pytestraisesNotImplementedErrorget_metadata_routingrC   s    rq   0test_unsupported_estimators_get_metadata_routingr   Y  s)    
 
*	+&&( 
,	+	+s	   5
Ac                     [         R                  " [        5          U R                  S//S/S/S9   SSS5        g! [         a    [        ef = f! , (       d  f       g= f)zTest that fit raises NotImplementedError when metadata routing is
enabled and a metadata is passed on meta-estimators for which we haven't
implemented routing yet.rA   sample_weightN)r   r   r   rE   	TypeErrorr   s    rq   -test_unsupported_estimators_fit_with_metadatar   b  sZ     
*	+	&MMA3%!QCM8 
,	+  	& &%	& 
,	+s   A<AA
Ac                      [        5       n [        5       nXLd   eU [        R                  " U 5      L d   eU [        R                  " U 5      L d   eg )N)r8   copydeepcopy)abs     rq   test_registry_copyr   q  sI     	AA::		!a    rs   )idsc                     U S   n[        U SS9tp#U" S0 UD6nSU ;   a  SS/0nOS n[        UR                  5       US9  [        UR                  5       [        5      (       d   eg )	NrG   Trj   rV   splittersplit)excludery   )rr   r9   r   r{   r;   )rG   metaestimator_classrk   _instancer   s         rq   test_default_requestr   {  st     (8}TJJF",V,HM! y)H99;WMh335~FFFFrs   c                    SU ;  a  g U S   nU S   nU S   nU S   nU GH  nS GH  n[        U SS9tnu  pu  n
  n	U
(       a  U
R                  " S0 US0D6  [        [        S.U   nXk0nU" S0 UD6nS	U S
UR                  R
                   SU 3n[        R                  " [        [        R                  " U5      S9   [        X5      nSU;  a0  [        UU R                  S0 5      S/US9  UR                  " X#40 UD6  [        UU R                  S0 5      S/US S9   U" X#40 UD6  S S S 5        GM     GM     g ! [         a    U" U40 UD6   N(f = f! , (       d  f       GM?  = f)NrC   rG   rI   rJ   rK   r   metadataTr   [zJ] are passed but are not explicitly set as requested or not requested for .)matchrE   r_   r_   r}   r~   )r_   r}   r~   rt   ry   )rr   set_score_requestr   r   	__class____name__r   r   r   reescaperz   r   rg   rE   r   )rG   r   rI   rJ   routing_methodsmethod_namekeyrk   rC   r   rm   valmethod_kwargsr   msgmethods                   rq   0test_error_on_missing_requests_for_sub_estimatorr     s   
 -' 	'8cAcA#$?@O&0C6Cd73FNYKVQ! ((7C;7$1xHMC JM*4V4HC5 ""+"5"5">">!?qO  7ryy~N 7+ !'4'8'89I2'N!&&)	 LL77 #0#4#45Er#J"G"%/11=13 ON 1 'P ! /1../5 ONs+   =A E	D::E	EE	E
E#c           
         SU ;  a  g U S   nU S   nU S   nU S   nU R                  S0 5      nU R                  SS5      nU GH  nS	 H  n[        [        S	.U   n	X0n
[        U SS
9u  nu  pu  pu  nnU(       a  [	        U0 S/US9  U(       a  UR                  SSS9  [	        UUU/US9  U" S0 UD6n[        UU5      nU R                  S0 5      R                  U0 5      nSU;  a  UR                  X#5         U" X#40 U
DUD6  U(       d   eUS:X  a  U
R                  5       OSnU H  n[        U4UUUS.U
D6  M     M     GM     g ! [         a    U" U40 U
DUD6   N[f = f)NrC   rG   rI   rJ   rK   r_   rP   Tr   r   rR   r   groupsr   rN   rE   rO   ry   )r   parentsplit_params)rg   r   r   rr   r   set_split_requestrz   rE   r   keysr:   )rG   r   rI   rJ   r   r_   rP   r   r   r   r   rk   rC   rf   rm   r   rS   r   r   extra_method_argsr   s                        rq   3test_setting_request_on_sub_estimator_removes_errorr     s   
 -' 	'8cAcA#$?@O"&&'7<N&**+?F&0C$1xHMC JMBOdC?F)Y;FQ 2yPS $$D4$@ -$!	 +4V4HX{3F - 1 1- D H HR! K'Q"@qB}B0AB O8(:h(F""$B  &	'&&!-	
 $ &U 1 'D  @q?M?->?@s   :E		E! E!c                 t   SU ;  a  g S nU S   nU S   nU S   nU S   nU Hz  n[        U SS9u  nu  pu    n	u    n	U" S0 UD6n
U" X5        [        X5      nU R                  S	0 5      R                  U0 5      nS
U;  a  U
R                  " X440 UD6   U" X440 UD6  M|     g ! [         a    U" U40 UD6   M  f = f)NrC   c                 R    [        U 5      (       a  US:X  a  U R                  SS9  g g g )NrF   Trx   )r   set_partial_fit_request)rC   r   s     rq   set_request7test_non_consuming_estimator_works.<locals>.set_request  s.    ##}(D--d-; )E#rs   rG   rI   rJ   rK   Fr   rN   rE   ry   )rr   rz   rg   rE   r   )rG   r   r   rI   rJ   r   r   rk   rC   r   r   r   r   s                rq   "test_non_consuming_estimator_worksr     s     -' 	<
 (8cAcA#$?@O&1>%2
.AA '00I+/)--mR@DD[RTU#LL3!23	+1-,- '  	+1*)*	+s   	B  B76B7c           
         SU ;  a  gU S   nU S   nU R                  S0 5      nU H  n[        U SS9u  nu  pgu  pu  pUR                  SS9  U
(       a  U
R                  SSS	9  Ub  [	        UUU/S
S9  U" S0 UD6n[        X5      nS
[        0nSU;  a  UR                  [        [        5        U" [        [        40 UD6  U	(       d   eU	 H  n[        SUSUSS.UD6  M     M     g)zaTest that any requested metadata is correctly routed to the underlying
scorers in CV estimators.
rT   NrG   rU   r_   Tr   r   r   r   r   rE   rR   )r|   r   r   r   ry   )rg   rr   r   r   r   rz   r   rE   rI   rJ   r:   )rG   r   r   r_   r   rk   rC   r   rm   rf   rS   r   r   r   _scorers                  rq   +test_metadata_is_routed_correctly_to_scorerr   4  s"    M)'8#$<=O"&&'7<N&>K$?
; 2GR 	  t 4  t < -$-	 '00/(-8#LLAq!%}%xG# "/	
    - 'rs   c           	         SU ;  a  gU S   nU S   nU S   nU S   nU H  n[        U SS9u  nu  pxu  pu  pU(       a  UR                  SSS	9  U	(       a  U	R                  SSS	9  U
R                  SSS
9  U" S0 UD6n[        [
        S
.n[        X5      nU" X440 UD6  U(       d   eU H  n[        SUSUS.UD6  M     M     g)zcTest that any requested metadata is correctly routed to the underlying
splitters in CV estimators.
rW   NrG   rI   rJ   Tr   Fr   r   r   )r|   r   r   ry   )rr   set_fit_requestr   r   r   r   rz   r:   )rG   r   r   X_y_r   rk   rC   r   rm   rS   rf   r   r   r   	_splitters                   rq   -test_metadata_is_routed_correctly_to_splitterr   b  s     =0'8#$89O	s	B	s	B&>K$?
;^b %%EE%J$$55$I
D48&00#)x@/r''x!I# gkER " 'rs   c                     SU ;  a  gU S   nU S   nU S   n[        U SS9tpEUR                  SS5        U" SS[        S	S
90UD6n[        UUUS[        0[        S	S
9[        [        SS9S9  g)zTest that groups are routed correctly if group splitter of CV estimator is used
within cross_validate. Regression test for issue described in PR #29634 to test that
`ValueError: The 'groups' parameter should not be None.` is not raised.rW   NrG   rI   rJ   Tr   rS      )n_splitsr   r^   )response_method)paramsrS   rQ   ry   )rr   popr$   r)   r   r!   r    )rG   r   r   r   rk   r   r   s          rq   &test_metadata_routed_to_group_splitterr     s     =0'8	s	B	s	B}TJJF
JJtT"Gj!&<GGH

&!q!.	Jrs   )|r   r   numpynpr   sklearnr   sklearn.baser   r   sklearn.calibrationr   sklearn.composer   sklearn.covariancer   sklearn.ensembler	   r
   r   r   sklearn.exceptionsr   sklearn.experimentalr   r   sklearn.feature_selectionr   r   r   r   sklearn.imputer   sklearn.linear_modelr   r   r   r   r   r   r   r   r   r   r   sklearn.metrics._regressionr    sklearn.metrics._scorerr!   sklearn.model_selectionr"   r#   r$   r%   r&   r'   r(   r)   sklearn.multiclassr*   r+   r,   sklearn.multioutputr-   r.   r/   r0   sklearn.semi_supervisedr1   %sklearn.tests.metadata_routing_commonr2   r3   r4   r5   r6   r7   r8   r9   r:   sklearn.utils.metadata_routingr;   randomRandomStaterngNMrandrI   randintrJ   astypeinty_binaryuniquerM   y_multirangeshapeclasses_multir   r   lenr   rd   list__annotations__strr   METAESTIMATOR_IDSUNSUPPORTED_ESTIMATORSrr   r   markparametrizer   r   r   r   r   r   r   r   r   r   )irows   00rq   <module>r     sr
    	   " 5 6 6 /  8  ,    ; /	 	 	 
  ;
 
 
 :iiB1HHQNKK11KF??3
))A,
++a!Q+
(38q9I3JK3Ja71a4=)3JK;;q"1;%	QQ	(e-% &+]%;e /%!&+]%;%	='ABe& 0%!&+W&%e8 )%!&+W7eH (% &+WGeX . #('"2$gWej &%!"WsCj$9:&+W& #('"2$gieF ,%!+gSz-BC&+W& #('"2$gEeb -%!"WsCj$9:&+W& #('"2$gae~ /%!+gSz-BC&+W& #('"2$g}eZ 2%!&+W&Yel 4%!&+W&ke~ -%!&+]%;%	7';<}eP ,%!&+]%;&%	7';<	Oed .%!$b)&+Wcev )%!&+]%;%	7';<ueH 5$gGeV &$gUed !$gcer /$gqe@ *$geN  $gMe\ %$g[ej )% #S)&%@ 5'"23
ie@ *% %u-&+WeR +%!#&
 "?3'9!R
Qez *% #&+Y%7yeL ! #('KeZ + #('Yeh ! #('$ggez + #('$gyeL	 *$gK	eZ	 4 %&+Y%7Y	ej	 0%!"&
 !5'"23i	eL
 3%!&+W #('$gK
ed
 !%%@c
et
 !%&+W$g #('"2s
e eL F DRR>CS_-667>R   DN HL !5H &<=-) . >) &<=-
& . >
& -! .! .>OP-G . QG .>OP-6/ . Q6/r .>OP-A . QAH .>OP-"+ . Q"+J .>OP-) . Q)X .>OP- . QB .>OP- . Qa L^ Ss   #"V
V