
    ri                        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&d%d&d'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d0e7dd d1d-d.d/giieWeYdgd#d(dd)gd*dgd0e5dd d,d-d.d/giieWeYdgd#d(dd)gd*dgd0e6dd d1d-d.d/giieWeYdgd#d(dd)gd*dgd0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d2e=dd d3dieWeYdgd4edd eWeYddgdd!e^iid"e)eWeYd*dgd5e"eWeYd*dgd5e$eWeYd*dgd5e'eWe_d*dgd5e(eWe_d*dgd5e#eWeYd*dgd5e%eWeYd*dgd5e*ddd6dd7eWeYd#g d8ddd)gid9	e ddd:d%ieWeYdgd4edd eWeYd%dd;gfd<d=d>d?gd<d=gd<d=gg d@d@dAeddeWeYd%dd;gfd<gdBe,eWeYd(dgdCe+eWeYd(dgdCe,eWeYd(dgd*dgdDe+eWeYd(dgd*dgdDeeWeYd*dgd5eddeWeYdd<gdEeDdd eWeYdFg dGddd)gidAedd eWeYdgd(dgd*dgdH
ed deWeYg d8dEed ddgd*dgd(dd)geWeYdI
ZgeheidJ<   	 egD cg c]  } ej|dK   j                         c}Zl e        e       gZmdL ZndM ZodFdNdOZpej                  j                  dem       edFP      dQ               Zsej                  j                  dem       edFP      dR               Zt edFP      dS        Zuej                  j                  dKegelT       edFP      dU               Zvej                  j                  dKegelT       edFP      dV               Zwej                  j                  dKegelT       edFP      dW               Zxej                  j                  dKegelT       edFP      dX               Zyej                  j                  dKegelT       edFP      dY               Zzej                  j                  dKegelT       edFP      dZ               Z{ej                  j                  dKegelT       edFP      d[               Z|yc c} w c c}w )\    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_metadataF)r   )use_legacy_attributes	l1_ratiosscoringscorecv)rG   	init_argsrI   rJ   scorer_namescorer_routing_methodscv_namecv_routing_methods
param_gridalphag?g?)rG   rH   rC   rV   rI   rJ   rK   rP   rW   rX   rY   rZ   param_distributions)rG   rH   rC   rI   rJ   rK   rP   rN   random_state)rG   rH   rC   rV   rI   rJ   rK   )rG   rI   rJ   rY   rZ   g      ?)min_samples
max_trials)rE   predictrT   )	rG   rH   rC   rV   rI   rJ   rP   rK   method_mappingskip_completemetadatara   predict_probapredict_log_probadecision_function)ra   re   rf   )rG   rH   rC   rI   rJ   rP   rK   rb   )rG   rH   rC   rI   rJ   rP   rK   )rG   rI   rJ   rW   rX   )rG   rI   rJ   rW   rX   rY   rZ   )rG   rC   rH   rI   rJ   rK   T)rE   ra   re   rf   rg   rT   )
rG   rH   rC   rI   rJ   rK   rW   rX   rY   rZ   )
rG   rC   rH   rK   rY   rZ   rW   rX   rI   rJ   METAESTIMATORSrG   c                    | j                  di       j                         }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.
    rV   )NNrC   rH   rD   rL   z!Unpermitted `sub_estimator_type`.rW   )registryrY   )
getcopyr8   r3   r2   
ValueErrorr7   r6   r4   r5   )metaestimator_infosub_estimator_consumeskwargsrC   estimator_registryscorerscorer_registryrU   cv_registryrH   sub_estimator_typerW   rY   s                p/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/sklearn/tests/test_metaestimators_metadata_routing.pyget_init_argsrw     sR   >  ##K499;F$.!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 		&'	!	[	     c                 j    t               }| D ]#  }t        |t              r|}ddg}n|\  }}|||<   % |S )a  Process estimator_routing_methods and return a dict.

    Parameters
    ----------
    estimator_routing_methods : list of str or tuple
        The estimator_routing_methods info from METAESTIMATORS.

    Returns
    -------
    routing_methods : dict
        The dictionary is of the form {"method": ["metadata", ...]}.
        It specifies the list of metadata keys for each routing method.
        By default the list includes `sample_weight` and `metadata`.
    sample_weightrd   )dict
