o
    \i	}                     @   s  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jQRdZSd\ZTZUeSVeTeUZWeSjXd deTdZYeYdkZe[Z\e]eYZ^eSjXd deTdfdZ_dd e`e_jad D ZbeSjXd deTdZceSVeTZdeSjXd deeeYd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"d0d,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"d0d,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d1e=dd"d2dieWeYdgd3edd"eWeYdd gd d#e^iid$e)eWeYd)dgd4e"eWeYd)dgd4e$eWeYd)dgd4e'eWe_d)dgd4e(eWe_d)dgd4e#eWeYd)dgd4e%eWeYd)dgd4e*ddd5d6ieWeYd%g d7ddd(gid8	e ddd9d:ieWeYdgd3edd"eWeYd:g d;d<d=gd<d=gg d>d>d?eddeWeYd:dd<gd@e,eWeYd'dgdAe+eWeYd'dgdAe,eWeYd'dgd)dgd*e+eWeYd'dgd)dgd*eeWeYd)dgd4eddeWeYdd<gdBeDdd"eWeYdCg dDddd(gid?edd"eWeYdgd'dgd)dgdE
ed"deWeYg d7dBed"ddgd)dgd'dd(geWeYdF
ZgeheidG< 	 dHd egD Zje e gZkdIdJ ZldCdKdLdMZmejnodekedCdNdOdP ZpejnodekedCdNdQdR ZqedCdNdSdT ZrejnjodUegejdVedCdNdWdX ZsejnjodUegejdVedCdNdYdZ ZtejnjodUegejdVedCdNd[d\ ZuejnjodUegejdVedCdNd]d^ ZvejnjodUegejdVedCdNd_d` ZwejnjodUegejdVedCdNdadb ZxejnjodUegejdVedCdNdcdd ZydS )e    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                 C   s"   g | ]}t td d |f qS N)npuniquey_multi).0i rG   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/tests/test_metaestimators_metadata_routing.py
<listcomp>W   s   " rI   
   	estimator	regressorfitpartial_fit)metaestimatorestimator_namerK   Xyestimator_routing_methods
classifierclasses)rO   rP   rK   rQ   rR   rS   method_argssubset)rO   rP   rK   rQ   rR   rS   preserves_metadatascoringscorecv)rO   rQ   rR   scorer_namescorer_routing_methodscv_namecv_routing_methods
param_gridalphag?g?)rO   rP   rK   	init_argsrQ   rR   rS   rX   r\   r]   r^   r_   param_distributions)rO   rP   rK   rQ   rR   rS   rX   rV   random_state)rO   rP   rK   rb   rQ   rR   rS   )rO   rQ   rR   r^   r_   min_samplesg      ?)rM   predictrZ   )	rO   rP   rK   rb   rQ   rR   rX   rS   method_mappingskip_completeF)rM   rf   predict_probapredict_log_probadecision_functionrf   ri   )rf   ri   rj   )rO   rP   rK   rQ   rR   rX   rS   rg   )rO   rP   rK   rQ   rR   rX   rS   )rO   rQ   rR   r\   r]   )rO   rK   rP   rQ   rR   rS   T)rM   rf   ri   rj   rk   rZ   )
rO   rP   rK   rQ   rR   rS   r\   r]   r^   r_   )
rO   rK   rP   rS   r^   r_   r\   r]   rQ   rR   METAESTIMATORSc                 C   s   g | ]	}t |d  jqS )rO   )str__name__)rE   rowrG   rG   rH   rI     s    c                 C   s
  |  di }d\}}d\}}d\}}d| v rQ| d }	t }| d }
|r9|
dkr,t|}n!|
dkr5t|}ntd|
dkrAt }n|
dkrIt }ntd|||	< d| v re| d }t }t|d	}|||< d
| v ry| d
 }t }t|d	}|||< |||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.
    rb   )NNrK   rP   rL   rT   z!Unpermitted `sub_estimator_type`.r\   )registryr^   )	getr7   r2   r1   
ValueErrorr6   r5   r3   r4   )metaestimator_infosub_estimator_consumeskwargsrK   estimator_registryscorerscorer_registryr[   cv_registryrP   sub_estimator_typer\   r^   rG   rG   rH   get_init_args  sF   



r{   )valuec                C   sj   |D ]0}| ||gD ]&}t| d| d}|di ||i t| tr1t| r1|dkr1|dd qqd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__requestrN   TrU   NrG   )rq   getattr
isinstancer   r   )objrg   methodsmetadata_namer|   callercalleeset_request_for_methodrG   rG   rH   set_requests5  s   
r   )enable_metadata_routingc                 C   s8   t t |   W d   dS 1 s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rK   rG   rG   rH   0test_unsupported_estimators_get_metadata_routingY  s   
"r   c              	   C   s`   t t! z| jdggdgdgd W n	 ty   tw W d   dS 1 s)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.r@   sample_weightN)r   r   r   rM   	TypeErrorr   rG   rG   rH   -test_unsupported_estimators_fit_with_metadatab  s   "r   c                  C   s@   t  } t  }| |usJ | t| u sJ | t| u sJ d S rA   )r7   copydeepcopy)abrG   rG   rH   test_registry_copyq  s
   r   rO   )idsc                 C   sd   | d }t | dd^}}|di |}d| v rddgi}nd }t| |d t| ts0J d S )	NrO   Trt   r^   splittersplit)excluderG   )r{   r8   r   r   r:   )rO   metaestimator_classru   _instancer   rG   rG   rH   test_default_request{  s   r   c                 C   s  d| vrd S | d }| d }| d }| d }|D ]}dD ]}t | dd^}\}}	\}
}	}	|
r8|
jdi |di ttd| }||i}|di |}d	| d
|jj d| }tjtt	
|dS t||}d|vrt|| di dg|d |j||fi | t|| di dg|d d z|||fi | W n ty   ||fi | Y nw W d    n1 sw   Y  qqd S )NrK   rO   rQ   rR   rS   r   metadataTr   [zJ] are passed but are not explicitly set as requested or not requested for .)matchrM   rg   rg   r   r   )rg   r   r   r|   rG   )r{   set_score_requestr   r   	__class__rn   r   r   r   reescaper   r   rq   rM   r   )rO   r   rQ   rR   routing_methodsmethod_namekeyru   rK   r   rw   valmethod_kwargsr   msgmethodrG   rG   rH   0test_error_on_missing_requests_for_sub_estimator  sb   


