
    lri                     
   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jO        P                    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jO        P                    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jO        P                    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jO        P                    dL e*dMd N           ejW        d O          f e+dMd N           ejX        d O          fg          dP             ZYdQ ZZdR Z[dS Z\ G dT dUe*          Z]dVZ^dW Z_ G dX dYe*          Z`dZ ZaejO        jb        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jO        P                    dr e             et            g          ds             Zudt ZvejO        P                    dug dv          dw             Zw ed8x          dy             Zx ed8x          dz             Zyd{ Zzd| Z{ejO        P                    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jO        P                    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             ZdS )    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dS )MyEstimatorr   Nc                 "    || _         || _        d S Nl1empty)selfr%   r&   s      w/var/www/html/bestrading.cuttalo.com/services/ml-inference/venv/lib/python3.11/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dS )KNc                 "    || _         || _        d S 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dS )TNc                 "    || _         || _        d S 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                 `    t                                                      }d|j        _        |S )NTsuper__sklearn_tags__
input_tags	allow_nanr'   tags	__class__s     r(   rB   zNaNTag.__sklearn_tags__?   s'    ww''))$(!r*   r,   r-   r.   rB   __classcell__rG   s   @r(   r>   r>   >   8                r*   r>   c                        e Zd Z fdZ xZS )NoNaNTagc                 `    t                                                      }d|j        _        |S NFr@   rE   s     r(   rB   zNoNaNTag.__sklearn_tags__F   '    ww''))$)!r*   rH   rJ   s   @r(   rM   rM   E   rK   r*   rM   c                        e Zd Z fdZ xZS )OverrideTagc                 `    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dS )DiamondOverwriteTagNr,   r-   r.   r/   r*   r(   rU   rU   S           Dr*   rU   c                       e Zd ZdS )InheritDiamondOverwriteTagNrV   r/   r*   r(   rY   rY   W   rW   r*   rY   c                   :    e Zd ZdZ ej        dg          fdZdS )ModifyInitParamsz_Deprecated behavior.
    Equal parameters but with a type cast.
    Doesn't fulfill a is a
    r   c                 8    |                                 | _        d S 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[   [   sC         
 "1#      r*   r[   c                       e Zd ZdZddZdS )Buggyz9A buggy estimator that does not set its parameters right.Nc                     d| _         d S 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dS )NoEstimatorc                     d S 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                     d S r#   r/   r'   rp   s     r(   predictzNoEstimator.predicts   s    tr*   r6   r#   )r,   r-   r.   r)   rr   ru   r/   r*   r(   rj   rj   l   sK                  r*   rj   c                       e Zd ZdZd ZdS )VargEstimatorz-scikit-learn estimators shouldn't have vargs.c                     d S r#   r/   )r'   vargss     r(   r)   zVargEstimator.__init__z   rm   r*   Nrh   r/   r*   r(   rw   rw   w   s)        77    r*   rw   c                     ddl m} m}  | |d          }t          |          }||usJ |                                |                                k    sJ  | |t          j        d                    }t          |          }||usJ d S )Nr   	SelectFpr	f_classif皙?alpha)
      )sklearn.feature_selectionr|   r}   r	   
get_paramsr`   zerosr|   r}   selectornew_selectors       r(   
test_cloner      s     ?>>>>>>>y#...H??L<''''  L$;$;$=$=====y"(7*;*;<<<H??L<''''''r*   c                      ddl m} m}  | |d          }d|_        t	          |          }t          |d          rJ d S )Nr   r{   r~   r   testown_attribute)r   r|   r}   r   r	   hasattrr   s       r(   test_clone_2r      s_     ?>>>>>>>y#...H#H??L|_5555555r*   c                     t                      } d| _        t          j        t                    5  t          |            d d d            n# 1 swxY w Y   t                      }t          j        t                    5  t          |           d d d            n# 1 swxY w Y   t                      }t          j        t                    5  t          |           d d d            n# 1 swxY w Y   t                      }t          j        t                    5  t          |           d d d            d S # 1 swxY w Y   d S )Nr   )
rc   r;   pytestraisesRuntimeErrorr	   rj   	TypeErrorrw   r[   )buggyno_estimatorvarg_estests       r(   test_clone_buggyr      s   GGEEG	|	$	$  e               ==L	y	!	!  l               H	|	$	$  h               

C	|	$	$  c


                 sG   AAA=BB BC''C+.C+D66D:=D:c                  n   t          t          j        g                     } t          |           }t	          | j        |j                   t          t          j        t          j        dgg                              } t          |           }t	          | j        j        |j        j                   d S )Nr&   r   )	r!   r`   ra   r	   r   r&   sp