isinstancestr)rK   resmethod_specmethodrd   s        rv   "filter_metadata_in_routing_methodsr   >  sM     &C0 k3' F'4H*FHF Jrx   )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 )rk   getattrr|   r   r   )objrb   methodsmetadata_namer   callercalleeset_request_for_methods           rv   set_requestsr   X  sy    0  	5$((&: 	5F%,SD2I%J""<mU%;<3.!#&m+&t4	5	5rx   )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    rv   0test_unsupported_estimators_get_metadata_routingr   |  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   rz   N)r   r   r   rE   	TypeErrorr   s    rv   -test_unsupported_estimators_fit_with_metadatar     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   rl   deepcopy)abs     rv   test_registry_copyr     sK     	AAA::		!a    rx   )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ro   rY   splittersplit)excluder   )rw   r9   r   r|   r;   )rG   metaestimator_classrp   _instancer   s         rv   test_default_requestr     ss     (8}TJJFQ",V,HM! y)H99;WMh335~FFFrx   c           
         d| vry | d   }| d   }| d   }t        | d         }|j                         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   Tr   rz   rd   [zJ] are passed but are not explicitly set as requested or not requested for .)matchrE   rb   rb   r   r   )rb   r   r   r   r   )r   itemsrw   set_score_requestrz   rd   	__class____name__r   r   r   reescaper   r   rk   rE   r   )rG   r   rI   rJ   routing_methodsmethod_namemetadata_keyskeyrp   rC   r   rr   valmethod_kwargsr   msgr   s                    rv   0test_error_on_missing_requests_for_sub_estimatorr     s   
 -' 	'8cAcA812O '6&;&;&= )/"]  (	/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.=
EE+	(E.*E+	+E..E8c           
         d| vry | d   }| d   }| d   }t        | d         }| j                  di       }| j                  dd      }|j                         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   rb   rP   Tr   r   rT   r   groupsrd   rN   rE   rO   r   )r   parentsplit_params)r   rk   r   rz   rd   rw   r   set_split_requestr   rE   r   keysr:   )rG   r   rI   rJ   r   rb   rP   r   r   r   r   r   rp   rC   rj   rr   r   rU   r   r   extra_method_argsr   s                         rv   3test_setting_request_on_sub_estimator_removes_errorr     s   
 -' 	'8cAcA812O #&&'7<N&**+?F&5&;&;&= 2"]  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   EE/.E/c                    d| vry d }| d   }| d   }| d   }t        | 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   Tr   )r   set_partial_fit_request)rC   r   s     rv   set_requestz7test_non_consuming_estimator_works.<locals>.set_request?  s+    #}(D--d-; )E#rx   rG   rI   rJ   rK   Fr   rN   rE   r   )r   rw   r   rk   rE   r   )rG   r   r   rI   rJ   r   r   rp   rC   r   r   r   r   s                rv   "test_non_consuming_estimator_worksr   4  s    -' 	<
 (8cAcA812O ' +1>%2
.AAA '00I{+;/)--mR@DD[RTU#HLLA3!23	+1a-,-+  	+1*)*	+s   
B++C ?C 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.
    rW   NrG   rX   rb   Tr   r   r   rz   r   rE   rT   )r   r   r   r   r   )rk   rw   r   r   r   r   rz   rE   rI   rJ   r:   )rG   r   r   rb   r   rp   rC   r   rr   rj   rU   r   r   r   _scorers                  rv   +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# "/	
  	-rx   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.
    rZ   NrG   rI   rJ   Tr   Fr   r   r   )r   r   r   r   )rw   set_fit_requestr   r   r   rd   r   r:   )rG   r   r   X_y_r   rp   rC   r   rr   rU   rj   r   r   r   	_splitters                   rv   -test_metadata_is_routed_correctly_to_splitterr     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	rx   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.rZ   NrG   rI   rJ   Tr   rU      )n_splitsr   ra   )response_method)paramsrU   rS   r   )rw   popr$   r)   r   r!   r    )rG   r   r   r   rp   r   r   s          rv   &test_metadata_routed_to_group_splitterr     s     =0'8	s	B	s	B}TJJFQ
JJtT"Gj!&<GGH

&!q!.	Jrx   )}rl   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_multird   rz   lenr   rh   list__annotations__r}   r   METAESTIMATOR_IDSUNSUPPORTED_ESTIMATORSrw   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   )irows   00rv   <module>r
     s
    	   " 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	(f-% &+]%;f /%!&+]%;%	='ABf& 0%!&+W&%f8 )%!&+W7fH (% &+WGfX ./44H #('"2$g	Wfl &%!"WsCj$9:&+W& #('"2$gkfH ,%!+gSz-BC&+W& #('"2$gGfd -%!"WsCj$9:&+W& #('"2$gcf@ /%!+gSz-BC&+W& #('"2$gf\ 2%!&+W&[fn 4%!&+W&mf@ -%!&+]%;%	7';<fR ,%!&+]%;&%	7';<	Qff .%!$b)&+Wefx )%!&+]%;%	7';<wfJ 5$gIfX &$gWff !$geft /$gsfB *$gAfP  $gOf^ %$g]fl )% %(;&%@ 5'"23
kfB *% %u-&+WAfT +%!#ZL!&
 "?3'9!R
Sf| *% #',zl&;Y%G{fN ! #('Mf\ + #('[fj ! #('$gif| + #('$g{fN	 *$gM	f\	 4 %&+Y%7[	fl	 0%!"&
 !5'"23k	fN
 3%!&+W #('$gM
ff
 !%%@e
fv
 !%&+W$g #('"2u
f fN&R DRRCS_-667R   FR4 HL !5H &<=-) . >) &<=-
& . >
& -! .! .>OP-G . QG .>OP-8/ . Q8/v .>OP-C . QCL .>OP-#+ . Q#+L .>OP-) . Q)X .>OP- . QB .>OP- . Qq Ll Ss   ) W"W