
    e!h                        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jR                  d        Z*ejR                  d        Z+ejX                  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jX                  j[                  dg d      d               Z. ed      d        Z/d Z0d Z1d Z2d Z3d  Z4y)!    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        h/var/www/html/diagnosisapp-backend/venv/lib/python3.12/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                    |j                  |      \  }}t        |        | j                  ||       t        |       }|j                  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 y)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&!579f5a8:Q'&&:QRS:TU#}V'<<<<	"l6&::::	"l6&::::y)-@-HHHHr   T)enable_metadata_routingc                     G d dt               }| \  }}t         |dd      j                  d      j                  d            }|j	                  ||d       t        |      }|j                  |d       |j                  |d       |d   j                  d       t        j                  t        t        j                  d	      
      5  |j                  |d       ddd       |d   j                  d       t        j                  t              5  |j                  |d       ddd       y# 1 sw Y   TxY w# 1 sw Y   yxY w)z8Test that metadata routing works with frozen estimators.c                   $    e Zd ZddZddZddZy)6test_frozen_metadata_routing.<locals>.ConsumesMetadataNc                      || _         || _        y r   on_fit
on_predict)selfr;   r<   s      r   __init__z?test_frozen_metadata_routing.<locals>.ConsumesMetadata.__init__]   s     DK(DOr   c                 4    | 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                 ^    | 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'    +++773q6?"r   )NNr   )__name__
__module____qualname__r>   r+   r$   r   r   r   ConsumesMetadatar8   \   s    	)		#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   s6   #= #  DAq6	$	'		d		+H LLAL'X&FQ(
NN1vN&
22E2B	ii$

 + 	q6*+ 22D2A	/	0 +q6*+ ++ ++ +s   D7E7E Ec                     G d dt               }| \  }} |       j                  ||      }t        |      }t        j                  t
              5  |j                  ||       ddd       t        j                  t
              5  |j                  ||       ddd       |j                  dk(  sJ y# 1 sw Y   OxY w# 1 sw Y   'xY w)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y)%test_composite_fit.<locals>.Estimatorc                 `    	 | xj                   dz  c_         | S # t        $ r d| _         Y | S w xY w)Nr"   )_fit_counterAttributeErrorr=   r1   r2   s      r   r+   z)test_composite_fit.<locals>.Estimator.fit   s=    &!!Q&! K " &$%!K&s    --Nc                      y r   r   r^   s      r   fit_transformz3test_composite_fit.<locals>.Estimator.fit_transform       r   c                      y 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      s    			r   rd   Nr"   )	r   r+   r   rQ   rR   r]   rc   r`   r\   )r!   rd   r1   r2   estr3   s         r   test_composite_fitrf      s    M   "DAq
+//!Q
CS!F	~	& !1a !	~	& #Q"# !###! !# #s   B1B=1B:=Cc                     | \  }}t               j                  ||      }t        |      }t        |      }|j                  |u sJ y)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      sG    DAq "&&q!,IY'F6]Fy(((r   c                 
   | \  }}t               }t        |      }t        j                  t              5  t        |       ddd       t               j                  ||      }t        |      }t        |       y# 1 sw Y   :xY w)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      so    DAq "IY'F	~	&    !"&&q!,IY'FF   s   A99Bc                  .    G d dt               }  |        }t        |      }|j                         }|j                         }|j                  du sJ |j                  du sJ |j                  j
                  du sJ |j                  j
                  du sJ y)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                 F    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!    7+-D*.DOO'Kr   )rG   rH   rI   rq   __classcell__)ru   s   @r   rd   rn      s    	 	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//1N!!T)))$$---$$00D888!!--555r   c                  F   t               } t        |       }t        j                  t        d      5  |j                  d       ddd       |j                         d| ik(  sJ t               }|j                  |       |j                         d|ik(  sJ y# 1 sw Y   TxY w)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 *q)* ;"4444"$I
	*;	"::::* *s   BB )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 A G * E 0 * > 3 4   ! ! 		12		78	~')9);	<>RS.*,>,@A$	
 
	/0	'(		34#!A3'!% !	
, WI	-4I( -++ .++\$>)6,;r   