csr_matrixdataclfclf2s     r(   test_clone_empty_arrayr      s    
BHRLL
)
)
)C::Dsy$*---
BM"(QC5//::
;
;
;C::Dsy~tz77777r*   c                  x    t          t          j                  } t          |           }| j        |j        u sJ d S Nr   )r!   r`   nanr	   r&   r   s     r(   test_clone_nanr      s:    
BF
#
#
#C::D9
""""""r*   c                  h    dt                      i} t          |           }| d         |d         usJ d S )Nr;   )r!   r	   )origcloneds     r(   test_clone_dictr      s:    D4[[F9F3K''''''r*   c                  z   fdt          t                    D             } | D ] t          j        d                    }t	          |          }t          |          }|j        j        |j        j        u sJ t          |j        	                                |j        	                                           d S )Nc                     g | ]D}|                     d           r-t          t          t          |          x          t          u BES )_matrix)endswithtypegetattrr   ).0nameclss     r(   
<listcomp>z.test_clone_sparse_matrices.<locals>.<listcomp>   s[       ==## )-GB4E4E-ES(F(F$(N(N 	(N(N(Nr*      r   )
dirr   r`   eyer!   r	   r&   rG   r   toarray)sparse_matrix_classessparse_matrixr   
clf_clonedr   s       @r(   test_clone_sparse_matricesr      s       GG   % L LBF1II...3ZZ
y"j&6&@@@@@39,,..
0@0H0H0J0JKKKKL Lr*   c                  n    t          t                     } t          |           }| j        |j        u sJ d S r   )r!   r	   r&   r   s     r(   test_clone_estimator_typesr      s:     K
(
(
(C::D9
""""""r*   c                      d} t          j        t          |           5  t          t                     d d d            d S # 1 swxY w Y   d S )Nz8You should provide an instance of scikit-learn estimatormatch)r   r   r   r	   r!   )msgs    r(   %test_clone_class_rather_than_instancer      s     EC	y	,	,	,  k                 s   A  A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 d S )N
set_outputF)probabilitypredict_probaT)r   r   r   r   r   )encoderscalarsvcs      r(   !test_conditional_attrs_not_in_dirr      s     nnGs7||++++F3v;;&&&&
%
 
 
 C#c((****COc#hh&&&&&&r*   c                  &   t                      } t          |            t          t                      t                                }t          |          dk    sJ t          dgdz            }t	          t          |                    dk    sJ d S )NzT(a=K(), b=K())long_paramsi  rg   i  )r!   reprr9   r1   len)my_estimatorr   some_ests      r(   	test_reprr      s    ==LQSS!##;;D::*****M?T)***HtH~~#%%%%%%r*   c                  @    t                      } t          |            d S r#   )r!   str)r   s    r(   test_strr     s    ==Lr*   c                     t          t                      t                    } d|                     d          v sJ d|                     d          vsJ |                     d           | j        j        dk    sJ t          j        t                    5  |                     d           d d d            d S # 1 swxY w Y   d S )Na__dT)deepFr   )r   )a__a)	r9   r1   r   
set_paramsr;   r4   r   r   
ValueError)r   s    r(   test_get_paramsr     s    QSS!99DT__$_//////e444444OOO68q====	z	"	"    Q                                   s   B;;B?B?zestimator, expected_resultTCr~   rf   r   svc_cvFsvrsvr_cvc                 0    t          |           |k    sJ d S r#   )r
   	estimatorexpected_results     r(   test_is_classifierr     s#     ##666666r*   c                 0    t          |           |k    sJ d S r#   )r   r   s     r(   test_is_regressorr   /  #     	""o555555r*   
n_clusters      kmkm_cvc                 0    t          |           |k    sJ d S r#   )r   r   s     r(   test_is_clustererr   @  r   r*   c                  `   t          dt                      fg          } t          j        t                    5  |                     d           d d d            n# 1 swxY w Y   t          j        t                    5  |                     d           d d d            d S # 1 swxY w Y   d S )Nr   T)svc__stupid_param)svm__stupid_param)r   r   r   r   r   r   )r   s    r(   test_set_paramsr   Q  s   
UCEEN#
$
$C 
z	"	" / /.../ / / / / / / / / / / / / / / 
z	"	" / /.../ / / / / / / / / / / / / / / / / /s#   AA"A?B##B'*B'c                       G fddt                     } dddt          d |             fg          t           |             i           fD ]}|                    dd           d S )Nc                   "     e Zd Z fdZ xZS )?test_set_params_passes_all_parameters.<locals>.TestDecisionTreec                 J     t                      j        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  s6    EGG(((((_,,,,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  s          1    %&1==O; 0 0 2 23455%%'',, N N 	A1MMMM	N Nr*   c                      t          t                      i           } |                     t                      d           | j        j        dk    sJ d S )Ng      E@)r   estimator__C)r   r   r   r   r   r   )gscvs    r(   $test_set_params_updates_valid_paramsr  v  sP     .00"55DOOcee$O777>t######r*   ztree,datasetr   )r   random_state)r  c                 b   t          |           } t          j                            d          }|\  }}|                     ||           |                    ddt          |                    }|                     ||          }|                     |||          }d}||k    s
J |            d S )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NNNKK2CFFK33Mzz!Q''ZZ1MZBBN
AC~---s-----r*   c                  ,    G d dt           t                    } t          j        d          }t	          |          } | |d          }t          |          }|j        |j        k    j                                        sJ |j	        |j	        k    sJ d S )Nc                   (    e Zd ZdZddZddZd ZdS )	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
        -----
        Nrf   c                 "    || _         || _        d S r#   )dfscalar_param)r'   r  r  s      r(   r)   z<test_clone_pandas_dataframe.<locals>.DummyEstimator.__init__  s    DG ,Dr*   c                     d S r#   r/   ro   s      r(   rr   z7test_clone_pandas_dataframe.<locals>.DummyEstimator.fit      Dr*   c                     d S 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    sU        	 		- 	- 	- 	-	 	 	 		 	 	 	 	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QxxH DHK'++----->X2222222r*   c                      G d dt                     } t          j        ddgddgddgg          }t                                          |          }|j        } | |          }t          |j        |           t          |                                |                                           t          j	        ddgddgd	dgg          }|                    |           t          |j        |           |
                    |           t          |j        |           t          |          }||u sJ t          |j        |           d