r   c              
   C   s  d| vrd S | d }| d }| d }| d }|  di }|  dd}|D ]}d	D ]}ttd	| }	||	i}
t| dd
\}\}}\}}\}}|rPt|i dg|d |rY|jddd t|||g|d |di |}t||}|  di  |i }d|vr||| z|||fi |
| W n ty   ||fi |
| Y nw |sJ |dkr|
	 nd}|D ]}t
|f|||d|
 qq(q$d S )NrK   rO   rQ   rR   rS   rg   rX   Tr   r   rZ   r   groupsr   rV   rM   rW   rG   )r   parentsplit_params)rq   r   r   r{   r   set_split_requestr   rM   r   keysr9   )rO   r   rQ   rR   r   rg   rX   r   r   r   r   ru   rK   rp   rw   r   r[   r   r   extra_method_argsr   rG   rG   rH   3test_setting_request_on_sub_estimator_removes_error  sn   

r   c              	   C   s   d| vrd S dd }| d }| d }| d }| d }|D ]W}t | dd	\}\}}	\}	}	\}	}	|di |}
||| t|
|}| d
i |i }d|vrW|
j||fi | z|||fi | W q tys   ||fi | Y qw d S )NrK   c                 S   s(   t | r|dkr| jdd d S d S d S )NrN   Tr   )r   set_partial_fit_request)rK   r   rG   rG   rH   set_request  s   z7test_non_consuming_estimator_works.<locals>.set_requestrO   rQ   rR   rS   Fr   rV   rM   rG   )r{   r   rq   rM   r   )rO   r   r   rQ   rR   r   r   ru   rK   r   r   r   r   rG   rG   rH   "test_non_consuming_estimator_works  s.   

r   c              	   C   s   d| vrdS | d }| d }|  di }|D ]f}t| dd\}\}}\}}	\}
}|jdd |
r7|
jddd	 |durDt|||gd
d |di |}t||}d
ti}d|vr^|tt	 |tt	fi | |	skJ |	D ]}t
d|d|dd| qmqdS )ziTest that any requested metadata is correctly routed to the underlying
    scorers in CV estimators.
    r\   NrO   r]   rg   Tr   r   r   r   r   rM   rZ   )r   r   r   r   rG   )rq   r{   r   r   r   r   r   rM   rQ   rR   r9   )rO   r   r   rg   r   ru   rK   r   rw   rp   r[   r   r   r   _scorerrG   rG   rH   +test_metadata_is_routed_correctly_to_scorer4  sJ   
r   c                 C   s   d| vrdS | d }| d }| d }| d }|D ]Y}t | dd\}\}}\}	}\}
}|r3|jddd	 |	r<|	jddd	 |
jddd
 |di |}ttd
}t||}|||fi | |saJ |D ]}td|d|d| qcqdS )zkTest that any requested metadata is correctly routed to the underlying
    splitters in CV estimators.
    r_   NrO   rQ   rR   Tr   Fr   r   r   )r   r   r   rG   )r{   set_fit_requestr   r   r   r   r   r9   )rO   r   r   X_y_r   ru   rK   r   rw   r[   rp   r   r   r   	_splitterrG   rG   rH   -test_metadata_is_routed_correctly_to_splitterb  s8   

r   c              
   C   s   d| vrdS | d }| d }| d }t | dd^}}|dd |ddtd	d
i|}t|||dtitd	d
ttdd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.r_   NrO   rQ   rR   Tr   r[      )n_splitsr   rf   )response_method)paramsr[   rY   rG   )r{   popr#   r(   r   r    r   )rO   r   r   r   ru   r   r   rG   rG   rH   &test_metadata_routed_to_group_splitter  s    

r   )zr   r   numpyrB   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.   r/   sklearn.semi_supervisedr0   %sklearn.tests.metadata_routing_commonr1   r2   r3   r4   r5   r6   r7   r8   r9   sklearn.utils.metadata_routingr:   randomRandomStaterngNMrandrQ   randintrR   astypeinty_binaryrC   rU   rD   rangeshapeclasses_multir   r   lenr   rl   list__annotations__METAESTIMATOR_IDSUNSUPPORTED_ESTIMATORSr{   r   markparametrizer   r   r   r   r   r   r   r   r   r   rG   rG   rG   rH   <module>   s  
 4(
,



$,5CQ_mv
 	
    
  %  ,  3  :  A  H  O  V
  a  j  ~                   (    /    7
    H    T    \    h#G$
	9D%,!