
    -i                        S SK r S SKrS SKrS SKJr  S SKJr  S SKJ	r	J
r
JrJrJrJr  S SKJr  S SKJr  S SKJrJr  S SKJrJr  S S	KJr  S S
KJrJr  S SKJr  S SK J!r!  S SK"J#r#J$r$  S SK%J&r&  S SK'J(r(  \RR                  S 5       r*\RR                  S 5       r+\RX                  R[                  S\" 5       S4\" 5       S4\!" \$" 5       \" 5       5      S4\!" \$" 5       \" 5       5      S4\$" 5       S4\" 5       S4\" 5       S4\" \$" 5       S /4\#" 5       S/45      S4/5      \RX                  R[                  S/ SQ5      S 5       5       r.\" SS9S 5       r/S r0S r1S r2S r3S  r4g)!    N)assert_array_equal)config_context)BaseEstimatorcloneis_classifieris_clustereris_outlier_detectoris_regressor)KMeans)make_column_transformer)make_classificationmake_regression)NotFittedErrorUnsetMetadataPassedError)FrozenEstimator)LinearRegressionLogisticRegression)LocalOutlierFactor)make_pipeline)RobustScalerStandardScaler)set_random_state)check_is_fittedc                      [        5       $ N)r        S/var/www/html/venv/lib/python3.13/site-packages/sklearn/frozen/tests/test_frozen.pyregression_datasetr       s    r   c                      [        5       $ r   )r   r   r   r   classification_datasetr!   %   s      r   zestimator, datasetr   r!      method)predictpredict_probapredict_log_probadecision_function	transformc                    UR                  U5      u  pE[        U 5        U R                  XE5        [        U 5      nUR                  S//S/5        [	        X5      (       a*  [        [        X5      " U5      [        Xc5      " U5      5        [        U 5      [        U5      :X  d   e[        U 5      [        U5      :X  d   e[        U 5      [        U5      :X  d   e[        U 5      [        U5      :X  d   eg)zTest that frozen.fit doesn't do anything, and that all other methods are
exposed by the frozen estimator and return the same values as the estimator.
r"   N)getfixturevaluer   fitr   hasattrr   getattrr   r
   r   r	   )	estimatordatasetrequestr#   Xyfrozens          r   test_frozen_methodsr4   *   s    < ""7+DAYMM!Y'F
JJuqcy!!795a8'&:QRS:TU#}V'<<<<	"l6&::::	"l6&::::y)-@-HHHHr   T)enable_metadata_routingc                 r    " S S[         5      nU u  p#[        U" SSS9R                  SS9R                  SS95      nUR	                  X#SS9  [        U5      nUR                  USS9  UR                  USS9  US   R                  SS9  [        R                  " [        [        R                  " S	5      S
9   UR                  USS9  SSS5        US   R                  SS9  [        R                  " [        5         UR                  USS9  SSS5        g! , (       d  f       NT= f! , (       d  f       g= f)z8Test that metadata routing works with frozen estimators.c                   2    \ rS rSrSS jrSS jrSS jrSrg)	6test_frozen_metadata_routing.<locals>.ConsumesMetadata\   Nc                     Xl         X l        g r   on_fit
on_predict)selfr<   r=   s      r   __init__?test_frozen_metadata_routing.<locals>.ConsumesMetadata.__init__]   s     K(Or   c                 @    U R                   (       a  Uc   eSU l        U $ NT)r<   fitted_)r>   r1   r2   metadatas       r   r+   :test_frozen_metadata_routing.<locals>.ConsumesMetadata.fita   s!    {{+++DLKr   c                 l    U R                   (       a  Uc   e[        R                  " [        U5      5      $ r   )r=   nponeslen)r>   r1   rD   s      r   r$   >test_frozen_metadata_routing.<locals>.ConsumesMetadata.predictg   s'    +++773q6?"r   )rC   r<   r=   )NNr   )__name__
__module____qualname____firstlineno__r?   r+   r$   __static_attributes__r   r   r   ConsumesMetadatar8   \   s    	)		#r   rP   Tr;   )rD   testconsumesmetadataFz]Pipeline.predict got unexpected argument(s) {'metadata'}, which are not routed to any object.matchN)r   r   set_fit_requestset_predict_requestr+   r   r$   pytestraises	TypeErrorreescaper   )r   rP   r1   r2   pipeliner3   s         r   test_frozen_metadata_routingr]   X   s$   #= #  DA6	$	'		d		+H LLL'X&FQ(
NN1vN&
22E2B	ii$

 	q6*
 22D2A	/	0q6* 
