
    rh	}                        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d/e=dd d0dieWeYdgd1edd eWeYddgdd!e^iid"e)eWeYd'dgd2e"eWeYd'dgd2e$eWeYd'dgd2e'eWe_d'dgd2e(eWe_d'dgd2e#eWeYd'dgd2e%eWeYd'dgd2e*ddd3d4ieWeYd#g d5ddd&gid6	e ddd7d8ieWeYdgd1edd eWeYd8g d9d:d;gd:d;gg d<d<d=eddeWeYd8dd: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d2eddeWeYdd:gd@eDdd eWeYdAg dBddd&gid=edd eWeYdgd%dgd'dgdC
ed deWeYg d5d@ed ddgd'dgd%dd&geWeYdD
ZgeheidE<   	 egD cg c]  } ej|dF   j                         c}Zl e        e       gZmdG ZndAdHdIZoej                  j                  dem       edAJ      dK               Zrej                  j                  dem       edAJ      dL               Zs edAJ      dM        Ztej                  j                  dFegelN       edAJ      dO               Zuej                  j                  dFegelN       edAJ      dP               Zvej                  j                  dFegelN       edAJ      dQ               Zwej                  j                  dFegelN       edAJ      dR               Zxej                  j                  dFegelN       edAJ      dS               Zyej                  j                  dFegelN       edAJ      dT               Zzej                  j                  dFegelN       edAJ      dU               Z{yc c} w c c}w )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                    | 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.
    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                /var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/sklearn/tests/test_metaestimators_metadata_routing.pyget_init_argsrr     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 )rg   getattr
isinstancer   r   )objr_   methodsmetadata_namert   callercalleeset_request_for_methods           rq   set_requestsr   5  sy    0  	5$((&: 	5F%,SD2I%J""<mU%;<3.!#&m+&t4	5	5rs   )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    rq   0test_unsupported_estimators_get_metadata_routingr   Y  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    rq   -test_unsupported_estimators_fit_with_metadatar   b  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     rq   test_registry_copyr   q  sK     	AAA::		!a    rs   )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rj   rV   splittersplit)excludery   )rr   r9   r   r{   r;   )rG   metaestimator_classrk   _instancer   s         rq   test_default_requestr   {  ss     (8}TJJFQ",V,HM! y)H99;WMh335~FFFrs   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~   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& )/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   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& 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   Trx   )r   set_partial_fit_request)rC   r   s     rq   set_requestz7test_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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.
    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  s4    M)'8#$<=O"&&'7<N& >K$?
;A 2GR 	  t 4  t < -$-	 '00;/(-8#LLAq!%}%x 	G# "/	
  	-rs   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.
    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$?
;A^b( %%EE%J$$55$I
D48&00#)x@;/r2''x! 	I# gkER	rs   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.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JJFQ
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      sl
    	   " 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	(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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a L^ Ss   ) WW