
    Pi                     0   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jQ        R                    d          ZSd\  ZTZUeSV                    eTeU          ZWeSX                    d deT          ZYeYdk    Z                    e[          Z\ ej]        eY          Z^eSX                    d deTdf          Z_d  e`e_ja        d                   D             ZbeSX                    d deT          ZceSV                    eT          ZdeSX                    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/d0giieWeYdgd$d)dd*gd+dgd1e7dd!d2d.d/d0giieWeYdgd$d)dd*gd+dgd1e5dd!d-d.d/d0giieWeYdgd$d)dd*gd+dgd1e6dd!d2d.d/d0giieWeYdgd$d)dd*gd+dgd1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d3e=dd!d4dieWeYdgd5edd!eWeYddgdd"e^iid#e)eWeYd+dgd6e"eWeYd+dgd6e$eWeYd+dgd6e'eWe_d+dgd6e(eWe_d+dgd6e#eWeYd+dgd6e%eWeYd+dgd6e*ddd7dd8eWeYd$g d9ddd*gid:	e ddd;d&ieWeYdgd5edd!eWeYd&dd<gfd=d>d?d@gd=d>gd=d>gg dAdAdBeddeWeYd&dd<gfd=gdCe,eWeYd)dgdDe+eWeYd)dgdDe,eWeYd)dgd+dgdEe+eWeYd)dgd+dgdEeeWeYd+dgd6eddeWeYdd=gdFeDdd!eWeYdGg dHddd*gidBedd!eWeYdgd)dgd+dgdI
ed!deWeYg d9dFed!ddgd+dgd)dd*geWeYdJ
ZgeheidK<   	 dL egD             Zj e             e            gZkdM ZldN ZmdGdOdPZnejo        p                    dek           edGQ          dR                         Zqejo        p                    dek           edGQ          dS                         Zr edGQ          dT             Zsejo        p                    dUegejV           edGQ          dW                         Ztejo        p                    dUegejV           edGQ          dX                         Zuejo        p                    dUegejV           edGQ          dY                         Zvejo        p                    dUegejV           edGQ          dZ                         Zwejo        p                    dUegejV           edGQ          d[                         Zxejo        p                    dUegejV           edGQ          d\                         Zyejo        p                    dUegejV           edGQ          d]                         ZzdS )^    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   c                 T    g | ]%}t          j        t          d d |f                   &S N)npuniquey_multi).0is     /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sklearn/tests/test_metaestimators_metadata_routing.py
<listcomp>rJ   W   s.    KKKa7111a4=))KKK    
   	estimator	regressorfitpartial_fit)metaestimatorestimator_namerM   Xyestimator_routing_methods
classifierclasses)rQ   rR   rM   rS   rT   rU   method_argssubset)rQ   rR   rM   rS   rT   rU   preserves_metadataF)r   )use_legacy_attributes	l1_ratiosscoringscorecv)rQ   	init_argsrS   rT   scorer_namescorer_routing_methodscv_namecv_routing_methods
param_gridalphag?g?)rQ   rR   rM   r`   rS   rT   rU   rZ   ra   rb   rc   rd   param_distributions)rQ   rR   rM   rS   rT   rU   rZ   rX   random_state)rQ   rR   rM   r`   rS   rT   rU   )rQ   rS   rT   rc   rd   g      ?)min_samples
max_trials)rO   predictr^   )	rQ   rR   rM   r`   rS   rT   rZ   rU   method_mappingskip_completemetadatark   predict_probapredict_log_probadecision_function)rk   ro   rp   )rQ   rR   rM   rS   rT   rZ   rU   rl   )rQ   rR   rM   rS   rT   rZ   rU   )rQ   rS   rT   ra   rb   )rQ   rS   rT   ra   rb   rc   rd   )rQ   rM   rR   rS   rT   rU   T)rO   rk   ro   rp   rq   r^   )
rQ   rR   rM   rS   rT   rU   ra   rb   rc   rd   )
rQ   rM   rR   rU   rc   rd   ra   rb   rS   rT   METAESTIMATORSc                 B    g | ]}t          |d          j                  S )rQ   )str__name__)rG   rows     rI   rJ   rJ     s(    RRRCS_-677RRRrK   c                 ~   |                      di                                           }d\  }}d\  }}d\  }}d| v r| d         }	t                      }| d         }
|r;|
dk    rt          |          }n^|
dk    rt	          |          }nHt          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`   )NNrM   rR   rN   rV   z!Unpermitted `sub_estimator_type`.ra   )registryrc   )
getcopyr8   r3   r2   
ValueErrorr7   r6   r4   r5   )metaestimator_infosub_estimator_consumeskwargsrM   estimator_registryscorerscorer_registryr_   cv_registryrR   sub_estimator_typera   rc   s                rI   get_init_argsr     s   >  ##K4499;;F$.!I!(FO OB(((+,<=&[[/<! 	F![00./ABB		#|33/0BCC		 !DEEE![00133		#|33244		 !DEEE!*~***(7#++ /:::${&&&$Y/kk444w 		&'	!	[	 rK   c                 x    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_weightrn   )dict
isinstancert   )rU   resmethod_specmethodrn   s        rI   "filter_metadata_in_routing_methodsr   >  sY     &&C0  k3'' 	+ F'4HH*FHFJrK   )valuec                    |D ]p}|                     ||g          D ]V}t          | d| d          } |di ||i t          | t                    r!t	          |           r|dk    r |d           WqdS )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__requestrP   TrW   N )ry   getattrr   r   r   )objrl   methodsmetadata_namer   callercalleeset_request_for_methods           rI   set_requestsr   X  s    0  	5 	5$((&:: 	5 	5F%,S2I2I2I2I%J%J"""<<mU%;<<<3..5!#&&5 m++&&t4444	5	5 	5rK   )enable_metadata_routingc                     t          j        t                    5  |                                  ddd           dS # 1 swxY w Y   dS )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rM   s    rI   0test_unsupported_estimators_get_metadata_routingr   |  s    
 
*	+	+ ) )&&((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   <A A c                     t          j        t                    5  	 |                     dggdgdg           n# t          $ r t          w xY w	 ddd           dS # 1 swxY w Y   dS )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   r   N)r   r   r   rO   	TypeErrorr   s    rI   -test_unsupported_estimators_fit_with_metadatar     s     
*	+	+ & &	&MMA3%!QCM8888 	& 	& 	& &%	& 9& & & & & & & & & & & & & & & & & &s%   A9AAAA #A c                      t                      } t                      }| |usJ | t          j        |           u sJ | t          j        |           u sJ d S rC   )r8   rz   deepcopy)abs     rI   test_registry_copyr     s]     	AAA::::	!a        rK   rQ   )idsc                     | d         }t          | d          ^}} |di |}d| v rddgi}nd }t          |                                |           t          |                                t                    sJ d S )	NrQ   Tr}   rc   splittersplit)excluder   )r   r9   r   r   r;   )rQ   metaestimator_classr~   _instancer   s         rI   test_default_requestr     s     (8}TJJJJFQ"",,V,,HM!! y)H99;;WMMMMh3355~FFFFFFFrK   c           
      2   d| vrd S | d         }| d         }| d         }t          | d                   }|                                D ]M\  }}|D ]C}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r7t          |	|                     di           dg|            |j        ||fi | t          |	|                     di           dg|d            	  |||fi | n# t"          $ r  ||fi | Y nw xY wd d d            n# 1 swxY w Y   EOd S )NrM   rQ   rS   rT   rU   Tr   r   rn   [zJ] are passed but are not explicitly set as requested or not requested for .)matchrO   rl   rl   r   r   )rl   r   r   r   r   )r   itemsr   set_score_requestr   rn   	__class__ru   r   r   r   reescaper   r   ry   rO   r   )rQ   r   rS   rT   routing_methodsmethod_namemetadata_keyskeyr~   rM   r   r   valmethod_kwargsr   msgr   s                    rI   0test_error_on_missing_requests_for_sub_estimatorr     s   
 -'' 	'8cAcA812 O '6&;&;&=&= )/ )/"]  (	/ (	/C6Cd7 7 73FNYKVQ!  8((77C;777$1xHHMC #JM**44V44HOC O O"+"5">O OALO O  7ry~~NNN / / ;77++ !'4'8'89I2'N'N!&&)	    !HLA77777 #0#4#45Er#J#J"G"%   /F1a11=1111  / / /F1......./5/ / / / / / / / / / / / / / /(	/)/ )/s7   "A5F
E#"F#E9	6F8E9	9FFFc           
      v   d| vrd S | d         }| d         }| d         }t          | d                   }|                     di           }|                     dd          }|                                D ]C\  }}|D ]9}	t          t          d	|	         }
|	|
i}t          | d
          \  }\  }}\  }}\  }}|rt          |i dg|	           |r|                    dd           t          |||g|	            |di |}t          ||          }|                     di                               |i           }d|vr|	                    ||           	  |||fi || n# t          $ r  ||fi || Y nw xY w|sJ |dk    r|                                nd}|D ]}t          |f|||d| ;Ed S )NrM   rQ   rS   rT   rU   rl   rZ   Tr   r   r^   r   groupsrn   rX   rO   rY   r   )r   parentsplit_params)r   ry   r   r   rn   r   r   set_split_requestr   rO   r   keysr:   )rQ   r   rS   rT   r   rl   rZ   r   r   r   r   r   r~   rM   rx   r   r   r_   r   r   extra_method_argsr   s                         rI   3test_setting_request_on_sub_estimator_removes_errorr     s   
 -'' 	'8cAcA812 O #&&'7<<N&**+?FF&5&;&;&=&= 2 2"]  1	 1	C$1xHHMC #JMBOdC C C?F)Y;FAQ  2yPS     A$$D4$@@@ -$!	    +*44V44HX{33F - 1 1- D D H HR! ! K''Q"""@q!BB}B0ABBBB @ @ @q??M?->?????@
 OO8(:h(F(F""$$$B  &  	'&&!-	 
 $   U1	2 2s   E$$E<;E<c                    d| vrd S d }| d         }| d         }| d         }t          | d                   }|D ]}t          | d          \  }\  }}	\  }	}	\  }	}	 |di |}
 |||           t          |
|          }|                     d	i                               |i           }d
|vr |
j        ||fi | 	  |||fi | # t
          $ r  ||fi | Y w xY wd S )NrM   c                 d    t          |           r|dk    r|                     d           d S d S d S )NrP   Tr   )r   set_partial_fit_request)rM   r   s     rI   set_requestz7test_non_consuming_estimator_works.<locals>.set_request?  sI    ## 	<}(D(D--d-;;;;;	< 	<(D(DrK   rQ   rS   rT   rU   Fr   rX   rO   r   )r   r   r   ry   rO   r   )rQ   r   r   rS   rT   r   r   r~   rM   r   r   r   r   s                rI   "test_non_consuming_estimator_worksr   4  s    -'' 	< < <
 (8cAcA812 O ' + +1>%2
 2
 2
.AAA '&0000I{+++;//)--mR@@DD[RTUU##HLA33!2333	+F1a--,---- 	+ 	+ 	+F1**)*****	++ +s   <
CCCc           
         d| vrdS | d         }| d         }|                      di           }|D ]}t          | d          \  }\  }}\  }}	\  }
}|                    d           |
r|
                    dd	           |t	          |||gd
            |di |}t          ||          }d
t          i}d|vr |                    t          t                      |t          t          fi | |	sJ |	D ]}t          d|d|dd| dS )ziTest that any requested metadata is correctly routed to the underlying
    scorers in CV estimators.
    ra   NrQ   rb   rl   Tr   r   r   r   r   rO   r^   )r   r   r   r   r   )ry   r   r   r   r   r   r   rO   rS   rT   r:   )rQ   r   r   rl   r   r~   rM   r   r   rx   r_   r   r   r   _scorers                  rI   +test_metadata_is_routed_correctly_to_scorerr   \  s    M))'8#$<=O"&&'7<<N&  >K$?
 ?
 ?
;A 2GR 	  t 444 	=  t <<< -$-	    '&0000;//(-8##LLAq!%%}%%%x 	 	G# "/	 
     	- rK   c           	         d| vrdS | d         }| d         }| d         }| d         }|D ]}t          | d          \  }\  }}\  }	}\  }
}|r|                    dd	           |	r|	                    dd	           |
                    dd
            |di |}t          t
          d
}t          ||          } |||fi | |sJ |D ]}t          d|d|d| dS )zkTest that any requested metadata is correctly routed to the underlying
    splitters in CV estimators.
    rd   NrQ   rS   rT   Tr   Fr   r   r   )r   r   r   r   )r   set_fit_requestr   r   r   rn   r   r:   )rQ   r   r   X_y_r   r~   rM   r   r   r_   rx   r   r   r   	_splitters                   rI   -test_metadata_is_routed_correctly_to_splitterr     s}    =00'8#$89O	s	B	s	B&  >K$?
 ?
 ?
;A^b(  	K%%EE%JJJ 	J$$55$III
D4888&&0000#)x@@;//r2'''''x! 	 	I# gk ER   	 rK   c                 @   d| vrdS | d         }| d         }| d         }t          | d          ^}}|                    dd            |ddt          d	
          i|}t          |||dt          it          d	
          t          t          d                     dS )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.rd   NrQ   rS   rT   Tr   r_      )n_splitsr   rk   )response_method)paramsr_   r]   r   )r   popr$   r)   r   r!   r    )rQ   r   r   r   r~   r   r   s          rI   &test_metadata_routed_to_group_splitterr     s     =00'8	s	B	s	B}TJJJJFQ
JJtT""GGj!&<&<&<GGGH

&!q!!!.	JJJ     rK   ){rz   r   numpyrD   r   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randrS   randintrT   astypeinty_binaryrE   rW   rF   rangeshapeclasses_multirn   r   lenr   rr   list__annotations__METAESTIMATOR_IDSUNSUPPORTED_ESTIMATORSr   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   rK   rI   <module>r     sB    				      " " " " " " 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 / / / / / /            8 7 7 7 7 7                   , + + + + +                          ; : : : : : / / / / / /	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	         
            ; : : : : :
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 : 9 9 9 9 9iB1HHQNNKK11KF??3
")A,,
++a!Q+
(
(KK55q9I3J3JKKK;;q"1;%%	QQ	(	(f-% &+]%; f /%!&+]%;%	='AB f& 0%!&+W& %f8 )%!&+W 7fH (% &+W GfX ./44H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!R!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 f fN&R SR>RRR   F F FR  4 HL !5 !5 !5 !5 !5H &<==---) ) .- >=) &<==---
& 
& .- >=
& ---! ! .-! .>OPP---G G .- QPG .>OPP---8/ 8/ .- QP8/v .>OPP---C C .- QPCL .>OPP---#+ #+ .- QP#+L .>OPP---) ) .- QP)X .>OPP---  .- QPB .>OPP---  .- QP  rK   