
    ה9i                        d dl Z 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
 d dlZd dlmZmZ d dlmZ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 d dl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'm(Z( d dl)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4m5Z5  G d de      Z6 G d de      Z7 G d de      Z8 G d de      Z9 G d de      Z: G d de9      Z; G d de9e:      Z< G d  d!e<      Z= G d" d#e      Z> G d$ d%e      Z? G d& d'      Z@ G d( d)e      ZAd* ZBd+ ZCd, ZDd- ZEd. ZFd/ ZGd0 ZHd1 ZId2 ZJd3 ZKd4 ZLd5 ZMd6 ZNej                  j                  d7 e'       d8f e e'       d9d:d;gi      d8f e"d< e'       fg      d8f e"d= e e'       d9d:d;gi      fg      d8f e(       d>f e e(       d9d:d;gi      d>f e"d? e(       fg      d>f e"d@ e e(       d9d:d;gi      fg      d>fg      dA        ZQej                  j                  d7 e(       d8f e e(       d9d:d;gi      d8f e"d? e(       fg      d8f e"d@ e e(       d9d:d;gi      fg      d8f e'       d>f e e'       d9d:d;gi      d>f e"d< e'       fg      d>f e"d= e e'       d9d:d;gi      fg      d>fg      dB        ZRej                  j                  d7 e       d8f e e       dCdDdEgi      d8f e"dF e       fg      d8f e"dG e e       dCdDdEgi      fg      d8f e'       d>f e e'       d9d:d;gi      d>f e"d< e'       fg      d>f e"d= e e'       d9d:d;gi      fg      d>fg      dH        ZSdI ZTdJ ZUdK ZVej                  j                  dL e*dMd N       ej                  d O      f e+dMd N       ej                  d O      fg      dP        ZYdQ ZZdR Z[dS Z\ G dT dUe*      Z]dVZ^dW Z_ G dX dYe*      Z`dZ Zaej                  j                  d[        Zc G d\ d]      Zd G d^ d_ede      Zed` Zfda Zg G db dce      Zhdd Zide Zjdf Zkdg Zldh Zmdi Zndj Zodk Zpdl Zqdm Zr G dn do      Zs G dp dqese      Ztej                  j                  dr e        et       g      ds        Zudt Zvej                  j                  dug dv      dw        Zw ed8x      dy        Zx ed8x      dz        Zyd{ Zzd| Z{ej                  j                  d}d~dd;gfd ej                  d;g      fdddDdgfd ej                  dDdg      fddg fdd fej                  dfej                   ej                  ej                  g      fdddgfddd;d;gfd; ej                  d;g      fdddgfd ej                  dg      fd;dMgdDgf ej                  d;g      dMdDgfd e        fd ed      fg      d        Z~d Zej                  j                  d}dddg fd ej                  g       fddg dfd ej                  g d      fej                  ej                  fdddddg      d        Zy)    N)assert_allclose)config_contextdatasets)BaseEstimatorOutlierMixinTransformerMixincloneis_classifieris_clustereris_regressor)KMeans)PCA)InconsistentVersionWarning)
get_scorer)GridSearchCVKFold)Pipeline)LabelEncoderStandardScaler)SVCSVR)DecisionTreeClassifierDecisionTreeRegressor)MockDataFrame)_get_output_config)_convert_containerassert_array_equal)_check_n_featuresvalidate_datac                       e Zd ZddZy)MyEstimatorNc                      || _         || _        y Nl1empty)selfr%   r&   s      a/var/www/html/backtest/airagagent/rag_env/lib/python3.12/site-packages/sklearn/tests/test_base.py__init__zMyEstimator.__init__-   s    
    )r   N__name__