1	0
 
 
1	0s   8D=D(
D%(
D6c                     " S S[         5      nU u  p#U" 5       R                  X#5      n[        U5      n[        R                  " [
        5         UR                  X#5        SSS5        [        R                  " [
        5         UR                  X#5        SSS5        UR                  S:X  d   eg! , (       d  f       NU= f! , (       d  f       N2= f)zATest that calling fit_transform and fit_predict doesn't call fit.c                   .    \ rS rSrS rSS jrSS jrSrg)%test_composite_fit.<locals>.Estimator   c                 b     U =R                   S-  sl         U $ ! [         a    SU l          U $ f = f)Nr"   )_fit_counterAttributeErrorr>   r1   r2   s      r   r+   )test_composite_fit.<locals>.Estimator.fit   s=    &!!Q&! K " &$%!K&s    ..Nc                     g r   r   re   s      r   fit_transform3test_composite_fit.<locals>.Estimator.fit_transform       r   c                     g r   r   re   s      r   fit_predict1test_composite_fit.<locals>.Estimator.fit_predict   rj   r   )rc   r   )rK   rL   rM   rN   r+   rh   rl   rO   r   r   r   	Estimatorr`      s    			r   rn   Nr"   )	r   r+   r   rW   rX   rd   rl   rh   rc   )r!   rn   r1   r2   estr3   s         r   test_composite_fitrp      s    M   "DA
+//!
CS!F	~	&1  
'	~	&Q" 
' !### 
'	&	&	&s   B0C0
B>
Cc                     U u  p[        5       R                  X5      n[        U5      n[        U5      nUR                  UL d   eg)z<Test that cloning a frozen estimator keeps the frozen state.N)r   r+   r   r   r.   )r   r1   r2   r.   r3   cloneds         r   test_clone_frozenrs      sC    DA "&&q,IY'F6]Fy(((r   c                    U u  p[        5       n[        U5      n[        R                  " [        5         [        U5        SSS5        [        5       R                  X5      n[        U5      n[        U5        g! , (       d  f       N>= f)z5Test that check_is_fitted works on frozen estimators.N)r   r   rW   rX   r   r   r+   )r   r1   r2   r.   r3   s        r   test_check_is_fittedru      sd    DA "IY'F	~	& 
' !"&&q,IY'FF 
'	&s   A88
Bc                  6    " S S[         5      n U " 5       n[        U5      nUR                  5       nUR                  5       nUR                  SL d   eUR                  SL d   eUR                  R
                  SL d   eUR                  R
                  SL d   eg)zfTest that frozen estimators have the same tags as the original estimator
except for the skip_test tag.c                   (   ^  \ rS rSrU 4S jrSrU =r$ )#test_frozen_tags.<locals>.Estimator   c                 F   > [         TU ]  5       nSUR                  l        U$ rB   )super__sklearn_tags__
input_tagscategorical)r>   tags	__class__s     r   r|   4test_frozen_tags.<locals>.Estimator.__sklearn_tags__   s!    7+-D*.DOO'Kr   r   )rK   rL   rM   rN   r|   rO   __classcell__)r   s   @r   rn   rx      s    	 	r   rn   TFN)r   r   r|   
_skip_testr}   r~   )rn   r.   r3   frozen_tagsestimator_tagss        r   test_frozen_tagsr      s    M  IY'F))+K//1N!!T)))$$---$$00D888!!--555r   c                  D   [        5       n [        U 5      n[        R                  " [        SS9   UR                  SS9  SSS5        UR                  5       SU 0:X  d   e[        5       nUR                  US9  UR                  5       SU0:X  d   eg! , (       d  f       NX= f)z?Test that FrozenEstimator only exposes the estimator parameter.z&You cannot set parameters of the innerrS   r"   )estimator__CNr.   )r.   )r   r   rW   rX   
ValueError
set_params
get_paramsr   )ro   r3   	other_ests      r   test_frozen_paramsr      s    

CS!F	z)Q	Rq) 
S ;"4444"$I
	*;	":::: 
S	Rs   B
B)5rZ   numpyrG   rW   numpy.testingr   sklearnr   sklearn.baser   r   r   r   r	   r
   sklearn.clusterr   sklearn.composer   sklearn.datasetsr   r   sklearn.exceptionsr   r   sklearn.frozenr   sklearn.linear_modelr   r   sklearn.neighborsr   sklearn.pipeliner   sklearn.preprocessingr   r   sklearn.utils._testingr   sklearn.utils.validationr   fixturer   r!   markparametrizer4   r]   rp   rs   ru   r   r   r   r   r   <module>r      s   
   , "  # 3 A G * E 0 * > 3 4   ! ! 		12		78	~')9);	<>RS.*,>,@A$	
 
	/0	'(		34#!A3'!% !	
, WI	-4I( -++ .++\$>)6,;r   