S )z:Checks that clone works with `__sklearn_clone__` protocol.c                   ,    e Zd Zd Zd Zd Zd Zd ZdS ),test_clone_protocol.<locals>.FrozenEstimatorc                     || _         d S 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$7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(2DCFCCCr*   N)r,   r-   r.   r)   r(  r*  rr   r0  r/   r*   r(   FrozenEstimatorr$    sd        	5 	5 	5	8 	8 	8	 	 		 	 		D 	D 	D 	D 	Dr*   r1  r   r      rf   N)r   r`   ra   r   rr   components_r   r   get_feature_names_outasarrayr0  r	   )r1  rp   pca
components
frozen_pcaX_newclone_frozen_pcas          r(   test_clone_protocolr>    sk   D D D D D- D D D  	2r(RHr2h/00A
%%))A,,CJ %%JJ*J777 z77993;T;T;V;VWWW JQ!Q!Q011ENN5J*J777 U###J*J777 Z((z))))$0*=====r*   c                     t          j                    } t                                          | j        | j                  }t          j        |          }d|v sJ t          j	                    5  t          j
        d           t          j        |          }d d d            n# 1 swxY w Y   |                    | j        | j                  }|                    | j        | j                  }||k    sJ d S )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_versionrO    s   D!##''	4;??D,t$$K+----		 	"	" 2 2g&&&[112 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 

49dk::%++DIt{CC 1111111s   -)B""B&)B&c                       e Zd Zd ZdS )TreeBadVersionc                 R    t          | j                                        d          S )N	something)_sklearn_version)dict__dict__itemsrl   s    r(   __getstate__zTreeBadVersion.__getstate__  s#    DM''))KHHHHr*   Nr,   r-   r.   rX  r/   r*   r(   rQ  rQ    s(        I I I I Ir*   rQ  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                  }t          j        |          }t          	                    ddt          j                  }t          j        t          |          5 }t          j        |           d d d            n# 1 swxY w Y   |j        d         j        }t%          |t&                    sJ |j        dk    sJ |j        dk    sJ |j        t          j        k    sJ d S )NrQ  rS  r   old_versioncurrent_versionr   r   )r   rB  rQ  rr   r   rC  rD  rE  pickle_error_messageformatsklearn__version__r   warnsUserWarningrI  listmessage
isinstancer   estimator_nameoriginal_sklearn_versioncurrent_sklearn_version)rJ  r  tree_pickle_otherre  warning_records        r(   <test_pickle_version_warning_is_issued_upon_different_versionrl  
  sN   D	4;77DT**"))"+ *  G
 
k	1	1	1 (^&'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( !!$,Gg9:::::!%55555+{::::*g.AAAAAAAs   B77B;>B;c                       e Zd Zd ZdS )TreeNoVersionc                     | j         S r#   )rV  rl   s    r(   rX  zTreeNoVersion.__getstate__  s
    }r*   NrY  r/   r*   r(   rn  rn    s#            r*   rn  c                     t          j                    } t                                          | j        | j                  }t          j        |          }d|vsJ t          	                    ddt          j                  }t          j        t          |          5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nr@  rn  zpre-0.18r[  r   )r   rB  rn  rr   r   rC  rD  rE  r^  r_  r`  ra  r   rb  rc  rI  )rJ  r  tree_pickle_noversionre  s       r(   Dtest_pickle_version_warning_is_issued_when_no_version_info_in_picklerr  "  s   D??ty$+66D"L..&;;;;;"))!+ *  G 
k	1	1	1 , ,*+++, , , , , , , , , , , , , , , , , ,s   B>>CCc                     t          j                    } t                                          | j        | j                  }t          j        |          }	 t          j        }dt          _        t          j
                    5  t          j        d           t          j        |           d d d            n# 1 swxY w Y   |t          _        d S # |t          _        w xY w)N