__module____qualname__r)    r*   r(   r!   r!   ,   s    r*   r!   c                       e Zd ZddZy)KNc                      || _         || _        y r#   )cd)r'   r3   r4   s      r(   r)   z
K.__init__3       r*   NNr+   r/   r*   r(   r1   r1   2       r*   r1   c                       e Zd ZddZy)TNc                      || _         || _        y r#   )ab)r'   r;   r<   s      r(   r)   z
T.__init__9   r5   r*   r6   r+   r/   r*   r(   r9   r9   8   r7   r*   r9   c                        e Zd Z fdZ xZS )NaNTagc                 F    t         |          }d|j                  _        |S )NTsuper__sklearn_tags__
input_tags	allow_nanr'   tags	__class__s     r(   rB   zNaNTag.__sklearn_tags__?   s!    w')$(!r*   r,   r-   r.   rB   __classcell__rG   s   @r(   r>   r>   >        r*   r>   c                        e Zd Z fdZ xZS )NoNaNTagc                 F    t         |          }d|j                  _        |S NFr@   rE   s     r(   rB   zNoNaNTag.__sklearn_tags__F   !    w')$)!r*   rH   rJ   s   @r(   rM   rM   E   rK   r*   rM   c                        e Zd Z fdZ xZS )OverrideTagc                 F    t         |          }d|j                  _        |S rO   r@   rE   s     r(   rB   zOverrideTag.__sklearn_tags__M   rP   r*   rH   rJ   s   @r(   rR   rR   L   rK   r*   rR   c                       e Zd Zy)DiamondOverwriteTagNr,   r-   r.   r/   r*   r(   rU   rU   S       r*   rU   c                       e Zd Zy)InheritDiamondOverwriteTagNrV   r/   r*   r(   rY   rY   W   rW   r*   rY   c                   <    e Zd ZdZ ej
                  dg      fdZy)ModifyInitParamsz_Deprecated behavior.
    Equal parameters but with a type cast.
    Doesn't fulfill a is a
    r   c                 .    |j                         | _        y r#   )copyr;   r'   r;   s     r(   r)   zModifyInitParams.__init__a   s    r*   N)r,   r-   r.   __doc__nparrayr)   r/   r*   r(   r[   r[   [   s    
 "1# r*   r[   c                       e Zd ZdZddZy)Buggyz9A buggy estimator that does not set its parameters right.Nc                     d| _         y N   r;   r^   s     r(   r)   zBuggy.__init__h   s	    r*   r#   r,   r-   r.   r_   r)   r/   r*   r(   rc   rc   e   s
    ?r*   rc   c                   "    e Zd Zd ZddZddZy)NoEstimatorc                      y r#   r/   r'   s    r(   r)   zNoEstimator.__init__m       r*   Nc                     | S r#   r/   r'   Xys      r(   fitzNoEstimator.fitp   s    r*   c                      y r#   r/   r'   rp   s     r(   predictzNoEstimator.predicts   s    r*   r6   r#   )r,   r-   r.   r)   rr   ru   r/   r*   r(   rj   rj   l   s    r*   rj   c                       e Zd ZdZd Zy)VargEstimatorz-scikit-learn estimators shouldn't have vargs.c                      y r#   r/   )r'   vargss     r(   r)   zVargEstimator.__init__z   rm   r*   Nrh   r/   r*   r(   rw   rw   w   s
    7r*   rw   c                      ddl m} m}  | |d      }t        |      }||usJ |j	                         |j	                         k(  sJ  | |t        j                  d            }t        |      }||usJ y )Nr   	SelectFpr	f_classif皙?alpha)
      )sklearn.feature_selectionr|   r}   r	   
get_paramsr`   zerosr|   r}   selectornew_selectors       r(   
test_cloner      sv     ?#.H?L<''' L$;$;$===="((7*;<H?L<'''r*   c                  h    ddl m} m}  | |d      }d|_        t	        |      }t        |d      rJ y )Nr   r{   r~   r   testown_attribute)r   r|   r}   r   r	   hasattrr   s       r(   test_clone_2r      s7     ?#.H#H?L|_5555r*   c                  *   t               } d| _        t        j                  t              5  t        |        d d d        t               }t        j                  t              5  t        |       d d d        t               }t        j                  t              5  t        |       d d d        t               }t        j                  t              5  t        |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   y xY w)Nr   )
rc   r;   pytestraisesRuntimeErrorr	   rj   	TypeErrorrw   r[   )buggyno_estimatorvarg_estests       r(   test_clone_buggyr      s    GEEG	|	$ e =L	y	! l H	|	$ h 
C	|	$ c
     s/   C%"C1C=D	%C.1C:=D	Dc                  ~   t        t        j                  g             } t        |       }t	        | j
                  |j
                         t        t        j                  t        j                  dgg                  } t        |       }t	        | j
                  j                  |j
                  j                         y )Nr&   r   )	r!   r`   ra   r	   r   r&   sp
