
    sg{                        U d dl Z d dlZd dlZd dlZd dlmZ d dl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mZ d dlm Z  d dl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z= d dl>m?Z?m@Z@mAZAmBZB d dlCmDZD d dlEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN d dlOmPZP ej                  j                  d      ZSd\  ZTZUeSj                  eTeU      ZWeSj                  d deT      ZYeYdk\  j                  e[      Z\ ej                  eY      Z^eSj                  d deTdf      Z_ e`e_j                  d         D  cg c]  }  ej                  e_dd| f          c} ZbeSj                  d deT      ZceSj                  eT      ZdeSj                  d d eeeY            Zfg eAddeWe_ddgde@dd eWe_ddgdd!ebiid"edd eWeYdgd#d$e?d%d eWe_dgdeBd%deWe_dgde&eWeYd&dd'gd(dgd)e3dd d*d+d,d-giieWeYdgd#d&dd'gd(dgd.e7dd d/d+d,d-giieWeYdgd#d&dd'gd(dgd.e5dd d*d+d,d-giieWeYdgd#d&dd'gd(dgd.e6dd d/d+d,d-giieWeYdgd#d&dd'gd(dgd.e2dd eWe\dgd#d$e8dd eWe\dgd#d$e<dd eWeYddgdd!e^iid"e;dd eWeYddgd#dd!e^iid0e=dd d1dieWeYdgd2edd eWeYddgdd!e^iid"e)eWeYd(dgd3e"eWeYd(dgd3e$eWeYd(dgd3e'eWe_d(dgd3e(eWe_d(dgd3e#eWeYd(dgd3e%eWeYd(dgd3e*ddd4d5ieWeYd#g d6ddd'gid7	e ddd8d9ieWeYdgd2edd eWeYd9dgd:eddeWeYd9dgd:e,eWeYd&dgd;e+eWeYd&dgd;e,eWeYd&dgd(dgd)e+eWeYd&dgd(dgd)eeWeYd(dgd3eddeWeYdd<gd=eDdd eWeYd>g d?ddd'gid@edd eWeYdgd&dgd(dgdA
ed deWeYg d6d=ed ddgd(dgd&dd'geWeYdB
ZgeheidC<   	 egD cg c]  } ej|dD   j                         c}Zl e        e       gZmdE Znd>dFdGZoej                  j                  dem       ed>H      dI               Zrej                  j                  dem       ed>H      dJ               Zs ed>H      dK        Ztej                  j                  dDegelL       ed>H      dM               Zuej                  j                  dDegelL       ed>H      dN               Zvej                  j                  dDegelL       ed>H      dO               Zwej                  j                  dDegelL       ed>H      dP               Zxej                  j                  dDegelL       ed>H      dQ               Zyej                  j                  dDegelL       ed>H      dR               Zzej                  j                  dDegelL       ed>H      dS               Z{yc c} w c c}w )T    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base_estimator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   rU   rV   rW   rX   param_distributions)rG   rH   rC   rI   rJ   rK   rP   rN   random_state)rG   rH   rC   r[   rI   rJ   rK   )rG   rI   rJ   rW   rX   min_samplesg      ?)rE   predictrS   )	rG   rH   rC   r[   rI   rJ   rP   rK   method_mappingskip_completeF)rG   rH   rC   rI   rJ   rP   rK   )rG   rI   rJ   rU   rV   r_   )rG   rC   rH   rI   rJ   rK   T)rE   r_   predict_probapredict_log_probadecision_functionrS   )rG   rH   rC   rI   rJ   rP   rK   r`   )
rG   rH   rC   rI   rJ   rK   rU   rV   rW   rX   )
rG   rC   rH   rK   rW   rX   rU   rV   rI   rJ   METAESTIMATORSrG   c                    | j                  di       }d\  }}d\  }}d\  }}d| v rs| d   }	t               }| d   }
|r-|
dk(  rt        |      }nG|
dk(  rt        |      }n6t	        d      |
dk(  rt               }n|
dk(  rt               }nt	        d      |||	<   d| v r | d   }t               }t        |	      }|||<   d
| v r | d
   }t               }t        |	      }|||<   |||f||f||ffS )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.
    r[   )NNrC   rH   rD   rL   z!Unpermitted `sub_estimator_type`.rU   )registryrW   )	getr8   r3   r2   