notsklearnrA  )r   rB  rn  rr   r   rC  rD  rE  r-   rF  rG  rH  rI  )rJ  r  rq  module_backups       r(   Ctest_pickle_version_no_warning_is_issued_with_non_sklearn_estimatorrv  4  s    D??ty$+66D"L..	1%0#/ $&& 	0 	0!'***L.///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0
 $1   = 0000s0   +C  )B5)C 5B99C <B9=C Cc                       e Zd Zd Zd ZdS )DontPickleAttributeMixinc                 B    | j                                         }d |d<   |S N_attribute_not_pickled)rV  r]   )r'   r   s     r(   rX  z%DontPickleAttributeMixin.__getstate__F  s%    }!!##)-%&r*   c                 D    d|d<   | j                             |           d S )NT	_restored)rV  update)r'   states     r(   __setstate__z%DontPickleAttributeMixin.__setstate__K  s(    !kU#####r*   N)r,   r-   r.   rX  r  r/   r*   r(   rx  rx  E  s2          
$ $ $ $ $r*   rx  c                       e Zd ZddZdS )MultiInheritanceEstimatorr   c                 "    || _         d | _        d S r#   attribute_pickledr{  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 d S N$this attribute should not be pickledr   )r  r{  rD  rE  rI  r  r}  r   
serializedestimator_restoreds      r(   3test_pickling_when_getstate_is_overwritten_by_mixinr  V  sl    )++I'MI$i((Jj11/144444<<<''''''r*   c                     	 t                      } d}|| _        t          |           j        }dt          |           _        |                                 }|d ddk    sJ d|d<   |                     |           | j        dk    sJ | j        sJ 	 |t          |           _        d S # |t          |           _        w xY w)Nr  rt  r   )r{  r  r5  r  )r  r{  r   r-   rX  r  r  r}  )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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 )SingleInheritanceEstimatorr   c                 "    || _         d | _        d S r#   r  r  s     r(   r)   z#SingleInheritanceEstimator.__init__u  r  r*   c                 R    t                                                      }d |d<   |S rz  )rA   rX  )r'   r  rG   s     r(   rX  z'SingleInheritanceEstimator.__getstate__y  s(    $$&&*.&'r*   r  )r,   r-   r.   r)   rX  rI   rJ   s   @r(   r  r  t  sL        + + + +        r*   r  c                      t                      } d| _        t          j        |           }t          j        |          }|j        dk    sJ |j        J d S r  )r  r{  rD  rE  rI  r  r  s      r(   Ctest_pickling_works_when_getstate_is_overwritten_in_the_child_classr    s]    *,,I'MI$i((Jj11/144444<<<<<r*   c                     t                      } t                      }|                                 j        j        sJ |                                j        j        rJ t                      }|                                j        j        rJ t                      }|                                j        j        sJ t                      }|                                j        j        sJ d S 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ZZN''))4>>>>..00;EEEE# 1133>HHHH)++O++--8BBBB8::"3355@JJJJJJr*   c                       G d dt                     }  |             }d}t          j        t          |          5  |                                 d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZddZddZdS )<test_raises_on_get_params_non_attribute.<locals>.MyEstimatorr   c                     d S 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    s        m    +--C
9C	~S	1	1	1                   s   AA!$A!c                      t                      } |                                 }d|v sJ d|v sJ t          d          5  |                                 }d|v sJ d|vsJ 	 d d d            d S # 1 swxY w Y   d S )Nz
text/plainz	text/htmlr  display)r   _repr_mimebundle_r   )r  outputs     r(   test_repr_mimebundle_r    s    !##D##%%F6!!!!&    		'	'	' ) )''))v%%%%&((((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   !A..A25A2c                  :   t                      } |                                 }d|v sJ t          d          5  d}t          j        t
          |          5  |                                 }d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )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55 	( 	(%%''F	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s5   BA8,B8A<	<B?A<	 BB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
           d
S # 1 swxY w Y   d
S )z>Check that `_check_n_features` validates data when reset=Falserf   r   r   )r5  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    s    
--Cyy)))$Gc7$////""""
TC	z	-	-	- 9 9#{%88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   A33A7:A7c                      t                      } t          | dd           t          | d          rJ t          | dd           dS )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    sV     --Cc;d3333s,----- c;e444444r*   c                  :   t          j        d          } t          j                    }|j        }|                     ||j                  } G d dt          t                    } |            	                    |          }t          |j        |j                   |	                    |           t          |d          rJ |	                    |           d}|                     ||j        ddd                   }t          j        t          |	          5  |                    |           ddd           n# 1 swxY w Y   d
}t          j        t$          |	          5  |                    |           ddd           n# 1 swxY w Y   d} |            	                    |          }t          j        t$          |	          5  |                    |           ddd           n# 1 swxY w Y   |                     |          } |            }t'          j                    5  t'          j        dt$                     |	                    |           ddd           n# 1 swxY w Y   ||g}	|	D ]\}
t'          j                    5  t'          j        dt$                     |                    |
           ddd           n# 1 swxY w Y   ]|                     |g d          } |            }t-          j        d          }t          j        t0          |	          5  |	                    |           ddd           n# 1 swxY w Y   t          j        t0          |	          5  |                    |           ddd           dS # 1 swxY w Y   dS )z;Check that feature_name_in are recorded by `_validate_data`pandascolumnsc                       e Zd ZddZd ZdS ).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    s7        	 	 	 		 	 	 	 	r*   r  feature_names_in_z5The feature names should match those that were passedNr2  r   zVX does not have valid feature names, but NoOpTransformer was fitted with feature nameszIX has feature names, but NoOpTransformer was fitted without feature namesrA  )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   rB  r   	DataFramefeature_namesr   r   rr   r   r  r  r   r   r   r  rb  rc  rF  rG  rH  reescaper   )pdrJ  X_npr  r  transr   df_baddf_int_namesXsrp   df_mixeds               r(   test_feature_names_inr    s:   		X	&	&BD9D	dD$6	7	7B    *M    O!!"%%Eu.
;;; 
IIdOOOu122222	IIbMMM
AC\\$(:44R4(@\AAF	z	-	-	-                                 
	$  
k	-	-	-                 VCO!!$''E	k	-	-	-                 <<%%LOE		 	"	"    g{333		,                              	B  $&& 	 	!';777OOA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 ||D*:*:*:|;;HOE
)	? C 
y	,	,	,  		(               
y	,	,	, " "!!!" " " " " " " " " " " " " " " " " "s~   D;;D?D?#FF	F	
G,,G03G0)0I%%I),I)0KK	K	%MMM-NNNc                     t          j        d          } t          j                    }|                     |j        |j                  }|                     |j                  } G d dt          t                    } |            }t          ||d          }t          |t          j                  sJ t          ||                                           t          ||d          }||u sJ t          ||d          }t          |t          j                  sJ t          ||                                           t          ||d          }	|	|u sJ t          |||d          \  }}t          |t          j                  sJ t          ||                                           t          |t          j                  sJ t          ||                                           t          |||d          \  }}	||u sJ |	|u sJ d	}
t          j        t$          |

          5  t          |           ddd           dS # 1 swxY w Y   dS )z0Check skip_check_array option of _validate_data.r  r  c                       e Zd ZdS )<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   rB  r  r   r  SeriesrC  r   r   r   rf  r`   ndarrayr   to_numpyr   r   )r  rJ  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	di);	<	<B
		$+A    *M    OEUB???Hh
+++++Hbkkmm,,,UB>>>Hr>>>>Ua%@@@Hh
+++++Hajjll+++ !dCCCL1&ub!eLLLHhh
+++++Hbkkmm,,,h
+++++Hajjll+++*5"a$OOOHlr>>>>1
6C	z	-	-	-  e                 s   'IIIc                      t                                          d          } t          d|           }t          |           }t          d|          }||k    sJ dS )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  s`     
			$	$x	$	8	8BR00FRyyH%k8<<L\!!!!!!r*   c                       e Zd ZdS )_EmptyNrV   r/   r*   r(   r  r  _  rW   r*   r  c                       e Zd ZdS )EmptyEstimatorNrV   r/   r*   r(   r  r  c  rW   r*   r  r   c                     |                                  }dt          j        i}||k    sJ t          j        t          j        t                                           dS )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.
    rT  N)rX  r`  ra  rD  rI  rE  r   )r   r  expecteds      r(   "test_estimator_empty_instance_dictr  g  sY     ""$$E"G$78HH Lmoo../////r*   c                      G d d          }  G d dt           |           }d}t          j        t          |          5   |                                             ddd           n# 1 swxY w Y   t          j        t          |          5  t          j         |                       ddd           dS # 1 swxY w Y   dS )z:Using a `BaseEstimator` with `__slots__` is not supported.c                       e Zd ZdZdS )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dS )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   rX  rD  rE  )r  r  r   s      r(   1test_estimator_getstate_using_slots_error_messager  w  su              M9   	' 
 
y	,	,	, # #	  """# # # # # # # # # # # # # # # 
y	,	,	, " "YY[[!!!" " " " " " " " " " " " " " " " " "s#   A((A,/A,B88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                    } |            }|                    |           t	          |j        |           |                    |          }| dk    rt          ||           g d}t          || |	          }	t          j	        t          d
          5  |                    |	           ddd           dS # 1 swxY w Y   dS )z:Uses the dataframe exchange protocol to get feature names.)rf   r5  r   )r   r   r  )col_0col_1col_2)columns_name
minversionc                       e Zd ZddZd ZdS )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666r*   r#   r  r/   r*   r(   r  r
    s7        	 	 	 		7 	7 	7 	7 	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    su    IIyyy!D)))G	W
 
 
B7 7 7 7 7*M 7 7 7 OE	IIbMMMu.888OOBE9$$ 	E"""I&6YOOOF	z)I	J	J	J                                       s   	C,,C03C0)enable_metadata_routingc                      G d dt           t                    } t          j        t          d          5   |                                 d                              dggdgd           ddd           n# 1 swxY w Y   t          j        d	          5 } |                                 d                              dggdg           t          |          d
k    sJ 	 ddd           dS # 1 swxY w Y   dS )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dS )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   rb  rc  set_transform_requestr0  rF  rG  r   )r  r  s     r(   9test_transformer_fit_transform_with_metadata_in_transformr!    s   
    M+;    
k)U	V	V	V 
 
11t1<<JJSEA3Q 	K 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
	 	-	-	-  11t1<<JJQC5STRUVVV6{{a                                   $   8A99A= A=AC22C69C6c                      G d dt           t                    } t          j        t          d          5   |                                 d                              dggdgd           ddd           n# 1 swxY w Y   t          j        d	          5 } |                                 d                              dggdg           t          |          d
k    sJ 	 ddd           dS # 1 swxY w Y   dS )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dS )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   rb  rc  set_predict_requestfit_predictrF  rG  r   )r(  r  s     r(   7test_outlier_mixin_fit_predict_with_metadata_in_predictr+    s   
    |    
k)S	T	T	T 
 
333>>JJSEA3Q 	K 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
	 	-	-	-  333>>JJQC5STRUVVV6{{a                                   r"  c                      t          d          } |                                 dddk    sJ |                                 j        dk    sJ dS )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/    s]    
F
#
#
#C!!A%?%?????!!-;;;;;;r*   c                 2      G  fddt                     }|S )Nc                       e Zd Z fdZdS )3make_estimator_with_param.<locals>.DynamicEstimatorc                     || _         d S r#   r  r  s     r(   r)   z<make_estimator_with_param.<locals>.DynamicEstimator.__init__  s    DJJJr*   Nr+   default_values   r(   DynamicEstimatorr2    s,        !. 	 	 	 	 	 	r*   r7  )r   )r6  r7  s   ` r(   make_estimator_with_paramr8    s?          =    r*   zdefault_value, test_value)r/   )rf   r/   )rf   r   )r   r5  r9  r5  re   c                     | S r#   r/   r  s    r(   <lambda>r;    s     r*         ?)abcdefr=  )TF)r<         @accuracyc                 v     t          |           |          }|                                j        }d|v sJ dS )zCheck that we detect non-default parameters with various types.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/31525
    r4  r  Nr8  r-  r.  r6  
test_valuer   r.  s       r(   test_param_is_non_defaultrE    sK    F 9)-88zJJJI,,..:Kk!!!!!!r*   c                      t          j        d          }  t          d          | j                  }|                                j        }d|v sJ dS )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   r5  r4  r  N)r   r  r8  NAr-  r.  )r  r   r.  s      r(   (test_param_is_non_default_when_pandas_NArH     s_     
	X	&	&B:):::GGGI,,..:Kk!!!!!!r*   r6   )r/   r/   )r  r  r  )r=  r=  )TT)rf   rf   )r<  r<  )r   r?  c                 v     t          |           |          }|                                j        }d|vsJ dS )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
    r4  r  NrB  rC  s       r(   test_param_is_defaultrJ  -  sJ    2 9)-88zJJJI,,..:K+%%%%%%r*   )rD  r  rF  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>  rO  rQ  r^  rl  rn  rr  thread_unsaferv  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r+  r/  r8  ra   r   rE  rH  rJ  r/   r*   r(   <module>rb     s    				             ) ) ) ) ) )  , , , , , , , ,                  # " " " " " % % % % % % 9 9 9 9 9 9 & & & & & & 7 7 7 7 7 7 7 7 % % % % % % > > > > > > > >                 F F F F F F F F 0 0 0 0 0 0 8 8 8 8 8 8        F E E E E E E E
    -                     ]       }       &   	 	 	 	 	&( 	 	 		 	 	 	 	!4 	 	 	    }       M              M   ( ( ($6 6 6  (8 8 8# # #( ( (L L L# # #  ' ' ' & & &  
  
  
   		cceecC8_	-	-t4	E3355>"	#	#T*	Hll33553a/BBCD	E	EtL		cceecC8_	-	-u5	E3355>"	#	#U+	Hll33553a/BBCD	E	EuM	 7 7 7  		cceecC8_	-	-t4	E3355>"	#	#T*	Hll33553a/BBCD	E	EtL		cceecC8_	-	-u5	E3355>"	#	#U+	Hll33553a/BBCD	E	EuM	 6 6 6  	4	ffhh1v 6	7	7>	D&&((#$	%	%t,	G\\&&((\Aq64JKKLM	N	NPTU		cceecC8_	-	-u5	E3355>"	#	#U+	Hll33553a/BBCD	E	EuM	 6 6 6
/ 
/ 
/$N N N&$ $ $  #"QQ???(H(a888	

 "!AA>>>$H$!444	
	 3 3 3#3 #3 #3L)> )> )>X2 2 2 I I I I I+ I I I B B B&    *   
, , ,$ 1 1 1 $ $ $ $ $ $ $ $+ + + + + 8- + + +( ( (- - -&       = = =K K K$  
) 
) 
)
( 
( 
(
9 
9 
9	5 	5 	5K" K" K"\& & &R" " "	 	 	 	 	 	 	 		 	 	 	 	V] 	 	 	 }}8H8H&IJJ0 0 KJ0" " "* "        @ ---    .- 2 ---    .- 2< < <   	aS		XRXqc]]	!Q	1a&!!"	r
	{{		26(##$		
QC	
HBHaSMM	se	hbhuoo
Q!	1#A	uuww	zz*%%&1 :" "; :"
" 
" 
" 	R	XRXb\\	III	HBHYYY''(	 $	& 	&% $	& 	& 	&r*   