csr_matrixdataclfclf2s     r(   test_clone_empty_arrayr      sq    
BHHRL
)C:Dsyy$**-
BMM"((QC5/:
;C:Dsyy~~tzz7r*   c                      t        t        j                        } t        |       }| j                  |j                  u sJ y Nr   )r!   r`   nanr	   r&   r   s     r(   test_clone_nanr      s/    
BFF
#C:D99

"""r*   c                  J    dt               i} t        |       }| d   |d   usJ y )Nr;   )r!   r	   )origcloneds     r(   test_clone_dictr      s-    D4[F9F3K'''r*   c            	         t        t              D  cg c]6  } | j                  d      r#t        t	        t        |       x}      t        u r|8 }} |D ]  } |t        j                  d            }t        |      }t        |      }|j                  j                  |j                  j                  u sJ t        |j                  j                         |j                  j                                 y c c} w )N_matrix   r   )dirr   endswithtypegetattrr`   eyer!   r	   r&   rG   r   toarray)nameclssparse_matrix_classessparse_matrixr   
clf_cloneds         r(   test_clone_sparse_matricesr      s     G==#GB4E-ES(F$(N 	  % LBFF1I.3Z
yy""j&6&6&@&@@@@399,,.
0@0@0H0H0JKLs   ;C3c                  n    t        t               } t        |       }| j                  |j                  u sJ y r   )r!   r	   r&   r   s     r(   test_clone_estimator_typesr      s-     K
(C:D99

"""r*   c                      d} t        j                  t        |       5  t        t               d d d        y # 1 sw Y   y xY w)Nz8You should provide an instance of scikit-learn estimatormatch)r   r   r   r	   r!   )msgs    r(   %test_clone_class_rather_than_instancer      s5     EC	y	, k  s	   7A c                      t               } dt        |       vsJ t               }dt        |      v sJ t        d      }dt        |      vsJ d|_        dt        |      v sJ y )N
set_outputF)probabilitypredict_probaT)r   r   r   r   r   )encoderscalarsvcs      r(   !test_conditional_attrs_not_in_dirr      sl     nGs7|+++F3v;&&&
%
 C#c(***COc#h&&&r*   c                      t               } t        |        t        t               t                     }t        |      dk(  sJ t        dgdz        }t	        t        |            dk(  sJ y )NzT(a=K(), b=K())long_paramsi  rg   i  )r!   reprr9   r1   len)my_estimatorr   some_ests      r(   	test_reprr      s[    =LQS!#;D:****M?T)*HtH~#%%%r*   c                  .    t               } t        |        y r#   )r!   str)r   s    r(   test_strr     s    =Lr*   c                  f   t        t               t              } d| j                  d      v sJ d| j                  d      vsJ | j                  d       | j                  j
                  dk(  sJ t        j                  t              5  | j                  d       d d d        y # 1 sw Y   y xY w)Na__dT)deepFr   )r   )a__a)	r9   r1   r   
set_paramsr;   r4   r   r   
ValueError)r   s    r(   test_get_paramsr     s    QS!9DT__$_////e4444OOO6688q==	z	"  Q     s   B''B0zestimator, expected_resultTCr~   rf   r   svc_cvFsvrsvr_cvc                 $    t        |       |k(  sJ y r#   )r
   	estimatorexpected_results     r(   test_is_classifierr     s     #666r*   c                 $    t        |       |k(  sJ y r#   )r   r   s     r(   test_is_regressorr   /       	"o555r*   
n_clusters      kmkm_cvc                 $    t        |       |k(  sJ y r#   )r   r   s     r(   test_is_clustererr   @  r   r*   c                  0   t        dt               fg      } t        j                  t              5  | j                  d       d d d        t        j                  t              5  | j                  d       d d d        y # 1 sw Y   >xY w# 1 sw Y   y xY w)Nr   T)svc__stupid_param)svm__stupid_param)r   r   r   r   r   r   )r   s    r(   test_set_paramsr   Q  s|    
UCEN#
$C 
z	" /./ 
z	" /./ /	/ // /s   B $B B	Bc                       G fddt               } dddt        d |        fg      t         |        i       fD ]  }|j                  dd        y )Nc                   "     e Zd Z fdZ xZS )?test_set_params_passes_all_parameters.<locals>.TestDecisionTreec                 4    t        |   di | |k(  sJ | S )Nr/   )rA   r   )r'   kwargsrG   expected_kwargss     r(   r   zJtest_set_params_passes_all_parameters.<locals>.TestDecisionTree.set_paramsh  s&    G((_,,,Kr*   )r,   r-   r.   r   rI   )rG   r   s   @r(   TestDecisionTreer   g  s    	 	r*   r   r   r   )	max_depthmin_samples_leafr   )estimator__max_depthestimator__min_samples_leaf)r   r   r   r   )r   r   r   s     @r(   %test_set_params_passes_all_parametersr   c  sc    1  %&1=O; 0 2345%', N 	A1M	Nr*   c                      t        t               i       } | j                  t               d       | j                  j
                  dk(  sJ y )Ng      E@)r   estimator__C)r   r   r   r   r   r   )gscvs    r(   $test_set_params_updates_valid_paramsr   v  s>     .0"5DOOce$O7>>t###r*   ztree,datasetr   )r   random_state)r   c                 (   t        |       } t        j                  j                  d      }|\  }}| j	                  ||       |j                  ddt        |            }| j                  ||      }| j                  |||      }d}||k7  sJ |       y )Nr   rf   r   )size)sample_weightz5Unweighted and weighted scores are unexpectedly equal)r	   r`   randomRandomStaterr   randintr   score)	treedatasetrngrp   rq   r  score_unweightedscore_weightedr   s	            r(   test_score_sample_weightr  ~  s     ;D
))


"CDAqHHQNKK2CFK3Mzz!Q'ZZ1MZBN
AC~-2s2-r*   c                  2    G d dt         t              } t        j                  d      }t	        |      } | |d      }t        |      }|j                  |j                  k(  j                  j                         sJ |j                  |j                  k(  sJ y )Nc                   &    e Zd ZdZddZddZd Zy)3test_clone_pandas_dataframe.<locals>.DummyEstimatora,  This is a dummy class for generating numerical features

        This feature extractor extracts numerical features from pandas data
        frame.

        Parameters
        ----------

        df: pandas data frame
            The pandas data frame parameter.

        Notes
        -----
        Nc                      || _         || _        y r#   )dfscalar_param)r'   r  r  s      r(   r)   z<test_clone_pandas_dataframe.<locals>.DummyEstimator.__init__  s    DG ,Dr*   c                      y r#   r/   ro   s      r(   rr   z7test_clone_pandas_dataframe.<locals>.DummyEstimator.fit      r*   c                      y r#   r/   rt   s     r(   	transformz=test_clone_pandas_dataframe.<locals>.DummyEstimator.transform  r  r*   re   r#   )r,   r-   r.   r_   r)   rr   r  r/   r*   r(   DummyEstimatorr    s    		-		r*   r  r   rf   )r  )
r   r   r`   aranger   r	   r  valuesallr  )r  r4   r  ecloned_es        r(   test_clone_pandas_dataframer    s~    )= 6 			"A	q	Br*AQxH DDHKK''++--->>X22222r*   c                  Z    G d dt               } t        j                  ddgddgddgg      }t               j	                  |      }|j
                  } | |      }t        |j
                  |       t        |j                         |j                                t        j                  ddgddgd	dgg      }|j	                  |       t        |j
                  |       |j                  |       t        |j
                  |       t        |      }||u sJ t        |j
                  |       y
)z:Checks that clone works with `__sklearn_clone__` protocol.c                   *    e Zd Zd Zd Zd Zd Zd Zy),test_clone_protocol.<locals>.FrozenEstimatorc                     || _         y r#   )fitted_estimator)r'   r#  s     r(   r)   z5test_clone_protocol.<locals>.FrozenEstimator.__init__  s
    $4D!r*   c                 .    t        | j                  |      S r#   )r   r#  )r'   r   s     r(   __getattr__z8test_clone_protocol.<locals>.FrozenEstimator.__getattr__  s    400$77r*   c                     | S r#   r/   rl   s    r(   __sklearn_clone__z>test_clone_protocol.<locals>.FrozenEstimator.__sklearn_clone__      Kr*   c                     | S r#   r/   r'   argsr   s      r(   rr   z0test_clone_protocol.<locals>.FrozenEstimator.fit  r(  r*   c                 :     | j                   j                  |i |S r#   )r#  r  r*  s      r(   fit_transformz:test_clone_protocol.<locals>.FrozenEstimator.fit_transform  s     24((22DCFCCr*   N)r,   r-   r.   r)   r%  r'  rr   r-  r/   r*   r(   FrozenEstimatorr!    s    	5	8			Dr*   r.  r   r      rf   N)r   r`   ra   r   rr   components_r   r   get_feature_names_outasarrayr-  r	   )r.  rp   pca
components
frozen_pcaX_newclone_frozen_pcas          r(   test_clone_protocolr;    s   D- D  	2r(RHr2h/0A
%))A,CJ %JJ**J7 z7793;T;T;VW JJQ!Q!Q01ENN5J**J7 U#J**J7 Z(z)))$00*=r*   c                  
   t        j                         } t               j                  | j                  | j
                        }t        j                  |      }d|v sJ t        j                         5  t        j                  d       t        j                  |      }d d d        |j                  | j                  | j
                        }j                  | j                  | j
                        }||k(  sJ y # 1 sw Y   ]xY w)N   _sklearn_versionerror)r   	load_irisr   rr   r   targetpickledumpswarningscatch_warningssimplefilterloadsr  )irisr  tree_pickletree_restoredscore_of_originalscore_of_restoreds         r(   ?test_pickle_version_warning_is_not_raised_with_matching_versionrL    s    D!#''		4;;?D,,t$K+---		 	 	" 2g&[12
 

499dkk:%++DIIt{{C 11112 2s   2+C99Dc                       e Zd Zd Zy)TreeBadVersionc                 L    t        | j                  j                         d      S )N	something)_sklearn_version)dict__dict__itemsrl   s    r(   __getstate__zTreeBadVersion.__getstate__  s    DMM'')KHHr*   Nr,   r-   r.   rU  r/   r*   r(   rN  rN    s    Ir*   rN  zTrying to unpickle estimator {estimator} from version {old_version} when using version {current_version}. This might lead to breaking code or invalid results. Use at your own risk.c                  `   t        j                         } t               j                  | j                  | j
                        }t        j                  |      }t        j                  ddt        j                        }t        j                  t        |      5 }t        j                  |       d d d        j                   d   j"                  }t%        |t&              sJ |j(                  dk(  sJ |j*                  dk(  sJ |j,                  t        j                  k(  sJ y # 1 sw Y   vxY w)NrN  rP  r   old_versioncurrent_versionr   r   )r   r?  rN  rr   r   r@  rA  rB  pickle_error_messageformatsklearn__version__r   warnsUserWarningrF  listmessage
isinstancer   estimator_nameoriginal_sklearn_versioncurrent_sklearn_version)rG  r  tree_pickle_otherrb  warning_records        r(   <test_pickle_version_warning_is_issued_upon_different_versionri  
  s    D		4;;7DT*"))"++ * G
 
k	1 (^&'( !!!$,,Gg9:::!!%5555++{:::**g.A.AAAA( (s   D$$D-c                       e Zd Zd Zy)TreeNoVersionc                     | j                   S r#   )rS  rl   s    r(   rU  zTreeNoVersion.__getstate__  s    }}r*   NrV  r/   r*   r(   rk  rk    s    r*   rk  c                     t        j                         } t               j                  | j                  | j
                        }t        j                  |      }d|vsJ t        j                  ddt        j                        }t        j                  t        |      5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nr=  rk  zpre-0.18rX  r   )r   r?  rk  rr   r   r@  rA  rB  r[  r\  r]  r^  r   r_  r`  rF  )rG  r  tree_pickle_noversionrb  s       r(   Dtest_pickle_version_warning_is_issued_when_no_version_info_in_picklero  "  s    D?tyy$++6D"LL.&;;;;"))!++ * G 
k	1 ,*+, , ,s   B>>Cc                     t        j                         } t               j                  | j                  | j
                        }t        j                  |      }	 t        j                  }dt        _        t        j                         5  t        j                  d       t        j                  |       d d d        |t        _        y # 1 sw Y   xY w# t        _        w xY w)N
notsklearnr>  )r   r?  rk  rr   r   r@  rA  rB  r-   rC  rD  rE  rF  )rG  r  rn  module_backups       r(   Ctest_pickle_version_no_warning_is_issued_with_non_sklearn_estimatorrs  4  s    D?tyy$++6D"LL.	1%00#/ $$& 	0!!'*LL./	0
 $1 	0 	0
 $1 s$   /C +C3C CC C c                       e Zd Zd Zd Zy)DontPickleAttributeMixinc                 D    | j                   j                         }d |d<   |S N_attribute_not_pickled)rS  r]   )r'   r   s     r(   rU  z%DontPickleAttributeMixin.__getstate__F  s$    }}!!#)-%&r*   c                 D    d|d<   | j                   j                  |       y )NT	_restored)rS  update)r'   states     r(   __setstate__z%DontPickleAttributeMixin.__setstate__K  s    !kU#r*   N)r,   r-   r.   rU  r}  r/   r*   r(   ru  ru  E  s    
$r*   ru  c                       e Zd ZddZy)MultiInheritanceEstimatorc                      || _         d | _        y r#   attribute_pickledrx  r'   r  s     r(   r)   z"MultiInheritanceEstimator.__init__Q      !2&*#r*   Nr   r+   r/   r*   r(   r  r  P  s    +r*   r  c                      t               } d| _        t        j                  |       }t        j                  |      }|j
                  dk(  sJ |j                  J |j                  sJ y N$this attribute should not be pickledr   )r  rx  rA  rB  rF  r  rz  r   
serializedestimator_restoreds      r(   3test_pickling_when_getstate_is_overwritten_by_mixinr  V  sd    )+I'MI$i(Jj1//144444<<<''''r*   c                  `   	 t               } d}|| _        t        |       j                  }dt        |       _        | j	                         }|d ddk(  sJ d|d<   | j                  |       | j                  dk(  sJ | j                  sJ 	 |t        |       _        y # t               _        w xY w)Nr  rq  r   )rx  r  r2  r  )r  rx  r   r-   rU  r}  r  rz  )r   textold_modr  s       r(   Ftest_pickling_when_getstate_is_overwritten_by_mixin_outside_of_sklearnr  a  s    --/	5+/	(y/,,%1Y"++-
STUUUU*+
&'z***a///""""%,Y"WY"s   BB B-c                   &     e Zd ZddZ fdZ xZS )SingleInheritanceEstimatorc                      || _         d | _        y r#   r  r  s     r(   r)   z#SingleInheritanceEstimator.__init__u  r  r*   c                 .    t         |          }d |d<   |S rw  )rA   rU  )r'   r|  rG   s     r(   rU  z'SingleInheritanceEstimator.__getstate__y  s     $&*.&'r*   r  )r,   r-   r.   r)   rU  rI   rJ   s   @r(   r  r  t  s    + r*   r  c                      t               } d| _        t        j                  |       }t        j                  |      }|j
                  dk(  sJ |j                  J y r  )r  rx  rA  rB  rF  r  r  s      r(   Ctest_pickling_works_when_getstate_is_overwritten_in_the_child_classr    sU    *,I'MI$i(Jj1//144444<<<r*   c                     t               } t               }| j                         j                  j                  sJ |j                         j                  j                  rJ t               }|j                         j                  j                  rJ t               }|j                         j                  j                  sJ t               }|j                         j                  j                  sJ y r#   )r>   rM   rB   rC   rD   rR   rU   rY   )nan_tag_estno_nan_tag_estredefine_tags_estdiamond_tag_estinherit_diamond_tag_ests        r(   test_tag_inheritancer    s     (KZN'')44>>>>..0;;EEEE# 113>>HHHH)+O++-88BBBB8:"335@@JJJJr*   c                       G d dt               }  |        }d}t        j                  t        |      5  |j	                          d d d        y # 1 sw Y   y xY w)Nc                       e Zd ZddZddZy)<test_raises_on_get_params_non_attribute.<locals>.MyEstimatorc                      y r#   r/   r'   params     r(   r)   zEtest_raises_on_get_params_non_attribute.<locals>.MyEstimator.__init__  r  r*   Nc                     | S r#   r/   ro   s      r(   rr   z@test_raises_on_get_params_non_attribute.<locals>.MyEstimator.fit  r(  r*   r  r#   )r,   r-   r.   r)   rr   r/   r*   r(   r!   r    s    		r*   r!   z-'MyEstimator' object has no attribute 'param'r   )r   r   r   AttributeErrorr   )r!   r   r   s      r(   'test_raises_on_get_params_non_attributer    sI    m  -C
9C	~S	1   s   AAc                      t               } | j                         }d|v sJ d|v sJ t        d      5  | j                         }d|v sJ d|vsJ 	 d d d        y # 1 sw Y   y xY w)Nz
text/plainz	text/htmlr  display)r   _repr_mimebundle_r   )r  outputs     r(   test_repr_mimebundle_r    s{    !#D##%F6!!!&   		' )'')v%%%&((() ) )s   AA#c                  
   t               } | j                         }d|v sJ t        d      5  d}t        j                  t
        |      5  | j                         }d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz<style>r  r  z _repr_html_ is only defined whenr   )r   _repr_html_r   r   r   r  )r  r  r   s      r(   test_repr_html_wrapsr    s~    !#DF		' (0]]>5 	(%%'F	(( (	( 	(( (s#   A9A-A9-A6	2A99Bc                      t               } g dg dg}t        | |d       | j                  dk(  sJ d}t        j                  t
        |      5  t        | dd	       d
d
d
       y
# 1 sw Y   y
xY w)z>Check that `_check_n_features` validates data when reset=Falserf   r   r   )r2  r      Tresetr   zHX does not contain any features, but MyEstimator is expecting 3 featuresr   	invalid XFN)r!   r   n_features_in_r   r   r   )r   X_trainr   s      r(   test_n_features_in_validationr    sg    
-C)$Gc7$/"""
TC	z	- 9#{%89 9 9s   A''A0c                  l    t               } t        | dd       t        | d      rJ t        | dd       y)z]Check that `_check_n_features` does not validate data when
    n_features_in_ is not defined.r  Tr  r  FN)r!   r   r   r   s    r(    test_n_features_in_no_validationr    s6     -Cc;d3s,--- c;e4r*   c                     t        j                  d      } t        j                         }|j                  }| j                  ||j                        } G d dt        t              } |       j                  |      }t        |j                  |j                         |j                  |       t        |d      rJ |j                  |       d}| j                  ||j                  ddd         }t        j                  t        |	      5  |j!                  |       ddd       d
}t        j"                  t$        |	      5  |j!                  |       ddd       d} |       j                  |      }t        j"                  t$        |	      5  |j!                  |       ddd       | j                  |      } |       }t'        j(                         5  t'        j*                  dt$               |j                  |       ddd       ||g}	|	D ]J  }
t'        j(                         5  t'        j*                  dt$               |j!                  |
       ddd       L | j                  |g d      } |       }t-        j.                  d      }t        j                  t0        |	      5  |j                  |       ddd       t        j                  t0        |	      5  |j!                  |       ddd       y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   sxY w# 1 sw Y    xY w# 1 sw Y   'xY w# 1 sw Y   xY w# 1 sw Y   yxY w)z;Check that feature_name_in are recorded by `_validate_data`pandascolumnsc                       e Zd ZddZd Zy).test_feature_names_in.<locals>.NoOpTransformerNc                     t        | |       | S r#   r   ro   s      r(   rr   z2test_feature_names_in.<locals>.NoOpTransformer.fit      $"Kr*   c                 "    t        | |d       |S NFr  r  rt   s     r(   r  z8test_feature_names_in.<locals>.NoOpTransformer.transform  s    $/Hr*   r#   r,   r-   r.   rr   r  r/   r*   r(   NoOpTransformerr    s    		r*   r  feature_names_in_z5The feature names should match those that were passedNr/  r   zVX does not have valid feature names, but NoOpTransformer was fitted with feature nameszIX has feature names, but NoOpTransformer was fitted without feature namesr>  )r;   r<   rf   r   a  Feature names are only supported if all input features have string names, but your input has ['int', 'str'] as feature name / column name types. If you want feature names to be stored and validated, you must convert them all to strings, by using X.columns = X.columns.astype(str) for example. Otherwise you can remove feature / column names from your input data, or convert them all to a non-string data type.)r   importorskipr   r?  r   	DataFramefeature_namesr   r   rr   r   r  r  r   r   r   r  r_  r`  rC  rD  rE  reescaper   )pdrG  X_npr  r  transr   df_baddf_int_namesXsrp   df_mixeds               r(   test_feature_names_inr    s   			X	&BD99D	dD$6$6	7B*M  !!"%Eu..

; 
IIdOu1222	IIbM
AC\\$(:(:4R4(@\AF	z	-   
	$  
k	-  VC!!$'E	k	-  <<%LE		 	 	"  g{3		,  	B $$& 	!!';7OOA	 	 ||D*:|;HE
))	?C 
y	, 		( 
y	, "!" "_        	 	 " "sT   K:LL,L!(,L.*L;M:LLL!L+.L8	;MMc                  "   t        j                  d      } t        j                         }| j	                  |j
                  |j                        }| j                  |j                        } G d dt        t              } |       }t        ||d      }t        |t        j                        sJ t        ||j!                                t        ||d      }||u sJ t        ||d      }t        |t        j                        sJ t        ||j!                                t        ||d      }	|	|u sJ t        |||d      \  }}t        |t        j                        sJ t        ||j!                                t        |t        j                        sJ t        ||j!                                t        |||d      \  }}	||u sJ |	|u sJ d	}
t        j"                  t$        |

      5  t        |       ddd       y# 1 sw Y   yxY w)z0Check skip_check_array option of _validate_data.r  r  c                       e Zd Zy)<test_validate_data_skip_check_array.<locals>.NoOpTransformerNrV   r/   r*   r(   r  r  3      r*   r  F)skip_check_arrayT)rq   r  z*Validation should be done on X, y or both.r   N)r   r  r   r?  r  r   r  Seriesr@  r   r   r   rc  r`   ndarrayr   to_numpyr   r   )r  rG  r  rq   r  no_opX_np_outX_df_outy_np_outy_series_outr   s              r(   #test_validate_data_skip_check_arrayr  +  s    
		X	&BD	dii););	<B
		$++A*M  EUB?Hh

+++Hbkkm,UB>Hr>>Ua%@Hh

+++Hajjl+ !dCL1&ub!eLHhh

+++Hbkkm,h

+++Hajjl+*5"a$OHlr>>1
6C	z	- e  s   0HHc                      t               j                  d      } t        d|       }t        |       }t        d|      }||k(  sJ y)z-Check that clone keeps the set_output config.r  )r  r  N)r   r   r   r	   )ssconfigss_cloneconfig_clones       r(   test_clone_keeps_output_configr  T  sI     
		$	$x	$	8BR0FRyH%k8<L\!!!r*   c                       e Zd Zy)_EmptyNrV   r/   r*   r(   r  r  _  rW   r*   r  c                       e Zd Zy)EmptyEstimatorNrV   r/   r*   r(   r  r  c  rW   r*   r  r   c                     | j                         }dt        j                  i}||k(  sJ t        j                  t        j
                  t                            y)zCheck that ``__getstate__`` returns an empty ``dict`` with an empty
    instance.

    Python 3.11+ changed behaviour by returning ``None`` instead of raising an
    ``AttributeError``. Non-regression test for gh-25188.
    rQ  N)rU  r]  r^  rA  rF  rB  r   )r   r|  expecteds      r(   "test_estimator_empty_instance_dictr  g  sI     ""$E"G$7$78HH LLmo./r*   c                  Z    G d d      }  G d dt         |       }d}t        j                  t        |      5   |       j	                          ddd       t        j                  t        |      5  t        j                   |              ddd       y# 1 sw Y   HxY w# 1 sw Y   yxY w)z:Using a `BaseEstimator` with `__slots__` is not supported.c                       e Zd ZdZy)Dtest_estimator_getstate_using_slots_error_message.<locals>.WithSlotsxN)r,   r-   r.   	__slots__r/   r*   r(   	WithSlotsr  z  s    	r*   r  c                       e Zd Zy)Dtest_estimator_getstate_using_slots_error_message.<locals>.EstimatorNrV   r/   r*   r(   	Estimatorr  }  r  r*   r  zRYou cannot use `__slots__` in objects inheriting from `sklearn.base.BaseEstimator`r   N)r   r   r   r   rU  rA  rB  )r  r  r   s      r(   1test_estimator_getstate_using_slots_error_messager  w  s     M9 	' 
 
y	, #  "# 
y	, "Y[!" "# #" "s   B1B!B!B*zconstructor_name, minversion))	dataframez1.5.0)pyarrowz12.0.0)polarsz0.20.23c                    g dg dg}g d}t        || ||      } G d dt        t              } |       }|j                  |       t	        |j
                  |       |j                  |      }| dk7  rt        ||       g d}t        || |	      }	t        j                  t        d
      5  |j                  |	       ddd       y# 1 sw Y   yxY w)z:Uses the dataframe exchange protocol to get feature names.)rf   r2  r   )r   r   r  )col_0col_1col_2)columns_name
minversionc                       e Zd ZddZd Zy)0test_dataframe_protocol.<locals>.NoOpTransformerNc                     t        | |       | S r#   r  ro   s      r(   rr   z4test_dataframe_protocol.<locals>.NoOpTransformer.fit  r  r*   c                     t        | |d      S r  r  rt   s     r(   r  z:test_dataframe_protocol.<locals>.NoOpTransformer.transform  s     q66r*   r#   r  r/   r*   r(   r  r    s    		7r*   r  r  )r;   r<   r3   )r  zThe feature names should matchr   N)r   r   r   rr   r   r  r  r   r   r   r   )
constructor_namer  r   r  r  r  r  X_out	bad_namesr  s
             r(   test_dataframe_protocolr    s     y!D)G	W
B7*M 7 E	IIbMu..8OOBE9$ 	E"I&6YOF	z)I	J       s   -CC)enable_metadata_routingc                      G d dt         t              } t        j                  t        d      5   |        j                  d      j                  dggdgd       ddd       t        j                  d	      5 } |        j                  d      j                  dggdg       t        |      d
k(  sJ 	 ddd       y# 1 sw Y   dxY w# 1 sw Y   yxY w)zkTest that having a transformer with metadata for transform raises a
    warning when calling fit_transform.c                       e Zd ZddZddZy)Ttest_transformer_fit_transform_with_metadata_in_transform.<locals>.CustomTransformerNc                     | S r#   r/   r'   rp   rq   props       r(   rr   zXtest_transformer_fit_transform_with_metadata_in_transform.<locals>.CustomTransformer.fit  r(  r*   c                     |S r#   r/   r'   rp   r  s      r(   r  z^test_transformer_fit_transform_with_metadata_in_transform.<locals>.CustomTransformer.transform      Hr*   r6   r#   r  r/   r*   r(   CustomTransformerr        		r*   r  z*`transform` method which consumes metadatar   Tr  rf   Nrecordr   )
r   r   r   r_  r`  set_transform_requestr-  rC  rD  r   )r  r  s     r(   9test_transformer_fit_transform_with_metadata_in_transformr    s    
M+;  
k)U	V 
11t1<JJSEA3Q 	K 	

 
	 	 	-  11t1<JJQC5STRUV6{a   
 
      -C ;;C C	Cc                      G d dt         t              } t        j                  t        d      5   |        j                  d      j                  dggdgd       ddd       t        j                  d	      5 } |        j                  d      j                  dggdg       t        |      d
k(  sJ 	 ddd       y# 1 sw Y   dxY w# 1 sw Y   yxY w)ziTest that having an OutlierMixin with metadata for predict raises a
    warning when calling fit_predict.c                       e Zd ZddZddZy)Vtest_outlier_mixin_fit_predict_with_metadata_in_predict.<locals>.CustomOutlierDetectorNc                     | S r#   r/   r  s       r(   rr   zZtest_outlier_mixin_fit_predict_with_metadata_in_predict.<locals>.CustomOutlierDetector.fit  r(  r*   c                     |S r#   r/   r  s      r(   ru   z^test_outlier_mixin_fit_predict_with_metadata_in_predict.<locals>.CustomOutlierDetector.predict  r  r*   r6   r#   )r,   r-   r.   rr   ru   r/   r*   r(   CustomOutlierDetectorr"    r  r*   r%  z(`predict` method which consumes metadatar   Tr  rf   Nr  r   )
r   r   r   r_  r`  set_predict_requestfit_predictrC  rD  r   )r%  r  s     r(   7test_outlier_mixin_fit_predict_with_metadata_in_predictr(    s    
|  
k)S	T 
333>JJSEA3Q 	K 	

 
	 	 	-  333>JJQC5STRUV6{a   
 
   r  c                      t        d      } | j                         dddk(  sJ | j                         j                  dk(  sJ y)z5Check the behaviour of the `_get_params_html` method.r   r   r   r$   N)r!   _get_params_htmlnon_defaultr  s    r(   test_get_params_htmlr,    sE    
F
#C!A%????!--;;;r*   c                 *      G  fddt               }|S )Nc                       e Zd ZW  fdZy)3make_estimator_with_param.<locals>.DynamicEstimatorc                     || _         y r#   r  r  s     r(   r)   z<make_estimator_with_param.<locals>.DynamicEstimator.__init__  s	    DJr*   Nr+   default_values   r(   DynamicEstimatorr/    s    !. 	r*   r4  )r   )r3  r4  s   ` r(   make_estimator_with_paramr5    s    =  r*   zdefault_value, test_value)r/   )rf   r/   )rf   r   )r   r2  r6  r2  re   c                     | S r#   r/   r  s    r(   <lambda>r8    s     r*         ?)abcdefr:  )TF)r9         @accuracyc                 h     t        |       |      }|j                         j                  }d|v sJ y)zCheck that we detect non-default parameters with various types.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/31525
    r1  r  Nr5  r*  r+  r3  
test_valuer   r+  s       r(   test_param_is_non_defaultrB    s9    F 9)-8zJI,,.::Kk!!!r*   c                      t        j                  d      }  t        d      | j                        }|j	                         j
                  }d|v sJ y)zCheck that we detect pandas.Na as non-default parameter.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/32312
    r  r   r2  r1  r  N)r   r  r5  NAr*  r+  )r  r   r+  s      r(   (test_param_is_non_default_when_pandas_NArE     sL     
		X	&B:):GI,,.::Kk!!!r*   r6   )r/   r/   )r  r  r  )r:  r:  )TT)rf   rf   )r9  r9  )r   r<  c                 h     t        |       |      }|j                         j                  }d|vsJ y)zCheck that we detect the default parameters and values in an array-like will
    be reported as default as well.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/31525
    r1  r  Nr?  r@  s       r(   test_param_is_defaultrG  -  s8    2 9)-8zJI,,.::K+%%%r*   )rA  r  rC  numpyr`   r   scipy.sparsesparser   numpy.testingr   r]  r   r   sklearn.baser   r   r   r	   r
   r   r   sklearn.clusterr   sklearn.decompositionr   sklearn.exceptionsr   sklearn.metricsr   sklearn.model_selectionr   r   sklearn.pipeliner   sklearn.preprocessingr   r   sklearn.svmr   r   sklearn.treer   r   sklearn.utils._mockingr   sklearn.utils._set_outputr   sklearn.utils._testingr   r   sklearn.utils.validationr   r   r!   r1   r9   r>   rM   rR   rU   rY   r[   rc   rj   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   markparametrizer   r   r   r   r   r   make_classificationmake_regressionr  r  r;  rL  rN  r[  ri  rk  ro  thread_unsafers  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r,  r5  ra   r   rB  rE  rG  r/   r*   r(   <module>r_     s    	     )  ,   # % 9 & 7 % >   F 0 8 F
-   ] } & 	&( 		!4 	} M  M ($6(8#(L#' &
   		cecC8_	-t4	E35>"	#T*	Hl353a/BCD	EtL		cecC8_	-u5	E35>"	#U+	Hl353a/BCD	EuM	77  		cecC8_	-t4	E35>"	#T*	Hl353a/BCD	EtL		cecC8_	-u5	E35>"	#U+	Hl353a/BCD	EuM	66  	4	fh1v 6	7>	D&(#$	%t,	G\&(\Aq64JKLM	NPTU		cecC8_	-u5	E35>"	#U+	Hl353a/BCD	EuM	66
/$N&$  #QQ?(H((a8	

 "AA>$H$$!4	
	33#3L)>X2 I+ I B&* 
,$ 1 1 $ $+ 8- +(-& =K$
)
(
9	5K"\&R"	 		V] 	 }8H&IJ0 K0"* "  @ -  . 2 -  . 2< 	aS		XRXXqc]	!Q	1a&!"	r
	{		266(#$		
QC	
HBHHaSM	se	hbhhuo
Q!	1#A	uw	z*%&1:";:"
" 	R	XRXXb\	I	HBHHY'(	$	&%$	&r*   