ValueErrorr7   r6   r4   r5   )metaestimator_infosub_estimator_consumeskwargsrC   estimator_registryscorerscorer_registryrT   cv_registryrH   sub_estimator_typerU   rW   s                e/var/www/html/venv/lib/python3.12/site-packages/sklearn/tests/test_metaestimators_metadata_routing.pyget_init_argsrs     sI   :  ##K4F$.!I!(FO 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                    |D ]`  }|j                  ||g      D ]H  }t        | d| d      } |di ||i t        | t              s.t	        |       s:|dk(  s@ |d       J b y)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 )rh   getattr
isinstancer   r   )objr`   methodsmetadata_nameru   callercalleeset_request_for_methods           rr   set_requestsr   *  sy    0  	5$((&: 	5F%,SD2I%J""<mU%;<3.!#&m+&t4	5	5rt   )enable_metadata_routingc                     t        j                  t              5  | j                          ddd       y# 1 sw Y   yxY w)zvTest 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    rr   0test_unsupported_estimators_get_metadata_routingr   N  s2    
 
*	+ )&&() ) )s   4=c                     t        j                  t              5  	 | j                  dggdgdg       	 ddd       y# t        $ r t        w xY w# 1 sw Y   yxY w)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    rr   -test_unsupported_estimators_fit_with_metadatar   W  sc     
*	+ &	&MMA3%!QCM8& &  	& &%	&& &s   A>AAAc                      t               } t               }| |usJ | t        j                  |       u sJ | t        j                  |       u sJ y )N)r8   copydeepcopy)abs     rr   test_registry_copyr   f  sK     	AAA::		!a    rt   )idsc                     | d   }t        | d      ^}} |di |}d| v rddgi}nd }t        |j                         |       t        |j                         t              sJ y )	NrG   Trk   rW   splittersplit)excluderz   )rs   r9   r   r|   r;   )rG   metaestimator_classrl   _instancer   s         rr   test_default_requestr   p  ss     (8}TJJFQ",V,HM! y)H99;WMh335~FFFrt   c           
         d| vry | d   }| d   }| d   }| d   }|D ]  }dD ]  }t        | d      ^}\  }}	\  }
}	}	|
r |
j                  di |di t        t        d|   }||i} |di |}d	| d
|j                  j
                   d| }t        j                  t        t        j                  |            5  t        ||      }d|vr4t        || j                  di       dg|        |j                  ||fi | t        || j                  di       dg|d        	  |||fi | d d d          y # t        $ r  ||fi | Y #w xY w# 1 sw Y   <xY w)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   ru   rz   )rs   set_score_requestr   r   	__class____name__r   r   r   reescaper{   r   rh   rE   r   )rG   r   rI   rJ   routing_methodsmethod_namekeyrl   rC   r   rn   valmethod_kwargsr   msgmethods                   rr   0test_error_on_missing_requests_for_sub_estimatorr     s   
 -' 	'8cAcA#$?@O& )/0 (	/C6Cd73FNYKVQ! (((7C;7$1xHMC #JM*4V4HC5 ""+"5"5">">!?qO  7ryy~N / ;7+ !'4'8'89I2'N!&&)	 !HLLA77 #0#4#45Er#J"G"%/1a1=13/ /(	/)/P ! /1../5/ /s+   <A&E#
D<<E	EE	EEc           
         d| vry | d   }| d   }| d   }| d   }| j                  di       }| j                  dd      }|D ]  }d	D ]  }t        t        d	|   }	||	i}
t        | d
      \  }\  }}\  }}\  }}|rt	        |i dg|       |r|j                  dd       t	        |||g|        |di |}t        ||      }| j                  di       j                  |i       }d|vr|j                  ||       	  |||fi |
| |sJ |dk(  r|
j                         nd}|D ]  }t        |f|||d|
    y # t        $ r  ||fi |
| Y Mw xY w)NrC   rG   rI   rJ   rK   r`   rP   Tr   r   rS   r   groupsr   rN   rE   rO   rz   )r   parentsplit_params)rh   r   r   rs   r   set_split_requestr{   rE   r   keysr:   )rG   r   rI   rJ   r   r`   rP   r   r   r   r   rl   rC   rg   rn   r   rT   r   r   extra_method_argsr   s                        rr   3test_setting_request_on_sub_estimator_removes_errorr     s   
 -' 	'8cAcA#$?@O"&&'7<N&**+?F& 20 1	C$1xHMC #JMBOdC?F)Y;FA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	2D  @q?M?->?@s   ;D>>EEc                 t   d| vry d }| d   }| d   }| d   }| d   }|D ]  }t        | d      \  }\  }}	\  }	}	\  }	}	 |di |}
 |||       t        |
|      }| j                  d	i       j                  |i       }d
|vr |
j                  ||fi | 	  |||fi |  y # t        $ r  ||fi | Y w xY w)NrC   c                 L    t        |       r|dk(  r| j                  d       y y y )NrF   Try   )r   set_partial_fit_request)rC   r   s     rr   set_requestz7test_non_consuming_estimator_works.<locals>.set_request  s+    #}(D--d-; )E#rt   rG   rI   rJ   rK   Fr   rN   rE   rz   )rs   r{   rh   rE   r   )rG   r   r   rI   rJ   r   r   rl   rC   r   r   r   r   s                rr   "test_non_consuming_estimator_worksr     s    -' 	<
 (8cAcA#$?@O& +1>%2
.AAA '00I{+;/)--mR@DD[RTU#HLLA3!23	+1a-,-+  	+1*)*	+s   
B""B76B7c           
         d| vry| d   }| d   }| j                  di       }|D ]  }t        | d      \  }\  }}\  }}	\  }
}|j                  d       |
r|
j                  dd	       |t	        |||gd
        |di |}t        ||      }d
t        i}d|vr|j                  t        t                |t        t        fi | |	sJ |	D ]  }t        d|d|dd|   y)ziTest that any requested metadata is correctly routed to the underlying
    scorers in CV estimators.
    rU   NrG   rV   r`   Tr   r   r   r   r   rE   rS   )r}   r   r   r   rz   )rh   rs   r   r   r   r{   r   rE   rI   rJ   r:   )rG   r   r   r`   r   rl   rC   r   rn   rg   rT   r   r   r   _scorers                  rr   +test_metadata_is_routed_correctly_to_scorerr   )  s4    M)'8#$<=O"&&'7<N& >K$?
;A 2GR 	  t 4  t < -$-	 '00;/(-8#LLAq!%}%x 	G# "/	
  	-rt   c           	      ~   d| vry| d   }| d   }| d   }| d   }|D ]  }t        | d      \  }\  }}\  }	}\  }
}|r|j                  dd	       |	r|	j                  dd	       |
j                  dd
        |di |}t        t
        d
}t        ||      } |||fi | |sJ |D ]  }t        d|d|d|   y)zkTest that any requested metadata is correctly routed to the underlying
    splitters in CV estimators.
    rX   NrG   rI   rJ   Tr   Fr   r   r   )r}   r   r   rz   )rs   set_fit_requestr   r   r   r   r{   r:   )rG   r   r   X_y_r   rl   rC   r   rn   rT   rg   r   r   r   	_splitters                   rr   -test_metadata_is_routed_correctly_to_splitterr   W  s    =0'8#$89O	s	B	s	B& >K$?
;A^b( %%EE%J$$55$I
D48&00#)x@;/r2''x! 	I# gkER	rt   c                     d| vry| d   }| d   }| d   }t        | d      ^}}|j                  dd        |ddt        d	
      i|}t        |||dt        it        d	
      t        t        d             y)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.rX   NrG   rI   rJ   Tr   rT      )n_splitsr   r_   )response_method)paramsrT   rR   rz   )rs   popr$   r)   r   r!   r    )rG   r   r   r   rl   r   r   s          rr   &test_metadata_routed_to_group_splitterr   z  s     =0'8	s	B	s	B}TJJFQ
JJtT"Gj!&<GGH

&!q!.	Jrt   )|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   re   list__annotations__strr   METAESTIMATOR_IDSUNSUPPORTED_ESTIMATORSrs   r   markparametrizer   r   r   r   r   r   r   r   r   r   )irows   00rr   <module>r     sO
    	   " 5 6 6 /  8  ,    ; /	 	 	 
  ;
 
 
 :iiB1HHQNKK11KF??3
"))A,
++a!Q+
(38q9I3JKa71a4=)K;;q"1;%	QQ	(Z-% &+]%;Z /%!&+]%;%	='ABZ& 0%!&+W&%Z8 )*!&+W7ZH (* &+WGZX . #('"2$gWZj &%!"WsCj$9:&+W& #('"2$giZF ,%!+gSz-BC&+W& #('"2$gEZb -%!"WsCj$9:&+W& #('"2$gaZ~ /%!+gSz-BC&+W& #('"2$g}ZZ 2%!&+W&YZl 4%!&+W&kZ~ -%!&+]%;%	7';<}ZP ,%!&+]%;&%	7';<	OZd .%!$b)&+WcZv )%!&+]%;%	7';<uZH 5$gGZV &$gUZd !$gcZr /$gqZ@ *$gZN  $gMZ\ %$g[Zj )% #S)&%@ 5'"23
iZ@ *% %u-&+WZR +%!#&+WQZd *% #&+WcZv ! #('uZD + #('CZR ! #('$gQZd + #('$gcZv *$guZD	 4 %&+Y%7C	ZT	 0%!"&
 !5'"23S	Zv	 3%!&+W #('$gu	ZN
 !%%@M
Z^
 !%&+W$g #('"2]
Z Zv
 F DRRCS_-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K LH Ss   ) V9V>