
    0Ph                     (   d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZm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#m$Z$ d dl%m&Z& d dl'm(Z( ej)        d             Z*ej)        d             Z+ej,        -                    d e            df e            df e! e$             e                      df e! e$             e                      df e$            df e            df e            df e e$            d gf e#            dgf          dfg          ej,        -                    dg d          d                         Z. ed          d             Z/d Z0d Z1d Z2d Z3d  Z4dS )!    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                      t                      S N)r        `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/frozen/tests/test_frozen.pyregression_datasetr       s    r   c                      t                      S r   )r   r   r   r   classification_datasetr!   %   s       r   zestimator, datasetr   r!      method)predictpredict_probapredict_log_probadecision_function	transformc                 |   |                     |          \  }}t          |            |                     ||           t          |           }|                    dggdg           t	          | |          r>t           t          | |          |           t          ||          |                     t          |           t          |          k    sJ t          |           t          |          k    sJ t          |           t          |          k    sJ t          |           t          |          k    sJ dS )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++DAqYMM!QY''F
JJuqcy&!! V579f55a88:Q'&&:Q:QRS:T:TUUU##}V'<'<<<<<	""l6&:&:::::	""l6&:&:::::y))-@-H-HHHHHHHr   T)enable_metadata_routingc                     G d dt                     }| \  }}t           |dd                              d                              d                    }|                    ||d           t          |          }|                    |d           |                    |d           |d                             d           t          j        t          t          j        d	          
          5  |                    |d           ddd           n# 1 swxY w Y   |d                             d           t          j        t                    5  |                    |d           ddd           dS # 1 swxY w Y   dS )z8Test that metadata routing works with frozen estimators.c                   &    e Zd ZddZddZddZdS )6test_frozen_metadata_routing.<locals>.ConsumesMetadataNc                 "    || _         || _        d S r   on_fit
on_predict)selfr;   r<   s      r   __init__z?test_frozen_metadata_routing.<locals>.ConsumesMetadata.__init__]   s     DK(DOOOr   c                 *    | j         r|J d| _        | S NT)r;   fitted_)r=   r1   r2   metadatas       r   r+   z:test_frozen_metadata_routing.<locals>.ConsumesMetadata.fita   s$    { ,+++DLKr   c                 Z    | j         r|J t          j        t          |                    S r   )r<   nponeslen)r=   r1   rB   s      r   r$   z>test_frozen_metadata_routing.<locals>.ConsumesMetadata.predictg   s,     ,+++73q66??"r   )NNr   )__name__
__module____qualname__r>   r+   r$   r   r   r   ConsumesMetadatar8   \   sP        	) 	) 	) 	)	 	 	 		# 	# 	# 	# 	# 	#r   rJ   Tr:   )rB   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   rJ   r1   r2   pipeliner3   s         r   test_frozen_metadata_routingrW   X   s1   # # # # #= # # #  DAq666	$	'	'		d		+	+ H LLAL'''X&&FQ(((
NN1vN&&&
22E2BBB	i$
 

 
 
 + + 	q6***+ + + + + + + + + + + + + + + 22D2AAA	/	0	0 + +q6***+ + + + + + + + + + + + + + + + + +s$   9DD!$D!FF	Fc                     G d dt                     }| \  }} |                                ||          }t          |          }t          j        t
                    5  |                    ||           ddd           n# 1 swxY w Y   t          j        t
                    5  |                    ||           ddd           n# 1 swxY w Y   |j        dk    sJ dS )zATest that calling fit_transform and fit_predict doesn't call fit.c                   $    e Zd Zd ZddZddZdS )%test_composite_fit.<locals>.Estimatorc                 X    	 | xj         dz  c_         n# t          $ r
 d| _         Y nw xY w| S )Nr"   )_fit_counterAttributeErrorr=   r1   r2   s      r   r+   z)test_composite_fit.<locals>.Estimator.fit   sL    &!!Q&!!!! & & &$%!!!&Ks    ''Nc                     d S r   r   r^   s      r   fit_transformz3test_composite_fit.<locals>.Estimator.fit_transform       Cr   c                     d S r   r   r^   s      r   fit_predictz1test_composite_fit.<locals>.Estimator.fit_predict   ra   r   r   )rG   rH   rI   r+   r`   rc   r   r   r   	EstimatorrZ      sK        	 	 		 	 	 		 	 	 	 	 	r   rd   Nr"   )	r   r+   r   rQ   rR   r]   rc   r`   r\   )r!   rd   r1   r2   estr3   s         r   test_composite_fitrf      so       M     "DAq
)++//!Q

CS!!F	~	&	& ! !1a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	~	&	& # #Q"""# # # # # # # # # # # # # # # !######s$   BB	B&C		CCc                     | \  }}t                                          ||          }t          |          }t          |          }|j        |u sJ dS )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_frozenri      sX    DAq ""&&q!,,IY''F6]]Fy((((((r   c                 J   | \  }}t                      }t          |          }t          j        t                    5  t          |           ddd           n# 1 swxY w Y   t                                          ||          }t          |          }t          |           dS )z5Test that check_is_fitted works on frozen estimators.N)r   r   rQ   rR   r   r   r+   )r   r1   r2   r.   r3   s        r   test_check_is_fittedrk      s    DAq ""IY''F	~	&	&                                  !""&&q!,,IY''FFs   AAAc                      G d dt                     }  |             }t          |          }|                                }|                                }|j        du sJ |j        du sJ |j        j        du sJ |j        j        du sJ dS )zjTest that frozen estimators have the same tags as the original estimator
    except for the skip_test tag.c                        e Zd Z fdZ xZS )#test_frozen_tags.<locals>.Estimatorc                 `    t                                                      }d|j        _        |S r@   )super__sklearn_tags__
input_tagscategorical)r=   tags	__class__s     r   rq   z4test_frozen_tags.<locals>.Estimator.__sklearn_tags__   s'    77++--D*.DO'Kr   )rG   rH   rI   rq   __classcell__)ru   s   @r   rd   rn      s8        	 	 	 	 	 	 	 	 	r   rd   TFN)r   r   rq   
_skip_testrr   rs   )rd   r.   r3   frozen_tagsestimator_tagss        r   test_frozen_tagsrz      s        M    	IY''F))++K//11N!T))))$----$0D8888!-555555r   c                     t                      } t          |           }t          j        t          d          5  |                    d           ddd           n# 1 swxY w Y   |                                d| ik    sJ t                      }|                    |           |                                d|ik    sJ dS )z?Test that FrozenEstimator only exposes the estimator parameter.z&You cannot set parameters of the innerrM   r"   )estimator__CNr.   )r.   )r   r   rQ   rR   
ValueError
set_params
get_paramsr   )re   r3   	other_ests      r   test_frozen_paramsr      s
   


CS!!F	z)Q	R	R	R * *q)))* * * * * * * * * * * * * * * ;"44444"$$I
	***;	":::::::s   AA #A )5rT   numpyrD   rQ   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   rW   rf   ri   rk   rz   r   r   r   r   <module>r      s~   
			      , , , , , , " " " " " "                # " " " " " 3 3 3 3 3 3 A A A A A A A A G G G G G G G G * * * * * * E E E E E E E E 0 0 0 0 0 0 * * * * * * > > > > > > > > 3 3 3 3 3 3 4 4 4 4 4 4    ! ! ! 				12				78	~~'')9)9););	<	<>RSM..**,>,>,@,@AA$	
 
		/0	'(				34##!!A3'!%  !	
 , WWW I I	 - 4I( ---++ ++ .-++\$ $ $>) ) )  6 6 6,; ; ; ; ;r   